From 8cc966ba0affacc4af5848fdbe600a78a0f758b3 Mon Sep 17 00:00:00 2001 From: Patricio Marroquin <55117912+patricio0312rev@users.noreply.github.com> Date: Tue, 21 Nov 2023 11:54:54 -0500 Subject: [PATCH 001/145] feat: add is featured flag for collections and collections management in admin portal (#478) --- app/Filament/Resources/CollectionResource.php | 115 ++++++++++++++++++ .../Pages/CreateCollection.php | 13 ++ .../Pages/EditCollection.php | 23 ++++ .../Pages/ListCollections.php | 21 ++++ .../Pages/ViewCollection.php | 21 ++++ app/Policies/CollectionPolicy.php | 4 +- config/permission.php | 5 + ...d_featured_column_to_collections_table.php | 20 +++ ..._sync_collection_permissions_and_roles.php | 52 ++++++++ phpunit.xml | 5 +- tests/App/Policies/CollectionPolicyTest.php | 8 +- .../App/Support/PermissionRepositoryTest.php | 10 +- 12 files changed, 284 insertions(+), 13 deletions(-) create mode 100644 app/Filament/Resources/CollectionResource.php create mode 100644 app/Filament/Resources/CollectionResource/Pages/CreateCollection.php create mode 100644 app/Filament/Resources/CollectionResource/Pages/EditCollection.php create mode 100644 app/Filament/Resources/CollectionResource/Pages/ListCollections.php create mode 100644 app/Filament/Resources/CollectionResource/Pages/ViewCollection.php create mode 100644 database/migrations/2023_11_20_143007_add_featured_column_to_collections_table.php create mode 100644 database/migrations/2023_11_20_143008_sync_collection_permissions_and_roles.php diff --git a/app/Filament/Resources/CollectionResource.php b/app/Filament/Resources/CollectionResource.php new file mode 100644 index 000000000..b49dd05fa --- /dev/null +++ b/app/Filament/Resources/CollectionResource.php @@ -0,0 +1,115 @@ +schema([ + Select::make('is_featured') + ->label('Is featured?') + ->options([ + 0 => 'No', + 1 => 'Yes', + ]) + ->default(0) + ->required(), + ]); + } + + public static function table(Table $table): Table + { + return $table + ->columns([ + ImageColumn::make('image') + ->label('Image') + ->getStateUsing(fn (Collection $collection) => $collection->image() ?? null) + ->size(40) + ->url(fn (Collection $collection) => $collection->image()) + ->openUrlInNewTab(), + + TextColumn::make('name') + ->weight('medium') + ->color('primary') + ->label('Name') + ->searchable() + ->default('Unknown') + ->url(fn (Collection $collection) => route('collections.view', $collection)) + ->openUrlInNewTab() + ->sortable(), + + TextColumn::make('nfts_count') + ->label('Number of NFTs') + ->counts('nfts') + ->default(0), + + TextColumn::make('address') + ->label('Address') + ->searchable() + ->url(fn (Collection $collection) => $collection->website()) + ->default('Unknown'), + + TextColumn::make('is_featured') + ->label('Currently Featured') + ->getStateUsing(fn (Collection $collection) => $collection->is_featured ? 'Yes' : 'No') + ->sortable(), + ]) + ->filters([ + Filter::make('is_featured') + ->label('Currently Featured') + ->query(fn (Builder $query): Builder => $query->where('is_featured', true)), + ]) + ->actions([ + ActionGroup::make([ + Action::make('updateIsFeatured') + ->action(function (Collection $collection) { + $collection->update([ + 'is_featured' => ! $collection->is_featured, + ]); + }) + ->label(fn (Collection $collection) => $collection->is_featured ? 'Unmark as featured' : 'Mark as featured') + ->icon('heroicon-s-star'), + ]), + ]) + ->defaultSort('name', 'asc'); + } + + public static function getRelations(): array + { + return [ + // + ]; + } + + public static function getPages(): array + { + return [ + 'index' => ListCollections::route('/'), + 'view' => ViewCollection::route('/{record}'), + 'edit' => EditCollection::route('/{record}/edit'), + ]; + } +} diff --git a/app/Filament/Resources/CollectionResource/Pages/CreateCollection.php b/app/Filament/Resources/CollectionResource/Pages/CreateCollection.php new file mode 100644 index 000000000..b3a842254 --- /dev/null +++ b/app/Filament/Resources/CollectionResource/Pages/CreateCollection.php @@ -0,0 +1,13 @@ +hasPermissionTo('user:view', 'admin'); + return $user->hasPermissionTo('collection:view', 'admin'); } public function create(User $user): bool @@ -26,7 +26,7 @@ public function create(User $user): bool public function update(User $user, Collection $collection): bool { - return false; + return $user->hasPermissionTo('collection:update', 'admin'); } public function delete(User $user, Collection $collection): bool diff --git a/config/permission.php b/config/permission.php index 05e6b6031..af6bf6b01 100644 --- a/config/permission.php +++ b/config/permission.php @@ -23,6 +23,9 @@ 'report:viewAny' => 'View any Report', 'report:view' => 'View Report', 'report:update' => 'Update Report', + 'collection:viewAny' => 'View any Collection', + 'collection:view' => 'View Collection', + 'collection:update' => 'Update Collection', ], 'roles' => [ @@ -32,6 +35,7 @@ 'role:assignPermissions', 'admin:access', 'report:viewAny', 'report:view', 'report:update', + 'collection:viewAny', 'collection:view', 'collection:update', ], Role::Admin->value => [ @@ -40,6 +44,7 @@ 'role:assignPermissions', 'admin:access', 'report:viewAny', 'report:view', 'report:update', + 'collection:viewAny', 'collection:view', 'collection:update', ], Role::Editor->value => [ diff --git a/database/migrations/2023_11_20_143007_add_featured_column_to_collections_table.php b/database/migrations/2023_11_20_143007_add_featured_column_to_collections_table.php new file mode 100644 index 000000000..03711491d --- /dev/null +++ b/database/migrations/2023_11_20_143007_add_featured_column_to_collections_table.php @@ -0,0 +1,20 @@ +boolean('is_featured')->default(false); + }); + } +}; diff --git a/database/migrations/2023_11_20_143008_sync_collection_permissions_and_roles.php b/database/migrations/2023_11_20_143008_sync_collection_permissions_and_roles.php new file mode 100644 index 000000000..677e4b5ef --- /dev/null +++ b/database/migrations/2023_11_20_143008_sync_collection_permissions_and_roles.php @@ -0,0 +1,52 @@ +map(static fn ($permission) => [ + 'name' => $permission, + 'guard_name' => 'admin', + 'created_at' => now(), + 'updated_at' => now(), + ])->all(); + + // Sync permissions by name + Permission::upsert($permissions, ['name', 'guard_name'], []); + + /** + * @var array $roles + */ + $roles = config('permission.roles'); + + $rolesData = collect($roles)->map(static fn ($permissions, $role) => [ + 'name' => $role, + 'guard_name' => 'admin', + 'created_at' => now(), + 'updated_at' => now(), + ])->all(); + + Role::upsert($rolesData, ['name', 'guard_name'], []); + + $permissions = PermissionRepository::all(); + + collect($roles)->each(static fn ($permissions, $role) => Role::where('name', $role)->first()->givePermissionTo($permissions)); + + app()[PermissionRegistrar::class]->forgetCachedPermissions(); + + } +}; diff --git a/phpunit.xml b/phpunit.xml index 3af49fe2a..0ff1d4e8b 100644 --- a/phpunit.xml +++ b/phpunit.xml @@ -15,9 +15,10 @@ - + - + + diff --git a/tests/App/Policies/CollectionPolicyTest.php b/tests/App/Policies/CollectionPolicyTest.php index 9ea923167..b442271ce 100644 --- a/tests/App/Policies/CollectionPolicyTest.php +++ b/tests/App/Policies/CollectionPolicyTest.php @@ -26,8 +26,8 @@ it('should be able to view a single collection', function () { $collection = Collection::factory()->create(); - expect($this->user->hasPermissionTo('user:view', 'admin', $collection))->toBeFalse(); - expect($this->admin->hasPermissionTo('user:view', 'admin', $collection))->toBeTrue(); + expect($this->user->hasPermissionTo('collection:view', 'admin', $collection))->toBeFalse(); + expect($this->admin->hasPermissionTo('collection:view', 'admin', $collection))->toBeTrue(); expect($this->instance->view($this->user, $collection))->toBeFalse(); expect($this->instance->view($this->admin, $collection))->toBeTrue(); }); @@ -37,11 +37,11 @@ expect($this->instance->create($this->admin))->toBeFalse(); }); -it('should not be able to update a single collection', function () { +it('should be able to update a single collection', function () { $collection = Collection::factory()->create(); expect($this->instance->update($this->user, $collection))->toBeFalse(); - expect($this->instance->update($this->admin, $collection))->toBeFalse(); + expect($this->instance->update($this->admin, $collection))->toBeTrue(); }); it('should not be able to delete a single collection', function () { diff --git a/tests/App/Support/PermissionRepositoryTest.php b/tests/App/Support/PermissionRepositoryTest.php index 97ff8ea6c..5db277ded 100644 --- a/tests/App/Support/PermissionRepositoryTest.php +++ b/tests/App/Support/PermissionRepositoryTest.php @@ -6,26 +6,26 @@ use Illuminate\Support\Facades\Config; it('should get all permissions', function () { - expect(PermissionRepository::all())->toHaveCount(17); + expect(PermissionRepository::all())->toHaveCount(20); }); it('should cache permissions and refresh every 5 days', function () { $config = config('permission.roles'); - expect(PermissionRepository::all())->toHaveCount(17); + expect(PermissionRepository::all())->toHaveCount(20); $config['User'] = ['user:test']; Config::set('permission.roles', $config); - expect(PermissionRepository::all())->toHaveCount(17); + expect(PermissionRepository::all())->toHaveCount(20); $this->travel(4)->days(); - expect(PermissionRepository::all())->toHaveCount(17); + expect(PermissionRepository::all())->toHaveCount(20); $this->travel(1)->days(); $this->travel(1)->minute(); - expect(PermissionRepository::all())->toHaveCount(18); + expect(PermissionRepository::all())->toHaveCount(21); }); From 41da0fe5706db3ac19c6996b07db3c1091912f6a Mon Sep 17 00:00:00 2001 From: Patricio Marroquin <55117912+patricio0312rev@users.noreply.github.com> Date: Wed, 22 Nov 2023 04:47:44 -0500 Subject: [PATCH 002/145] feat: add collections blank page (#479) --- app/Http/Controllers/CollectionController.php | 104 ----- .../Controllers/MyCollectionsController.php | 128 ++++++ lang/en/common.php | 1 + lang/en/metatags.php | 4 + resources/js/Components/Navbar/MobileMenu.tsx | 9 +- .../js/Components/Navbar/UserDetails.tsx | 4 +- resources/js/I18n/Locales/en.json | 2 +- .../CollectionsHeading/CollectionsHeading.tsx | 2 +- resources/js/Pages/Collections/Index.tsx | 207 +-------- .../Pages/Collections/MyCollections/Index.tsx | 217 +++++++++ routes/web.php | 17 +- .../Controllers/CollectionControllerTest.php | 414 ----------------- .../MyCollectionControllerTest.php | 429 ++++++++++++++++++ 13 files changed, 805 insertions(+), 733 deletions(-) create mode 100644 app/Http/Controllers/MyCollectionsController.php create mode 100644 resources/js/Pages/Collections/MyCollections/Index.tsx create mode 100644 tests/App/Http/Controllers/MyCollectionControllerTest.php diff --git a/app/Http/Controllers/CollectionController.php b/app/Http/Controllers/CollectionController.php index 963927e61..1b7815072 100644 --- a/app/Http/Controllers/CollectionController.php +++ b/app/Http/Controllers/CollectionController.php @@ -6,13 +6,10 @@ use App\Data\Articles\ArticleData; use App\Data\Articles\ArticlesData; -use App\Data\Collections\CollectionData; use App\Data\Collections\CollectionDetailData; -use App\Data\Collections\CollectionStatsData; use App\Data\Collections\CollectionTraitFilterData; use App\Data\Gallery\GalleryNftData; use App\Data\Gallery\GalleryNftsData; -use App\Data\Network\NetworkWithCollectionsData; use App\Data\Nfts\NftActivitiesData; use App\Data\Nfts\NftActivityData; use App\Data\Token\TokenData; @@ -23,16 +20,13 @@ use App\Jobs\FetchCollectionBanner; use App\Jobs\SyncCollection; use App\Models\Collection; -use App\Models\Network; use App\Models\User; -use App\Support\Cache\UserCache; use App\Support\Queues; use App\Support\RateLimiterHelpers; use Carbon\Carbon; use Illuminate\Http\JsonResponse; use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; -use Illuminate\Pagination\LengthAwarePaginator; use Inertia\Inertia; use Inertia\Response; use Spatie\LaravelData\PaginatedDataCollection; @@ -41,107 +35,9 @@ class CollectionController extends Controller { public function index(Request $request): Response|JsonResponse|RedirectResponse { - $user = $request->user(); - - if ($user === null) { - return Inertia::render('Collections/Index', [ - 'title' => trans('metatags.collections.title'), - 'stats' => new CollectionStatsData( - nfts: 0, - collections: 0, - value: 0, - ), - 'sortBy' => null, - 'sortDirection' => 'desc', - 'showHidden' => false, - 'view' => 'list', - ]); - } - - $hiddenCollections = $user->hiddenCollections->pluck('address'); - $showHidden = $request->get('showHidden') === 'true'; - - $selectedChainIds = array_filter(explode(',', $request->get('chain', ''))); - $selectedChainIds = array_filter($selectedChainIds, fn ($id) => is_numeric($id)); - - if ($showHidden && $hiddenCollections->isEmpty()) { - return redirect()->route('collections', $request->except('showHidden')); - } - - $cache = new UserCache($user); - - $sortBy = in_array($request->query('sort'), ['oldest', 'received', 'name', 'floor-price', 'value', 'chain']) ? $request->query('sort') : null; - $defaultSortDirection = $sortBy === null ? 'desc' : 'asc'; - - $sortDirection = in_array($request->query('direction'), ['asc', 'desc']) ? $request->query('direction') : $defaultSortDirection; - $networks = NetworkWithCollectionsData::fromModel($user, $showHidden); - - $selectedChainIds = array_filter($selectedChainIds, function ($id) use ($networks) { - return $networks->firstWhere('chainId', $id)?->collectionsCount > 0; - }); - - if ($request->wantsJson()) { - $searchQuery = $request->get('query'); - - /** @var LengthAwarePaginator $collections */ - $collections = $user->collections() - ->when($showHidden, fn ($q) => $q->whereIn('collections.id', $user->hiddenCollections->modelKeys())) - ->when(! $showHidden, fn ($q) => $q->whereNotIn('collections.id', $user->hiddenCollections->modelKeys())) - ->when(count($selectedChainIds) > 0, fn ($q) => $q->whereIn('collections.network_id', Network::whereIn('chain_id', $selectedChainIds)->pluck('id'))) - ->when($sortBy === 'name', fn ($q) => $q->orderByName($sortDirection)) - ->when($sortBy === 'floor-price', fn ($q) => $q->orderByFloorPrice($sortDirection, $user->currency())) - ->when($sortBy === 'value', fn ($q) => $q->orderByValue($user->wallet, $sortDirection, $user->currency())) - ->when($sortBy === 'chain', fn ($q) => $q->orderByChainId($sortDirection)) - ->when($sortBy === 'oldest', fn ($q) => $q->orderByMintDate('asc')) - ->when($sortBy === 'received' || $sortBy === null, fn ($q) => $q->orderByReceivedDate($user->wallet, 'desc')) - ->search($user, $searchQuery) - ->with([ - 'reports', - 'network', - 'floorPriceToken', - 'nfts' => fn ($q) => $q->where('wallet_id', $user->wallet_id)->limit(4), - ]) - ->withCount(['nfts' => fn ($q) => $q->where('wallet_id', $user->wallet_id)]) - ->paginate(25); - - $reportByCollectionAvailableIn = $collections->mapWithKeys(function ($collection) use ($request) { - return [$collection->address => RateLimiterHelpers::collectionReportAvailableInHumanReadable($request, $collection)]; - }); - - $alreadyReportedByCollection = $collections->mapWithKeys(function ($collection) use ($user) { - return [$collection->address => $collection->wasReportedByUserRecently($user, useRelationship: true)]; - }); - - return new JsonResponse([ - 'collections' => CollectionData::collection( - $collections->through(fn ($collection) => CollectionData::fromModel($collection, $user->currency())) - ), - 'reportByCollectionAvailableIn' => $reportByCollectionAvailableIn, - 'alreadyReportedByCollection' => $alreadyReportedByCollection, - 'hiddenCollectionAddresses' => $hiddenCollections, - 'availableNetworks' => $networks, - 'selectedChainIds' => $selectedChainIds, - 'stats' => new CollectionStatsData( - nfts: $showHidden ? $cache->hiddenNftsCount() : $cache->shownNftsCount(), - collections: $showHidden ? $cache->hiddenCollectionsCount() : $cache->shownCollectionsCount(), - value: $user->collectionsValue($user->currency(), readFromDatabase: false, onlyHidden: $showHidden), - ), - ]); - } return Inertia::render('Collections/Index', [ 'title' => trans('metatags.collections.title'), - 'initialStats' => new CollectionStatsData( - nfts: $showHidden ? $cache->hiddenNftsCount() : $cache->shownNftsCount(), - collections: $showHidden ? $cache->hiddenCollectionsCount() : $cache->shownCollectionsCount(), - value: $user->collectionsValue($user->currency(), readFromDatabase: false, onlyHidden: $showHidden), - ), - 'sortBy' => $sortBy, - 'sortDirection' => $sortDirection, - 'showHidden' => $showHidden, - 'selectedChainIds' => $selectedChainIds, - 'view' => $request->get('view') === 'grid' ? 'grid' : 'list', - 'availableNetworks' => $networks, ]); } diff --git a/app/Http/Controllers/MyCollectionsController.php b/app/Http/Controllers/MyCollectionsController.php new file mode 100644 index 000000000..495aee277 --- /dev/null +++ b/app/Http/Controllers/MyCollectionsController.php @@ -0,0 +1,128 @@ +user(); + + if ($user === null) { + return Inertia::render('Collections/MyCollections/Index', [ + 'title' => trans('metatags.my-collections.title'), + 'stats' => new CollectionStatsData( + nfts: 0, + collections: 0, + value: 0, + ), + 'sortBy' => null, + 'sortDirection' => 'desc', + 'showHidden' => false, + 'view' => 'list', + ]); + } + + $hiddenCollections = $user->hiddenCollections->pluck('address'); + $showHidden = $request->get('showHidden') === 'true'; + + $selectedChainIds = array_filter(explode(',', $request->get('chain', ''))); + $selectedChainIds = array_filter($selectedChainIds, fn ($id) => is_numeric($id)); + + if ($showHidden && $hiddenCollections->isEmpty()) { + return redirect()->route('my-collections', $request->except('showHidden')); + } + + $cache = new UserCache($user); + + $sortBy = in_array($request->query('sort'), ['oldest', 'received', 'name', 'floor-price', 'value', 'chain']) ? $request->query('sort') : null; + $defaultSortDirection = $sortBy === null ? 'desc' : 'asc'; + + $sortDirection = in_array($request->query('direction'), ['asc', 'desc']) ? $request->query('direction') : $defaultSortDirection; + $networks = NetworkWithCollectionsData::fromModel($user, $showHidden); + + $selectedChainIds = array_filter($selectedChainIds, function ($id) use ($networks) { + return $networks->firstWhere('chainId', $id)?->collectionsCount > 0; + }); + + if ($request->wantsJson()) { + $searchQuery = $request->get('query'); + + /** @var LengthAwarePaginator $collections */ + $collections = $user->collections() + ->when($showHidden, fn ($q) => $q->whereIn('collections.id', $user->hiddenCollections->modelKeys())) + ->when(! $showHidden, fn ($q) => $q->whereNotIn('collections.id', $user->hiddenCollections->modelKeys())) + ->when(count($selectedChainIds) > 0, fn ($q) => $q->whereIn('collections.network_id', Network::whereIn('chain_id', $selectedChainIds)->pluck('id'))) + ->when($sortBy === 'name', fn ($q) => $q->orderByName($sortDirection)) + ->when($sortBy === 'floor-price', fn ($q) => $q->orderByFloorPrice($sortDirection, $user->currency())) + ->when($sortBy === 'value', fn ($q) => $q->orderByValue($user->wallet, $sortDirection, $user->currency())) + ->when($sortBy === 'chain', fn ($q) => $q->orderByChainId($sortDirection)) + ->when($sortBy === 'oldest', fn ($q) => $q->orderByMintDate('asc')) + ->when($sortBy === 'received' || $sortBy === null, fn ($q) => $q->orderByReceivedDate($user->wallet, 'desc')) + ->search($user, $searchQuery) + ->with([ + 'reports', + 'network', + 'floorPriceToken', + 'nfts' => fn ($q) => $q->where('wallet_id', $user->wallet_id)->limit(4), + ]) + ->withCount(['nfts' => fn ($q) => $q->where('wallet_id', $user->wallet_id)]) + ->paginate(25); + + $reportByCollectionAvailableIn = $collections->mapWithKeys(function ($collection) use ($request) { + return [$collection->address => RateLimiterHelpers::collectionReportAvailableInHumanReadable($request, $collection)]; + }); + + $alreadyReportedByCollection = $collections->mapWithKeys(function ($collection) use ($user) { + return [$collection->address => $collection->wasReportedByUserRecently($user, useRelationship: true)]; + }); + + return new JsonResponse([ + 'collections' => CollectionData::collection( + $collections->through(fn ($collection) => CollectionData::fromModel($collection, $user->currency())) + ), + 'reportByCollectionAvailableIn' => $reportByCollectionAvailableIn, + 'alreadyReportedByCollection' => $alreadyReportedByCollection, + 'hiddenCollectionAddresses' => $hiddenCollections, + 'availableNetworks' => $networks, + 'selectedChainIds' => $selectedChainIds, + 'stats' => new CollectionStatsData( + nfts: $showHidden ? $cache->hiddenNftsCount() : $cache->shownNftsCount(), + collections: $showHidden ? $cache->hiddenCollectionsCount() : $cache->shownCollectionsCount(), + value: $user->collectionsValue($user->currency(), readFromDatabase: false, onlyHidden: $showHidden), + ), + ]); + } + + return Inertia::render('Collections/MyCollections/Index', [ + 'title' => trans('metatags.my-collections.title'), + 'initialStats' => new CollectionStatsData( + nfts: $showHidden ? $cache->hiddenNftsCount() : $cache->shownNftsCount(), + collections: $showHidden ? $cache->hiddenCollectionsCount() : $cache->shownCollectionsCount(), + value: $user->collectionsValue($user->currency(), readFromDatabase: false, onlyHidden: $showHidden), + ), + 'sortBy' => $sortBy, + 'sortDirection' => $sortDirection, + 'showHidden' => $showHidden, + 'selectedChainIds' => $selectedChainIds, + 'view' => $request->get('view') === 'grid' ? 'grid' : 'list', + 'availableNetworks' => $networks, + ]); + } +} diff --git a/lang/en/common.php b/lang/en/common.php index c0bb6319d..304a07bec 100644 --- a/lang/en/common.php +++ b/lang/en/common.php @@ -38,6 +38,7 @@ 'warning' => 'Warning', 'my_address' => 'My Address', 'my_wallet' => 'My Wallet', + 'my_collections' => 'My Collections', 'my_balance' => 'My Balance', 'na' => 'N/A', 'simple_plural_without_data' => 'One comment|Many comments', diff --git a/lang/en/metatags.php b/lang/en/metatags.php index 2b5cbed7d..b6e7ee6dc 100644 --- a/lang/en/metatags.php +++ b/lang/en/metatags.php @@ -63,6 +63,10 @@ ], ], + 'my-collections' => [ + 'title' => 'My Collections | Dashbrd', + ], + 'nfts' => [ 'view' => [ 'title' => ':nft NFT | Dashbrd', diff --git a/resources/js/Components/Navbar/MobileMenu.tsx b/resources/js/Components/Navbar/MobileMenu.tsx index 9f47edea6..3bc775f12 100644 --- a/resources/js/Components/Navbar/MobileMenu.tsx +++ b/resources/js/Components/Navbar/MobileMenu.tsx @@ -138,7 +138,7 @@ const Nav = ({ { isVisible: features.collections, title: t("pages.collections.title"), - suffix: isAuthenticated ? collectionCount : null, + suffix: null, route: "collections", icon: "Diamond", }, @@ -166,6 +166,13 @@ const Nav = ({ route: "my-galleries", icon: "Grid", }, + { + isVisible: features.collections, + title: t("common.my_collections"), + suffix: isAuthenticated ? collectionCount : null, + route: "my-collections", + icon: "Cards", + }, { isVisible: isAuthenticated, title: t("pages.settings.title"), diff --git a/resources/js/Components/Navbar/UserDetails.tsx b/resources/js/Components/Navbar/UserDetails.tsx index 18e55f1ef..c8c363ef6 100644 --- a/resources/js/Components/Navbar/UserDetails.tsx +++ b/resources/js/Components/Navbar/UserDetails.tsx @@ -147,11 +147,11 @@ export const UserDetails = ({ {features.collections && (
  • - {t("pages.collections.title")}{" "} + {t("common.my_collections")}{" "} ({collectionCount}) diff --git a/resources/js/I18n/Locales/en.json b/resources/js/I18n/Locales/en.json index 5ad9e2114..ce7fd1802 100644 --- a/resources/js/I18n/Locales/en.json +++ b/resources/js/I18n/Locales/en.json @@ -1 +1 @@ -{"auth.welcome":"Welcome to Dashbrd","auth.logged_in":"You're logged in!","auth.log_out":"Log out","auth.failed":"These credentials do not match our records.","auth.session_timeout":"Your session has timed out. Please refresh the page and try connecting your account again.","auth.session_timeout_modal":"Seems like your session has timed out. Please connnect your wallet again.","auth.password":"The provided password is incorrect.","auth.throttle":"Too many login attempts. Please try again in {{seconds}} seconds.","auth.wallet.connecting":"Connecting …","auth.wallet.waiting_for_signature":"Waiting for Signature …","auth.wallet.switching_wallet":"Switching Wallet …","auth.wallet.connect":"Connect Wallet","auth.wallet.connect_long":"Connect Your Wallet to Get Started","auth.wallet.sign_subtitle":"Connect Your Wallet to Continue","auth.wallet.disconnect":"Disconnect Wallet","auth.wallet.install":"Install MetaMask","auth.wallet.install_long":"Install MetaMask to Get Started","auth.wallet.sign":"Sign Message","auth.wallet.sign_message":"Welcome to Dashbrd. In order to login, sign this message with your wallet. It doesn't cost you anything!\n\nSigning ID (you can ignore this): {{nonce}}","auth.wallet.connect_subtitle":"Click on the MetaMask icon in your browser to confirm the action and connect your wallet.","auth.wallet.requires_signature":"In order to prevent impersonation, we require a signature to perform this action. This signature is only a signed message and does not give any access to your wallet.","auth.errors.metamask.no_account":"No account found. Please connect your wallet and try again.","auth.errors.metamask.generic":"Connection attempt error. Please retry and follow the steps to connect your wallet.","auth.errors.metamask.invalid_network":"Please switch to Polygon or Ethereum Mainnet in your MetaMask plugin to connect to Dashbrd.","auth.errors.metamask.provider_missing":"You don't have MetaMask installed in your browser. Please install and try again.","auth.errors.metamask.user_rejected":"It looks like you cancelled signing of the authentication message. Please try again.","auth.errors.metamask.provider_not_set":"Ethereum provider is not set","auth.validation.wallet_login_failed":"There was a problem trying to verify your signature. Please try again.","auth.validation.invalid_address":"Your wallet address is invalid. Please try again.","auth.validation.invalid_signature":"Signature is invalid. Please try again.","auth.validation.invalid_network":"Please switch to Polygon or Ethereum Mainnet in your MetaMask plugin to connect to Dashbrd.","common.author":"Author","common.add":"Add","common.amount":"Amount","common.balance":"Balance","common.cancel":"Cancel","common.delete":"Delete","common.edit":"Edit","common.confirm":"Confirm","common.connect":"Connect","common.continue":"Continue","common.done":"Done","common.filter":"Filter","common.items":"Items","common.receive":"Receive","common.received":"Received","common.retry":"Retry","common.records":"Records","common.save":"Save","common.send":"Send","common.sent":"Sent","common.show":"Show","common.searching":"Searching...","common.other":"Other","common.owned":"Owned","common.token":"Token","common.tokens":"Tokens","common.wallet":"Wallet","common.pending":"Pending","common.publish":"Publish","common.published":"Published","common.empty":"Empty","common.your_address":"Your Address","common.warning":"Warning","common.my_address":"My Address","common.my_wallet":"My Wallet","common.my_balance":"My Balance","common.na":"N/A","common.simple_plural_without_data":"One comment|Many comments","common.simple_plural_with_data":"{{count}} comment|{{count}} comments","common.advanced_plural_without_data":"{0} no comments yet|{1} 1 comment|[2,*] Many comments","common.advanced_plural_with_data":"{0} no comments yet|{1} 1 comment|[2,*] {{count}} comments","common.copy_clipboard":"Copy to Clipboard","common.copy":"Copy","common.download":"Download","common.zoom":"Zoom","common.my_collection":"My Collection","common.max":"Max","common.chain":"Chain","common.copied":"Copied!","common.coming_soon":"Coming Soon","common.more_details":"More Details","common.close":"Close","common.close_toast":"Close toast","common.loading":"Loading","common.price":"Price","common.articles":"Articles","common.most_popular":"Most Popular","common.market_cap":"Market Cap","common.volume":"Volume {{frequency}}","common.value":"Value","common.last_n_days":"Last {{count}} Days","common.details":"Details","common.view_all":"View All","common.view_more_on_polygonscan":"View More on Polygonscan","common.view_more_on_etherscan":"View More on Etherscan","common.view_nft_on_etherscan":"View NFT on Etherscan","common.view_nft_on_polygonscan":"View NFT on Polygonscan","common.view_nft_on_goerli_tesnet":"View NFT on Goerli Testnet Explorer","common.view_nft_on_mumbai_tesnet":"View NFT on Mumbai Testnet Explorer","common.polygonscan":"Polygonscan","common.etherscan":"Etherscan","common.featured":"Featured","common.floor_price":"Floor Price","common.floor":"Floor","common.supply":"Supply","common.owners":"Owners","common.created":"Created","common.nft":"NFT","common.collection":"Collection","common.collections":"Collections","common.gallery":"Gallery","common.basic_gallery":"Basic Gallery","common.gallery_name":"Gallery Name","common.create_gallery":"Create Gallery","common.external_link":"External Link","common.follow_link":"Follow Link","common.cover":"Cover","common.template":"Template","common.page":"Page","common.polygon":"Polygon","common.ethereum":"Ethereum","common.mumbai":"Mumbai","common.goerli":"Goerli","common.of":"of","common.pagination_input_placeholder":"Enter the page number","common.pagination_input_placeholder_mobile":"Page number","common.nft_count":"{0} {{count}} NFTs|{1} {{count}} NFT|[2,*] {{count}} NFTs","common.nft_gallery":"NFT Gallery","common.unable_to_retrieve_image":"Unable to retrieve your NFT image at this time","common.optional":"Optional","common.selected":"Selected","common.select":"Select","common.preview":"Preview","common.image_size_error":"Image size must not exceed 2MB","common.image_dimensions_error":"Image dimensions must exceed 287px x 190px","common.write_to_confirm":"Write {{word}} to confirm","common.n_hours":"{0} {{count}} hour|{1} {{count}} hour|[2,*] {{count}} hours","common.n_minutes":"{0} {{count}} minute|{1} {{count}} minute|[2,*] {{count}} minutes","common.report":"Report","common.n_nfts":"{0}NFTs|{1}NFT|[2,*]NFTs","common.n_collections":"{0}collections|{1}collection|[2,*]collections","common.back":"Back","common.back_to":"Back to","common.name":"Name","common.type":"Type","common.from":"From","common.to":"To","common.sale_price":"Sale Price","common.recent_activity":"Recent Activity","common.time":"Time","common.datetime.few_seconds_ago":"A few seconds ago","common.datetime.minutes_ago":"{0} Less than a minute ago|{1} A minute ago|[2,*] {{count}} minutes ago","common.datetime.hours_ago":"{0} Less than an hour ago|{1} An hour ago|[2,*] {{count}} hours ago","common.datetime.days_ago":"{0} Less than a day ago|{1} A day ago|[2,*] {{count}} days ago","common.datetime.weeks_ago":"{0} Less than a week ago|{1} A week ago|[2,*] {{count}} weeks ago","common.datetime.months_ago":"{0} Less than a month ago|{1} A month ago|[2,*] {{count}} months ago","common.datetime.years_ago":"{0} Less than a year ago|{1} A year ago|[2,*] {{count}} years ago","common.no_traits_found":"No traits found.","common.empty_transactions":"You don't have any transactions yet. Once transactions have been made, they will show up here.","common.error":"Error","common.refresh":"Refresh","common.refresh_metadata":"Refresh Metadata","common.refreshing_metadata":"Refreshing Metadata... Please check back later.","common.refreshing_activity":"Refreshing Activity... Please check back later.","common.pending_confirmation":"Pending Confirmation","common.confirmed_transaction":"Confirmed Transaction","common.transaction_error":"Transaction Error","common.transaction_error_description_first_part":"Your transaction encountered an error. View this transaction on","common.transaction_error_description_second_part":"for more details.","common.home":"Home","common.contact":"Contact","common.menu":"Menu","common.website":"Website","common.twitter":"Twitter","common.discord":"Discord","common.facebook":"Facebook","common.reddit":"Reddit","common.x":"X","common.sort":"Sort","common.drafts":"Drafts","common.draft":"Draft","common.delete_draft":"Delete Draft","common.share_on":"Share on {{platform}}","footer.copyright":"{{year}} © Dashbrd. All rights reserved.","footer.all_rights_reserved":"All rights reserved","footer.privacy_policy":"Privacy Policy","footer.terms_of_service":"Terms of Service","footer.powered_by":"Powered by","format.fiat":"{{ value, currency }}","format.number":"{{ value, number }}","metatags.home.title":"Dashbrd | Web3 Portfolio Management Made Simple","metatags.home.description":"Simplify your Web3 journey with Dashbrd. Manage your portfolio of tokens, NFTs, and other digital collectibles across the Ethereum and Polygon blockchains.","metatags.home.image":"/images/meta/home.png","metatags.error.title":"Error {{code}} | Dashbrd","metatags.wallet.title":"My Wallet | Dashbrd","metatags.galleries.title":"Top NFT Galleries | Dashbrd","metatags.galleries.image":"/images/meta/nft-galleries.png","metatags.galleries.description":"Explore user published NFT galleries to find custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.most_popular.title":"Most Popular Galleries | Dashbrd","metatags.galleries.most_popular.image":"/images/meta/most-popular-nft-galleries.png","metatags.galleries.most_popular.description":"Explore and discover Most Popular NFT Galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.newest.title":"Newest Galleries | Dashbrd","metatags.galleries.newest.image":"/images/meta/newest-nft-galleries.png","metatags.galleries.newest.description":"Explore and discover most recent NFT galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More","metatags.galleries.most_valuable.title":"Most Valuable Galleries | Dashbrd","metatags.galleries.most_valuable.image":"/images/meta/most-valuable-nft-galleries.png","metatags.galleries.most_valuable.description":"Explore and discover Most Valuable NFT Galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.view.title":"{{name}} | Dashbrd","metatags.galleries.view.description":"{{name}} | A Curated NFT Gallery at Dashbrd","metatags.galleries.view.image":"/images/meta/nft-gallery.png","metatags.my_galleries.title":"My Galleries | Dashbrd","metatags.my_galleries.title_draft":"My Draft Galleries | Dashbrd","metatags.my_galleries.create.title":"Create Gallery | Dashbrd","metatags.my_galleries.edit.title":"Edit {{name}} | Dashbrd","metatags.collections.title":"Collections | Dashbrd","metatags.collections.view.title":"{{name}} Collection | Dashbrd","metatags.collections.view.description":"Immerse yourself in the intricate details of {{name}} collection, featuring remarkable digital assets. Start your NFT journey today!","metatags.collections.view.image":"/images/meta/nft-collection.png","metatags.nfts.view.title":"{{nft}} NFT | Dashbrd","metatags.nfts.view.description":"Uncover the complete story of {{nft}} NFT from the {{collection}} collection, delving into its unique attributes and distinctive features.","metatags.nfts.view.image":"/images/meta/nft-details.png","metatags.settings.title":"Settings | Dashbrd","metatags.articles.title":"Articles | Dashbrd","metatags.articles.view.title":"{{title}} | Dashbrd","metatags.login.title":"Login | Dashbrd","metatags.privacy_policy.title":"Privacy Policy | Dashbrd","metatags.privacy_policy.description":"Dashbrd’s privacy policy outlines the information we collect and explains your choices surrounding how we use information about you.","metatags.terms_of_service.title":"Terms of Service | Dashbrd","metatags.terms_of_service.description":"These Terms of Service cover your use and access to services, products or websites of Dashbrd.","metatags.cookie_policy.title":"Cookie Policy | Dashbrd","metatags.cookie_policy.description":"Dashbrd uses cookies to make the website more user-friendly. Find out about the main types of cookies we use, and what we use them for.","metatags.welcome.title":"Welcome to Dashbrd | Web3 Simplified","pages.onboarding.title":"Get Started","pages.onboarding.heading":"Your monkeys were bored and ran off, we are trying to round them up.","pages.onboarding.message":"We are setting up your account. This process usually takes just a few minutes, but can take up to 15 minutes.","pages.error.heading":"Oops, something went wrong ...","pages.error.message":"Please try again or get in touch if the issue persists.","pages.maintenance.title":"Dashbrd is currently down for scheduled maintenance.","pages.maintenance.description":"We expect to be back soon. Thanks for your patience.","pages.dashboard.title":"My Wallet","pages.dashboard.breakdown.title":"Portfolio Breakdown","pages.dashboard.line_chart.data_error":"Could not load chart data","pages.articles.title":"Articles","pages.articles.featured_collections":"Featured Collections","pages.articles.placeholder_more_soon":"More Soon","pages.articles.no_articles":"No articles have been published yet. Please check back later!","pages.articles.header_title":"Explore our collection of","pages.articles.header_suffix_one":"published article","pages.articles.header_suffix_other":"published articles","pages.articles.audio_version":"Audio version","pages.articles.consists_of_collections":"{0} This article highlights {{count}} collections|{1} This article highlights {{count}} collection|[2,*] This article highlights {{count}} collections","pages.collections.title":"Collections","pages.collections.collections":"Collections","pages.collections.collection_value":"Collection Value","pages.collections.nfts_owned":"NFTs Owned","pages.collections.header_title":"You own <0>{{nftsCount}} {{nfts}} across <0>{{collectionsCount}} {{collections}}, worth about <0><1>{{worth}}","pages.collections.search_placeholder":"Search by Collection","pages.collections.properties":"Properties","pages.collections.collections_network":"Collections Network","pages.collections.property_search_placeholder":"Feature Search","pages.collections.floor_price":"Floor Price","pages.collections.value":"Value","pages.collections.rarity":"Rarity","pages.collections.report":"Report","pages.collections.hide_collection":"Hide Collection","pages.collections.unhide_collection":"Unhide Collection","pages.collections.no_collections":"You do not own any NFTs yet. Once you do they will be shown here.","pages.collections.all_collections_hidden":"You have hidden all your collections. Unhide and they will appear here.","pages.collections.about_collection":"About Collection","pages.collections.show_hidden":"Show Hidden","pages.collections.show_my_collection":"Show My Collection","pages.collections.owned":"Owned","pages.collections.activities.loading_activities":"We're fetching Activity for this NFT, please hang tight, this can take a while.","pages.collections.activities.loading_activities_collection":"We're fetching Activity for this collection, please hang tight, this can take a while.","pages.collections.activities.ignores_activities":"We don't support activity history for this collection yet.","pages.collections.activities.no_activity":"This collection does not have any activity yet.","pages.collections.activities.types.LABEL_MINT":"Mint","pages.collections.activities.types.LABEL_TRANSFER":"Transfer","pages.collections.activities.types.LABEL_SALE":"Sale","pages.collections.articles.no_articles":"No articles have been linked to this collection as of now.","pages.collections.articles.no_articles_with_filters":"We could not find any articles matching your search criteria, please try again!","pages.collections.articles.search_placeholder":"Search in Articles","pages.collections.articles.sort_latest":"Latest","pages.collections.articles.sort_popularity":"Most Popular","pages.collections.search.loading_results":"Loading results...","pages.collections.search.no_results":"We could not find anything matching your search criteria, please try again!","pages.collections.search.no_results_with_filters":"We could not find anything matching your filters, please try again!","pages.collections.search.no_results_ownership":"You do not own any NFTs in this collection","pages.collections.search.error":"Could not load search results. Please try again later.","pages.collections.sorting.token_number":"Token Number","pages.collections.sorting.recently_received":"Recently Received","pages.collections.sorting.recently_created":"Recently Created","pages.collections.sorting.oldest_collection":"Oldest Collection","pages.collections.traits.description":"List of NFT traits by % of occurrence in the collection","pages.collections.traits.no_traits":"No Properties can be found for this NFT","pages.collections.menu.collection":"Collection","pages.collections.menu.articles":"Articles","pages.collections.menu.activity":"Activity","pages.collections.hidden_modal.collection_hidden":"Collection Hidden","pages.collections.hidden_modal.description":"This collection is currently set to Hidden. Are you sure you want to unhide this collection? You can\n reset the collection to hidden from the collection menu.","pages.collections.hidden_modal.unhide":"Unhide","pages.collections.hidden_modal.error":"Something went wrong. Please try again.","pages.collections.external_modal.you_wish_continue":"You are about to leave Dashbrd to an external website. Dashbrd has no control over the content of\n this site. Are you sure you wish to continue?","pages.collections.external_modal.not_show":"Do not show this message again.","pages.collections.refresh.title":"Refresh your collection","pages.collections.refresh.notice":"You can refresh data every 15 minutes.","pages.collections.refresh.notice_wait":"Please wait. You can refresh data every 15 minutes.","pages.collections.refresh.toast":"We're updating information for your collection.","pages.nfts.nft":"nft","pages.nfts.about_nft":"About NFT","pages.nfts.owned_by":"Owned by","pages.nfts.collection_image":"collection image","pages.nfts.menu.properties":"Properties","pages.nfts.menu.activity":"Activity","pages.reports.title":"Submit a Report","pages.reports.description":"Thanks for looking out by reporting things that break the rules. Let us know what's happening and we'll receive the report.","pages.reports.success":"Thank you for your report. We'll review it and see if it breaks our ToS.","pages.reports.failed":"Something went wrong. Please try again.","pages.reports.throttle":"You have made too many requests. Please wait {{time}} before reporting again.","pages.reports.reported":"You have already reported this {{model}}.","pages.reports.reasons.spam":"Spam","pages.reports.reasons.violence":"Promoting Violence","pages.reports.reasons.hate":"Hate","pages.reports.reasons.inappropriate_content":"Inappropriate Content","pages.reports.reasons.impersonation":"Impersonation","pages.reports.reasons.trademark":"Trademark or Copyright","pages.reports.reasons.selfharm":"Self-Harm","pages.reports.reasons.harassment":"Harassment","pages.galleries.title":"Galleries","pages.galleries.empty_title":"No galleries have been published yet. Once they do they will appear here.","pages.galleries.search.loading_results":"Loading results...","pages.galleries.search.no_results":"We could not find anything matching your search criteria, please try again!","pages.galleries.search.placeholder":"Search by name or curator address","pages.galleries.search.placeholder_nfts":"Search by NFTs","pages.galleries.search.error":"Could not load search results. Please try again later.","pages.galleries.my_galleries.title":"My Galleries","pages.galleries.my_galleries.subtitle":"Manage your galleries","pages.galleries.my_galleries.new_gallery":"New Gallery","pages.galleries.my_galleries.no_galleries":"You have not created any galleries yet. To create a gallery, click on the \"Create Gallery\" button.","pages.galleries.my_galleries.no_draft_galleries":"You have no draft galleries yet. To create a gallery, click on the \"Create Gallery\" button.","pages.galleries.my_galleries.succesfully_deleted":"Gallery has been successfully removed","pages.galleries.my_galleries.draft_succesfully_deleted":"Draft has been successfully removed","pages.galleries.my_galleries.successfully_created":"Gallery has been successfully created","pages.galleries.my_galleries.successfully_updated":"Gallery has been successfully updated","pages.galleries.my_galleries.new_gallery_no_nfts":"Creating a Gallery requires you to own an NFT.","pages.galleries.my_galleries.delete_modal.title":"Delete Draft","pages.galleries.my_galleries.delete_modal.text":"Are you sure you want to delete the draft? Everything you've done will be deleted and you won't be able to get it back.","pages.galleries.my_galleries.nfts_no_longer_owned":"NFTs no longer owned by this wallet have been removed from the draft”","pages.galleries.copy_gallery_link":"Copy Gallery Link","pages.galleries.my_nfts":"My NFTs","pages.galleries.value":"Value","pages.galleries.floor_price":"Floor Price","pages.galleries.nfts":"NFTs","pages.galleries.collections":"Collections","pages.galleries.galleries_count_simple":"{0} galleries|{1} gallery|[2,*] galleries","pages.galleries.galleries_count":"{0} {{count}} Galleries|{1} {{count}} Gallery|[2,*] {{count}} Galleries","pages.galleries.collections_count_simple":"{0} collections|{1} collection|[2,*] collections","pages.galleries.collections_count":"{0} {{count}} Collections|{1} {{count}} Collection|[2,*] {{count}} Collections","pages.galleries.nfts_count_simple":"{0} NFTs|{1} NFT|[2,*] NFTs","pages.galleries.nfts_count":"{0} {{count}} NFTs|{1} {{count}} NFT|[2,*] {{count}} NFTs","pages.galleries.users_count_simple":"{0} users|{1} user|[2,*] users","pages.galleries.users_count":"{0} {{count}} Users|{1} {{count}} User|[2,*] {{count}} Users","pages.galleries.featuring":"Featuring","pages.galleries.curated_by":"Curated by","pages.galleries.worth_about":"Worth About","pages.galleries.valued_at":"valued at","pages.galleries.from":"From","pages.galleries.most_popular_galleries":"Most Popular Galleries","pages.galleries.newest_galleries":"Newest Galleries","pages.galleries.most_valuable_galleries":"Most Valuable Galleries","pages.galleries.most_popular":"Most Popular","pages.galleries.newest":"Newest","pages.galleries.most_valuable":"Most Valuable","pages.galleries.create.search_by_nfts":"Search by NFTs","pages.galleries.create.input_placeholder":"Enter gallery name","pages.galleries.create.title_too_long":"Gallery name must not exceed {{max}} characters.","pages.galleries.create.already_selected_nft":"NFT already exists in this gallery","pages.galleries.create.nft_missing_image":"Only NFTs with images can be added to galleries","pages.galleries.create.nft_gallery_limit":"You can only add 16 NFTs per gallery","pages.galleries.create.gallery_cover":"Gallery Cover","pages.galleries.create.gallery_cover_description":"The cover is used for the card on the gallery list page. While the cover is not a requirement it will allow you to add personality and stand out from the crowd.","pages.galleries.create.gallery_cover_information":"Image dimensions must be at least 287px x 190px, with a max size of 2 MB (JPG, PNG or GIF)","pages.galleries.create.no_results":"We could not find anything matching your search criteria, please try again!","pages.galleries.create.templates.cover":"Cover","pages.galleries.create.templates.template":"Template","pages.galleries.create.templates.select":"Select Gallery Template","pages.galleries.create.templates.basic":"Basic Gallery","pages.galleries.create.templates.coming_soon":"More Coming Soon","pages.galleries.create.load_more_collections_one":"Load {{count}} More Collection","pages.galleries.create.load_more_collections_other":"Load {{count}} More Collections","pages.galleries.create.load_more_nfts":"Load More NFTs","pages.galleries.create.can_purchase":"You can purchase NFTs with these top NFT Marketplaces:","pages.galleries.create.must_own_one_nft":"You must own at least one (1) NFT in order to create a gallery.","pages.galleries.create.back_to_galleries":"Back to Galleries","pages.galleries.create.draft_saved":"Draft Saved","pages.galleries.create.saving_to_draft":"Saving to draft","pages.galleries.create.drafts_limit_modal_title":"Draft Gallery Limit","pages.galleries.create.drafts_limit_modal_message":"You’ve hit your limit for draft galleries. While you can still make new galleries and publish them, they won’t be saved as drafts. To Free up space, you can either delete existing drafts or publish them.","pages.galleries.create.drafts_limit_modal_cancel":"Go to Drafts","pages.galleries.delete_modal.title":"Delete Gallery","pages.galleries.delete_modal.confirmation_text":"Are you sure you want to delete the gallery? Deleting a Gallery is permanent, all associated views and likes will be lost.","pages.galleries.consists_of_collections":"{0} This gallery consists of {{count}} collections|{1} This gallery consists of {{count}} collection|[2,*] This gallery consists of {{count}} collections","pages.galleries.guest_banner.title":"Craft the ultimate","pages.galleries.guest_banner.subtitle":"Pick your favorites, curate your gallery, & share it with the world.","pages.profile.title":"Profile","pages.token_panel.balance_tooltip":"Total percentage of the portfolio held in this token","pages.token_panel.insufficient_funds":"Insufficient Balance","pages.token_panel.error":"Dashbrd has failed to load token information. Please try again later.","pages.token_panel.failed_to_retrieve_transactions":"We were unable to fetch your transactions.","pages.token_panel.tabs.transaction_history":"Transaction History","pages.token_panel.tabs.history":"History","pages.token_panel.tabs.market_data":"Market Data","pages.token_panel.details.current_price":"Current Price","pages.token_panel.details.title":"Token Details","pages.token_panel.details.market_cap":"Market Cap","pages.token_panel.details.volume":"Daily Volume","pages.token_panel.details.supply":"Minted Supply","pages.token_panel.details.ath":"All-Time High","pages.token_panel.details.atl":"All-Time Low","pages.token_panel.chart.failed":"Dashbrd has failed to load chart information. Please try again later.","pages.transaction_details_panel.title":"Transaction Details","pages.transaction_details_panel.details.blockchain":"Blockchain","pages.transaction_details_panel.details.timestamp":"Timestamp","pages.transaction_details_panel.details.transaction_hash":"Transaction Hash","pages.transaction_details_panel.details.transaction_fee":"Transaction Fee","pages.transaction_details_panel.details.gas_price":"Gas Price","pages.transaction_details_panel.details.gas_used":"Gas Used","pages.transaction_details_panel.details.nonce":"Nonce","pages.send_receive_panel.send.labels.token_and_amount":"Token and Amount","pages.send_receive_panel.send.labels.destination_address":"Destination Address","pages.send_receive_panel.send.labels.projected_fee":"Projected Fee","pages.send_receive_panel.send.placeholders.enter_amount":"Enter Amount","pages.send_receive_panel.send.placeholders.insert_recipient_address":"Insert Recipient Address","pages.send_receive_panel.send.placeholders.projected_fee":"Projected Fee","pages.send_receive_panel.send.errors.amount":"Insufficient Funds: You do not have enough to cover the amount + fee.","pages.send_receive_panel.send.errors.destination":"Destination address is not correct. Check and input again.","pages.send_receive_panel.send.hints.token_price":"Token Price","pages.send_receive_panel.send.fees.Fast":"Fast","pages.send_receive_panel.send.fees.Avg":"Avg","pages.send_receive_panel.send.fees.Slow":"Slow","pages.send_receive_panel.send.search_dropdown.placeholder":"Search token","pages.send_receive_panel.send.search_dropdown.no_results":"No Results","pages.send_receive_panel.send.search_dropdown.error":"Error occurred while searching tokens.","pages.send_receive_panel.send.transaction_time":"Transaction Time: ~{{ time }} minutes","pages.send_receive_panel.send.from":"From","pages.send_receive_panel.send.to":"To","pages.send_receive_panel.send.amount":"Amount","pages.send_receive_panel.send.fee":"Fee","pages.send_receive_panel.send.total_amount":"Total Amount","pages.send_receive_panel.send.waiting_message":"Review and verify the information on your MetaMask. Sign to send the transaction.","pages.send_receive_panel.send.waiting_spinner_text":"Waiting for confirmation...","pages.send_receive_panel.send.failed_message":"It looks like something went wrong while sending your transaction. Press 'Retry' to make another attempt.","pages.send_receive_panel.receive.alert":"Send only Polygon or Ethereum Network compatible tokens to this address or you could permanently lose your funds!","pages.settings.title":"Settings","pages.settings.sidebar.general":"General","pages.settings.sidebar.notifications":"Notifications","pages.settings.sidebar.session_history":"Sessions History","pages.settings.general.title":"Settings","pages.settings.general.subtitle":"Customize your App Experience","pages.settings.general.currency":"Currency","pages.settings.general.currency_subtitle":"Select your default currency which will be used throughout the app.","pages.settings.general.time_date":"Time & Date","pages.settings.general.time_date_subtitle":"Select how you want time and date be shown inside app.","pages.settings.general.date_format":"Date Format","pages.settings.general.time_format":"Time Format","pages.settings.general.timezone":"Timezone","pages.settings.general.set_defaults":"Set Defaults","pages.settings.general.set_defaults_content":"Reverting to the default settings will remove any customizations previously made. Are you sure?","pages.settings.general.save":"Save Settings","pages.settings.general.saved":"Your settings have been successfully saved","pages.wallet.title":"Wallet","pages.privacy_policy.title":"Privacy Policy","pages.terms_of_service.title":"Terms of Service","pagination.previous":"« Previous","pagination.next":"Next »","passwords.reset":"Your password has been reset!","passwords.sent":"We have emailed your password reset link!","passwords.throttled":"Please wait before retrying.","passwords.token":"This password reset token is invalid.","passwords.user":"We can't find a user with that email address.","urls.landing":"https://dashbrd.com","urls.cookie_policy":"https://dashbrd.com/cookie-policy","urls.privacy_policy":"https://dashbrd.com/privacy-policy","urls.terms_of_service":"https://dashbrd.com/terms-of-service","urls.twitter":"https://x.com/DashbrdApp","urls.discord":"https://discord.gg/MJyWKkCJ5k","urls.github":"https://github.com/ArdentHQ/dashbrd","urls.coingecko":"https://www.coingecko.com","urls.etherscan":"https://etherscan.io","urls.polygonscan":"https://polygonscan.com","urls.alchemy":"https://www.alchemy.com","urls.moralis":"https://moralis.io","urls.mnemonic":"https://www.mnemonichq.com","urls.opensea":"https://opensea.io/","urls.explorers.etherscan.token_transactions":"https://etherscan.io/token/{{token}}?a={{address}}","urls.explorers.etherscan.addresses":"https://etherscan.io/address/{{address}}","urls.explorers.etherscan.transactions":"https://etherscan.io/tx/{{id}}","urls.explorers.etherscan.nft":"https://etherscan.io/nft/{{address}}/{{nftId}}","urls.explorers.polygonscan.token_transactions":"https://polygonscan.com/token/{{token}}?a={{address}}","urls.explorers.polygonscan.addresses":"https://polygonscan.com/address/{{address}}","urls.explorers.polygonscan.transactions":"https://polygonscan.com/tx/{{id}}","urls.explorers.polygonscan.nft":"https://polygonscan.com/nft/{{address}}/{{nftId}}","urls.explorers.mumbai.token_transactions":"https://mumbai.polygonscan.com/token/{{token}}?a={{address}}","urls.explorers.mumbai.addresses":"https://mumbai.polygonscan.com/address/{{address}}","urls.explorers.mumbai.transactions":"https://mumbai.polygonscan.com/tx/{{id}}","urls.explorers.mumbai.nft":"https://mumbai.polygonscan.com/nft/{{address}}/{{nftId}}","urls.explorers.goerli.token_transactions":"https://goerli.etherscan.io/token/{{token}}?a={{address}}","urls.explorers.goerli.addresses":"https://goerli.etherscan.io/address/{{address}}","urls.explorers.goerli.transactions":"https://goerli.etherscan.io/tx/{{id}}","urls.explorers.goerli.nft":"https://goerli.etherscan.io/nft/{{address}}/{{nftId}}","urls.marketplaces.opensea.collection":"https://opensea.io/assets/{{network}}/{{address}}","urls.marketplaces.opensea.nft":"https://opensea.io/assets/{{network}}/{{address}}/{{nftId}}","urls.marketplaces.rarible.collection":"https://rarible.com/collection/{{address}}/items","urls.marketplaces.rarible.nft":"https://rarible.com/token/{{address}}:{{nftId}}","urls.marketplaces.blur.collection":"https://blur.io/collection/{{address}}","urls.marketplaces.blur.nft":"https://blur.io/asset/{{address}}/{{nftId}}","urls.marketplaces.looksrare.collection":"https://looksrare.org/collections/{{address}}","urls.marketplaces.looksrare.nft":"https://looksrare.org/collections/{{address}}/{{nftId}}","validation.accepted":"The {{attribute}} must be accepted.","validation.accepted_if":"The {{attribute}} must be accepted when {{other}} is {{value}}.","validation.active_url":"The {{attribute}} is not a valid URL.","validation.after":"The {{attribute}} must be a date after {{date}}.","validation.after_or_equal":"The {{attribute}} must be a date after or equal to {{date}}.","validation.alpha":"The {{attribute}} must only contain letters.","validation.alpha_dash":"The {{attribute}} must only contain letters, numbers, dashes and underscores.","validation.alpha_num":"The {{attribute}} must only contain letters and numbers.","validation.array":"The {{attribute}} must be an array.","validation.ascii":"The {{attribute}} must only contain single-byte alphanumeric characters and symbols.","validation.before":"The {{attribute}} must be a date before {{date}}.","validation.before_or_equal":"The {{attribute}} must be a date before or equal to {{date}}.","validation.between.array":"The {{attribute}} must have between {{min}} and {{max}} items.","validation.between.file":"The {{attribute}} must be between {{min}} and {{max}} kilobytes.","validation.between.numeric":"The {{attribute}} must be between {{min}} and {{max}}.","validation.between.string":"The {{attribute}} must be between {{min}} and {{max}} characters.","validation.boolean":"The {{attribute}} field must be true or false.","validation.confirmed":"The {{attribute}} confirmation does not match.","validation.current_password":"The password is incorrect.","validation.date":"The {{attribute}} is not a valid date.","validation.date_equals":"The {{attribute}} must be a date equal to {{date}}.","validation.date_format":"The {{attribute}} does not match the format {{format}}.","validation.decimal":"The {{attribute}} must have {{decimal}} decimal places.","validation.declined":"The {{attribute}} must be declined.","validation.declined_if":"The {{attribute}} must be declined when {{other}} is {{value}}.","validation.different":"The {{attribute}} and {{other}} must be different.","validation.digits":"The {{attribute}} must be {{digits}} digits.","validation.digits_between":"The {{attribute}} must be between {{min}} and {{max}} digits.","validation.dimensions":"The {{attribute}} has invalid image dimensions.","validation.distinct":"The {{attribute}} field has a duplicate value.","validation.doesnt_end_with":"The {{attribute}} may not end with one of the following: {{values}}.","validation.doesnt_start_with":"The {{attribute}} may not start with one of the following: {{values}}.","validation.email":"The {{attribute}} must be a valid email address.","validation.ends_with":"The {{attribute}} must end with one of the following: {{values}}.","validation.enum":"The selected {{attribute}} is invalid.","validation.exists":"The selected {{attribute}} is invalid.","validation.file":"The {{attribute}} must be a file.","validation.filled":"The {{attribute}} field must have a value.","validation.gt.array":"The {{attribute}} must have more than {{value}} items.","validation.gt.file":"The {{attribute}} must be greater than {{value}} kilobytes.","validation.gt.numeric":"The {{attribute}} must be greater than {{value}}.","validation.gt.string":"The {{attribute}} must be greater than {{value}} characters.","validation.gte.array":"The {{attribute}} must have {{value}} items or more.","validation.gte.file":"The {{attribute}} must be greater than or equal to {{value}} kilobytes.","validation.gte.numeric":"The {{attribute}} must be greater than or equal to {{value}}.","validation.gte.string":"The {{attribute}} must be greater than or equal to {{value}} characters.","validation.image":"The {{attribute}} must be an image.","validation.in":"The selected {{attribute}} is invalid.","validation.in_array":"The {{attribute}} field does not exist in {{other}}.","validation.integer":"The {{attribute}} must be an integer.","validation.ip":"The {{attribute}} must be a valid IP address.","validation.ipv4":"The {{attribute}} must be a valid IPv4 address.","validation.ipv6":"The {{attribute}} must be a valid IPv6 address.","validation.json":"The {{attribute}} must be a valid JSON string.","validation.lowercase":"The {{attribute}} must be lowercase.","validation.lt.array":"The {{attribute}} must have less than {{value}} items.","validation.lt.file":"The {{attribute}} must be less than {{value}} kilobytes.","validation.lt.numeric":"The {{attribute}} must be less than {{value}}.","validation.lt.string":"The {{attribute}} must be less than {{value}} characters.","validation.lte.array":"The {{attribute}} must not have more than {{value}} items.","validation.lte.file":"The {{attribute}} must be less than or equal to {{value}} kilobytes.","validation.lte.numeric":"The {{attribute}} must be less than or equal to {{value}}.","validation.lte.string":"The {{attribute}} must be less than or equal to {{value}} characters.","validation.mac_address":"The {{attribute}} must be a valid MAC address.","validation.max.array":"The {{attribute}} must not have more than {{max}} items.","validation.max.file":"The {{attribute}} must not be greater than {{max}} kilobytes.","validation.max.numeric":"The {{attribute}} must not be greater than {{max}}.","validation.max.string":"The {{attribute}} must not be greater than {{max}} characters.","validation.max_digits":"The {{attribute}} must not have more than {{max}} digits.","validation.mimes":"The {{attribute}} must be a file of type: {{values}}.","validation.mimetypes":"The {{attribute}} must be a file of type: {{values}}.","validation.min.array":"The {{attribute}} must have at least {{min}} items.","validation.min.file":"The {{attribute}} must be at least {{min}} kilobytes.","validation.min.numeric":"The {{attribute}} must be at least {{min}}.","validation.min.string":"The {{attribute}} must be at least {{min}} characters.","validation.min_digits":"The {{attribute}} must have at least {{min}} digits.","validation.missing":"The {{attribute}} field must be missing.","validation.missing_if":"The {{attribute}} field must be missing when {{other}} is {{value}}.","validation.missing_unless":"The {{attribute}} field must be missing unless {{other}} is {{value}}.","validation.missing_with":"The {{attribute}} field must be missing when {{values}} is present.","validation.missing_with_all":"The {{attribute}} field must be missing when {{values}} are present.","validation.multiple_of":"The {{attribute}} must be a multiple of {{value}}.","validation.not_in":"The selected {{attribute}} is invalid.","validation.not_regex":"The {{attribute}} format is invalid.","validation.numeric":"The {{attribute}} must be a number.","validation.password.letters":"The {{attribute}} must contain at least one letter.","validation.password.mixed":"The {{attribute}} must contain at least one uppercase and one lowercase letter.","validation.password.numbers":"The {{attribute}} must contain at least one number.","validation.password.symbols":"The {{attribute}} must contain at least one symbol.","validation.password.uncompromised":"The given {{attribute}} has appeared in a data leak. Please choose a different {{attribute}}.","validation.present":"The {{attribute}} field must be present.","validation.prohibited":"The {{attribute}} field is prohibited.","validation.prohibited_if":"The {{attribute}} field is prohibited when {{other}} is {{value}}.","validation.prohibited_unless":"The {{attribute}} field is prohibited unless {{other}} is in {{values}}.","validation.prohibits":"The {{attribute}} field prohibits {{other}} from being present.","validation.regex":"The {{attribute}} format is invalid.","validation.required":"The {{attribute}} field is required.","validation.required_array_keys":"The {{attribute}} field must contain entries for: {{values}}.","validation.required_if":"The {{attribute}} field is required when {{other}} is {{value}}.","validation.required_if_accepted":"The {{attribute}} field is required when {{other}} is accepted.","validation.required_unless":"The {{attribute}} field is required unless {{other}} is in {{values}}.","validation.required_with":"The {{attribute}} field is required when {{values}} is present.","validation.required_with_all":"The {{attribute}} field is required when {{values}} are present.","validation.required_without":"The {{attribute}} field is required when {{values}} is not present.","validation.required_without_all":"The {{attribute}} field is required when none of {{values}} are present.","validation.same":"The {{attribute}} and {{other}} must match.","validation.size.array":"The {{attribute}} must contain {{size}} items.","validation.size.file":"The {{attribute}} must be {{size}} kilobytes.","validation.size.numeric":"The {{attribute}} must be {{size}}.","validation.size.string":"The {{attribute}} must be {{size}} characters.","validation.starts_with":"The {{attribute}} must start with one of the following: {{values}}.","validation.string":"The {{attribute}} must be a string.","validation.timezone":"The {{attribute}} must be a valid timezone.","validation.unique":"The {{attribute}} has already been taken.","validation.uploaded":"The {{attribute}} failed to upload.","validation.uppercase":"The {{attribute}} must be uppercase.","validation.url":"The {{attribute}} must be a valid URL.","validation.ulid":"The {{attribute}} must be a valid ULID.","validation.uuid":"The {{attribute}} must be a valid UUID.","validation.custom.attribute-name.rule-name":"custom-message","validation.unsupported_currency_code":"The currency code you provided is invalid or not supported.","validation.unsupported_period":"The period you provided is invalid or not supported.","validation.unsupported_token_symbol":"The token symbol you provided is invalid or not supported.","validation.gallery_title_required":"Gallery name is required.","validation.gallery_title_max_characters":"The gallery name should not exceed 50 characters.","validation.gallery_title_invalid":"The gallery name is invalid.","validation.nfts_required":"Please add at least one NFT.","validation.nfts_max_size":"Galleries can contain no more than {{limit}} NFTs","validation.invalid_nfts":"The NFT in position {{position}} is invalid, please select another one.","validation.invalid_cover":"You have selected an invalid cover image, please try another one."} \ No newline at end of file +{"auth.welcome":"Welcome to Dashbrd","auth.logged_in":"You're logged in!","auth.log_out":"Log out","auth.failed":"These credentials do not match our records.","auth.session_timeout":"Your session has timed out. Please refresh the page and try connecting your account again.","auth.session_timeout_modal":"Seems like your session has timed out. Please connnect your wallet again.","auth.password":"The provided password is incorrect.","auth.throttle":"Too many login attempts. Please try again in {{seconds}} seconds.","auth.wallet.connecting":"Connecting …","auth.wallet.waiting_for_signature":"Waiting for Signature …","auth.wallet.switching_wallet":"Switching Wallet …","auth.wallet.connect":"Connect Wallet","auth.wallet.connect_long":"Connect Your Wallet to Get Started","auth.wallet.sign_subtitle":"Connect Your Wallet to Continue","auth.wallet.disconnect":"Disconnect Wallet","auth.wallet.install":"Install MetaMask","auth.wallet.install_long":"Install MetaMask to Get Started","auth.wallet.sign":"Sign Message","auth.wallet.sign_message":"Welcome to Dashbrd. In order to login, sign this message with your wallet. It doesn't cost you anything!\n\nSigning ID (you can ignore this): {{nonce}}","auth.wallet.connect_subtitle":"Click on the MetaMask icon in your browser to confirm the action and connect your wallet.","auth.wallet.requires_signature":"In order to prevent impersonation, we require a signature to perform this action. This signature is only a signed message and does not give any access to your wallet.","auth.errors.metamask.no_account":"No account found. Please connect your wallet and try again.","auth.errors.metamask.generic":"Connection attempt error. Please retry and follow the steps to connect your wallet.","auth.errors.metamask.invalid_network":"Please switch to Polygon or Ethereum Mainnet in your MetaMask plugin to connect to Dashbrd.","auth.errors.metamask.provider_missing":"You don't have MetaMask installed in your browser. Please install and try again.","auth.errors.metamask.user_rejected":"It looks like you cancelled signing of the authentication message. Please try again.","auth.errors.metamask.provider_not_set":"Ethereum provider is not set","auth.validation.wallet_login_failed":"There was a problem trying to verify your signature. Please try again.","auth.validation.invalid_address":"Your wallet address is invalid. Please try again.","auth.validation.invalid_signature":"Signature is invalid. Please try again.","auth.validation.invalid_network":"Please switch to Polygon or Ethereum Mainnet in your MetaMask plugin to connect to Dashbrd.","common.author":"Author","common.add":"Add","common.amount":"Amount","common.balance":"Balance","common.cancel":"Cancel","common.delete":"Delete","common.edit":"Edit","common.confirm":"Confirm","common.connect":"Connect","common.continue":"Continue","common.done":"Done","common.filter":"Filter","common.items":"Items","common.receive":"Receive","common.received":"Received","common.retry":"Retry","common.records":"Records","common.save":"Save","common.send":"Send","common.sent":"Sent","common.show":"Show","common.searching":"Searching...","common.other":"Other","common.owned":"Owned","common.token":"Token","common.tokens":"Tokens","common.wallet":"Wallet","common.pending":"Pending","common.publish":"Publish","common.published":"Published","common.empty":"Empty","common.your_address":"Your Address","common.warning":"Warning","common.my_address":"My Address","common.my_wallet":"My Wallet","common.my_collections":"My Collections","common.my_balance":"My Balance","common.na":"N/A","common.simple_plural_without_data":"One comment|Many comments","common.simple_plural_with_data":"{{count}} comment|{{count}} comments","common.advanced_plural_without_data":"{0} no comments yet|{1} 1 comment|[2,*] Many comments","common.advanced_plural_with_data":"{0} no comments yet|{1} 1 comment|[2,*] {{count}} comments","common.copy_clipboard":"Copy to Clipboard","common.copy":"Copy","common.download":"Download","common.zoom":"Zoom","common.my_collection":"My Collection","common.max":"Max","common.chain":"Chain","common.copied":"Copied!","common.coming_soon":"Coming Soon","common.more_details":"More Details","common.close":"Close","common.close_toast":"Close toast","common.loading":"Loading","common.price":"Price","common.articles":"Articles","common.most_popular":"Most Popular","common.market_cap":"Market Cap","common.volume":"Volume {{frequency}}","common.value":"Value","common.last_n_days":"Last {{count}} Days","common.details":"Details","common.view_all":"View All","common.view_more_on_polygonscan":"View More on Polygonscan","common.view_more_on_etherscan":"View More on Etherscan","common.view_nft_on_etherscan":"View NFT on Etherscan","common.view_nft_on_polygonscan":"View NFT on Polygonscan","common.view_nft_on_goerli_tesnet":"View NFT on Goerli Testnet Explorer","common.view_nft_on_mumbai_tesnet":"View NFT on Mumbai Testnet Explorer","common.polygonscan":"Polygonscan","common.etherscan":"Etherscan","common.featured":"Featured","common.floor_price":"Floor Price","common.floor":"Floor","common.supply":"Supply","common.owners":"Owners","common.created":"Created","common.nft":"NFT","common.collection":"Collection","common.collections":"Collections","common.gallery":"Gallery","common.basic_gallery":"Basic Gallery","common.gallery_name":"Gallery Name","common.create_gallery":"Create Gallery","common.external_link":"External Link","common.follow_link":"Follow Link","common.cover":"Cover","common.template":"Template","common.page":"Page","common.polygon":"Polygon","common.ethereum":"Ethereum","common.mumbai":"Mumbai","common.goerli":"Goerli","common.of":"of","common.pagination_input_placeholder":"Enter the page number","common.pagination_input_placeholder_mobile":"Page number","common.nft_count":"{0} {{count}} NFTs|{1} {{count}} NFT|[2,*] {{count}} NFTs","common.nft_gallery":"NFT Gallery","common.unable_to_retrieve_image":"Unable to retrieve your NFT image at this time","common.optional":"Optional","common.selected":"Selected","common.select":"Select","common.preview":"Preview","common.image_size_error":"Image size must not exceed 2MB","common.image_dimensions_error":"Image dimensions must exceed 287px x 190px","common.write_to_confirm":"Write {{word}} to confirm","common.n_hours":"{0} {{count}} hour|{1} {{count}} hour|[2,*] {{count}} hours","common.n_minutes":"{0} {{count}} minute|{1} {{count}} minute|[2,*] {{count}} minutes","common.report":"Report","common.n_nfts":"{0}NFTs|{1}NFT|[2,*]NFTs","common.n_collections":"{0}collections|{1}collection|[2,*]collections","common.back":"Back","common.back_to":"Back to","common.name":"Name","common.type":"Type","common.from":"From","common.to":"To","common.sale_price":"Sale Price","common.recent_activity":"Recent Activity","common.time":"Time","common.datetime.few_seconds_ago":"A few seconds ago","common.datetime.minutes_ago":"{0} Less than a minute ago|{1} A minute ago|[2,*] {{count}} minutes ago","common.datetime.hours_ago":"{0} Less than an hour ago|{1} An hour ago|[2,*] {{count}} hours ago","common.datetime.days_ago":"{0} Less than a day ago|{1} A day ago|[2,*] {{count}} days ago","common.datetime.weeks_ago":"{0} Less than a week ago|{1} A week ago|[2,*] {{count}} weeks ago","common.datetime.months_ago":"{0} Less than a month ago|{1} A month ago|[2,*] {{count}} months ago","common.datetime.years_ago":"{0} Less than a year ago|{1} A year ago|[2,*] {{count}} years ago","common.no_traits_found":"No traits found.","common.empty_transactions":"You don't have any transactions yet. Once transactions have been made, they will show up here.","common.error":"Error","common.refresh":"Refresh","common.refresh_metadata":"Refresh Metadata","common.refreshing_metadata":"Refreshing Metadata... Please check back later.","common.refreshing_activity":"Refreshing Activity... Please check back later.","common.pending_confirmation":"Pending Confirmation","common.confirmed_transaction":"Confirmed Transaction","common.transaction_error":"Transaction Error","common.transaction_error_description_first_part":"Your transaction encountered an error. View this transaction on","common.transaction_error_description_second_part":"for more details.","common.home":"Home","common.contact":"Contact","common.menu":"Menu","common.website":"Website","common.twitter":"Twitter","common.discord":"Discord","common.facebook":"Facebook","common.reddit":"Reddit","common.x":"X","common.sort":"Sort","common.drafts":"Drafts","common.draft":"Draft","common.delete_draft":"Delete Draft","common.share_on":"Share on {{platform}}","footer.copyright":"{{year}} © Dashbrd. All rights reserved.","footer.all_rights_reserved":"All rights reserved","footer.privacy_policy":"Privacy Policy","footer.terms_of_service":"Terms of Service","footer.powered_by":"Powered by","format.fiat":"{{ value, currency }}","format.number":"{{ value, number }}","metatags.home.title":"Dashbrd | Web3 Portfolio Management Made Simple","metatags.home.description":"Simplify your Web3 journey with Dashbrd. Manage your portfolio of tokens, NFTs, and other digital collectibles across the Ethereum and Polygon blockchains.","metatags.home.image":"/images/meta/home.png","metatags.error.title":"Error {{code}} | Dashbrd","metatags.wallet.title":"My Wallet | Dashbrd","metatags.galleries.title":"Top NFT Galleries | Dashbrd","metatags.galleries.image":"/images/meta/nft-galleries.png","metatags.galleries.description":"Explore user published NFT galleries to find custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.most_popular.title":"Most Popular Galleries | Dashbrd","metatags.galleries.most_popular.image":"/images/meta/most-popular-nft-galleries.png","metatags.galleries.most_popular.description":"Explore and discover Most Popular NFT Galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.newest.title":"Newest Galleries | Dashbrd","metatags.galleries.newest.image":"/images/meta/newest-nft-galleries.png","metatags.galleries.newest.description":"Explore and discover most recent NFT galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More","metatags.galleries.most_valuable.title":"Most Valuable Galleries | Dashbrd","metatags.galleries.most_valuable.image":"/images/meta/most-valuable-nft-galleries.png","metatags.galleries.most_valuable.description":"Explore and discover Most Valuable NFT Galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.view.title":"{{name}} | Dashbrd","metatags.galleries.view.description":"{{name}} | A Curated NFT Gallery at Dashbrd","metatags.galleries.view.image":"/images/meta/nft-gallery.png","metatags.my_galleries.title":"My Galleries | Dashbrd","metatags.my_galleries.title_draft":"My Draft Galleries | Dashbrd","metatags.my_galleries.create.title":"Create Gallery | Dashbrd","metatags.my_galleries.edit.title":"Edit {{name}} | Dashbrd","metatags.collections.title":"Collections | Dashbrd","metatags.collections.view.title":"{{name}} Collection | Dashbrd","metatags.collections.view.description":"Immerse yourself in the intricate details of {{name}} collection, featuring remarkable digital assets. Start your NFT journey today!","metatags.collections.view.image":"/images/meta/nft-collection.png","metatags.my-collections.title":"My Collections | Dashbrd","metatags.nfts.view.title":"{{nft}} NFT | Dashbrd","metatags.nfts.view.description":"Uncover the complete story of {{nft}} NFT from the {{collection}} collection, delving into its unique attributes and distinctive features.","metatags.nfts.view.image":"/images/meta/nft-details.png","metatags.settings.title":"Settings | Dashbrd","metatags.articles.title":"Articles | Dashbrd","metatags.articles.view.title":"{{title}} | Dashbrd","metatags.login.title":"Login | Dashbrd","metatags.privacy_policy.title":"Privacy Policy | Dashbrd","metatags.privacy_policy.description":"Dashbrd’s privacy policy outlines the information we collect and explains your choices surrounding how we use information about you.","metatags.terms_of_service.title":"Terms of Service | Dashbrd","metatags.terms_of_service.description":"These Terms of Service cover your use and access to services, products or websites of Dashbrd.","metatags.cookie_policy.title":"Cookie Policy | Dashbrd","metatags.cookie_policy.description":"Dashbrd uses cookies to make the website more user-friendly. Find out about the main types of cookies we use, and what we use them for.","metatags.welcome.title":"Welcome to Dashbrd | Web3 Simplified","pages.onboarding.title":"Get Started","pages.onboarding.heading":"Your monkeys were bored and ran off, we are trying to round them up.","pages.onboarding.message":"We are setting up your account. This process usually takes just a few minutes, but can take up to 15 minutes.","pages.error.heading":"Oops, something went wrong ...","pages.error.message":"Please try again or get in touch if the issue persists.","pages.maintenance.title":"Dashbrd is currently down for scheduled maintenance.","pages.maintenance.description":"We expect to be back soon. Thanks for your patience.","pages.dashboard.title":"My Wallet","pages.dashboard.breakdown.title":"Portfolio Breakdown","pages.dashboard.line_chart.data_error":"Could not load chart data","pages.articles.title":"Articles","pages.articles.featured_collections":"Featured Collections","pages.articles.placeholder_more_soon":"More Soon","pages.articles.no_articles":"No articles have been published yet. Please check back later!","pages.articles.header_title":"Explore our collection of","pages.articles.header_suffix_one":"published article","pages.articles.header_suffix_other":"published articles","pages.articles.audio_version":"Audio version","pages.articles.consists_of_collections":"{0} This article highlights {{count}} collections|{1} This article highlights {{count}} collection|[2,*] This article highlights {{count}} collections","pages.collections.title":"Collections","pages.collections.collections":"Collections","pages.collections.collection_value":"Collection Value","pages.collections.nfts_owned":"NFTs Owned","pages.collections.header_title":"You own <0>{{nftsCount}} {{nfts}} across <0>{{collectionsCount}} {{collections}}, worth about <0><1>{{worth}}","pages.collections.search_placeholder":"Search by Collection","pages.collections.properties":"Properties","pages.collections.collections_network":"Collections Network","pages.collections.property_search_placeholder":"Feature Search","pages.collections.floor_price":"Floor Price","pages.collections.value":"Value","pages.collections.rarity":"Rarity","pages.collections.report":"Report","pages.collections.hide_collection":"Hide Collection","pages.collections.unhide_collection":"Unhide Collection","pages.collections.no_collections":"You do not own any NFTs yet. Once you do they will be shown here.","pages.collections.all_collections_hidden":"You have hidden all your collections. Unhide and they will appear here.","pages.collections.about_collection":"About Collection","pages.collections.show_hidden":"Show Hidden","pages.collections.show_my_collection":"Show My Collection","pages.collections.owned":"Owned","pages.collections.activities.loading_activities":"We're fetching Activity for this NFT, please hang tight, this can take a while.","pages.collections.activities.loading_activities_collection":"We're fetching Activity for this collection, please hang tight, this can take a while.","pages.collections.activities.ignores_activities":"We don't support activity history for this collection yet.","pages.collections.activities.no_activity":"This collection does not have any activity yet.","pages.collections.activities.types.LABEL_MINT":"Mint","pages.collections.activities.types.LABEL_TRANSFER":"Transfer","pages.collections.activities.types.LABEL_SALE":"Sale","pages.collections.articles.no_articles":"No articles have been linked to this collection as of now.","pages.collections.articles.no_articles_with_filters":"We could not find any articles matching your search criteria, please try again!","pages.collections.articles.search_placeholder":"Search in Articles","pages.collections.articles.sort_latest":"Latest","pages.collections.articles.sort_popularity":"Most Popular","pages.collections.search.loading_results":"Loading results...","pages.collections.search.no_results":"We could not find anything matching your search criteria, please try again!","pages.collections.search.no_results_with_filters":"We could not find anything matching your filters, please try again!","pages.collections.search.no_results_ownership":"You do not own any NFTs in this collection","pages.collections.search.error":"Could not load search results. Please try again later.","pages.collections.sorting.token_number":"Token Number","pages.collections.sorting.recently_received":"Recently Received","pages.collections.sorting.recently_created":"Recently Created","pages.collections.sorting.oldest_collection":"Oldest Collection","pages.collections.traits.description":"List of NFT traits by % of occurrence in the collection","pages.collections.traits.no_traits":"No Properties can be found for this NFT","pages.collections.menu.collection":"Collection","pages.collections.menu.articles":"Articles","pages.collections.menu.activity":"Activity","pages.collections.hidden_modal.collection_hidden":"Collection Hidden","pages.collections.hidden_modal.description":"This collection is currently set to Hidden. Are you sure you want to unhide this collection? You can\n reset the collection to hidden from the collection menu.","pages.collections.hidden_modal.unhide":"Unhide","pages.collections.hidden_modal.error":"Something went wrong. Please try again.","pages.collections.external_modal.you_wish_continue":"You are about to leave Dashbrd to an external website. Dashbrd has no control over the content of\n this site. Are you sure you wish to continue?","pages.collections.external_modal.not_show":"Do not show this message again.","pages.collections.refresh.title":"Refresh your collection","pages.collections.refresh.notice":"You can refresh data every 15 minutes.","pages.collections.refresh.notice_wait":"Please wait. You can refresh data every 15 minutes.","pages.collections.refresh.toast":"We're updating information for your collection.","pages.nfts.nft":"nft","pages.nfts.about_nft":"About NFT","pages.nfts.owned_by":"Owned by","pages.nfts.collection_image":"collection image","pages.nfts.menu.properties":"Properties","pages.nfts.menu.activity":"Activity","pages.reports.title":"Submit a Report","pages.reports.description":"Thanks for looking out by reporting things that break the rules. Let us know what's happening and we'll receive the report.","pages.reports.success":"Thank you for your report. We'll review it and see if it breaks our ToS.","pages.reports.failed":"Something went wrong. Please try again.","pages.reports.throttle":"You have made too many requests. Please wait {{time}} before reporting again.","pages.reports.reported":"You have already reported this {{model}}.","pages.reports.reasons.spam":"Spam","pages.reports.reasons.violence":"Promoting Violence","pages.reports.reasons.hate":"Hate","pages.reports.reasons.inappropriate_content":"Inappropriate Content","pages.reports.reasons.impersonation":"Impersonation","pages.reports.reasons.trademark":"Trademark or Copyright","pages.reports.reasons.selfharm":"Self-Harm","pages.reports.reasons.harassment":"Harassment","pages.galleries.title":"Galleries","pages.galleries.empty_title":"No galleries have been published yet. Once they do they will appear here.","pages.galleries.search.loading_results":"Loading results...","pages.galleries.search.no_results":"We could not find anything matching your search criteria, please try again!","pages.galleries.search.placeholder":"Search by name or curator address","pages.galleries.search.placeholder_nfts":"Search by NFTs","pages.galleries.search.error":"Could not load search results. Please try again later.","pages.galleries.my_galleries.title":"My Galleries","pages.galleries.my_galleries.subtitle":"Manage your galleries","pages.galleries.my_galleries.new_gallery":"New Gallery","pages.galleries.my_galleries.no_galleries":"You have not created any galleries yet. To create a gallery, click on the \"Create Gallery\" button.","pages.galleries.my_galleries.no_draft_galleries":"You have no draft galleries yet. To create a gallery, click on the \"Create Gallery\" button.","pages.galleries.my_galleries.succesfully_deleted":"Gallery has been successfully removed","pages.galleries.my_galleries.draft_succesfully_deleted":"Draft has been successfully removed","pages.galleries.my_galleries.successfully_created":"Gallery has been successfully created","pages.galleries.my_galleries.successfully_updated":"Gallery has been successfully updated","pages.galleries.my_galleries.new_gallery_no_nfts":"Creating a Gallery requires you to own an NFT.","pages.galleries.my_galleries.delete_modal.title":"Delete Draft","pages.galleries.my_galleries.delete_modal.text":"Are you sure you want to delete the draft? Everything you've done will be deleted and you won't be able to get it back.","pages.galleries.my_galleries.nfts_no_longer_owned":"NFTs no longer owned by this wallet have been removed from the draft”","pages.galleries.copy_gallery_link":"Copy Gallery Link","pages.galleries.my_nfts":"My NFTs","pages.galleries.value":"Value","pages.galleries.floor_price":"Floor Price","pages.galleries.nfts":"NFTs","pages.galleries.collections":"Collections","pages.galleries.galleries_count_simple":"{0} galleries|{1} gallery|[2,*] galleries","pages.galleries.galleries_count":"{0} {{count}} Galleries|{1} {{count}} Gallery|[2,*] {{count}} Galleries","pages.galleries.collections_count_simple":"{0} collections|{1} collection|[2,*] collections","pages.galleries.collections_count":"{0} {{count}} Collections|{1} {{count}} Collection|[2,*] {{count}} Collections","pages.galleries.nfts_count_simple":"{0} NFTs|{1} NFT|[2,*] NFTs","pages.galleries.nfts_count":"{0} {{count}} NFTs|{1} {{count}} NFT|[2,*] {{count}} NFTs","pages.galleries.users_count_simple":"{0} users|{1} user|[2,*] users","pages.galleries.users_count":"{0} {{count}} Users|{1} {{count}} User|[2,*] {{count}} Users","pages.galleries.featuring":"Featuring","pages.galleries.curated_by":"Curated by","pages.galleries.worth_about":"Worth About","pages.galleries.valued_at":"valued at","pages.galleries.from":"From","pages.galleries.most_popular_galleries":"Most Popular Galleries","pages.galleries.newest_galleries":"Newest Galleries","pages.galleries.most_valuable_galleries":"Most Valuable Galleries","pages.galleries.most_popular":"Most Popular","pages.galleries.newest":"Newest","pages.galleries.most_valuable":"Most Valuable","pages.galleries.create.search_by_nfts":"Search by NFTs","pages.galleries.create.input_placeholder":"Enter gallery name","pages.galleries.create.title_too_long":"Gallery name must not exceed {{max}} characters.","pages.galleries.create.already_selected_nft":"NFT already exists in this gallery","pages.galleries.create.nft_missing_image":"Only NFTs with images can be added to galleries","pages.galleries.create.nft_gallery_limit":"You can only add 16 NFTs per gallery","pages.galleries.create.gallery_cover":"Gallery Cover","pages.galleries.create.gallery_cover_description":"The cover is used for the card on the gallery list page. While the cover is not a requirement it will allow you to add personality and stand out from the crowd.","pages.galleries.create.gallery_cover_information":"Image dimensions must be at least 287px x 190px, with a max size of 2 MB (JPG, PNG or GIF)","pages.galleries.create.no_results":"We could not find anything matching your search criteria, please try again!","pages.galleries.create.templates.cover":"Cover","pages.galleries.create.templates.template":"Template","pages.galleries.create.templates.select":"Select Gallery Template","pages.galleries.create.templates.basic":"Basic Gallery","pages.galleries.create.templates.coming_soon":"More Coming Soon","pages.galleries.create.load_more_collections_one":"Load {{count}} More Collection","pages.galleries.create.load_more_collections_other":"Load {{count}} More Collections","pages.galleries.create.load_more_nfts":"Load More NFTs","pages.galleries.create.can_purchase":"You can purchase NFTs with these top NFT Marketplaces:","pages.galleries.create.must_own_one_nft":"You must own at least one (1) NFT in order to create a gallery.","pages.galleries.create.back_to_galleries":"Back to Galleries","pages.galleries.create.draft_saved":"Draft Saved","pages.galleries.create.saving_to_draft":"Saving to draft","pages.galleries.create.drafts_limit_modal_title":"Draft Gallery Limit","pages.galleries.create.drafts_limit_modal_message":"You’ve hit your limit for draft galleries. While you can still make new galleries and publish them, they won’t be saved as drafts. To Free up space, you can either delete existing drafts or publish them.","pages.galleries.create.drafts_limit_modal_cancel":"Go to Drafts","pages.galleries.delete_modal.title":"Delete Gallery","pages.galleries.delete_modal.confirmation_text":"Are you sure you want to delete the gallery? Deleting a Gallery is permanent, all associated views and likes will be lost.","pages.galleries.consists_of_collections":"{0} This gallery consists of {{count}} collections|{1} This gallery consists of {{count}} collection|[2,*] This gallery consists of {{count}} collections","pages.galleries.guest_banner.title":"Craft the ultimate","pages.galleries.guest_banner.subtitle":"Pick your favorites, curate your gallery, & share it with the world.","pages.profile.title":"Profile","pages.token_panel.balance_tooltip":"Total percentage of the portfolio held in this token","pages.token_panel.insufficient_funds":"Insufficient Balance","pages.token_panel.error":"Dashbrd has failed to load token information. Please try again later.","pages.token_panel.failed_to_retrieve_transactions":"We were unable to fetch your transactions.","pages.token_panel.tabs.transaction_history":"Transaction History","pages.token_panel.tabs.history":"History","pages.token_panel.tabs.market_data":"Market Data","pages.token_panel.details.current_price":"Current Price","pages.token_panel.details.title":"Token Details","pages.token_panel.details.market_cap":"Market Cap","pages.token_panel.details.volume":"Daily Volume","pages.token_panel.details.supply":"Minted Supply","pages.token_panel.details.ath":"All-Time High","pages.token_panel.details.atl":"All-Time Low","pages.token_panel.chart.failed":"Dashbrd has failed to load chart information. Please try again later.","pages.transaction_details_panel.title":"Transaction Details","pages.transaction_details_panel.details.blockchain":"Blockchain","pages.transaction_details_panel.details.timestamp":"Timestamp","pages.transaction_details_panel.details.transaction_hash":"Transaction Hash","pages.transaction_details_panel.details.transaction_fee":"Transaction Fee","pages.transaction_details_panel.details.gas_price":"Gas Price","pages.transaction_details_panel.details.gas_used":"Gas Used","pages.transaction_details_panel.details.nonce":"Nonce","pages.send_receive_panel.send.labels.token_and_amount":"Token and Amount","pages.send_receive_panel.send.labels.destination_address":"Destination Address","pages.send_receive_panel.send.labels.projected_fee":"Projected Fee","pages.send_receive_panel.send.placeholders.enter_amount":"Enter Amount","pages.send_receive_panel.send.placeholders.insert_recipient_address":"Insert Recipient Address","pages.send_receive_panel.send.placeholders.projected_fee":"Projected Fee","pages.send_receive_panel.send.errors.amount":"Insufficient Funds: You do not have enough to cover the amount + fee.","pages.send_receive_panel.send.errors.destination":"Destination address is not correct. Check and input again.","pages.send_receive_panel.send.hints.token_price":"Token Price","pages.send_receive_panel.send.fees.Fast":"Fast","pages.send_receive_panel.send.fees.Avg":"Avg","pages.send_receive_panel.send.fees.Slow":"Slow","pages.send_receive_panel.send.search_dropdown.placeholder":"Search token","pages.send_receive_panel.send.search_dropdown.no_results":"No Results","pages.send_receive_panel.send.search_dropdown.error":"Error occurred while searching tokens.","pages.send_receive_panel.send.transaction_time":"Transaction Time: ~{{ time }} minutes","pages.send_receive_panel.send.from":"From","pages.send_receive_panel.send.to":"To","pages.send_receive_panel.send.amount":"Amount","pages.send_receive_panel.send.fee":"Fee","pages.send_receive_panel.send.total_amount":"Total Amount","pages.send_receive_panel.send.waiting_message":"Review and verify the information on your MetaMask. Sign to send the transaction.","pages.send_receive_panel.send.waiting_spinner_text":"Waiting for confirmation...","pages.send_receive_panel.send.failed_message":"It looks like something went wrong while sending your transaction. Press 'Retry' to make another attempt.","pages.send_receive_panel.receive.alert":"Send only Polygon or Ethereum Network compatible tokens to this address or you could permanently lose your funds!","pages.settings.title":"Settings","pages.settings.sidebar.general":"General","pages.settings.sidebar.notifications":"Notifications","pages.settings.sidebar.session_history":"Sessions History","pages.settings.general.title":"Settings","pages.settings.general.subtitle":"Customize your App Experience","pages.settings.general.currency":"Currency","pages.settings.general.currency_subtitle":"Select your default currency which will be used throughout the app.","pages.settings.general.time_date":"Time & Date","pages.settings.general.time_date_subtitle":"Select how you want time and date be shown inside app.","pages.settings.general.date_format":"Date Format","pages.settings.general.time_format":"Time Format","pages.settings.general.timezone":"Timezone","pages.settings.general.set_defaults":"Set Defaults","pages.settings.general.set_defaults_content":"Reverting to the default settings will remove any customizations previously made. Are you sure?","pages.settings.general.save":"Save Settings","pages.settings.general.saved":"Your settings have been successfully saved","pages.wallet.title":"Wallet","pages.privacy_policy.title":"Privacy Policy","pages.terms_of_service.title":"Terms of Service","pagination.previous":"« Previous","pagination.next":"Next »","passwords.reset":"Your password has been reset!","passwords.sent":"We have emailed your password reset link!","passwords.throttled":"Please wait before retrying.","passwords.token":"This password reset token is invalid.","passwords.user":"We can't find a user with that email address.","urls.landing":"https://dashbrd.com","urls.cookie_policy":"https://dashbrd.com/cookie-policy","urls.privacy_policy":"https://dashbrd.com/privacy-policy","urls.terms_of_service":"https://dashbrd.com/terms-of-service","urls.twitter":"https://x.com/DashbrdApp","urls.discord":"https://discord.gg/MJyWKkCJ5k","urls.github":"https://github.com/ArdentHQ/dashbrd","urls.coingecko":"https://www.coingecko.com","urls.etherscan":"https://etherscan.io","urls.polygonscan":"https://polygonscan.com","urls.alchemy":"https://www.alchemy.com","urls.moralis":"https://moralis.io","urls.mnemonic":"https://www.mnemonichq.com","urls.opensea":"https://opensea.io/","urls.explorers.etherscan.token_transactions":"https://etherscan.io/token/{{token}}?a={{address}}","urls.explorers.etherscan.addresses":"https://etherscan.io/address/{{address}}","urls.explorers.etherscan.transactions":"https://etherscan.io/tx/{{id}}","urls.explorers.etherscan.nft":"https://etherscan.io/nft/{{address}}/{{nftId}}","urls.explorers.polygonscan.token_transactions":"https://polygonscan.com/token/{{token}}?a={{address}}","urls.explorers.polygonscan.addresses":"https://polygonscan.com/address/{{address}}","urls.explorers.polygonscan.transactions":"https://polygonscan.com/tx/{{id}}","urls.explorers.polygonscan.nft":"https://polygonscan.com/nft/{{address}}/{{nftId}}","urls.explorers.mumbai.token_transactions":"https://mumbai.polygonscan.com/token/{{token}}?a={{address}}","urls.explorers.mumbai.addresses":"https://mumbai.polygonscan.com/address/{{address}}","urls.explorers.mumbai.transactions":"https://mumbai.polygonscan.com/tx/{{id}}","urls.explorers.mumbai.nft":"https://mumbai.polygonscan.com/nft/{{address}}/{{nftId}}","urls.explorers.goerli.token_transactions":"https://goerli.etherscan.io/token/{{token}}?a={{address}}","urls.explorers.goerli.addresses":"https://goerli.etherscan.io/address/{{address}}","urls.explorers.goerli.transactions":"https://goerli.etherscan.io/tx/{{id}}","urls.explorers.goerli.nft":"https://goerli.etherscan.io/nft/{{address}}/{{nftId}}","urls.marketplaces.opensea.collection":"https://opensea.io/assets/{{network}}/{{address}}","urls.marketplaces.opensea.nft":"https://opensea.io/assets/{{network}}/{{address}}/{{nftId}}","urls.marketplaces.rarible.collection":"https://rarible.com/collection/{{address}}/items","urls.marketplaces.rarible.nft":"https://rarible.com/token/{{address}}:{{nftId}}","urls.marketplaces.blur.collection":"https://blur.io/collection/{{address}}","urls.marketplaces.blur.nft":"https://blur.io/asset/{{address}}/{{nftId}}","urls.marketplaces.looksrare.collection":"https://looksrare.org/collections/{{address}}","urls.marketplaces.looksrare.nft":"https://looksrare.org/collections/{{address}}/{{nftId}}","validation.accepted":"The {{attribute}} must be accepted.","validation.accepted_if":"The {{attribute}} must be accepted when {{other}} is {{value}}.","validation.active_url":"The {{attribute}} is not a valid URL.","validation.after":"The {{attribute}} must be a date after {{date}}.","validation.after_or_equal":"The {{attribute}} must be a date after or equal to {{date}}.","validation.alpha":"The {{attribute}} must only contain letters.","validation.alpha_dash":"The {{attribute}} must only contain letters, numbers, dashes and underscores.","validation.alpha_num":"The {{attribute}} must only contain letters and numbers.","validation.array":"The {{attribute}} must be an array.","validation.ascii":"The {{attribute}} must only contain single-byte alphanumeric characters and symbols.","validation.before":"The {{attribute}} must be a date before {{date}}.","validation.before_or_equal":"The {{attribute}} must be a date before or equal to {{date}}.","validation.between.array":"The {{attribute}} must have between {{min}} and {{max}} items.","validation.between.file":"The {{attribute}} must be between {{min}} and {{max}} kilobytes.","validation.between.numeric":"The {{attribute}} must be between {{min}} and {{max}}.","validation.between.string":"The {{attribute}} must be between {{min}} and {{max}} characters.","validation.boolean":"The {{attribute}} field must be true or false.","validation.confirmed":"The {{attribute}} confirmation does not match.","validation.current_password":"The password is incorrect.","validation.date":"The {{attribute}} is not a valid date.","validation.date_equals":"The {{attribute}} must be a date equal to {{date}}.","validation.date_format":"The {{attribute}} does not match the format {{format}}.","validation.decimal":"The {{attribute}} must have {{decimal}} decimal places.","validation.declined":"The {{attribute}} must be declined.","validation.declined_if":"The {{attribute}} must be declined when {{other}} is {{value}}.","validation.different":"The {{attribute}} and {{other}} must be different.","validation.digits":"The {{attribute}} must be {{digits}} digits.","validation.digits_between":"The {{attribute}} must be between {{min}} and {{max}} digits.","validation.dimensions":"The {{attribute}} has invalid image dimensions.","validation.distinct":"The {{attribute}} field has a duplicate value.","validation.doesnt_end_with":"The {{attribute}} may not end with one of the following: {{values}}.","validation.doesnt_start_with":"The {{attribute}} may not start with one of the following: {{values}}.","validation.email":"The {{attribute}} must be a valid email address.","validation.ends_with":"The {{attribute}} must end with one of the following: {{values}}.","validation.enum":"The selected {{attribute}} is invalid.","validation.exists":"The selected {{attribute}} is invalid.","validation.file":"The {{attribute}} must be a file.","validation.filled":"The {{attribute}} field must have a value.","validation.gt.array":"The {{attribute}} must have more than {{value}} items.","validation.gt.file":"The {{attribute}} must be greater than {{value}} kilobytes.","validation.gt.numeric":"The {{attribute}} must be greater than {{value}}.","validation.gt.string":"The {{attribute}} must be greater than {{value}} characters.","validation.gte.array":"The {{attribute}} must have {{value}} items or more.","validation.gte.file":"The {{attribute}} must be greater than or equal to {{value}} kilobytes.","validation.gte.numeric":"The {{attribute}} must be greater than or equal to {{value}}.","validation.gte.string":"The {{attribute}} must be greater than or equal to {{value}} characters.","validation.image":"The {{attribute}} must be an image.","validation.in":"The selected {{attribute}} is invalid.","validation.in_array":"The {{attribute}} field does not exist in {{other}}.","validation.integer":"The {{attribute}} must be an integer.","validation.ip":"The {{attribute}} must be a valid IP address.","validation.ipv4":"The {{attribute}} must be a valid IPv4 address.","validation.ipv6":"The {{attribute}} must be a valid IPv6 address.","validation.json":"The {{attribute}} must be a valid JSON string.","validation.lowercase":"The {{attribute}} must be lowercase.","validation.lt.array":"The {{attribute}} must have less than {{value}} items.","validation.lt.file":"The {{attribute}} must be less than {{value}} kilobytes.","validation.lt.numeric":"The {{attribute}} must be less than {{value}}.","validation.lt.string":"The {{attribute}} must be less than {{value}} characters.","validation.lte.array":"The {{attribute}} must not have more than {{value}} items.","validation.lte.file":"The {{attribute}} must be less than or equal to {{value}} kilobytes.","validation.lte.numeric":"The {{attribute}} must be less than or equal to {{value}}.","validation.lte.string":"The {{attribute}} must be less than or equal to {{value}} characters.","validation.mac_address":"The {{attribute}} must be a valid MAC address.","validation.max.array":"The {{attribute}} must not have more than {{max}} items.","validation.max.file":"The {{attribute}} must not be greater than {{max}} kilobytes.","validation.max.numeric":"The {{attribute}} must not be greater than {{max}}.","validation.max.string":"The {{attribute}} must not be greater than {{max}} characters.","validation.max_digits":"The {{attribute}} must not have more than {{max}} digits.","validation.mimes":"The {{attribute}} must be a file of type: {{values}}.","validation.mimetypes":"The {{attribute}} must be a file of type: {{values}}.","validation.min.array":"The {{attribute}} must have at least {{min}} items.","validation.min.file":"The {{attribute}} must be at least {{min}} kilobytes.","validation.min.numeric":"The {{attribute}} must be at least {{min}}.","validation.min.string":"The {{attribute}} must be at least {{min}} characters.","validation.min_digits":"The {{attribute}} must have at least {{min}} digits.","validation.missing":"The {{attribute}} field must be missing.","validation.missing_if":"The {{attribute}} field must be missing when {{other}} is {{value}}.","validation.missing_unless":"The {{attribute}} field must be missing unless {{other}} is {{value}}.","validation.missing_with":"The {{attribute}} field must be missing when {{values}} is present.","validation.missing_with_all":"The {{attribute}} field must be missing when {{values}} are present.","validation.multiple_of":"The {{attribute}} must be a multiple of {{value}}.","validation.not_in":"The selected {{attribute}} is invalid.","validation.not_regex":"The {{attribute}} format is invalid.","validation.numeric":"The {{attribute}} must be a number.","validation.password.letters":"The {{attribute}} must contain at least one letter.","validation.password.mixed":"The {{attribute}} must contain at least one uppercase and one lowercase letter.","validation.password.numbers":"The {{attribute}} must contain at least one number.","validation.password.symbols":"The {{attribute}} must contain at least one symbol.","validation.password.uncompromised":"The given {{attribute}} has appeared in a data leak. Please choose a different {{attribute}}.","validation.present":"The {{attribute}} field must be present.","validation.prohibited":"The {{attribute}} field is prohibited.","validation.prohibited_if":"The {{attribute}} field is prohibited when {{other}} is {{value}}.","validation.prohibited_unless":"The {{attribute}} field is prohibited unless {{other}} is in {{values}}.","validation.prohibits":"The {{attribute}} field prohibits {{other}} from being present.","validation.regex":"The {{attribute}} format is invalid.","validation.required":"The {{attribute}} field is required.","validation.required_array_keys":"The {{attribute}} field must contain entries for: {{values}}.","validation.required_if":"The {{attribute}} field is required when {{other}} is {{value}}.","validation.required_if_accepted":"The {{attribute}} field is required when {{other}} is accepted.","validation.required_unless":"The {{attribute}} field is required unless {{other}} is in {{values}}.","validation.required_with":"The {{attribute}} field is required when {{values}} is present.","validation.required_with_all":"The {{attribute}} field is required when {{values}} are present.","validation.required_without":"The {{attribute}} field is required when {{values}} is not present.","validation.required_without_all":"The {{attribute}} field is required when none of {{values}} are present.","validation.same":"The {{attribute}} and {{other}} must match.","validation.size.array":"The {{attribute}} must contain {{size}} items.","validation.size.file":"The {{attribute}} must be {{size}} kilobytes.","validation.size.numeric":"The {{attribute}} must be {{size}}.","validation.size.string":"The {{attribute}} must be {{size}} characters.","validation.starts_with":"The {{attribute}} must start with one of the following: {{values}}.","validation.string":"The {{attribute}} must be a string.","validation.timezone":"The {{attribute}} must be a valid timezone.","validation.unique":"The {{attribute}} has already been taken.","validation.uploaded":"The {{attribute}} failed to upload.","validation.uppercase":"The {{attribute}} must be uppercase.","validation.url":"The {{attribute}} must be a valid URL.","validation.ulid":"The {{attribute}} must be a valid ULID.","validation.uuid":"The {{attribute}} must be a valid UUID.","validation.custom.attribute-name.rule-name":"custom-message","validation.unsupported_currency_code":"The currency code you provided is invalid or not supported.","validation.unsupported_period":"The period you provided is invalid or not supported.","validation.unsupported_token_symbol":"The token symbol you provided is invalid or not supported.","validation.gallery_title_required":"Gallery name is required.","validation.gallery_title_max_characters":"The gallery name should not exceed 50 characters.","validation.gallery_title_invalid":"The gallery name is invalid.","validation.nfts_required":"Please add at least one NFT.","validation.nfts_max_size":"Galleries can contain no more than {{limit}} NFTs","validation.invalid_nfts":"The NFT in position {{position}} is invalid, please select another one.","validation.invalid_cover":"You have selected an invalid cover image, please try another one."} \ No newline at end of file diff --git a/resources/js/Pages/Collections/Components/CollectionsHeading/CollectionsHeading.tsx b/resources/js/Pages/Collections/Components/CollectionsHeading/CollectionsHeading.tsx index 49ce55aa3..41804800a 100644 --- a/resources/js/Pages/Collections/Components/CollectionsHeading/CollectionsHeading.tsx +++ b/resources/js/Pages/Collections/Components/CollectionsHeading/CollectionsHeading.tsx @@ -22,7 +22,7 @@ export const CollectionsHeading = ({ level={1} className="dark:text-theme-dark-50" > - {t("common.my_collection")} + {t("common.my_collections")} diff --git a/resources/js/Pages/Collections/Index.tsx b/resources/js/Pages/Collections/Index.tsx index f2aa98ace..2e3e5750b 100644 --- a/resources/js/Pages/Collections/Index.tsx +++ b/resources/js/Pages/Collections/Index.tsx @@ -1,215 +1,12 @@ -import { type PageProps } from "@inertiajs/core"; -import { Head, router, usePage } from "@inertiajs/react"; -import { useEffect, useState } from "react"; -import { useTranslation } from "react-i18next"; -import { useCollections } from "./Hooks"; -import { CollectionsGrid } from "@/Components/Collections/CollectionsGrid"; -import { CollectionsTable } from "@/Components/Collections/CollectionsTable"; -import { EmptyBlock } from "@/Components/EmptyBlock/EmptyBlock"; -import { useToasts } from "@/Hooks/useToasts"; +import { Head, usePage } from "@inertiajs/react"; import { DefaultLayout } from "@/Layouts/DefaultLayout"; -import { CollectionDisplayType, CollectionsFilter } from "@/Pages/Collections/Components/CollectionsFilter"; -import { CollectionsHeading } from "@/Pages/Collections/Components/CollectionsHeading"; -import { getQueryParameters } from "@/Utils/get-query-parameters"; -import { isTruthy } from "@/Utils/is-truthy"; -import { replaceUrlQuery } from "@/Utils/replace-url-query"; -const sort = ({ - sortBy, - direction, - selectedChainIds, -}: { - sortBy: string; - direction?: string; - selectedChainIds?: number[]; -}): void => { - router.get( - route("collections"), - { - ...getQueryParameters(), - sort: sortBy, - direction, - chain: isTruthy(selectedChainIds) && selectedChainIds.length > 0 ? selectedChainIds.join(",") : undefined, - }, - { - preserveState: false, - }, - ); -}; - -const CollectionsIndex = ({ - auth, - initialStats, - title, - sortBy = "received", - sortDirection, - selectedChainIds: initialSelectedChainIds, -}: { - title: string; - auth: PageProps["auth"]; - initialStats: App.Data.Collections.CollectionStatsData; - sortBy: string | null; - sortDirection: "asc" | "desc"; - selectedChainIds?: string[]; -}): JSX.Element => { +const CollectionsIndex = ({ title }: { title: string }): JSX.Element => { const { props } = usePage(); - const { t } = useTranslation(); - const queryParameters = getQueryParameters(); - - const [displayType, setDisplayType] = useState( - queryParameters.view === "grid" ? CollectionDisplayType.Grid : CollectionDisplayType.List, - ); - - const { showToast } = useToasts(); - - const showHidden = queryParameters.showHidden === "true"; - - const { - collections, - isLoading, - loadMore, - reload, - hiddenCollectionAddresses, - alreadyReportedByCollection, - reportByCollectionAvailableIn, - availableNetworks, - query, - stats, - search, - isSearching, - reportCollection, - selectedChainIds, - setSelectedChainIds, - } = useCollections({ - showHidden, - sortBy, - view: displayType, - initialStats, - onSearchError: () => { - showToast({ - message: t("pages.collections.search.error"), - type: "error", - }); - }, - initialSelectedChainIds, - }); - - const selectDisplayTypeHandler = (displayType: CollectionDisplayType): void => { - setDisplayType(displayType); - - replaceUrlQuery({ - view: displayType, - }); - }; - - const handleSelectedChainIds = (chainId: number): void => { - const chainIds = selectedChainIds.includes(chainId) - ? selectedChainIds.filter((id) => id !== chainId) - : [...selectedChainIds, chainId]; - - setSelectedChainIds(chainIds); - }; - - useEffect(() => { - if (!auth.authenticated) { - return; - } - - reload({ selectedChainIds }); - }, [selectedChainIds, auth.authenticated, auth.wallet?.address]); - return ( -
    -
    - - - { - reload({ showHidden: isHidden, selectedChainIds, page: 1 }); - }} - availableNetworks={availableNetworks} - handleSelectedChainIds={handleSelectedChainIds} - selectedChainIds={selectedChainIds} - collectionsCount={collections.length} - /> -
    - -
    - {!isLoading && collections.length === 0 && ( -
    - {isSearching ? ( - {t("pages.collections.search.loading_results")} - ) : ( - <> - {query !== "" ? ( - {t("pages.collections.search.no_results")} - ) : ( - <> - {hiddenCollectionAddresses.length === 0 ? ( - {t("pages.collections.no_collections")} - ) : ( - {t("pages.collections.all_collections_hidden")} - )} - - )} - - )} -
    - )} - - {displayType === CollectionDisplayType.List && ( - { - reload({ page: 1 }); - }} - onReportCollection={reportCollection} - selectedChainIds={selectedChainIds} - /> - )} - - {displayType === CollectionDisplayType.Grid && ( - - )} -
    -
    ); }; diff --git a/resources/js/Pages/Collections/MyCollections/Index.tsx b/resources/js/Pages/Collections/MyCollections/Index.tsx new file mode 100644 index 000000000..a53680777 --- /dev/null +++ b/resources/js/Pages/Collections/MyCollections/Index.tsx @@ -0,0 +1,217 @@ +import { type PageProps } from "@inertiajs/core"; +import { Head, router, usePage } from "@inertiajs/react"; +import { useEffect, useState } from "react"; +import { useTranslation } from "react-i18next"; +import { CollectionsGrid } from "@/Components/Collections/CollectionsGrid"; +import { CollectionsTable } from "@/Components/Collections/CollectionsTable"; +import { EmptyBlock } from "@/Components/EmptyBlock/EmptyBlock"; +import { useToasts } from "@/Hooks/useToasts"; +import { DefaultLayout } from "@/Layouts/DefaultLayout"; +import { CollectionDisplayType, CollectionsFilter } from "@/Pages/Collections/Components/CollectionsFilter"; +import { CollectionsHeading } from "@/Pages/Collections/Components/CollectionsHeading"; +import { useCollections } from "@/Pages/Collections/Hooks"; +import { getQueryParameters } from "@/Utils/get-query-parameters"; +import { isTruthy } from "@/Utils/is-truthy"; +import { replaceUrlQuery } from "@/Utils/replace-url-query"; + +const sort = ({ + sortBy, + direction, + selectedChainIds, +}: { + sortBy: string; + direction?: string; + selectedChainIds?: number[]; +}): void => { + router.get( + route("collections"), + { + ...getQueryParameters(), + sort: sortBy, + direction, + chain: isTruthy(selectedChainIds) && selectedChainIds.length > 0 ? selectedChainIds.join(",") : undefined, + }, + { + preserveState: false, + }, + ); +}; + +const CollectionsIndex = ({ + auth, + initialStats, + title, + sortBy = "received", + sortDirection, + selectedChainIds: initialSelectedChainIds, +}: { + title: string; + auth: PageProps["auth"]; + initialStats: App.Data.Collections.CollectionStatsData; + sortBy: string | null; + sortDirection: "asc" | "desc"; + selectedChainIds?: string[]; +}): JSX.Element => { + const { props } = usePage(); + + const { t } = useTranslation(); + const queryParameters = getQueryParameters(); + + const [displayType, setDisplayType] = useState( + queryParameters.view === "grid" ? CollectionDisplayType.Grid : CollectionDisplayType.List, + ); + + const { showToast } = useToasts(); + + const showHidden = queryParameters.showHidden === "true"; + + const { + collections, + isLoading, + loadMore, + reload, + hiddenCollectionAddresses, + alreadyReportedByCollection, + reportByCollectionAvailableIn, + availableNetworks, + query, + stats, + search, + isSearching, + reportCollection, + selectedChainIds, + setSelectedChainIds, + } = useCollections({ + showHidden, + sortBy, + view: displayType, + initialStats, + onSearchError: () => { + showToast({ + message: t("pages.collections.search.error"), + type: "error", + }); + }, + initialSelectedChainIds, + }); + + const selectDisplayTypeHandler = (displayType: CollectionDisplayType): void => { + setDisplayType(displayType); + + replaceUrlQuery({ + view: displayType, + }); + }; + + const handleSelectedChainIds = (chainId: number): void => { + const chainIds = selectedChainIds.includes(chainId) + ? selectedChainIds.filter((id) => id !== chainId) + : [...selectedChainIds, chainId]; + + setSelectedChainIds(chainIds); + }; + + useEffect(() => { + if (!auth.authenticated) { + return; + } + + reload({ selectedChainIds }); + }, [selectedChainIds, auth.authenticated, auth.wallet?.address]); + + return ( + + +
    +
    + + + { + reload({ showHidden: isHidden, selectedChainIds, page: 1 }); + }} + availableNetworks={availableNetworks} + handleSelectedChainIds={handleSelectedChainIds} + selectedChainIds={selectedChainIds} + collectionsCount={collections.length} + /> +
    + +
    + {!isLoading && collections.length === 0 && ( +
    + {isSearching ? ( + {t("pages.collections.search.loading_results")} + ) : ( + <> + {query !== "" ? ( + {t("pages.collections.search.no_results")} + ) : ( + <> + {hiddenCollectionAddresses.length === 0 ? ( + {t("pages.collections.no_collections")} + ) : ( + {t("pages.collections.all_collections_hidden")} + )} + + )} + + )} +
    + )} + + {displayType === CollectionDisplayType.List && ( + { + reload({ page: 1 }); + }} + onReportCollection={reportCollection} + selectedChainIds={selectedChainIds} + /> + )} + + {displayType === CollectionDisplayType.Grid && ( + + )} +
    +
    +
    + ); +}; + +export default CollectionsIndex; diff --git a/routes/web.php b/routes/web.php index e7b9b69ad..78f6e19fb 100644 --- a/routes/web.php +++ b/routes/web.php @@ -13,6 +13,7 @@ use App\Http\Controllers\GeneralSettingsController; use App\Http\Controllers\HiddenCollectionController; use App\Http\Controllers\MetaImageController; +use App\Http\Controllers\MyCollectionsController; use App\Http\Controllers\MyGalleryCollectionController; use App\Http\Controllers\MyGalleryController; use App\Http\Controllers\NftController; @@ -86,11 +87,17 @@ Route::get('{article:slug}', [ArticleController::class, 'show'])->name('articles.view'); }); -Route::group(['prefix' => 'collections', 'middleware' => 'features:collections'], function () { - Route::get('', [CollectionController::class, 'index'])->name('collections')->middleware(EnsureOnboarded::class); - Route::get('{collection:slug}', [CollectionController::class, 'show'])->name('collections.view'); - Route::get('{collection:slug}/articles', [CollectionController::class, 'articles'])->name('collections.articles'); - Route::get('{collection:slug}/{nft:token_number}', [NftController::class, 'show'])->name('collection-nfts.view'); +Route::group(['middleware' => 'features:collections'], function () { + Route::group(['prefix' => 'my-collections'], function () { + Route::get('', [MyCollectionsController::class, 'index'])->name('my-collections')->middleware(EnsureOnboarded::class); + }); + + Route::group(['prefix' => 'collections'], function () { + Route::get('', [CollectionController::class, 'index'])->name('collections'); + Route::get('{collection:slug}', [CollectionController::class, 'show'])->name('collections.view'); + Route::get('{collection:slug}/articles', [CollectionController::class, 'articles'])->name('collections.articles'); + Route::get('{collection:slug}/{nft:token_number}', [NftController::class, 'show'])->name('collection-nfts.view'); + }); }); Route::group(['prefix' => 'galleries', 'middleware' => 'features:galleries'], function () { diff --git a/tests/App/Http/Controllers/CollectionControllerTest.php b/tests/App/Http/Controllers/CollectionControllerTest.php index 70e6d10bd..635f619df 100644 --- a/tests/App/Http/Controllers/CollectionControllerTest.php +++ b/tests/App/Http/Controllers/CollectionControllerTest.php @@ -23,30 +23,6 @@ ->assertStatus(200); }); -it('can render the collections for guests', function () { - $this->get(route('collections')) - ->assertStatus(200); -}); - -it('should render collections overview page with collections and NFTs', function () { - $user = createUser(); - - $secondaryUser = createUser(); - - $collection = Collection::factory()->create(); - - collect([$secondaryUser->wallet_id, $user->wallet_id, $user->wallet_id]) - ->map(fn ($walletId) => Nft::factory()->create(['wallet_id' => $walletId, 'collection_id' => $collection->id])); - - $response = $this->actingAs($user) - ->getJson(route('collections')) - ->assertStatus(200) - ->assertJsonCount(7) - ->json(); - - expect(count($response['collections']['data']))->toEqual(1); -}); - it('can render the collections view page', function () { $user = createUser(); @@ -637,396 +613,6 @@ ); }); -it('filters the collections by a search query', function () { - $user = createUser(); - - $userCollection = Collection::factory()->create([ - 'name' => 'Test Collection', - ]); - - $userCollection2 = Collection::factory()->create([ - 'name' => 'Another Collection', - ]); - - $userCollection3 = Collection::factory()->create([ - 'name' => 'Test Collection 2', - ]); - - Nft::factory()->create([ - 'wallet_id' => $user->wallet_id, - 'collection_id' => $userCollection->id, - ]); - - Nft::factory()->create([ - 'wallet_id' => $user->wallet_id, - 'collection_id' => $userCollection2->id, - ]); - - Nft::factory()->create([ - 'wallet_id' => $user->wallet_id, - 'collection_id' => $userCollection3->id, - ]); - - $this->actingAs($user) - ->get(route('collections', ['query' => 'Test'])) - ->assertStatus(200); -}); - -it('filters the collections by a search query on json requests', function () { - $user = createUser(); - - $userCollection = Collection::factory()->create([ - 'name' => 'Test Collection', - ]); - - Nft::factory()->create([ - 'wallet_id' => $user->wallet_id, - 'collection_id' => $userCollection->id, - ]); - - Nft::factory()->create([ - 'wallet_id' => $user->wallet_id, - 'collection_id' => $userCollection->id, - ]); - - $this->actingAs($user) - ->getJson(route('collections', ['query' => 'Test'])) - ->assertStatus(200) - ->assertJsonCount(7); -}); - -it('removes the showIndex parameter if user has no hidden collections', function () { - $user = createUser(); - - $userCollection = Collection::factory()->create([ - 'name' => 'Test Collection', - ]); - - Nft::factory()->create([ - 'wallet_id' => $user->wallet_id, - 'collection_id' => $userCollection->id, - ]); - - $this->actingAs($user) - ->get(route('collections', [ - 'other' => 'param', - 'showHidden' => 'true', - ])) - ->assertRedirectToRoute('collections', [ - 'other' => 'param', - ]); -}); - -it('filters hidden collections by a search query on json requests', function () { - $user = createUser(); - - $userCollection = Collection::factory()->create([ - 'name' => 'Test Collection', - ]); - - Nft::factory()->create([ - 'wallet_id' => $user->wallet_id, - 'collection_id' => $userCollection->id, - ]); - - $hiddenCollection = Collection::factory()->create(); - $user->hiddenCollections()->attach($hiddenCollection); - - $this->actingAs($user) - ->getJson(route('collections', [ - 'query' => 'Test', - 'showHidden' => 'true', - ])) - ->assertStatus(200) - ->assertJsonCount(7); -}); - -it('can sort by oldest collection', function () { - $user = createUser(); - - $userCollection = Collection::factory()->create([ - 'name' => 'Test Collection', - ]); - - $userCollection2 = Collection::factory()->create([ - 'name' => 'Another Collection', - ]); - - $userCollection3 = Collection::factory()->create([ - 'name' => 'Test Collection 2', - ]); - - Nft::factory()->create([ - 'wallet_id' => $user->wallet_id, - 'collection_id' => $userCollection->id, - ]); - - Nft::factory()->create([ - 'wallet_id' => $user->wallet_id, - 'collection_id' => $userCollection2->id, - ]); - - Nft::factory()->create([ - 'wallet_id' => $user->wallet_id, - 'collection_id' => $userCollection3->id, - ]); - - $this->actingAs($user) - ->getJson(route('collections', ['sort' => 'oldest'])) - ->assertStatus(200) - ->assertJsonCount(7); -}); - -it('can sort by recently received', function () { - $user = createUser(); - - $userCollection = Collection::factory()->create([ - 'name' => 'Test Collection', - ]); - - $userCollection2 = Collection::factory()->create([ - 'name' => 'Another Collection', - ]); - - $userCollection3 = Collection::factory()->create([ - 'name' => 'Test Collection 2', - ]); - - Nft::factory()->create([ - 'wallet_id' => $user->wallet_id, - 'collection_id' => $userCollection->id, - ]); - - Nft::factory()->create([ - 'wallet_id' => $user->wallet_id, - 'collection_id' => $userCollection2->id, - ]); - - Nft::factory()->create([ - 'wallet_id' => $user->wallet_id, - 'collection_id' => $userCollection3->id, - ]); - - $this->actingAs($user) - ->getJson(route('collections', ['sort' => 'received'])) - ->assertStatus(200) - ->assertJsonCount(7); -}); - -it('can sort by collection name', function () { - $user = createUser(); - - $userCollection = Collection::factory()->create([ - 'name' => 'A', - ]); - - $userCollection2 = Collection::factory()->create([ - 'name' => 'B', - ]); - - $userCollection3 = Collection::factory()->create([ - 'name' => 'C', - ]); - - Nft::factory()->create([ - 'wallet_id' => $user->wallet_id, - 'collection_id' => $userCollection->id, - ]); - - Nft::factory()->create([ - 'wallet_id' => $user->wallet_id, - 'collection_id' => $userCollection2->id, - ]); - - Nft::factory()->create([ - 'wallet_id' => $user->wallet_id, - 'collection_id' => $userCollection3->id, - ]); - - $this->actingAs($user) - ->getJson(route('collections', ['sort' => 'name', 'direction' => 'desc'])) - ->assertStatus(200) - ->assertJsonCount(7); -}); - -it('can sort by floor price', function () { - $user = createUser(); - - $userCollection = Collection::factory()->create([ - 'name' => 'A', - ]); - - $userCollection2 = Collection::factory()->create([ - 'name' => 'B', - ]); - - $userCollection3 = Collection::factory()->create([ - 'name' => 'C', - ]); - - Nft::factory()->create([ - 'wallet_id' => $user->wallet_id, - 'collection_id' => $userCollection->id, - ]); - - Nft::factory()->create([ - 'wallet_id' => $user->wallet_id, - 'collection_id' => $userCollection2->id, - ]); - - Nft::factory()->create([ - 'wallet_id' => $user->wallet_id, - 'collection_id' => $userCollection3->id, - ]); - - $this->actingAs($user) - ->getJson(route('collections', ['sort' => 'floor-price'])) - ->assertStatus(200) - ->assertJsonCount(7); -}); - -it('can sort by chain ID', function () { - $user = createUser(); - - $userCollection = Collection::factory()->create([ - 'name' => 'A', - ]); - - $userCollection2 = Collection::factory()->create([ - 'name' => 'B', - ]); - - $userCollection3 = Collection::factory()->create([ - 'name' => 'C', - ]); - - Nft::factory()->create([ - 'wallet_id' => $user->wallet_id, - 'collection_id' => $userCollection->id, - ]); - - Nft::factory()->create([ - 'wallet_id' => $user->wallet_id, - 'collection_id' => $userCollection2->id, - ]); - - Nft::factory()->create([ - 'wallet_id' => $user->wallet_id, - 'collection_id' => $userCollection3->id, - ]); - - $this->actingAs($user) - ->getJson(route('collections', ['sort' => 'chain'])) - ->assertStatus(200) - ->assertJsonCount(7); -}); - -it('can sort by value', function () { - $user = createUser(); - - $userCollection = Collection::factory()->create([ - 'name' => 'A', - ]); - - $userCollection2 = Collection::factory()->create([ - 'name' => 'B', - ]); - - $userCollection3 = Collection::factory()->create([ - 'name' => 'C', - ]); - - Nft::factory()->create([ - 'wallet_id' => $user->wallet_id, - 'collection_id' => $userCollection->id, - ]); - - Nft::factory()->create([ - 'wallet_id' => $user->wallet_id, - 'collection_id' => $userCollection2->id, - ]); - - Nft::factory()->create([ - 'wallet_id' => $user->wallet_id, - 'collection_id' => $userCollection3->id, - ]); - - $this->actingAs($user) - ->getJson(route('collections', ['sort' => 'value'])) - ->assertStatus(200) - ->assertJsonCount(7); -}); - -it('should remove selected chains where its network has no collections in its count', function () { - $user = createUser(); - $network1 = Network::factory()->create(); - $network2 = Network::factory()->create(); - - $collection1 = Collection::factory()->create(['network_id' => $network1->id]); - $collection2 = Collection::factory()->create(['network_id' => $network2->id]); - - Nft::factory()->create([ - 'wallet_id' => $user->wallet_id, - 'collection_id' => $collection1->id, - ]); - - Nft::factory()->create([ - 'wallet_id' => $user->wallet_id, - 'collection_id' => $collection2->id, - ]); - - $response = $this->actingAs($user) - ->getJson(route('collections', [ - 'chain' => '137', - ])) - ->assertStatus(200) - ->assertJsonCount(7) - ->json(); - - expect(count($response['selectedChainIds']))->toEqual(0); -}); - -it('can get stats', function () { - $user = createUser(); - - $collection1 = Collection::factory()->create(); - Nft::factory()->for($collection1)->for($user->wallet)->create(); - - $collection2 = Collection::factory()->create(); - Nft::factory()->for($collection2)->for($user->wallet)->create(); - - $hidden = Collection::factory()->create(); - Nft::factory()->for($hidden)->for($user->wallet)->create(); - - $user->hiddenCollections()->attach($hidden); - - $this->actingAs($user) - ->get(route('collections')) - ->assertInertia(function ($page) { - $stats = $page->toArray()['props']['initialStats']; - - return $stats['nfts'] === 2 && $stats['collections'] === 2; - }); - - $this->actingAs($user) - ->get(route('collections', ['showHidden' => 'true'])) - ->assertInertia(function ($page) { - $stats = $page->toArray()['props']['initialStats']; - - return $stats['nfts'] === 1 && $stats['collections'] === 1; - }); - - $response = $this->actingAs($user)->getJson(route('collections')); - - expect($response['stats']['nfts'] === 2 && $response['stats']['collections'] === 2)->toBeTrue(); - - $response = $this->actingAs($user)->getJson(route('collections', [ - 'showHidden' => 'true', - ])); - - expect($response['stats']['nfts'] === 1 && $response['stats']['collections'] === 1)->toBeTrue(); -}); - it('should return collection articles', function () { $collections = Collection::factory(8)->create(); diff --git a/tests/App/Http/Controllers/MyCollectionControllerTest.php b/tests/App/Http/Controllers/MyCollectionControllerTest.php new file mode 100644 index 000000000..5e18bb6a6 --- /dev/null +++ b/tests/App/Http/Controllers/MyCollectionControllerTest.php @@ -0,0 +1,429 @@ +actingAs($user) + ->get(route('my-collections')) + ->assertStatus(200); +}); + +it('can render the collections for guests', function () { + $this->get(route('my-collections')) + ->assertStatus(200); +}); + +it('should render collections overview page with collections and NFTs', function () { + $user = createUser(); + + $secondaryUser = createUser(); + + $collection = Collection::factory()->create(); + + collect([$secondaryUser->wallet_id, $user->wallet_id, $user->wallet_id]) + ->map(fn ($walletId) => Nft::factory()->create(['wallet_id' => $walletId, 'collection_id' => $collection->id])); + + $response = $this->actingAs($user) + ->getJson(route('my-collections')) + ->assertStatus(200) + ->assertJsonCount(7) + ->json(); + + expect(count($response['collections']['data']))->toEqual(1); +}); + +it('filters the collections by a search query', function () { + $user = createUser(); + + $userCollection = Collection::factory()->create([ + 'name' => 'Test Collection', + ]); + + $userCollection2 = Collection::factory()->create([ + 'name' => 'Another Collection', + ]); + + $userCollection3 = Collection::factory()->create([ + 'name' => 'Test Collection 2', + ]); + + Nft::factory()->create([ + 'wallet_id' => $user->wallet_id, + 'collection_id' => $userCollection->id, + ]); + + Nft::factory()->create([ + 'wallet_id' => $user->wallet_id, + 'collection_id' => $userCollection2->id, + ]); + + Nft::factory()->create([ + 'wallet_id' => $user->wallet_id, + 'collection_id' => $userCollection3->id, + ]); + + $this->actingAs($user) + ->get(route('my-collections', ['query' => 'Test'])) + ->assertStatus(200); +}); + +it('filters the collections by a search query on json requests', function () { + $user = createUser(); + + $userCollection = Collection::factory()->create([ + 'name' => 'Test Collection', + ]); + + Nft::factory()->create([ + 'wallet_id' => $user->wallet_id, + 'collection_id' => $userCollection->id, + ]); + + Nft::factory()->create([ + 'wallet_id' => $user->wallet_id, + 'collection_id' => $userCollection->id, + ]); + + $this->actingAs($user) + ->getJson(route('my-collections', ['query' => 'Test'])) + ->assertStatus(200) + ->assertJsonCount(7); +}); + +it('removes the showIndex parameter if user has no hidden collections', function () { + $user = createUser(); + + $userCollection = Collection::factory()->create([ + 'name' => 'Test Collection', + ]); + + Nft::factory()->create([ + 'wallet_id' => $user->wallet_id, + 'collection_id' => $userCollection->id, + ]); + + $this->actingAs($user) + ->get(route('my-collections', [ + 'other' => 'param', + 'showHidden' => 'true', + ])) + ->assertRedirectToroute('my-collections', [ + 'other' => 'param', + ]); +}); + +it('filters hidden collections by a search query on json requests', function () { + $user = createUser(); + + $userCollection = Collection::factory()->create([ + 'name' => 'Test Collection', + ]); + + Nft::factory()->create([ + 'wallet_id' => $user->wallet_id, + 'collection_id' => $userCollection->id, + ]); + + $hiddenCollection = Collection::factory()->create(); + $user->hiddenCollections()->attach($hiddenCollection); + + $this->actingAs($user) + ->getJson(route('my-collections', [ + 'query' => 'Test', + 'showHidden' => 'true', + ])) + ->assertStatus(200) + ->assertJsonCount(7); +}); + +it('can sort by oldest collection', function () { + $user = createUser(); + + $userCollection = Collection::factory()->create([ + 'name' => 'Test Collection', + ]); + + $userCollection2 = Collection::factory()->create([ + 'name' => 'Another Collection', + ]); + + $userCollection3 = Collection::factory()->create([ + 'name' => 'Test Collection 2', + ]); + + Nft::factory()->create([ + 'wallet_id' => $user->wallet_id, + 'collection_id' => $userCollection->id, + ]); + + Nft::factory()->create([ + 'wallet_id' => $user->wallet_id, + 'collection_id' => $userCollection2->id, + ]); + + Nft::factory()->create([ + 'wallet_id' => $user->wallet_id, + 'collection_id' => $userCollection3->id, + ]); + + $this->actingAs($user) + ->getJson(route('my-collections', ['sort' => 'oldest'])) + ->assertStatus(200) + ->assertJsonCount(7); +}); + +it('can sort by recently received', function () { + $user = createUser(); + + $userCollection = Collection::factory()->create([ + 'name' => 'Test Collection', + ]); + + $userCollection2 = Collection::factory()->create([ + 'name' => 'Another Collection', + ]); + + $userCollection3 = Collection::factory()->create([ + 'name' => 'Test Collection 2', + ]); + + Nft::factory()->create([ + 'wallet_id' => $user->wallet_id, + 'collection_id' => $userCollection->id, + ]); + + Nft::factory()->create([ + 'wallet_id' => $user->wallet_id, + 'collection_id' => $userCollection2->id, + ]); + + Nft::factory()->create([ + 'wallet_id' => $user->wallet_id, + 'collection_id' => $userCollection3->id, + ]); + + $this->actingAs($user) + ->getJson(route('my-collections', ['sort' => 'received'])) + ->assertStatus(200) + ->assertJsonCount(7); +}); + +it('can sort by collection name', function () { + $user = createUser(); + + $userCollection = Collection::factory()->create([ + 'name' => 'A', + ]); + + $userCollection2 = Collection::factory()->create([ + 'name' => 'B', + ]); + + $userCollection3 = Collection::factory()->create([ + 'name' => 'C', + ]); + + Nft::factory()->create([ + 'wallet_id' => $user->wallet_id, + 'collection_id' => $userCollection->id, + ]); + + Nft::factory()->create([ + 'wallet_id' => $user->wallet_id, + 'collection_id' => $userCollection2->id, + ]); + + Nft::factory()->create([ + 'wallet_id' => $user->wallet_id, + 'collection_id' => $userCollection3->id, + ]); + + $this->actingAs($user) + ->getJson(route('my-collections', ['sort' => 'name', 'direction' => 'desc'])) + ->assertStatus(200) + ->assertJsonCount(7); +}); + +it('can sort by floor price', function () { + $user = createUser(); + + $userCollection = Collection::factory()->create([ + 'name' => 'A', + ]); + + $userCollection2 = Collection::factory()->create([ + 'name' => 'B', + ]); + + $userCollection3 = Collection::factory()->create([ + 'name' => 'C', + ]); + + Nft::factory()->create([ + 'wallet_id' => $user->wallet_id, + 'collection_id' => $userCollection->id, + ]); + + Nft::factory()->create([ + 'wallet_id' => $user->wallet_id, + 'collection_id' => $userCollection2->id, + ]); + + Nft::factory()->create([ + 'wallet_id' => $user->wallet_id, + 'collection_id' => $userCollection3->id, + ]); + + $this->actingAs($user) + ->getJson(route('my-collections', ['sort' => 'floor-price'])) + ->assertStatus(200) + ->assertJsonCount(7); +}); + +it('can sort by chain ID', function () { + $user = createUser(); + + $userCollection = Collection::factory()->create([ + 'name' => 'A', + ]); + + $userCollection2 = Collection::factory()->create([ + 'name' => 'B', + ]); + + $userCollection3 = Collection::factory()->create([ + 'name' => 'C', + ]); + + Nft::factory()->create([ + 'wallet_id' => $user->wallet_id, + 'collection_id' => $userCollection->id, + ]); + + Nft::factory()->create([ + 'wallet_id' => $user->wallet_id, + 'collection_id' => $userCollection2->id, + ]); + + Nft::factory()->create([ + 'wallet_id' => $user->wallet_id, + 'collection_id' => $userCollection3->id, + ]); + + $this->actingAs($user) + ->getJson(route('my-collections', ['sort' => 'chain'])) + ->assertStatus(200) + ->assertJsonCount(7); +}); + +it('can sort by value', function () { + $user = createUser(); + + $userCollection = Collection::factory()->create([ + 'name' => 'A', + ]); + + $userCollection2 = Collection::factory()->create([ + 'name' => 'B', + ]); + + $userCollection3 = Collection::factory()->create([ + 'name' => 'C', + ]); + + Nft::factory()->create([ + 'wallet_id' => $user->wallet_id, + 'collection_id' => $userCollection->id, + ]); + + Nft::factory()->create([ + 'wallet_id' => $user->wallet_id, + 'collection_id' => $userCollection2->id, + ]); + + Nft::factory()->create([ + 'wallet_id' => $user->wallet_id, + 'collection_id' => $userCollection3->id, + ]); + + $this->actingAs($user) + ->getJson(route('my-collections', ['sort' => 'value'])) + ->assertStatus(200) + ->assertJsonCount(7); +}); + +it('should remove selected chains where its network has no collections in its count', function () { + $user = createUser(); + $network1 = Network::factory()->create(); + $network2 = Network::factory()->create(); + + $collection1 = Collection::factory()->create(['network_id' => $network1->id]); + $collection2 = Collection::factory()->create(['network_id' => $network2->id]); + + Nft::factory()->create([ + 'wallet_id' => $user->wallet_id, + 'collection_id' => $collection1->id, + ]); + + Nft::factory()->create([ + 'wallet_id' => $user->wallet_id, + 'collection_id' => $collection2->id, + ]); + + $response = $this->actingAs($user) + ->getJson(route('my-collections', [ + 'chain' => '137', + ])) + ->assertStatus(200) + ->assertJsonCount(7) + ->json(); + + expect(count($response['selectedChainIds']))->toEqual(0); +}); + +it('can get stats', function () { + $user = createUser(); + + $collection1 = Collection::factory()->create(); + Nft::factory()->for($collection1)->for($user->wallet)->create(); + + $collection2 = Collection::factory()->create(); + Nft::factory()->for($collection2)->for($user->wallet)->create(); + + $hidden = Collection::factory()->create(); + Nft::factory()->for($hidden)->for($user->wallet)->create(); + + $user->hiddenCollections()->attach($hidden); + + $this->actingAs($user) + ->get(route('my-collections')) + ->assertInertia(function ($page) { + $stats = $page->toArray()['props']['initialStats']; + + return $stats['nfts'] === 2 && $stats['collections'] === 2; + }); + + $this->actingAs($user) + ->get(route('my-collections', ['showHidden' => 'true'])) + ->assertInertia(function ($page) { + $stats = $page->toArray()['props']['initialStats']; + + return $stats['nfts'] === 1 && $stats['collections'] === 1; + }); + + $response = $this->actingAs($user)->getJson(route('my-collections')); + + expect($response['stats']['nfts'] === 2 && $response['stats']['collections'] === 2)->toBeTrue(); + + $response = $this->actingAs($user)->getJson(route('my-collections', [ + 'showHidden' => 'true', + ])); + + expect($response['stats']['nfts'] === 1 && $response['stats']['collections'] === 1)->toBeTrue(); +}); From ec4f785a30a38268deb5916b814e1c693ae3bb9f Mon Sep 17 00:00:00 2001 From: Alfonso Bribiesca Date: Thu, 23 Nov 2023 05:28:34 -0600 Subject: [PATCH 003/145] feat: add general overview table (#487) --- .../Collections/PopularCollectionData.php | 55 +++++++ app/Http/Controllers/CollectionController.php | 19 +++ lang/en/common.php | 3 +- lang/en/pages.php | 1 + resources/css/_tables.css | 7 + .../CollectionHeaderBottom.tsx | 2 +- .../PopularCollectionsTable.blocks.tsx | 144 ++++++++++++++++++ .../PopularCollectionsTable.contract.ts | 10 ++ .../PopularCollectionsTable.test.tsx | 102 +++++++++++++ .../PopularCollectionsTable.tsx | 59 +++++++ .../PopularCollectionsTableItem.tsx | 64 ++++++++ .../PopularCollectionsTable/index.tsx | 1 + .../js/Components/Table/Table.contracts.ts | 1 + resources/js/Components/Table/Table.tsx | 2 + resources/js/Components/Table/TableHeader.tsx | 4 +- .../WalletTokens/WalletTokensTable.tsx | 2 +- resources/js/I18n/Locales/en.json | 2 +- resources/js/Pages/Collections/Index.tsx | 42 ++++- .../Collections/PopularCollectionFactory.ts | 55 +++++++ resources/types/generated.d.ts | 14 ++ 20 files changed, 583 insertions(+), 6 deletions(-) create mode 100644 app/Data/Collections/PopularCollectionData.php create mode 100644 resources/js/Components/Collections/PopularCollectionsTable/PopularCollectionsTable.blocks.tsx create mode 100644 resources/js/Components/Collections/PopularCollectionsTable/PopularCollectionsTable.contract.ts create mode 100644 resources/js/Components/Collections/PopularCollectionsTable/PopularCollectionsTable.test.tsx create mode 100644 resources/js/Components/Collections/PopularCollectionsTable/PopularCollectionsTable.tsx create mode 100644 resources/js/Components/Collections/PopularCollectionsTable/PopularCollectionsTableItem.tsx create mode 100644 resources/js/Components/Collections/PopularCollectionsTable/index.tsx create mode 100644 resources/js/Tests/Factories/Collections/PopularCollectionFactory.ts diff --git a/app/Data/Collections/PopularCollectionData.php b/app/Data/Collections/PopularCollectionData.php new file mode 100644 index 000000000..a8749cd2e --- /dev/null +++ b/app/Data/Collections/PopularCollectionData.php @@ -0,0 +1,55 @@ +id, + name: $collection->name, + slug: $collection->slug, + chainId: $collection->network->chain_id, + floorPrice: $collection->floor_price, + floorPriceCurrency: $collection->floorPriceToken ? Str::lower($collection->floorPriceToken->symbol) : null, + floorPriceDecimals: $collection->floorPriceToken?->decimals, + // @TODO: makey this dynamic + volume: '19000000000000000000', + volumeFiat: 35380.4, + volumeCurrency: 'eth', + volumeDecimals: 18, + image: $collection->extra_attributes->get('image'), + ); + } +} diff --git a/app/Http/Controllers/CollectionController.php b/app/Http/Controllers/CollectionController.php index 1b7815072..1c88314bf 100644 --- a/app/Http/Controllers/CollectionController.php +++ b/app/Http/Controllers/CollectionController.php @@ -8,6 +8,7 @@ use App\Data\Articles\ArticlesData; use App\Data\Collections\CollectionDetailData; use App\Data\Collections\CollectionTraitFilterData; +use App\Data\Collections\PopularCollectionData; use App\Data\Gallery\GalleryNftData; use App\Data\Gallery\GalleryNftsData; use App\Data\Nfts\NftActivitiesData; @@ -27,6 +28,7 @@ use Illuminate\Http\JsonResponse; use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; +use Illuminate\Pagination\LengthAwarePaginator; use Inertia\Inertia; use Inertia\Response; use Spatie\LaravelData\PaginatedDataCollection; @@ -35,9 +37,26 @@ class CollectionController extends Controller { public function index(Request $request): Response|JsonResponse|RedirectResponse { + $user = $request->user(); + + $currency = $user ? $user->currency() : CurrencyCode::USD; + + $collectionQuery = $user ? $user->collections() : Collection::query(); + + /** @var LengthAwarePaginator $collections */ + $collections = $collectionQuery + ->orderByFloorPrice('desc', $currency) + ->with([ + 'network', + 'floorPriceToken', + ]) + ->simplePaginate(12); return Inertia::render('Collections/Index', [ 'title' => trans('metatags.collections.title'), + 'collections' => PopularCollectionData::collection( + $collections->through(fn ($collection) => PopularCollectionData::fromModel($collection, $currency)) + ), ]); } diff --git a/lang/en/common.php b/lang/en/common.php index 304a07bec..fb527a5f8 100644 --- a/lang/en/common.php +++ b/lang/en/common.php @@ -62,7 +62,8 @@ 'articles' => 'Articles', 'most_popular' => 'Most Popular', 'market_cap' => 'Market Cap', - 'volume' => 'Volume :frequency', + 'volume' => 'Volume', + 'volume_frequency' => 'Volume :frequency', 'value' => 'Value', 'last_n_days' => 'Last :count Days', 'details' => 'Details', diff --git a/lang/en/pages.php b/lang/en/pages.php index 3555a274f..2f6b648fc 100644 --- a/lang/en/pages.php +++ b/lang/en/pages.php @@ -43,6 +43,7 @@ 'collections' => [ 'title' => 'Collections', 'collections' => 'Collections', + 'popular_collections' => 'Popular Collections', 'collection_value' => 'Collection Value', 'nfts_owned' => 'NFTs Owned', 'header_title' => 'You own <0>:nftsCount :nfts across <0>:collectionsCount :collections, worth about <0><1>:worth', diff --git a/resources/css/_tables.css b/resources/css/_tables.css index 78d39589c..4f68cabd1 100644 --- a/resources/css/_tables.css +++ b/resources/css/_tables.css @@ -85,6 +85,13 @@ @apply pointer-events-none absolute right-0 top-0 z-10 -mr-3 block h-full w-3 rounded-r-xl border-y border-r border-theme-secondary-300 dark:border-theme-dark-700; } +@media (max-width: 959px) { + .table-list tbody tr td.unique-cell-until-md-lg::before { + content: ""; + @apply pointer-events-none absolute inset-0 z-10 -mx-3 block h-full w-auto rounded-xl border-y border-r border-theme-secondary-300 dark:border-theme-dark-700; + } +} + .table-list tbody > tr, .table-list tbody > tr > td { @apply relative z-0; diff --git a/resources/js/Components/Collections/CollectionHeader/CollectionHeaderBottom.tsx b/resources/js/Components/Collections/CollectionHeader/CollectionHeaderBottom.tsx index 3f515f757..35e5e84d2 100644 --- a/resources/js/Components/Collections/CollectionHeader/CollectionHeaderBottom.tsx +++ b/resources/js/Components/Collections/CollectionHeader/CollectionHeaderBottom.tsx @@ -42,7 +42,7 @@ export const CollectionHeaderBottom = ({ collection }: CollectionHeaderBottomPro { + const collectionNameReference = useRef(null); + const isTruncated = useIsTruncated({ reference: collectionNameReference }); + const { t } = useTranslation(); + + return ( +
    +
    +
    + + +
    + +
    +
    + +
    + +

    + {collection.name} +

    +
    + +

    + {t("common.volume")}{" "} + +

    +
    +
    +
    + ); +}; + +export const PopularCollectionFloorPrice = ({ + collection, +}: { + collection: App.Data.Collections.PopularCollectionData; +}): JSX.Element => ( +
    +
    +
    + +
    + + + {/* @TODO: Make dynamic */} + + +
    +
    +); + +export const PopularCollectionVolume = ({ + collection, + user, +}: { + collection: App.Data.Collections.PopularCollectionData; + user: App.Data.UserData | null; +}): JSX.Element => ( +
    +
    +
    + +
    + +
    + {collection.volumeFiat != null && isTruthy(user) && ( + + )} +
    +
    +
    +); diff --git a/resources/js/Components/Collections/PopularCollectionsTable/PopularCollectionsTable.contract.ts b/resources/js/Components/Collections/PopularCollectionsTable/PopularCollectionsTable.contract.ts new file mode 100644 index 000000000..665db07b2 --- /dev/null +++ b/resources/js/Components/Collections/PopularCollectionsTable/PopularCollectionsTable.contract.ts @@ -0,0 +1,10 @@ +export interface PopularCollectionTableItemProperties { + collection: App.Data.Collections.PopularCollectionData; + uniqueKey: string; + user: App.Data.UserData | null; +} + +export interface PopularCollectionTableProperties { + collections: App.Data.Collections.PopularCollectionData[]; + user: App.Data.UserData | null; +} diff --git a/resources/js/Components/Collections/PopularCollectionsTable/PopularCollectionsTable.test.tsx b/resources/js/Components/Collections/PopularCollectionsTable/PopularCollectionsTable.test.tsx new file mode 100644 index 000000000..6b6d39301 --- /dev/null +++ b/resources/js/Components/Collections/PopularCollectionsTable/PopularCollectionsTable.test.tsx @@ -0,0 +1,102 @@ +import { router } from "@inertiajs/react"; +import { type SpyInstance } from "vitest"; +import { PopularCollectionsTable } from "./PopularCollectionsTable"; +import * as useAuthorizedActionMock from "@/Hooks/useAuthorizedAction"; +import PopularCollectionFactory from "@/Tests/Factories/Collections/PopularCollectionFactory"; +import UserDataFactory from "@/Tests/Factories/UserDataFactory"; +import { render, userEvent } from "@/Tests/testing-library"; +import { allBreakpoints } from "@/Tests/utils"; + +let useAuthorizedActionSpy: SpyInstance; +const signedActionMock = vi.fn(); + +describe("PopularCollectionsTable", () => { + beforeEach(() => { + signedActionMock.mockImplementation((action) => { + action({ authenticated: true, signed: true }); + }); + + useAuthorizedActionSpy = vi.spyOn(useAuthorizedActionMock, "useAuthorizedAction").mockReturnValue({ + signedAction: signedActionMock, + authenticatedAction: vi.fn(), + }); + }); + + afterEach(() => { + useAuthorizedActionSpy.mockRestore(); + }); + + const collections = new PopularCollectionFactory().createMany(3); + + const user = new UserDataFactory().create(); + + it.each(allBreakpoints)("renders without crashing on %s screen", (breakpoint) => { + const { getByTestId } = render( + , + { breakpoint }, + ); + + expect(getByTestId("PopularCollectionsTable")).toBeInTheDocument(); + }); + + it("renders nothing if no collections", () => { + const { queryByTestId } = render( + , + ); + + expect(queryByTestId("PopularCollectionsTable")).not.toBeInTheDocument(); + }); + + it("renders with floor price and volume", () => { + const collections = [new PopularCollectionFactory().withPrices().withVolume().create()]; + + const { getByTestId } = render( + , + ); + + expect(getByTestId("PopularCollectionsTable")).toBeInTheDocument(); + }); + + it("renders without floor price and volume", () => { + const collections = [new PopularCollectionFactory().withoutPrices().withoutVolume().create()]; + + const { getByTestId } = render( + , + ); + + expect(getByTestId("PopularCollectionsTable")).toBeInTheDocument(); + }); + + it("visits the collection page on row click", async () => { + const function_ = vi.fn(); + + const routerSpy = vi.spyOn(router, "visit").mockImplementation(function_); + + const { getByTestId, getAllByTestId } = render( + , + ); + + expect(getByTestId("PopularCollectionsTable")).toBeInTheDocument(); + + await userEvent.click(getAllByTestId("TableRow")[0]); + + expect(routerSpy).toHaveBeenCalled(); + + routerSpy.mockRestore(); + }); +}); diff --git a/resources/js/Components/Collections/PopularCollectionsTable/PopularCollectionsTable.tsx b/resources/js/Components/Collections/PopularCollectionsTable/PopularCollectionsTable.tsx new file mode 100644 index 000000000..c92a76045 --- /dev/null +++ b/resources/js/Components/Collections/PopularCollectionsTable/PopularCollectionsTable.tsx @@ -0,0 +1,59 @@ +import React, { useMemo } from "react"; +import { useTranslation } from "react-i18next"; +import { type Column } from "react-table"; +import { type PopularCollectionTableProperties } from "./PopularCollectionsTable.contract"; +import { PopularCollectionsTableItem } from "./PopularCollectionsTableItem"; +import { Table } from "@/Components/Table"; + +export const PopularCollectionsTable = ({ collections, user }: PopularCollectionTableProperties): JSX.Element => { + const { t } = useTranslation(); + + const columns = useMemo(() => { + const columns: Array> = [ + { + Header: t("common.collection").toString(), + id: "name", + className: "justify-start", + cellWidth: "sm:w-full", + paddingClassName: "py-2 px-2 md:px-5", + }, + { + Header: t("common.floor_price").toString(), + id: "floor-price", + headerClassName: "hidden xl:table-cell", + className: "justify-end whitespace-nowrap", + }, + { + headerClassName: "hidden md-lg:table-cell", + Header: t("common.volume").toString(), + id: "volume", + className: "justify-end [&_div]:w-full [&_div]:flex [&_div]:justify-end px-2", + }, + ]; + + return columns; + }, [t]); + + if (collections.length === 0) { + return <>; + } + + return ( + ( + + )} + /> + ); +}; diff --git a/resources/js/Components/Collections/PopularCollectionsTable/PopularCollectionsTableItem.tsx b/resources/js/Components/Collections/PopularCollectionsTable/PopularCollectionsTableItem.tsx new file mode 100644 index 000000000..bb602f474 --- /dev/null +++ b/resources/js/Components/Collections/PopularCollectionsTable/PopularCollectionsTableItem.tsx @@ -0,0 +1,64 @@ +import { router } from "@inertiajs/react"; +import React, { useRef } from "react"; +import { + PopularCollectionFloorPrice, + PopularCollectionName, + PopularCollectionVolume, +} from "./PopularCollectionsTable.blocks"; +import { type PopularCollectionTableItemProperties } from "./PopularCollectionsTable.contract"; +import { TableCell, TableRow } from "@/Components/Table"; + +export const PopularCollectionsTableItem = ({ + collection, + uniqueKey, + user, +}: PopularCollectionTableItemProperties): JSX.Element => { + const reference = useRef(null); + + return ( + { + router.visit( + route("collections.view", { + slug: collection.slug, + }), + ); + }} + > + + + + + + + + + + + + + ); +}; diff --git a/resources/js/Components/Collections/PopularCollectionsTable/index.tsx b/resources/js/Components/Collections/PopularCollectionsTable/index.tsx new file mode 100644 index 000000000..abe55f4b0 --- /dev/null +++ b/resources/js/Components/Collections/PopularCollectionsTable/index.tsx @@ -0,0 +1 @@ +export * from "./PopularCollectionsTable"; diff --git a/resources/js/Components/Table/Table.contracts.ts b/resources/js/Components/Table/Table.contracts.ts index 4e4e5c692..04f148863 100644 --- a/resources/js/Components/Table/Table.contracts.ts +++ b/resources/js/Components/Table/Table.contracts.ts @@ -19,6 +19,7 @@ export interface TableCellProperties extends HTMLAttributes> { className?: string; + headerClassName?: string; data: RowDataType[]; columns: Array>; hideHeader?: boolean; diff --git a/resources/js/Components/Table/Table.tsx b/resources/js/Components/Table/Table.tsx index 5bc51dbcb..660e902a2 100644 --- a/resources/js/Components/Table/Table.tsx +++ b/resources/js/Components/Table/Table.tsx @@ -13,6 +13,7 @@ export const Table = >({ columns, hideHeader = false, className, + headerClassName, initialState, rowsPerPage, currentPage = 1, @@ -91,6 +92,7 @@ export const Table = >({ onSort={onSort} activeSort={activeSort} sortDirection={sortDirection} + className={headerClassName} /> )} diff --git a/resources/js/Components/Table/TableHeader.tsx b/resources/js/Components/Table/TableHeader.tsx index 0a697084b..d61083984 100644 --- a/resources/js/Components/Table/TableHeader.tsx +++ b/resources/js/Components/Table/TableHeader.tsx @@ -12,12 +12,14 @@ export const TableHeader = >({ onSort, activeSort, sortDirection, + className, }: { onSort?: (column: HeaderGroup) => void; headerGroups: Array>; variant?: TableHeaderVariant; activeSort?: string; sortDirection?: "asc" | "desc"; + className?: string; }): JSX.Element => { const renderColumn = (column: HeaderGroup, thIndex: number): JSX.Element => { const isSorted = activeSort != null ? column.id === activeSort : column.isSorted; @@ -94,7 +96,7 @@ export const TableHeader = >({ }; return ( - + {headerGroups.map((headerGroup, index) => ( Dashbrd. All rights reserved.","footer.all_rights_reserved":"All rights reserved","footer.privacy_policy":"Privacy Policy","footer.terms_of_service":"Terms of Service","footer.powered_by":"Powered by","format.fiat":"{{ value, currency }}","format.number":"{{ value, number }}","metatags.home.title":"Dashbrd | Web3 Portfolio Management Made Simple","metatags.home.description":"Simplify your Web3 journey with Dashbrd. Manage your portfolio of tokens, NFTs, and other digital collectibles across the Ethereum and Polygon blockchains.","metatags.home.image":"/images/meta/home.png","metatags.error.title":"Error {{code}} | Dashbrd","metatags.wallet.title":"My Wallet | Dashbrd","metatags.galleries.title":"Top NFT Galleries | Dashbrd","metatags.galleries.image":"/images/meta/nft-galleries.png","metatags.galleries.description":"Explore user published NFT galleries to find custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.most_popular.title":"Most Popular Galleries | Dashbrd","metatags.galleries.most_popular.image":"/images/meta/most-popular-nft-galleries.png","metatags.galleries.most_popular.description":"Explore and discover Most Popular NFT Galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.newest.title":"Newest Galleries | Dashbrd","metatags.galleries.newest.image":"/images/meta/newest-nft-galleries.png","metatags.galleries.newest.description":"Explore and discover most recent NFT galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More","metatags.galleries.most_valuable.title":"Most Valuable Galleries | Dashbrd","metatags.galleries.most_valuable.image":"/images/meta/most-valuable-nft-galleries.png","metatags.galleries.most_valuable.description":"Explore and discover Most Valuable NFT Galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.view.title":"{{name}} | Dashbrd","metatags.galleries.view.description":"{{name}} | A Curated NFT Gallery at Dashbrd","metatags.galleries.view.image":"/images/meta/nft-gallery.png","metatags.my_galleries.title":"My Galleries | Dashbrd","metatags.my_galleries.title_draft":"My Draft Galleries | Dashbrd","metatags.my_galleries.create.title":"Create Gallery | Dashbrd","metatags.my_galleries.edit.title":"Edit {{name}} | Dashbrd","metatags.collections.title":"Collections | Dashbrd","metatags.collections.view.title":"{{name}} Collection | Dashbrd","metatags.collections.view.description":"Immerse yourself in the intricate details of {{name}} collection, featuring remarkable digital assets. Start your NFT journey today!","metatags.collections.view.image":"/images/meta/nft-collection.png","metatags.my-collections.title":"My Collections | Dashbrd","metatags.nfts.view.title":"{{nft}} NFT | Dashbrd","metatags.nfts.view.description":"Uncover the complete story of {{nft}} NFT from the {{collection}} collection, delving into its unique attributes and distinctive features.","metatags.nfts.view.image":"/images/meta/nft-details.png","metatags.settings.title":"Settings | Dashbrd","metatags.articles.title":"Articles | Dashbrd","metatags.articles.view.title":"{{title}} | Dashbrd","metatags.login.title":"Login | Dashbrd","metatags.privacy_policy.title":"Privacy Policy | Dashbrd","metatags.privacy_policy.description":"Dashbrd’s privacy policy outlines the information we collect and explains your choices surrounding how we use information about you.","metatags.terms_of_service.title":"Terms of Service | Dashbrd","metatags.terms_of_service.description":"These Terms of Service cover your use and access to services, products or websites of Dashbrd.","metatags.cookie_policy.title":"Cookie Policy | Dashbrd","metatags.cookie_policy.description":"Dashbrd uses cookies to make the website more user-friendly. Find out about the main types of cookies we use, and what we use them for.","metatags.welcome.title":"Welcome to Dashbrd | Web3 Simplified","pages.onboarding.title":"Get Started","pages.onboarding.heading":"Your monkeys were bored and ran off, we are trying to round them up.","pages.onboarding.message":"We are setting up your account. This process usually takes just a few minutes, but can take up to 15 minutes.","pages.error.heading":"Oops, something went wrong ...","pages.error.message":"Please try again or get in touch if the issue persists.","pages.maintenance.title":"Dashbrd is currently down for scheduled maintenance.","pages.maintenance.description":"We expect to be back soon. Thanks for your patience.","pages.dashboard.title":"My Wallet","pages.dashboard.breakdown.title":"Portfolio Breakdown","pages.dashboard.line_chart.data_error":"Could not load chart data","pages.articles.title":"Articles","pages.articles.featured_collections":"Featured Collections","pages.articles.placeholder_more_soon":"More Soon","pages.articles.no_articles":"No articles have been published yet. Please check back later!","pages.articles.header_title":"Explore our collection of","pages.articles.header_suffix_one":"published article","pages.articles.header_suffix_other":"published articles","pages.articles.audio_version":"Audio version","pages.articles.consists_of_collections":"{0} This article highlights {{count}} collections|{1} This article highlights {{count}} collection|[2,*] This article highlights {{count}} collections","pages.collections.title":"Collections","pages.collections.collections":"Collections","pages.collections.collection_value":"Collection Value","pages.collections.nfts_owned":"NFTs Owned","pages.collections.header_title":"You own <0>{{nftsCount}} {{nfts}} across <0>{{collectionsCount}} {{collections}}, worth about <0><1>{{worth}}","pages.collections.search_placeholder":"Search by Collection","pages.collections.properties":"Properties","pages.collections.collections_network":"Collections Network","pages.collections.property_search_placeholder":"Feature Search","pages.collections.floor_price":"Floor Price","pages.collections.value":"Value","pages.collections.rarity":"Rarity","pages.collections.report":"Report","pages.collections.hide_collection":"Hide Collection","pages.collections.unhide_collection":"Unhide Collection","pages.collections.no_collections":"You do not own any NFTs yet. Once you do they will be shown here.","pages.collections.all_collections_hidden":"You have hidden all your collections. Unhide and they will appear here.","pages.collections.about_collection":"About Collection","pages.collections.show_hidden":"Show Hidden","pages.collections.show_my_collection":"Show My Collection","pages.collections.owned":"Owned","pages.collections.activities.loading_activities":"We're fetching Activity for this NFT, please hang tight, this can take a while.","pages.collections.activities.loading_activities_collection":"We're fetching Activity for this collection, please hang tight, this can take a while.","pages.collections.activities.ignores_activities":"We don't support activity history for this collection yet.","pages.collections.activities.no_activity":"This collection does not have any activity yet.","pages.collections.activities.types.LABEL_MINT":"Mint","pages.collections.activities.types.LABEL_TRANSFER":"Transfer","pages.collections.activities.types.LABEL_SALE":"Sale","pages.collections.articles.no_articles":"No articles have been linked to this collection as of now.","pages.collections.articles.no_articles_with_filters":"We could not find any articles matching your search criteria, please try again!","pages.collections.articles.search_placeholder":"Search in Articles","pages.collections.articles.sort_latest":"Latest","pages.collections.articles.sort_popularity":"Most Popular","pages.collections.search.loading_results":"Loading results...","pages.collections.search.no_results":"We could not find anything matching your search criteria, please try again!","pages.collections.search.no_results_with_filters":"We could not find anything matching your filters, please try again!","pages.collections.search.no_results_ownership":"You do not own any NFTs in this collection","pages.collections.search.error":"Could not load search results. Please try again later.","pages.collections.sorting.token_number":"Token Number","pages.collections.sorting.recently_received":"Recently Received","pages.collections.sorting.recently_created":"Recently Created","pages.collections.sorting.oldest_collection":"Oldest Collection","pages.collections.traits.description":"List of NFT traits by % of occurrence in the collection","pages.collections.traits.no_traits":"No Properties can be found for this NFT","pages.collections.menu.collection":"Collection","pages.collections.menu.articles":"Articles","pages.collections.menu.activity":"Activity","pages.collections.hidden_modal.collection_hidden":"Collection Hidden","pages.collections.hidden_modal.description":"This collection is currently set to Hidden. Are you sure you want to unhide this collection? You can\n reset the collection to hidden from the collection menu.","pages.collections.hidden_modal.unhide":"Unhide","pages.collections.hidden_modal.error":"Something went wrong. Please try again.","pages.collections.external_modal.you_wish_continue":"You are about to leave Dashbrd to an external website. Dashbrd has no control over the content of\n this site. Are you sure you wish to continue?","pages.collections.external_modal.not_show":"Do not show this message again.","pages.collections.refresh.title":"Refresh your collection","pages.collections.refresh.notice":"You can refresh data every 15 minutes.","pages.collections.refresh.notice_wait":"Please wait. You can refresh data every 15 minutes.","pages.collections.refresh.toast":"We're updating information for your collection.","pages.nfts.nft":"nft","pages.nfts.about_nft":"About NFT","pages.nfts.owned_by":"Owned by","pages.nfts.collection_image":"collection image","pages.nfts.menu.properties":"Properties","pages.nfts.menu.activity":"Activity","pages.reports.title":"Submit a Report","pages.reports.description":"Thanks for looking out by reporting things that break the rules. Let us know what's happening and we'll receive the report.","pages.reports.success":"Thank you for your report. We'll review it and see if it breaks our ToS.","pages.reports.failed":"Something went wrong. Please try again.","pages.reports.throttle":"You have made too many requests. Please wait {{time}} before reporting again.","pages.reports.reported":"You have already reported this {{model}}.","pages.reports.reasons.spam":"Spam","pages.reports.reasons.violence":"Promoting Violence","pages.reports.reasons.hate":"Hate","pages.reports.reasons.inappropriate_content":"Inappropriate Content","pages.reports.reasons.impersonation":"Impersonation","pages.reports.reasons.trademark":"Trademark or Copyright","pages.reports.reasons.selfharm":"Self-Harm","pages.reports.reasons.harassment":"Harassment","pages.galleries.title":"Galleries","pages.galleries.empty_title":"No galleries have been published yet. Once they do they will appear here.","pages.galleries.search.loading_results":"Loading results...","pages.galleries.search.no_results":"We could not find anything matching your search criteria, please try again!","pages.galleries.search.placeholder":"Search by name or curator address","pages.galleries.search.placeholder_nfts":"Search by NFTs","pages.galleries.search.error":"Could not load search results. Please try again later.","pages.galleries.my_galleries.title":"My Galleries","pages.galleries.my_galleries.subtitle":"Manage your galleries","pages.galleries.my_galleries.new_gallery":"New Gallery","pages.galleries.my_galleries.no_galleries":"You have not created any galleries yet. To create a gallery, click on the \"Create Gallery\" button.","pages.galleries.my_galleries.no_draft_galleries":"You have no draft galleries yet. To create a gallery, click on the \"Create Gallery\" button.","pages.galleries.my_galleries.succesfully_deleted":"Gallery has been successfully removed","pages.galleries.my_galleries.draft_succesfully_deleted":"Draft has been successfully removed","pages.galleries.my_galleries.successfully_created":"Gallery has been successfully created","pages.galleries.my_galleries.successfully_updated":"Gallery has been successfully updated","pages.galleries.my_galleries.new_gallery_no_nfts":"Creating a Gallery requires you to own an NFT.","pages.galleries.my_galleries.delete_modal.title":"Delete Draft","pages.galleries.my_galleries.delete_modal.text":"Are you sure you want to delete the draft? Everything you've done will be deleted and you won't be able to get it back.","pages.galleries.my_galleries.nfts_no_longer_owned":"NFTs no longer owned by this wallet have been removed from the draft”","pages.galleries.copy_gallery_link":"Copy Gallery Link","pages.galleries.my_nfts":"My NFTs","pages.galleries.value":"Value","pages.galleries.floor_price":"Floor Price","pages.galleries.nfts":"NFTs","pages.galleries.collections":"Collections","pages.galleries.galleries_count_simple":"{0} galleries|{1} gallery|[2,*] galleries","pages.galleries.galleries_count":"{0} {{count}} Galleries|{1} {{count}} Gallery|[2,*] {{count}} Galleries","pages.galleries.collections_count_simple":"{0} collections|{1} collection|[2,*] collections","pages.galleries.collections_count":"{0} {{count}} Collections|{1} {{count}} Collection|[2,*] {{count}} Collections","pages.galleries.nfts_count_simple":"{0} NFTs|{1} NFT|[2,*] NFTs","pages.galleries.nfts_count":"{0} {{count}} NFTs|{1} {{count}} NFT|[2,*] {{count}} NFTs","pages.galleries.users_count_simple":"{0} users|{1} user|[2,*] users","pages.galleries.users_count":"{0} {{count}} Users|{1} {{count}} User|[2,*] {{count}} Users","pages.galleries.featuring":"Featuring","pages.galleries.curated_by":"Curated by","pages.galleries.worth_about":"Worth About","pages.galleries.valued_at":"valued at","pages.galleries.from":"From","pages.galleries.most_popular_galleries":"Most Popular Galleries","pages.galleries.newest_galleries":"Newest Galleries","pages.galleries.most_valuable_galleries":"Most Valuable Galleries","pages.galleries.most_popular":"Most Popular","pages.galleries.newest":"Newest","pages.galleries.most_valuable":"Most Valuable","pages.galleries.create.search_by_nfts":"Search by NFTs","pages.galleries.create.input_placeholder":"Enter gallery name","pages.galleries.create.title_too_long":"Gallery name must not exceed {{max}} characters.","pages.galleries.create.already_selected_nft":"NFT already exists in this gallery","pages.galleries.create.nft_missing_image":"Only NFTs with images can be added to galleries","pages.galleries.create.nft_gallery_limit":"You can only add 16 NFTs per gallery","pages.galleries.create.gallery_cover":"Gallery Cover","pages.galleries.create.gallery_cover_description":"The cover is used for the card on the gallery list page. While the cover is not a requirement it will allow you to add personality and stand out from the crowd.","pages.galleries.create.gallery_cover_information":"Image dimensions must be at least 287px x 190px, with a max size of 2 MB (JPG, PNG or GIF)","pages.galleries.create.no_results":"We could not find anything matching your search criteria, please try again!","pages.galleries.create.templates.cover":"Cover","pages.galleries.create.templates.template":"Template","pages.galleries.create.templates.select":"Select Gallery Template","pages.galleries.create.templates.basic":"Basic Gallery","pages.galleries.create.templates.coming_soon":"More Coming Soon","pages.galleries.create.load_more_collections_one":"Load {{count}} More Collection","pages.galleries.create.load_more_collections_other":"Load {{count}} More Collections","pages.galleries.create.load_more_nfts":"Load More NFTs","pages.galleries.create.can_purchase":"You can purchase NFTs with these top NFT Marketplaces:","pages.galleries.create.must_own_one_nft":"You must own at least one (1) NFT in order to create a gallery.","pages.galleries.create.back_to_galleries":"Back to Galleries","pages.galleries.create.draft_saved":"Draft Saved","pages.galleries.create.saving_to_draft":"Saving to draft","pages.galleries.create.drafts_limit_modal_title":"Draft Gallery Limit","pages.galleries.create.drafts_limit_modal_message":"You’ve hit your limit for draft galleries. While you can still make new galleries and publish them, they won’t be saved as drafts. To Free up space, you can either delete existing drafts or publish them.","pages.galleries.create.drafts_limit_modal_cancel":"Go to Drafts","pages.galleries.delete_modal.title":"Delete Gallery","pages.galleries.delete_modal.confirmation_text":"Are you sure you want to delete the gallery? Deleting a Gallery is permanent, all associated views and likes will be lost.","pages.galleries.consists_of_collections":"{0} This gallery consists of {{count}} collections|{1} This gallery consists of {{count}} collection|[2,*] This gallery consists of {{count}} collections","pages.galleries.guest_banner.title":"Craft the ultimate","pages.galleries.guest_banner.subtitle":"Pick your favorites, curate your gallery, & share it with the world.","pages.profile.title":"Profile","pages.token_panel.balance_tooltip":"Total percentage of the portfolio held in this token","pages.token_panel.insufficient_funds":"Insufficient Balance","pages.token_panel.error":"Dashbrd has failed to load token information. Please try again later.","pages.token_panel.failed_to_retrieve_transactions":"We were unable to fetch your transactions.","pages.token_panel.tabs.transaction_history":"Transaction History","pages.token_panel.tabs.history":"History","pages.token_panel.tabs.market_data":"Market Data","pages.token_panel.details.current_price":"Current Price","pages.token_panel.details.title":"Token Details","pages.token_panel.details.market_cap":"Market Cap","pages.token_panel.details.volume":"Daily Volume","pages.token_panel.details.supply":"Minted Supply","pages.token_panel.details.ath":"All-Time High","pages.token_panel.details.atl":"All-Time Low","pages.token_panel.chart.failed":"Dashbrd has failed to load chart information. Please try again later.","pages.transaction_details_panel.title":"Transaction Details","pages.transaction_details_panel.details.blockchain":"Blockchain","pages.transaction_details_panel.details.timestamp":"Timestamp","pages.transaction_details_panel.details.transaction_hash":"Transaction Hash","pages.transaction_details_panel.details.transaction_fee":"Transaction Fee","pages.transaction_details_panel.details.gas_price":"Gas Price","pages.transaction_details_panel.details.gas_used":"Gas Used","pages.transaction_details_panel.details.nonce":"Nonce","pages.send_receive_panel.send.labels.token_and_amount":"Token and Amount","pages.send_receive_panel.send.labels.destination_address":"Destination Address","pages.send_receive_panel.send.labels.projected_fee":"Projected Fee","pages.send_receive_panel.send.placeholders.enter_amount":"Enter Amount","pages.send_receive_panel.send.placeholders.insert_recipient_address":"Insert Recipient Address","pages.send_receive_panel.send.placeholders.projected_fee":"Projected Fee","pages.send_receive_panel.send.errors.amount":"Insufficient Funds: You do not have enough to cover the amount + fee.","pages.send_receive_panel.send.errors.destination":"Destination address is not correct. Check and input again.","pages.send_receive_panel.send.hints.token_price":"Token Price","pages.send_receive_panel.send.fees.Fast":"Fast","pages.send_receive_panel.send.fees.Avg":"Avg","pages.send_receive_panel.send.fees.Slow":"Slow","pages.send_receive_panel.send.search_dropdown.placeholder":"Search token","pages.send_receive_panel.send.search_dropdown.no_results":"No Results","pages.send_receive_panel.send.search_dropdown.error":"Error occurred while searching tokens.","pages.send_receive_panel.send.transaction_time":"Transaction Time: ~{{ time }} minutes","pages.send_receive_panel.send.from":"From","pages.send_receive_panel.send.to":"To","pages.send_receive_panel.send.amount":"Amount","pages.send_receive_panel.send.fee":"Fee","pages.send_receive_panel.send.total_amount":"Total Amount","pages.send_receive_panel.send.waiting_message":"Review and verify the information on your MetaMask. Sign to send the transaction.","pages.send_receive_panel.send.waiting_spinner_text":"Waiting for confirmation...","pages.send_receive_panel.send.failed_message":"It looks like something went wrong while sending your transaction. Press 'Retry' to make another attempt.","pages.send_receive_panel.receive.alert":"Send only Polygon or Ethereum Network compatible tokens to this address or you could permanently lose your funds!","pages.settings.title":"Settings","pages.settings.sidebar.general":"General","pages.settings.sidebar.notifications":"Notifications","pages.settings.sidebar.session_history":"Sessions History","pages.settings.general.title":"Settings","pages.settings.general.subtitle":"Customize your App Experience","pages.settings.general.currency":"Currency","pages.settings.general.currency_subtitle":"Select your default currency which will be used throughout the app.","pages.settings.general.time_date":"Time & Date","pages.settings.general.time_date_subtitle":"Select how you want time and date be shown inside app.","pages.settings.general.date_format":"Date Format","pages.settings.general.time_format":"Time Format","pages.settings.general.timezone":"Timezone","pages.settings.general.set_defaults":"Set Defaults","pages.settings.general.set_defaults_content":"Reverting to the default settings will remove any customizations previously made. Are you sure?","pages.settings.general.save":"Save Settings","pages.settings.general.saved":"Your settings have been successfully saved","pages.wallet.title":"Wallet","pages.privacy_policy.title":"Privacy Policy","pages.terms_of_service.title":"Terms of Service","pagination.previous":"« Previous","pagination.next":"Next »","passwords.reset":"Your password has been reset!","passwords.sent":"We have emailed your password reset link!","passwords.throttled":"Please wait before retrying.","passwords.token":"This password reset token is invalid.","passwords.user":"We can't find a user with that email address.","urls.landing":"https://dashbrd.com","urls.cookie_policy":"https://dashbrd.com/cookie-policy","urls.privacy_policy":"https://dashbrd.com/privacy-policy","urls.terms_of_service":"https://dashbrd.com/terms-of-service","urls.twitter":"https://x.com/DashbrdApp","urls.discord":"https://discord.gg/MJyWKkCJ5k","urls.github":"https://github.com/ArdentHQ/dashbrd","urls.coingecko":"https://www.coingecko.com","urls.etherscan":"https://etherscan.io","urls.polygonscan":"https://polygonscan.com","urls.alchemy":"https://www.alchemy.com","urls.moralis":"https://moralis.io","urls.mnemonic":"https://www.mnemonichq.com","urls.opensea":"https://opensea.io/","urls.explorers.etherscan.token_transactions":"https://etherscan.io/token/{{token}}?a={{address}}","urls.explorers.etherscan.addresses":"https://etherscan.io/address/{{address}}","urls.explorers.etherscan.transactions":"https://etherscan.io/tx/{{id}}","urls.explorers.etherscan.nft":"https://etherscan.io/nft/{{address}}/{{nftId}}","urls.explorers.polygonscan.token_transactions":"https://polygonscan.com/token/{{token}}?a={{address}}","urls.explorers.polygonscan.addresses":"https://polygonscan.com/address/{{address}}","urls.explorers.polygonscan.transactions":"https://polygonscan.com/tx/{{id}}","urls.explorers.polygonscan.nft":"https://polygonscan.com/nft/{{address}}/{{nftId}}","urls.explorers.mumbai.token_transactions":"https://mumbai.polygonscan.com/token/{{token}}?a={{address}}","urls.explorers.mumbai.addresses":"https://mumbai.polygonscan.com/address/{{address}}","urls.explorers.mumbai.transactions":"https://mumbai.polygonscan.com/tx/{{id}}","urls.explorers.mumbai.nft":"https://mumbai.polygonscan.com/nft/{{address}}/{{nftId}}","urls.explorers.goerli.token_transactions":"https://goerli.etherscan.io/token/{{token}}?a={{address}}","urls.explorers.goerli.addresses":"https://goerli.etherscan.io/address/{{address}}","urls.explorers.goerli.transactions":"https://goerli.etherscan.io/tx/{{id}}","urls.explorers.goerli.nft":"https://goerli.etherscan.io/nft/{{address}}/{{nftId}}","urls.marketplaces.opensea.collection":"https://opensea.io/assets/{{network}}/{{address}}","urls.marketplaces.opensea.nft":"https://opensea.io/assets/{{network}}/{{address}}/{{nftId}}","urls.marketplaces.rarible.collection":"https://rarible.com/collection/{{address}}/items","urls.marketplaces.rarible.nft":"https://rarible.com/token/{{address}}:{{nftId}}","urls.marketplaces.blur.collection":"https://blur.io/collection/{{address}}","urls.marketplaces.blur.nft":"https://blur.io/asset/{{address}}/{{nftId}}","urls.marketplaces.looksrare.collection":"https://looksrare.org/collections/{{address}}","urls.marketplaces.looksrare.nft":"https://looksrare.org/collections/{{address}}/{{nftId}}","validation.accepted":"The {{attribute}} must be accepted.","validation.accepted_if":"The {{attribute}} must be accepted when {{other}} is {{value}}.","validation.active_url":"The {{attribute}} is not a valid URL.","validation.after":"The {{attribute}} must be a date after {{date}}.","validation.after_or_equal":"The {{attribute}} must be a date after or equal to {{date}}.","validation.alpha":"The {{attribute}} must only contain letters.","validation.alpha_dash":"The {{attribute}} must only contain letters, numbers, dashes and underscores.","validation.alpha_num":"The {{attribute}} must only contain letters and numbers.","validation.array":"The {{attribute}} must be an array.","validation.ascii":"The {{attribute}} must only contain single-byte alphanumeric characters and symbols.","validation.before":"The {{attribute}} must be a date before {{date}}.","validation.before_or_equal":"The {{attribute}} must be a date before or equal to {{date}}.","validation.between.array":"The {{attribute}} must have between {{min}} and {{max}} items.","validation.between.file":"The {{attribute}} must be between {{min}} and {{max}} kilobytes.","validation.between.numeric":"The {{attribute}} must be between {{min}} and {{max}}.","validation.between.string":"The {{attribute}} must be between {{min}} and {{max}} characters.","validation.boolean":"The {{attribute}} field must be true or false.","validation.confirmed":"The {{attribute}} confirmation does not match.","validation.current_password":"The password is incorrect.","validation.date":"The {{attribute}} is not a valid date.","validation.date_equals":"The {{attribute}} must be a date equal to {{date}}.","validation.date_format":"The {{attribute}} does not match the format {{format}}.","validation.decimal":"The {{attribute}} must have {{decimal}} decimal places.","validation.declined":"The {{attribute}} must be declined.","validation.declined_if":"The {{attribute}} must be declined when {{other}} is {{value}}.","validation.different":"The {{attribute}} and {{other}} must be different.","validation.digits":"The {{attribute}} must be {{digits}} digits.","validation.digits_between":"The {{attribute}} must be between {{min}} and {{max}} digits.","validation.dimensions":"The {{attribute}} has invalid image dimensions.","validation.distinct":"The {{attribute}} field has a duplicate value.","validation.doesnt_end_with":"The {{attribute}} may not end with one of the following: {{values}}.","validation.doesnt_start_with":"The {{attribute}} may not start with one of the following: {{values}}.","validation.email":"The {{attribute}} must be a valid email address.","validation.ends_with":"The {{attribute}} must end with one of the following: {{values}}.","validation.enum":"The selected {{attribute}} is invalid.","validation.exists":"The selected {{attribute}} is invalid.","validation.file":"The {{attribute}} must be a file.","validation.filled":"The {{attribute}} field must have a value.","validation.gt.array":"The {{attribute}} must have more than {{value}} items.","validation.gt.file":"The {{attribute}} must be greater than {{value}} kilobytes.","validation.gt.numeric":"The {{attribute}} must be greater than {{value}}.","validation.gt.string":"The {{attribute}} must be greater than {{value}} characters.","validation.gte.array":"The {{attribute}} must have {{value}} items or more.","validation.gte.file":"The {{attribute}} must be greater than or equal to {{value}} kilobytes.","validation.gte.numeric":"The {{attribute}} must be greater than or equal to {{value}}.","validation.gte.string":"The {{attribute}} must be greater than or equal to {{value}} characters.","validation.image":"The {{attribute}} must be an image.","validation.in":"The selected {{attribute}} is invalid.","validation.in_array":"The {{attribute}} field does not exist in {{other}}.","validation.integer":"The {{attribute}} must be an integer.","validation.ip":"The {{attribute}} must be a valid IP address.","validation.ipv4":"The {{attribute}} must be a valid IPv4 address.","validation.ipv6":"The {{attribute}} must be a valid IPv6 address.","validation.json":"The {{attribute}} must be a valid JSON string.","validation.lowercase":"The {{attribute}} must be lowercase.","validation.lt.array":"The {{attribute}} must have less than {{value}} items.","validation.lt.file":"The {{attribute}} must be less than {{value}} kilobytes.","validation.lt.numeric":"The {{attribute}} must be less than {{value}}.","validation.lt.string":"The {{attribute}} must be less than {{value}} characters.","validation.lte.array":"The {{attribute}} must not have more than {{value}} items.","validation.lte.file":"The {{attribute}} must be less than or equal to {{value}} kilobytes.","validation.lte.numeric":"The {{attribute}} must be less than or equal to {{value}}.","validation.lte.string":"The {{attribute}} must be less than or equal to {{value}} characters.","validation.mac_address":"The {{attribute}} must be a valid MAC address.","validation.max.array":"The {{attribute}} must not have more than {{max}} items.","validation.max.file":"The {{attribute}} must not be greater than {{max}} kilobytes.","validation.max.numeric":"The {{attribute}} must not be greater than {{max}}.","validation.max.string":"The {{attribute}} must not be greater than {{max}} characters.","validation.max_digits":"The {{attribute}} must not have more than {{max}} digits.","validation.mimes":"The {{attribute}} must be a file of type: {{values}}.","validation.mimetypes":"The {{attribute}} must be a file of type: {{values}}.","validation.min.array":"The {{attribute}} must have at least {{min}} items.","validation.min.file":"The {{attribute}} must be at least {{min}} kilobytes.","validation.min.numeric":"The {{attribute}} must be at least {{min}}.","validation.min.string":"The {{attribute}} must be at least {{min}} characters.","validation.min_digits":"The {{attribute}} must have at least {{min}} digits.","validation.missing":"The {{attribute}} field must be missing.","validation.missing_if":"The {{attribute}} field must be missing when {{other}} is {{value}}.","validation.missing_unless":"The {{attribute}} field must be missing unless {{other}} is {{value}}.","validation.missing_with":"The {{attribute}} field must be missing when {{values}} is present.","validation.missing_with_all":"The {{attribute}} field must be missing when {{values}} are present.","validation.multiple_of":"The {{attribute}} must be a multiple of {{value}}.","validation.not_in":"The selected {{attribute}} is invalid.","validation.not_regex":"The {{attribute}} format is invalid.","validation.numeric":"The {{attribute}} must be a number.","validation.password.letters":"The {{attribute}} must contain at least one letter.","validation.password.mixed":"The {{attribute}} must contain at least one uppercase and one lowercase letter.","validation.password.numbers":"The {{attribute}} must contain at least one number.","validation.password.symbols":"The {{attribute}} must contain at least one symbol.","validation.password.uncompromised":"The given {{attribute}} has appeared in a data leak. Please choose a different {{attribute}}.","validation.present":"The {{attribute}} field must be present.","validation.prohibited":"The {{attribute}} field is prohibited.","validation.prohibited_if":"The {{attribute}} field is prohibited when {{other}} is {{value}}.","validation.prohibited_unless":"The {{attribute}} field is prohibited unless {{other}} is in {{values}}.","validation.prohibits":"The {{attribute}} field prohibits {{other}} from being present.","validation.regex":"The {{attribute}} format is invalid.","validation.required":"The {{attribute}} field is required.","validation.required_array_keys":"The {{attribute}} field must contain entries for: {{values}}.","validation.required_if":"The {{attribute}} field is required when {{other}} is {{value}}.","validation.required_if_accepted":"The {{attribute}} field is required when {{other}} is accepted.","validation.required_unless":"The {{attribute}} field is required unless {{other}} is in {{values}}.","validation.required_with":"The {{attribute}} field is required when {{values}} is present.","validation.required_with_all":"The {{attribute}} field is required when {{values}} are present.","validation.required_without":"The {{attribute}} field is required when {{values}} is not present.","validation.required_without_all":"The {{attribute}} field is required when none of {{values}} are present.","validation.same":"The {{attribute}} and {{other}} must match.","validation.size.array":"The {{attribute}} must contain {{size}} items.","validation.size.file":"The {{attribute}} must be {{size}} kilobytes.","validation.size.numeric":"The {{attribute}} must be {{size}}.","validation.size.string":"The {{attribute}} must be {{size}} characters.","validation.starts_with":"The {{attribute}} must start with one of the following: {{values}}.","validation.string":"The {{attribute}} must be a string.","validation.timezone":"The {{attribute}} must be a valid timezone.","validation.unique":"The {{attribute}} has already been taken.","validation.uploaded":"The {{attribute}} failed to upload.","validation.uppercase":"The {{attribute}} must be uppercase.","validation.url":"The {{attribute}} must be a valid URL.","validation.ulid":"The {{attribute}} must be a valid ULID.","validation.uuid":"The {{attribute}} must be a valid UUID.","validation.custom.attribute-name.rule-name":"custom-message","validation.unsupported_currency_code":"The currency code you provided is invalid or not supported.","validation.unsupported_period":"The period you provided is invalid or not supported.","validation.unsupported_token_symbol":"The token symbol you provided is invalid or not supported.","validation.gallery_title_required":"Gallery name is required.","validation.gallery_title_max_characters":"The gallery name should not exceed 50 characters.","validation.gallery_title_invalid":"The gallery name is invalid.","validation.nfts_required":"Please add at least one NFT.","validation.nfts_max_size":"Galleries can contain no more than {{limit}} NFTs","validation.invalid_nfts":"The NFT in position {{position}} is invalid, please select another one.","validation.invalid_cover":"You have selected an invalid cover image, please try another one."} \ No newline at end of file +{"auth.welcome":"Welcome to Dashbrd","auth.logged_in":"You're logged in!","auth.log_out":"Log out","auth.failed":"These credentials do not match our records.","auth.session_timeout":"Your session has timed out. Please refresh the page and try connecting your account again.","auth.session_timeout_modal":"Seems like your session has timed out. Please connnect your wallet again.","auth.password":"The provided password is incorrect.","auth.throttle":"Too many login attempts. Please try again in {{seconds}} seconds.","auth.wallet.connecting":"Connecting …","auth.wallet.waiting_for_signature":"Waiting for Signature …","auth.wallet.switching_wallet":"Switching Wallet …","auth.wallet.connect":"Connect Wallet","auth.wallet.connect_long":"Connect Your Wallet to Get Started","auth.wallet.sign_subtitle":"Connect Your Wallet to Continue","auth.wallet.disconnect":"Disconnect Wallet","auth.wallet.install":"Install MetaMask","auth.wallet.install_long":"Install MetaMask to Get Started","auth.wallet.sign":"Sign Message","auth.wallet.sign_message":"Welcome to Dashbrd. In order to login, sign this message with your wallet. It doesn't cost you anything!\n\nSigning ID (you can ignore this): {{nonce}}","auth.wallet.connect_subtitle":"Click on the MetaMask icon in your browser to confirm the action and connect your wallet.","auth.wallet.requires_signature":"In order to prevent impersonation, we require a signature to perform this action. This signature is only a signed message and does not give any access to your wallet.","auth.errors.metamask.no_account":"No account found. Please connect your wallet and try again.","auth.errors.metamask.generic":"Connection attempt error. Please retry and follow the steps to connect your wallet.","auth.errors.metamask.invalid_network":"Please switch to Polygon or Ethereum Mainnet in your MetaMask plugin to connect to Dashbrd.","auth.errors.metamask.provider_missing":"You don't have MetaMask installed in your browser. Please install and try again.","auth.errors.metamask.user_rejected":"It looks like you cancelled signing of the authentication message. Please try again.","auth.errors.metamask.provider_not_set":"Ethereum provider is not set","auth.validation.wallet_login_failed":"There was a problem trying to verify your signature. Please try again.","auth.validation.invalid_address":"Your wallet address is invalid. Please try again.","auth.validation.invalid_signature":"Signature is invalid. Please try again.","auth.validation.invalid_network":"Please switch to Polygon or Ethereum Mainnet in your MetaMask plugin to connect to Dashbrd.","common.author":"Author","common.add":"Add","common.amount":"Amount","common.balance":"Balance","common.cancel":"Cancel","common.delete":"Delete","common.edit":"Edit","common.confirm":"Confirm","common.connect":"Connect","common.continue":"Continue","common.done":"Done","common.filter":"Filter","common.items":"Items","common.receive":"Receive","common.received":"Received","common.retry":"Retry","common.records":"Records","common.save":"Save","common.send":"Send","common.sent":"Sent","common.show":"Show","common.searching":"Searching...","common.other":"Other","common.owned":"Owned","common.token":"Token","common.tokens":"Tokens","common.wallet":"Wallet","common.pending":"Pending","common.publish":"Publish","common.published":"Published","common.empty":"Empty","common.your_address":"Your Address","common.warning":"Warning","common.my_address":"My Address","common.my_wallet":"My Wallet","common.my_collections":"My Collections","common.my_balance":"My Balance","common.na":"N/A","common.simple_plural_without_data":"One comment|Many comments","common.simple_plural_with_data":"{{count}} comment|{{count}} comments","common.advanced_plural_without_data":"{0} no comments yet|{1} 1 comment|[2,*] Many comments","common.advanced_plural_with_data":"{0} no comments yet|{1} 1 comment|[2,*] {{count}} comments","common.copy_clipboard":"Copy to Clipboard","common.copy":"Copy","common.download":"Download","common.zoom":"Zoom","common.my_collection":"My Collection","common.max":"Max","common.chain":"Chain","common.copied":"Copied!","common.coming_soon":"Coming Soon","common.more_details":"More Details","common.close":"Close","common.close_toast":"Close toast","common.loading":"Loading","common.price":"Price","common.articles":"Articles","common.most_popular":"Most Popular","common.market_cap":"Market Cap","common.volume":"Volume","common.volume_frequency":"Volume {{frequency}}","common.value":"Value","common.last_n_days":"Last {{count}} Days","common.details":"Details","common.view_all":"View All","common.view_more_on_polygonscan":"View More on Polygonscan","common.view_more_on_etherscan":"View More on Etherscan","common.view_nft_on_etherscan":"View NFT on Etherscan","common.view_nft_on_polygonscan":"View NFT on Polygonscan","common.view_nft_on_goerli_tesnet":"View NFT on Goerli Testnet Explorer","common.view_nft_on_mumbai_tesnet":"View NFT on Mumbai Testnet Explorer","common.polygonscan":"Polygonscan","common.etherscan":"Etherscan","common.featured":"Featured","common.floor_price":"Floor Price","common.floor":"Floor","common.supply":"Supply","common.owners":"Owners","common.created":"Created","common.nft":"NFT","common.collection":"Collection","common.collections":"Collections","common.gallery":"Gallery","common.basic_gallery":"Basic Gallery","common.gallery_name":"Gallery Name","common.create_gallery":"Create Gallery","common.external_link":"External Link","common.follow_link":"Follow Link","common.cover":"Cover","common.template":"Template","common.page":"Page","common.polygon":"Polygon","common.ethereum":"Ethereum","common.mumbai":"Mumbai","common.goerli":"Goerli","common.of":"of","common.pagination_input_placeholder":"Enter the page number","common.pagination_input_placeholder_mobile":"Page number","common.nft_count":"{0} {{count}} NFTs|{1} {{count}} NFT|[2,*] {{count}} NFTs","common.nft_gallery":"NFT Gallery","common.unable_to_retrieve_image":"Unable to retrieve your NFT image at this time","common.optional":"Optional","common.selected":"Selected","common.select":"Select","common.preview":"Preview","common.image_size_error":"Image size must not exceed 2MB","common.image_dimensions_error":"Image dimensions must exceed 287px x 190px","common.write_to_confirm":"Write {{word}} to confirm","common.n_hours":"{0} {{count}} hour|{1} {{count}} hour|[2,*] {{count}} hours","common.n_minutes":"{0} {{count}} minute|{1} {{count}} minute|[2,*] {{count}} minutes","common.report":"Report","common.n_nfts":"{0}NFTs|{1}NFT|[2,*]NFTs","common.n_collections":"{0}collections|{1}collection|[2,*]collections","common.back":"Back","common.back_to":"Back to","common.name":"Name","common.type":"Type","common.from":"From","common.to":"To","common.sale_price":"Sale Price","common.recent_activity":"Recent Activity","common.time":"Time","common.datetime.few_seconds_ago":"A few seconds ago","common.datetime.minutes_ago":"{0} Less than a minute ago|{1} A minute ago|[2,*] {{count}} minutes ago","common.datetime.hours_ago":"{0} Less than an hour ago|{1} An hour ago|[2,*] {{count}} hours ago","common.datetime.days_ago":"{0} Less than a day ago|{1} A day ago|[2,*] {{count}} days ago","common.datetime.weeks_ago":"{0} Less than a week ago|{1} A week ago|[2,*] {{count}} weeks ago","common.datetime.months_ago":"{0} Less than a month ago|{1} A month ago|[2,*] {{count}} months ago","common.datetime.years_ago":"{0} Less than a year ago|{1} A year ago|[2,*] {{count}} years ago","common.no_traits_found":"No traits found.","common.empty_transactions":"You don't have any transactions yet. Once transactions have been made, they will show up here.","common.error":"Error","common.refresh":"Refresh","common.refresh_metadata":"Refresh Metadata","common.refreshing_metadata":"Refreshing Metadata... Please check back later.","common.refreshing_activity":"Refreshing Activity... Please check back later.","common.pending_confirmation":"Pending Confirmation","common.confirmed_transaction":"Confirmed Transaction","common.transaction_error":"Transaction Error","common.transaction_error_description_first_part":"Your transaction encountered an error. View this transaction on","common.transaction_error_description_second_part":"for more details.","common.home":"Home","common.contact":"Contact","common.menu":"Menu","common.website":"Website","common.twitter":"Twitter","common.discord":"Discord","common.facebook":"Facebook","common.reddit":"Reddit","common.x":"X","common.sort":"Sort","common.drafts":"Drafts","common.draft":"Draft","common.delete_draft":"Delete Draft","common.share_on":"Share on {{platform}}","footer.copyright":"{{year}} © Dashbrd. All rights reserved.","footer.all_rights_reserved":"All rights reserved","footer.privacy_policy":"Privacy Policy","footer.terms_of_service":"Terms of Service","footer.powered_by":"Powered by","format.fiat":"{{ value, currency }}","format.number":"{{ value, number }}","metatags.home.title":"Dashbrd | Web3 Portfolio Management Made Simple","metatags.home.description":"Simplify your Web3 journey with Dashbrd. Manage your portfolio of tokens, NFTs, and other digital collectibles across the Ethereum and Polygon blockchains.","metatags.home.image":"/images/meta/home.png","metatags.error.title":"Error {{code}} | Dashbrd","metatags.wallet.title":"My Wallet | Dashbrd","metatags.galleries.title":"Top NFT Galleries | Dashbrd","metatags.galleries.image":"/images/meta/nft-galleries.png","metatags.galleries.description":"Explore user published NFT galleries to find custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.most_popular.title":"Most Popular Galleries | Dashbrd","metatags.galleries.most_popular.image":"/images/meta/most-popular-nft-galleries.png","metatags.galleries.most_popular.description":"Explore and discover Most Popular NFT Galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.newest.title":"Newest Galleries | Dashbrd","metatags.galleries.newest.image":"/images/meta/newest-nft-galleries.png","metatags.galleries.newest.description":"Explore and discover most recent NFT galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More","metatags.galleries.most_valuable.title":"Most Valuable Galleries | Dashbrd","metatags.galleries.most_valuable.image":"/images/meta/most-valuable-nft-galleries.png","metatags.galleries.most_valuable.description":"Explore and discover Most Valuable NFT Galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.view.title":"{{name}} | Dashbrd","metatags.galleries.view.description":"{{name}} | A Curated NFT Gallery at Dashbrd","metatags.galleries.view.image":"/images/meta/nft-gallery.png","metatags.my_galleries.title":"My Galleries | Dashbrd","metatags.my_galleries.title_draft":"My Draft Galleries | Dashbrd","metatags.my_galleries.create.title":"Create Gallery | Dashbrd","metatags.my_galleries.edit.title":"Edit {{name}} | Dashbrd","metatags.collections.title":"Collections | Dashbrd","metatags.collections.view.title":"{{name}} Collection | Dashbrd","metatags.collections.view.description":"Immerse yourself in the intricate details of {{name}} collection, featuring remarkable digital assets. Start your NFT journey today!","metatags.collections.view.image":"/images/meta/nft-collection.png","metatags.my-collections.title":"My Collections | Dashbrd","metatags.nfts.view.title":"{{nft}} NFT | Dashbrd","metatags.nfts.view.description":"Uncover the complete story of {{nft}} NFT from the {{collection}} collection, delving into its unique attributes and distinctive features.","metatags.nfts.view.image":"/images/meta/nft-details.png","metatags.settings.title":"Settings | Dashbrd","metatags.articles.title":"Articles | Dashbrd","metatags.articles.view.title":"{{title}} | Dashbrd","metatags.login.title":"Login | Dashbrd","metatags.privacy_policy.title":"Privacy Policy | Dashbrd","metatags.privacy_policy.description":"Dashbrd’s privacy policy outlines the information we collect and explains your choices surrounding how we use information about you.","metatags.terms_of_service.title":"Terms of Service | Dashbrd","metatags.terms_of_service.description":"These Terms of Service cover your use and access to services, products or websites of Dashbrd.","metatags.cookie_policy.title":"Cookie Policy | Dashbrd","metatags.cookie_policy.description":"Dashbrd uses cookies to make the website more user-friendly. Find out about the main types of cookies we use, and what we use them for.","metatags.welcome.title":"Welcome to Dashbrd | Web3 Simplified","pages.onboarding.title":"Get Started","pages.onboarding.heading":"Your monkeys were bored and ran off, we are trying to round them up.","pages.onboarding.message":"We are setting up your account. This process usually takes just a few minutes, but can take up to 15 minutes.","pages.error.heading":"Oops, something went wrong ...","pages.error.message":"Please try again or get in touch if the issue persists.","pages.maintenance.title":"Dashbrd is currently down for scheduled maintenance.","pages.maintenance.description":"We expect to be back soon. Thanks for your patience.","pages.dashboard.title":"My Wallet","pages.dashboard.breakdown.title":"Portfolio Breakdown","pages.dashboard.line_chart.data_error":"Could not load chart data","pages.articles.title":"Articles","pages.articles.featured_collections":"Featured Collections","pages.articles.placeholder_more_soon":"More Soon","pages.articles.no_articles":"No articles have been published yet. Please check back later!","pages.articles.header_title":"Explore our collection of","pages.articles.header_suffix_one":"published article","pages.articles.header_suffix_other":"published articles","pages.articles.audio_version":"Audio version","pages.articles.consists_of_collections":"{0} This article highlights {{count}} collections|{1} This article highlights {{count}} collection|[2,*] This article highlights {{count}} collections","pages.collections.title":"Collections","pages.collections.collections":"Collections","pages.collections.popular_collections":"Popular Collections","pages.collections.collection_value":"Collection Value","pages.collections.nfts_owned":"NFTs Owned","pages.collections.header_title":"You own <0>{{nftsCount}} {{nfts}} across <0>{{collectionsCount}} {{collections}}, worth about <0><1>{{worth}}","pages.collections.search_placeholder":"Search by Collection","pages.collections.properties":"Properties","pages.collections.collections_network":"Collections Network","pages.collections.property_search_placeholder":"Feature Search","pages.collections.floor_price":"Floor Price","pages.collections.value":"Value","pages.collections.rarity":"Rarity","pages.collections.report":"Report","pages.collections.hide_collection":"Hide Collection","pages.collections.unhide_collection":"Unhide Collection","pages.collections.no_collections":"You do not own any NFTs yet. Once you do they will be shown here.","pages.collections.all_collections_hidden":"You have hidden all your collections. Unhide and they will appear here.","pages.collections.about_collection":"About Collection","pages.collections.show_hidden":"Show Hidden","pages.collections.show_my_collection":"Show My Collection","pages.collections.owned":"Owned","pages.collections.activities.loading_activities":"We're fetching Activity for this NFT, please hang tight, this can take a while.","pages.collections.activities.loading_activities_collection":"We're fetching Activity for this collection, please hang tight, this can take a while.","pages.collections.activities.ignores_activities":"We don't support activity history for this collection yet.","pages.collections.activities.no_activity":"This collection does not have any activity yet.","pages.collections.activities.types.LABEL_MINT":"Mint","pages.collections.activities.types.LABEL_TRANSFER":"Transfer","pages.collections.activities.types.LABEL_SALE":"Sale","pages.collections.articles.no_articles":"No articles have been linked to this collection as of now.","pages.collections.articles.no_articles_with_filters":"We could not find any articles matching your search criteria, please try again!","pages.collections.articles.search_placeholder":"Search in Articles","pages.collections.articles.sort_latest":"Latest","pages.collections.articles.sort_popularity":"Most Popular","pages.collections.search.loading_results":"Loading results...","pages.collections.search.no_results":"We could not find anything matching your search criteria, please try again!","pages.collections.search.no_results_with_filters":"We could not find anything matching your filters, please try again!","pages.collections.search.no_results_ownership":"You do not own any NFTs in this collection","pages.collections.search.error":"Could not load search results. Please try again later.","pages.collections.sorting.token_number":"Token Number","pages.collections.sorting.recently_received":"Recently Received","pages.collections.sorting.recently_created":"Recently Created","pages.collections.sorting.oldest_collection":"Oldest Collection","pages.collections.traits.description":"List of NFT traits by % of occurrence in the collection","pages.collections.traits.no_traits":"No Properties can be found for this NFT","pages.collections.menu.collection":"Collection","pages.collections.menu.articles":"Articles","pages.collections.menu.activity":"Activity","pages.collections.hidden_modal.collection_hidden":"Collection Hidden","pages.collections.hidden_modal.description":"This collection is currently set to Hidden. Are you sure you want to unhide this collection? You can\n reset the collection to hidden from the collection menu.","pages.collections.hidden_modal.unhide":"Unhide","pages.collections.hidden_modal.error":"Something went wrong. Please try again.","pages.collections.external_modal.you_wish_continue":"You are about to leave Dashbrd to an external website. Dashbrd has no control over the content of\n this site. Are you sure you wish to continue?","pages.collections.external_modal.not_show":"Do not show this message again.","pages.collections.refresh.title":"Refresh your collection","pages.collections.refresh.notice":"You can refresh data every 15 minutes.","pages.collections.refresh.notice_wait":"Please wait. You can refresh data every 15 minutes.","pages.collections.refresh.toast":"We're updating information for your collection.","pages.nfts.nft":"nft","pages.nfts.about_nft":"About NFT","pages.nfts.owned_by":"Owned by","pages.nfts.collection_image":"collection image","pages.nfts.menu.properties":"Properties","pages.nfts.menu.activity":"Activity","pages.reports.title":"Submit a Report","pages.reports.description":"Thanks for looking out by reporting things that break the rules. Let us know what's happening and we'll receive the report.","pages.reports.success":"Thank you for your report. We'll review it and see if it breaks our ToS.","pages.reports.failed":"Something went wrong. Please try again.","pages.reports.throttle":"You have made too many requests. Please wait {{time}} before reporting again.","pages.reports.reported":"You have already reported this {{model}}.","pages.reports.reasons.spam":"Spam","pages.reports.reasons.violence":"Promoting Violence","pages.reports.reasons.hate":"Hate","pages.reports.reasons.inappropriate_content":"Inappropriate Content","pages.reports.reasons.impersonation":"Impersonation","pages.reports.reasons.trademark":"Trademark or Copyright","pages.reports.reasons.selfharm":"Self-Harm","pages.reports.reasons.harassment":"Harassment","pages.galleries.title":"Galleries","pages.galleries.empty_title":"No galleries have been published yet. Once they do they will appear here.","pages.galleries.search.loading_results":"Loading results...","pages.galleries.search.no_results":"We could not find anything matching your search criteria, please try again!","pages.galleries.search.placeholder":"Search by name or curator address","pages.galleries.search.placeholder_nfts":"Search by NFTs","pages.galleries.search.error":"Could not load search results. Please try again later.","pages.galleries.my_galleries.title":"My Galleries","pages.galleries.my_galleries.subtitle":"Manage your galleries","pages.galleries.my_galleries.new_gallery":"New Gallery","pages.galleries.my_galleries.no_galleries":"You have not created any galleries yet. To create a gallery, click on the \"Create Gallery\" button.","pages.galleries.my_galleries.no_draft_galleries":"You have no draft galleries yet. To create a gallery, click on the \"Create Gallery\" button.","pages.galleries.my_galleries.succesfully_deleted":"Gallery has been successfully removed","pages.galleries.my_galleries.draft_succesfully_deleted":"Draft has been successfully removed","pages.galleries.my_galleries.successfully_created":"Gallery has been successfully created","pages.galleries.my_galleries.successfully_updated":"Gallery has been successfully updated","pages.galleries.my_galleries.new_gallery_no_nfts":"Creating a Gallery requires you to own an NFT.","pages.galleries.my_galleries.delete_modal.title":"Delete Draft","pages.galleries.my_galleries.delete_modal.text":"Are you sure you want to delete the draft? Everything you've done will be deleted and you won't be able to get it back.","pages.galleries.my_galleries.nfts_no_longer_owned":"NFTs no longer owned by this wallet have been removed from the draft”","pages.galleries.copy_gallery_link":"Copy Gallery Link","pages.galleries.my_nfts":"My NFTs","pages.galleries.value":"Value","pages.galleries.floor_price":"Floor Price","pages.galleries.nfts":"NFTs","pages.galleries.collections":"Collections","pages.galleries.galleries_count_simple":"{0} galleries|{1} gallery|[2,*] galleries","pages.galleries.galleries_count":"{0} {{count}} Galleries|{1} {{count}} Gallery|[2,*] {{count}} Galleries","pages.galleries.collections_count_simple":"{0} collections|{1} collection|[2,*] collections","pages.galleries.collections_count":"{0} {{count}} Collections|{1} {{count}} Collection|[2,*] {{count}} Collections","pages.galleries.nfts_count_simple":"{0} NFTs|{1} NFT|[2,*] NFTs","pages.galleries.nfts_count":"{0} {{count}} NFTs|{1} {{count}} NFT|[2,*] {{count}} NFTs","pages.galleries.users_count_simple":"{0} users|{1} user|[2,*] users","pages.galleries.users_count":"{0} {{count}} Users|{1} {{count}} User|[2,*] {{count}} Users","pages.galleries.featuring":"Featuring","pages.galleries.curated_by":"Curated by","pages.galleries.worth_about":"Worth About","pages.galleries.valued_at":"valued at","pages.galleries.from":"From","pages.galleries.most_popular_galleries":"Most Popular Galleries","pages.galleries.newest_galleries":"Newest Galleries","pages.galleries.most_valuable_galleries":"Most Valuable Galleries","pages.galleries.most_popular":"Most Popular","pages.galleries.newest":"Newest","pages.galleries.most_valuable":"Most Valuable","pages.galleries.create.search_by_nfts":"Search by NFTs","pages.galleries.create.input_placeholder":"Enter gallery name","pages.galleries.create.title_too_long":"Gallery name must not exceed {{max}} characters.","pages.galleries.create.already_selected_nft":"NFT already exists in this gallery","pages.galleries.create.nft_missing_image":"Only NFTs with images can be added to galleries","pages.galleries.create.nft_gallery_limit":"You can only add 16 NFTs per gallery","pages.galleries.create.gallery_cover":"Gallery Cover","pages.galleries.create.gallery_cover_description":"The cover is used for the card on the gallery list page. While the cover is not a requirement it will allow you to add personality and stand out from the crowd.","pages.galleries.create.gallery_cover_information":"Image dimensions must be at least 287px x 190px, with a max size of 2 MB (JPG, PNG or GIF)","pages.galleries.create.no_results":"We could not find anything matching your search criteria, please try again!","pages.galleries.create.templates.cover":"Cover","pages.galleries.create.templates.template":"Template","pages.galleries.create.templates.select":"Select Gallery Template","pages.galleries.create.templates.basic":"Basic Gallery","pages.galleries.create.templates.coming_soon":"More Coming Soon","pages.galleries.create.load_more_collections_one":"Load {{count}} More Collection","pages.galleries.create.load_more_collections_other":"Load {{count}} More Collections","pages.galleries.create.load_more_nfts":"Load More NFTs","pages.galleries.create.can_purchase":"You can purchase NFTs with these top NFT Marketplaces:","pages.galleries.create.must_own_one_nft":"You must own at least one (1) NFT in order to create a gallery.","pages.galleries.create.back_to_galleries":"Back to Galleries","pages.galleries.create.draft_saved":"Draft Saved","pages.galleries.create.saving_to_draft":"Saving to draft","pages.galleries.create.drafts_limit_modal_title":"Draft Gallery Limit","pages.galleries.create.drafts_limit_modal_message":"You’ve hit your limit for draft galleries. While you can still make new galleries and publish them, they won’t be saved as drafts. To Free up space, you can either delete existing drafts or publish them.","pages.galleries.create.drafts_limit_modal_cancel":"Go to Drafts","pages.galleries.delete_modal.title":"Delete Gallery","pages.galleries.delete_modal.confirmation_text":"Are you sure you want to delete the gallery? Deleting a Gallery is permanent, all associated views and likes will be lost.","pages.galleries.consists_of_collections":"{0} This gallery consists of {{count}} collections|{1} This gallery consists of {{count}} collection|[2,*] This gallery consists of {{count}} collections","pages.galleries.guest_banner.title":"Craft the ultimate","pages.galleries.guest_banner.subtitle":"Pick your favorites, curate your gallery, & share it with the world.","pages.profile.title":"Profile","pages.token_panel.balance_tooltip":"Total percentage of the portfolio held in this token","pages.token_panel.insufficient_funds":"Insufficient Balance","pages.token_panel.error":"Dashbrd has failed to load token information. Please try again later.","pages.token_panel.failed_to_retrieve_transactions":"We were unable to fetch your transactions.","pages.token_panel.tabs.transaction_history":"Transaction History","pages.token_panel.tabs.history":"History","pages.token_panel.tabs.market_data":"Market Data","pages.token_panel.details.current_price":"Current Price","pages.token_panel.details.title":"Token Details","pages.token_panel.details.market_cap":"Market Cap","pages.token_panel.details.volume":"Daily Volume","pages.token_panel.details.supply":"Minted Supply","pages.token_panel.details.ath":"All-Time High","pages.token_panel.details.atl":"All-Time Low","pages.token_panel.chart.failed":"Dashbrd has failed to load chart information. Please try again later.","pages.transaction_details_panel.title":"Transaction Details","pages.transaction_details_panel.details.blockchain":"Blockchain","pages.transaction_details_panel.details.timestamp":"Timestamp","pages.transaction_details_panel.details.transaction_hash":"Transaction Hash","pages.transaction_details_panel.details.transaction_fee":"Transaction Fee","pages.transaction_details_panel.details.gas_price":"Gas Price","pages.transaction_details_panel.details.gas_used":"Gas Used","pages.transaction_details_panel.details.nonce":"Nonce","pages.send_receive_panel.send.labels.token_and_amount":"Token and Amount","pages.send_receive_panel.send.labels.destination_address":"Destination Address","pages.send_receive_panel.send.labels.projected_fee":"Projected Fee","pages.send_receive_panel.send.placeholders.enter_amount":"Enter Amount","pages.send_receive_panel.send.placeholders.insert_recipient_address":"Insert Recipient Address","pages.send_receive_panel.send.placeholders.projected_fee":"Projected Fee","pages.send_receive_panel.send.errors.amount":"Insufficient Funds: You do not have enough to cover the amount + fee.","pages.send_receive_panel.send.errors.destination":"Destination address is not correct. Check and input again.","pages.send_receive_panel.send.hints.token_price":"Token Price","pages.send_receive_panel.send.fees.Fast":"Fast","pages.send_receive_panel.send.fees.Avg":"Avg","pages.send_receive_panel.send.fees.Slow":"Slow","pages.send_receive_panel.send.search_dropdown.placeholder":"Search token","pages.send_receive_panel.send.search_dropdown.no_results":"No Results","pages.send_receive_panel.send.search_dropdown.error":"Error occurred while searching tokens.","pages.send_receive_panel.send.transaction_time":"Transaction Time: ~{{ time }} minutes","pages.send_receive_panel.send.from":"From","pages.send_receive_panel.send.to":"To","pages.send_receive_panel.send.amount":"Amount","pages.send_receive_panel.send.fee":"Fee","pages.send_receive_panel.send.total_amount":"Total Amount","pages.send_receive_panel.send.waiting_message":"Review and verify the information on your MetaMask. Sign to send the transaction.","pages.send_receive_panel.send.waiting_spinner_text":"Waiting for confirmation...","pages.send_receive_panel.send.failed_message":"It looks like something went wrong while sending your transaction. Press 'Retry' to make another attempt.","pages.send_receive_panel.receive.alert":"Send only Polygon or Ethereum Network compatible tokens to this address or you could permanently lose your funds!","pages.settings.title":"Settings","pages.settings.sidebar.general":"General","pages.settings.sidebar.notifications":"Notifications","pages.settings.sidebar.session_history":"Sessions History","pages.settings.general.title":"Settings","pages.settings.general.subtitle":"Customize your App Experience","pages.settings.general.currency":"Currency","pages.settings.general.currency_subtitle":"Select your default currency which will be used throughout the app.","pages.settings.general.time_date":"Time & Date","pages.settings.general.time_date_subtitle":"Select how you want time and date be shown inside app.","pages.settings.general.date_format":"Date Format","pages.settings.general.time_format":"Time Format","pages.settings.general.timezone":"Timezone","pages.settings.general.set_defaults":"Set Defaults","pages.settings.general.set_defaults_content":"Reverting to the default settings will remove any customizations previously made. Are you sure?","pages.settings.general.save":"Save Settings","pages.settings.general.saved":"Your settings have been successfully saved","pages.wallet.title":"Wallet","pages.privacy_policy.title":"Privacy Policy","pages.terms_of_service.title":"Terms of Service","pagination.previous":"« Previous","pagination.next":"Next »","passwords.reset":"Your password has been reset!","passwords.sent":"We have emailed your password reset link!","passwords.throttled":"Please wait before retrying.","passwords.token":"This password reset token is invalid.","passwords.user":"We can't find a user with that email address.","urls.landing":"https://dashbrd.com","urls.cookie_policy":"https://dashbrd.com/cookie-policy","urls.privacy_policy":"https://dashbrd.com/privacy-policy","urls.terms_of_service":"https://dashbrd.com/terms-of-service","urls.twitter":"https://x.com/DashbrdApp","urls.discord":"https://discord.gg/MJyWKkCJ5k","urls.github":"https://github.com/ArdentHQ/dashbrd","urls.coingecko":"https://www.coingecko.com","urls.etherscan":"https://etherscan.io","urls.polygonscan":"https://polygonscan.com","urls.alchemy":"https://www.alchemy.com","urls.moralis":"https://moralis.io","urls.mnemonic":"https://www.mnemonichq.com","urls.opensea":"https://opensea.io/","urls.explorers.etherscan.token_transactions":"https://etherscan.io/token/{{token}}?a={{address}}","urls.explorers.etherscan.addresses":"https://etherscan.io/address/{{address}}","urls.explorers.etherscan.transactions":"https://etherscan.io/tx/{{id}}","urls.explorers.etherscan.nft":"https://etherscan.io/nft/{{address}}/{{nftId}}","urls.explorers.polygonscan.token_transactions":"https://polygonscan.com/token/{{token}}?a={{address}}","urls.explorers.polygonscan.addresses":"https://polygonscan.com/address/{{address}}","urls.explorers.polygonscan.transactions":"https://polygonscan.com/tx/{{id}}","urls.explorers.polygonscan.nft":"https://polygonscan.com/nft/{{address}}/{{nftId}}","urls.explorers.mumbai.token_transactions":"https://mumbai.polygonscan.com/token/{{token}}?a={{address}}","urls.explorers.mumbai.addresses":"https://mumbai.polygonscan.com/address/{{address}}","urls.explorers.mumbai.transactions":"https://mumbai.polygonscan.com/tx/{{id}}","urls.explorers.mumbai.nft":"https://mumbai.polygonscan.com/nft/{{address}}/{{nftId}}","urls.explorers.goerli.token_transactions":"https://goerli.etherscan.io/token/{{token}}?a={{address}}","urls.explorers.goerli.addresses":"https://goerli.etherscan.io/address/{{address}}","urls.explorers.goerli.transactions":"https://goerli.etherscan.io/tx/{{id}}","urls.explorers.goerli.nft":"https://goerli.etherscan.io/nft/{{address}}/{{nftId}}","urls.marketplaces.opensea.collection":"https://opensea.io/assets/{{network}}/{{address}}","urls.marketplaces.opensea.nft":"https://opensea.io/assets/{{network}}/{{address}}/{{nftId}}","urls.marketplaces.rarible.collection":"https://rarible.com/collection/{{address}}/items","urls.marketplaces.rarible.nft":"https://rarible.com/token/{{address}}:{{nftId}}","urls.marketplaces.blur.collection":"https://blur.io/collection/{{address}}","urls.marketplaces.blur.nft":"https://blur.io/asset/{{address}}/{{nftId}}","urls.marketplaces.looksrare.collection":"https://looksrare.org/collections/{{address}}","urls.marketplaces.looksrare.nft":"https://looksrare.org/collections/{{address}}/{{nftId}}","validation.accepted":"The {{attribute}} must be accepted.","validation.accepted_if":"The {{attribute}} must be accepted when {{other}} is {{value}}.","validation.active_url":"The {{attribute}} is not a valid URL.","validation.after":"The {{attribute}} must be a date after {{date}}.","validation.after_or_equal":"The {{attribute}} must be a date after or equal to {{date}}.","validation.alpha":"The {{attribute}} must only contain letters.","validation.alpha_dash":"The {{attribute}} must only contain letters, numbers, dashes and underscores.","validation.alpha_num":"The {{attribute}} must only contain letters and numbers.","validation.array":"The {{attribute}} must be an array.","validation.ascii":"The {{attribute}} must only contain single-byte alphanumeric characters and symbols.","validation.before":"The {{attribute}} must be a date before {{date}}.","validation.before_or_equal":"The {{attribute}} must be a date before or equal to {{date}}.","validation.between.array":"The {{attribute}} must have between {{min}} and {{max}} items.","validation.between.file":"The {{attribute}} must be between {{min}} and {{max}} kilobytes.","validation.between.numeric":"The {{attribute}} must be between {{min}} and {{max}}.","validation.between.string":"The {{attribute}} must be between {{min}} and {{max}} characters.","validation.boolean":"The {{attribute}} field must be true or false.","validation.confirmed":"The {{attribute}} confirmation does not match.","validation.current_password":"The password is incorrect.","validation.date":"The {{attribute}} is not a valid date.","validation.date_equals":"The {{attribute}} must be a date equal to {{date}}.","validation.date_format":"The {{attribute}} does not match the format {{format}}.","validation.decimal":"The {{attribute}} must have {{decimal}} decimal places.","validation.declined":"The {{attribute}} must be declined.","validation.declined_if":"The {{attribute}} must be declined when {{other}} is {{value}}.","validation.different":"The {{attribute}} and {{other}} must be different.","validation.digits":"The {{attribute}} must be {{digits}} digits.","validation.digits_between":"The {{attribute}} must be between {{min}} and {{max}} digits.","validation.dimensions":"The {{attribute}} has invalid image dimensions.","validation.distinct":"The {{attribute}} field has a duplicate value.","validation.doesnt_end_with":"The {{attribute}} may not end with one of the following: {{values}}.","validation.doesnt_start_with":"The {{attribute}} may not start with one of the following: {{values}}.","validation.email":"The {{attribute}} must be a valid email address.","validation.ends_with":"The {{attribute}} must end with one of the following: {{values}}.","validation.enum":"The selected {{attribute}} is invalid.","validation.exists":"The selected {{attribute}} is invalid.","validation.file":"The {{attribute}} must be a file.","validation.filled":"The {{attribute}} field must have a value.","validation.gt.array":"The {{attribute}} must have more than {{value}} items.","validation.gt.file":"The {{attribute}} must be greater than {{value}} kilobytes.","validation.gt.numeric":"The {{attribute}} must be greater than {{value}}.","validation.gt.string":"The {{attribute}} must be greater than {{value}} characters.","validation.gte.array":"The {{attribute}} must have {{value}} items or more.","validation.gte.file":"The {{attribute}} must be greater than or equal to {{value}} kilobytes.","validation.gte.numeric":"The {{attribute}} must be greater than or equal to {{value}}.","validation.gte.string":"The {{attribute}} must be greater than or equal to {{value}} characters.","validation.image":"The {{attribute}} must be an image.","validation.in":"The selected {{attribute}} is invalid.","validation.in_array":"The {{attribute}} field does not exist in {{other}}.","validation.integer":"The {{attribute}} must be an integer.","validation.ip":"The {{attribute}} must be a valid IP address.","validation.ipv4":"The {{attribute}} must be a valid IPv4 address.","validation.ipv6":"The {{attribute}} must be a valid IPv6 address.","validation.json":"The {{attribute}} must be a valid JSON string.","validation.lowercase":"The {{attribute}} must be lowercase.","validation.lt.array":"The {{attribute}} must have less than {{value}} items.","validation.lt.file":"The {{attribute}} must be less than {{value}} kilobytes.","validation.lt.numeric":"The {{attribute}} must be less than {{value}}.","validation.lt.string":"The {{attribute}} must be less than {{value}} characters.","validation.lte.array":"The {{attribute}} must not have more than {{value}} items.","validation.lte.file":"The {{attribute}} must be less than or equal to {{value}} kilobytes.","validation.lte.numeric":"The {{attribute}} must be less than or equal to {{value}}.","validation.lte.string":"The {{attribute}} must be less than or equal to {{value}} characters.","validation.mac_address":"The {{attribute}} must be a valid MAC address.","validation.max.array":"The {{attribute}} must not have more than {{max}} items.","validation.max.file":"The {{attribute}} must not be greater than {{max}} kilobytes.","validation.max.numeric":"The {{attribute}} must not be greater than {{max}}.","validation.max.string":"The {{attribute}} must not be greater than {{max}} characters.","validation.max_digits":"The {{attribute}} must not have more than {{max}} digits.","validation.mimes":"The {{attribute}} must be a file of type: {{values}}.","validation.mimetypes":"The {{attribute}} must be a file of type: {{values}}.","validation.min.array":"The {{attribute}} must have at least {{min}} items.","validation.min.file":"The {{attribute}} must be at least {{min}} kilobytes.","validation.min.numeric":"The {{attribute}} must be at least {{min}}.","validation.min.string":"The {{attribute}} must be at least {{min}} characters.","validation.min_digits":"The {{attribute}} must have at least {{min}} digits.","validation.missing":"The {{attribute}} field must be missing.","validation.missing_if":"The {{attribute}} field must be missing when {{other}} is {{value}}.","validation.missing_unless":"The {{attribute}} field must be missing unless {{other}} is {{value}}.","validation.missing_with":"The {{attribute}} field must be missing when {{values}} is present.","validation.missing_with_all":"The {{attribute}} field must be missing when {{values}} are present.","validation.multiple_of":"The {{attribute}} must be a multiple of {{value}}.","validation.not_in":"The selected {{attribute}} is invalid.","validation.not_regex":"The {{attribute}} format is invalid.","validation.numeric":"The {{attribute}} must be a number.","validation.password.letters":"The {{attribute}} must contain at least one letter.","validation.password.mixed":"The {{attribute}} must contain at least one uppercase and one lowercase letter.","validation.password.numbers":"The {{attribute}} must contain at least one number.","validation.password.symbols":"The {{attribute}} must contain at least one symbol.","validation.password.uncompromised":"The given {{attribute}} has appeared in a data leak. Please choose a different {{attribute}}.","validation.present":"The {{attribute}} field must be present.","validation.prohibited":"The {{attribute}} field is prohibited.","validation.prohibited_if":"The {{attribute}} field is prohibited when {{other}} is {{value}}.","validation.prohibited_unless":"The {{attribute}} field is prohibited unless {{other}} is in {{values}}.","validation.prohibits":"The {{attribute}} field prohibits {{other}} from being present.","validation.regex":"The {{attribute}} format is invalid.","validation.required":"The {{attribute}} field is required.","validation.required_array_keys":"The {{attribute}} field must contain entries for: {{values}}.","validation.required_if":"The {{attribute}} field is required when {{other}} is {{value}}.","validation.required_if_accepted":"The {{attribute}} field is required when {{other}} is accepted.","validation.required_unless":"The {{attribute}} field is required unless {{other}} is in {{values}}.","validation.required_with":"The {{attribute}} field is required when {{values}} is present.","validation.required_with_all":"The {{attribute}} field is required when {{values}} are present.","validation.required_without":"The {{attribute}} field is required when {{values}} is not present.","validation.required_without_all":"The {{attribute}} field is required when none of {{values}} are present.","validation.same":"The {{attribute}} and {{other}} must match.","validation.size.array":"The {{attribute}} must contain {{size}} items.","validation.size.file":"The {{attribute}} must be {{size}} kilobytes.","validation.size.numeric":"The {{attribute}} must be {{size}}.","validation.size.string":"The {{attribute}} must be {{size}} characters.","validation.starts_with":"The {{attribute}} must start with one of the following: {{values}}.","validation.string":"The {{attribute}} must be a string.","validation.timezone":"The {{attribute}} must be a valid timezone.","validation.unique":"The {{attribute}} has already been taken.","validation.uploaded":"The {{attribute}} failed to upload.","validation.uppercase":"The {{attribute}} must be uppercase.","validation.url":"The {{attribute}} must be a valid URL.","validation.ulid":"The {{attribute}} must be a valid ULID.","validation.uuid":"The {{attribute}} must be a valid UUID.","validation.custom.attribute-name.rule-name":"custom-message","validation.unsupported_currency_code":"The currency code you provided is invalid or not supported.","validation.unsupported_period":"The period you provided is invalid or not supported.","validation.unsupported_token_symbol":"The token symbol you provided is invalid or not supported.","validation.gallery_title_required":"Gallery name is required.","validation.gallery_title_max_characters":"The gallery name should not exceed 50 characters.","validation.gallery_title_invalid":"The gallery name is invalid.","validation.nfts_required":"Please add at least one NFT.","validation.nfts_max_size":"Galleries can contain no more than {{limit}} NFTs","validation.invalid_nfts":"The NFT in position {{position}} is invalid, please select another one.","validation.invalid_cover":"You have selected an invalid cover image, please try another one."} \ No newline at end of file diff --git a/resources/js/Pages/Collections/Index.tsx b/resources/js/Pages/Collections/Index.tsx index 2e3e5750b..8d79d4c85 100644 --- a/resources/js/Pages/Collections/Index.tsx +++ b/resources/js/Pages/Collections/Index.tsx @@ -1,12 +1,52 @@ +import { type PageProps } from "@inertiajs/core"; import { Head, usePage } from "@inertiajs/react"; +import { useTranslation } from "react-i18next"; +import { PopularCollectionsTable } from "@/Components/Collections/PopularCollectionsTable"; +import { Heading } from "@/Components/Heading"; +import { type PaginationData } from "@/Components/Pagination/Pagination.contracts"; import { DefaultLayout } from "@/Layouts/DefaultLayout"; -const CollectionsIndex = ({ title }: { title: string }): JSX.Element => { +interface CollectionsIndexProperties extends PageProps { + title: string; + collections: PaginationData; +} + +const CollectionsIndex = ({ + title, + collections: { data: collections }, + auth, +}: CollectionsIndexProperties): JSX.Element => { + const { t } = useTranslation(); + const { props } = usePage(); + const collectionsColumn1: App.Data.Collections.PopularCollectionData[] = collections.slice(0, 6); + + const collectionsColumn2: App.Data.Collections.PopularCollectionData[] = collections.slice(6, 12); + return ( + +
    + {t("pages.collections.popular_collections")} + +
    +
    + +
    + +
    + +
    +
    +
    ); }; diff --git a/resources/js/Tests/Factories/Collections/PopularCollectionFactory.ts b/resources/js/Tests/Factories/Collections/PopularCollectionFactory.ts new file mode 100644 index 000000000..103069e08 --- /dev/null +++ b/resources/js/Tests/Factories/Collections/PopularCollectionFactory.ts @@ -0,0 +1,55 @@ +import { faker } from "@faker-js/faker"; +import ModelFactory from "@/Tests/Factories/ModelFactory"; + +export default class PopularCollectionFactory extends ModelFactory { + protected factory(): App.Data.Collections.PopularCollectionData { + return { + id: faker.datatype.number({ min: 1, max: 100000 }), + name: faker.lorem.words(), + slug: faker.lorem.slug(), + chainId: this.chainId(), + floorPrice: this.optional(faker.finance.amount(1 * 1e18, 25 * 1e18, 0)), + floorPriceCurrency: this.optional(this.cryptoCurrency()), + floorPriceDecimals: this.optional(18), + volume: this.optional(faker.finance.amount(1 * 1e18, 25 * 1e18, 0)), + volumeFiat: this.optional(Number(faker.finance.amount(1, 1500, 2))), + volumeCurrency: this.optional(this.cryptoCurrency()), + volumeDecimals: this.optional(18), + image: this.optional(faker.image.avatar(), 0.9), + }; + } + + withPrices(): this { + return this.state(() => ({ + floorPrice: faker.finance.amount(1 * 1e18, 25 * 1e18, 0), + floorPriceCurrency: this.cryptoCurrency(), + floorPriceDecimals: 18, + })); + } + + withoutPrices(): this { + return this.state(() => ({ + floorPrice: null, + floorPriceCurrency: null, + floorPriceDecimals: null, + })); + } + + withVolume(): this { + return this.state(() => ({ + volume: faker.finance.amount(1 * 1e18, 25 * 1e18, 0), + volumeFiat: Number(faker.finance.amount(1, 1500, 2)), + volumeCurrency: this.cryptoCurrency(), + volumeDecimals: 18, + })); + } + + withoutVolume(): this { + return this.state(() => ({ + volume: null, + volumeFiat: null, + volumeCurrency: null, + volumeDecimals: null, + })); + } +} diff --git a/resources/types/generated.d.ts b/resources/types/generated.d.ts index 68518472d..28440828c 100644 --- a/resources/types/generated.d.ts +++ b/resources/types/generated.d.ts @@ -204,6 +204,20 @@ declare namespace App.Data.Collections { displayType: string; nftsCount: number; }; + export type PopularCollectionData = { + id: number; + name: string; + slug: string; + chainId: App.Enums.Chain; + floorPrice: string | null; + floorPriceCurrency: string | null; + floorPriceDecimals: number | null; + volume: string | null; + volumeFiat: number | null; + volumeCurrency: string | null; + volumeDecimals: number | null; + image: string | null; + }; export type SimpleNftData = { id: number; tokenNumber: string; From 994306db34bd76627fd249062bfc37469d659c46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josip=20Crnkovi=C4=87?= Date: Fri, 24 Nov 2023 09:58:25 +0100 Subject: [PATCH 004/145] feat: add top/floor price tabs for filtering (#490) --- app/Http/Controllers/CollectionController.php | 14 +++-- lang/en/common.php | 1 + resources/js/I18n/Locales/en.json | 2 +- .../PopularCollectionsSorting.tsx | 59 +++++++++++++++++++ .../PopularCollectionsSorting/index.tsx | 1 + resources/js/Pages/Collections/Index.tsx | 7 +++ 6 files changed, 77 insertions(+), 7 deletions(-) create mode 100644 resources/js/Pages/Collections/Components/PopularCollectionsSorting/PopularCollectionsSorting.tsx create mode 100644 resources/js/Pages/Collections/Components/PopularCollectionsSorting/index.tsx diff --git a/app/Http/Controllers/CollectionController.php b/app/Http/Controllers/CollectionController.php index 1c88314bf..bcf33aab1 100644 --- a/app/Http/Controllers/CollectionController.php +++ b/app/Http/Controllers/CollectionController.php @@ -45,14 +45,16 @@ public function index(Request $request): Response|JsonResponse|RedirectResponse /** @var LengthAwarePaginator $collections */ $collections = $collectionQuery - ->orderByFloorPrice('desc', $currency) - ->with([ - 'network', - 'floorPriceToken', - ]) - ->simplePaginate(12); + ->when($request->query('sort') !== 'floor-price', fn ($q) => $q->orderBy('volume', 'desc')) // TODO: order by top... + ->orderByFloorPrice('desc', $currency) + ->with([ + 'network', + 'floorPriceToken', + ]) + ->simplePaginate(12); return Inertia::render('Collections/Index', [ + 'activeSort' => $request->query('sort') === 'floor-price' ? 'floor-price' : 'top', 'title' => trans('metatags.collections.title'), 'collections' => PopularCollectionData::collection( $collections->through(fn ($collection) => PopularCollectionData::fromModel($collection, $currency)) diff --git a/lang/en/common.php b/lang/en/common.php index fb527a5f8..48b7ba148 100644 --- a/lang/en/common.php +++ b/lang/en/common.php @@ -161,4 +161,5 @@ 'draft' => 'Draft', 'delete_draft' => 'Delete Draft', 'share_on' => 'Share on {{platform}}', + 'top' => 'Top', ]; diff --git a/resources/js/I18n/Locales/en.json b/resources/js/I18n/Locales/en.json index da8cdf834..f17ae3622 100644 --- a/resources/js/I18n/Locales/en.json +++ b/resources/js/I18n/Locales/en.json @@ -1 +1 @@ -{"auth.welcome":"Welcome to Dashbrd","auth.logged_in":"You're logged in!","auth.log_out":"Log out","auth.failed":"These credentials do not match our records.","auth.session_timeout":"Your session has timed out. Please refresh the page and try connecting your account again.","auth.session_timeout_modal":"Seems like your session has timed out. Please connnect your wallet again.","auth.password":"The provided password is incorrect.","auth.throttle":"Too many login attempts. Please try again in {{seconds}} seconds.","auth.wallet.connecting":"Connecting …","auth.wallet.waiting_for_signature":"Waiting for Signature …","auth.wallet.switching_wallet":"Switching Wallet …","auth.wallet.connect":"Connect Wallet","auth.wallet.connect_long":"Connect Your Wallet to Get Started","auth.wallet.sign_subtitle":"Connect Your Wallet to Continue","auth.wallet.disconnect":"Disconnect Wallet","auth.wallet.install":"Install MetaMask","auth.wallet.install_long":"Install MetaMask to Get Started","auth.wallet.sign":"Sign Message","auth.wallet.sign_message":"Welcome to Dashbrd. In order to login, sign this message with your wallet. It doesn't cost you anything!\n\nSigning ID (you can ignore this): {{nonce}}","auth.wallet.connect_subtitle":"Click on the MetaMask icon in your browser to confirm the action and connect your wallet.","auth.wallet.requires_signature":"In order to prevent impersonation, we require a signature to perform this action. This signature is only a signed message and does not give any access to your wallet.","auth.errors.metamask.no_account":"No account found. Please connect your wallet and try again.","auth.errors.metamask.generic":"Connection attempt error. Please retry and follow the steps to connect your wallet.","auth.errors.metamask.invalid_network":"Please switch to Polygon or Ethereum Mainnet in your MetaMask plugin to connect to Dashbrd.","auth.errors.metamask.provider_missing":"You don't have MetaMask installed in your browser. Please install and try again.","auth.errors.metamask.user_rejected":"It looks like you cancelled signing of the authentication message. Please try again.","auth.errors.metamask.provider_not_set":"Ethereum provider is not set","auth.validation.wallet_login_failed":"There was a problem trying to verify your signature. Please try again.","auth.validation.invalid_address":"Your wallet address is invalid. Please try again.","auth.validation.invalid_signature":"Signature is invalid. Please try again.","auth.validation.invalid_network":"Please switch to Polygon or Ethereum Mainnet in your MetaMask plugin to connect to Dashbrd.","common.author":"Author","common.add":"Add","common.amount":"Amount","common.balance":"Balance","common.cancel":"Cancel","common.delete":"Delete","common.edit":"Edit","common.confirm":"Confirm","common.connect":"Connect","common.continue":"Continue","common.done":"Done","common.filter":"Filter","common.items":"Items","common.receive":"Receive","common.received":"Received","common.retry":"Retry","common.records":"Records","common.save":"Save","common.send":"Send","common.sent":"Sent","common.show":"Show","common.searching":"Searching...","common.other":"Other","common.owned":"Owned","common.token":"Token","common.tokens":"Tokens","common.wallet":"Wallet","common.pending":"Pending","common.publish":"Publish","common.published":"Published","common.empty":"Empty","common.your_address":"Your Address","common.warning":"Warning","common.my_address":"My Address","common.my_wallet":"My Wallet","common.my_collections":"My Collections","common.my_balance":"My Balance","common.na":"N/A","common.simple_plural_without_data":"One comment|Many comments","common.simple_plural_with_data":"{{count}} comment|{{count}} comments","common.advanced_plural_without_data":"{0} no comments yet|{1} 1 comment|[2,*] Many comments","common.advanced_plural_with_data":"{0} no comments yet|{1} 1 comment|[2,*] {{count}} comments","common.copy_clipboard":"Copy to Clipboard","common.copy":"Copy","common.download":"Download","common.zoom":"Zoom","common.my_collection":"My Collection","common.max":"Max","common.chain":"Chain","common.copied":"Copied!","common.coming_soon":"Coming Soon","common.more_details":"More Details","common.close":"Close","common.close_toast":"Close toast","common.loading":"Loading","common.price":"Price","common.articles":"Articles","common.most_popular":"Most Popular","common.market_cap":"Market Cap","common.volume":"Volume","common.volume_frequency":"Volume {{frequency}}","common.value":"Value","common.last_n_days":"Last {{count}} Days","common.details":"Details","common.view_all":"View All","common.view_more_on_polygonscan":"View More on Polygonscan","common.view_more_on_etherscan":"View More on Etherscan","common.view_nft_on_etherscan":"View NFT on Etherscan","common.view_nft_on_polygonscan":"View NFT on Polygonscan","common.view_nft_on_goerli_tesnet":"View NFT on Goerli Testnet Explorer","common.view_nft_on_mumbai_tesnet":"View NFT on Mumbai Testnet Explorer","common.polygonscan":"Polygonscan","common.etherscan":"Etherscan","common.featured":"Featured","common.floor_price":"Floor Price","common.floor":"Floor","common.supply":"Supply","common.owners":"Owners","common.created":"Created","common.nft":"NFT","common.collection":"Collection","common.collections":"Collections","common.gallery":"Gallery","common.basic_gallery":"Basic Gallery","common.gallery_name":"Gallery Name","common.create_gallery":"Create Gallery","common.external_link":"External Link","common.follow_link":"Follow Link","common.cover":"Cover","common.template":"Template","common.page":"Page","common.polygon":"Polygon","common.ethereum":"Ethereum","common.mumbai":"Mumbai","common.goerli":"Goerli","common.of":"of","common.pagination_input_placeholder":"Enter the page number","common.pagination_input_placeholder_mobile":"Page number","common.nft_count":"{0} {{count}} NFTs|{1} {{count}} NFT|[2,*] {{count}} NFTs","common.nft_gallery":"NFT Gallery","common.unable_to_retrieve_image":"Unable to retrieve your NFT image at this time","common.optional":"Optional","common.selected":"Selected","common.select":"Select","common.preview":"Preview","common.image_size_error":"Image size must not exceed 2MB","common.image_dimensions_error":"Image dimensions must exceed 287px x 190px","common.write_to_confirm":"Write {{word}} to confirm","common.n_hours":"{0} {{count}} hour|{1} {{count}} hour|[2,*] {{count}} hours","common.n_minutes":"{0} {{count}} minute|{1} {{count}} minute|[2,*] {{count}} minutes","common.report":"Report","common.n_nfts":"{0}NFTs|{1}NFT|[2,*]NFTs","common.n_collections":"{0}collections|{1}collection|[2,*]collections","common.back":"Back","common.back_to":"Back to","common.name":"Name","common.type":"Type","common.from":"From","common.to":"To","common.sale_price":"Sale Price","common.recent_activity":"Recent Activity","common.time":"Time","common.datetime.few_seconds_ago":"A few seconds ago","common.datetime.minutes_ago":"{0} Less than a minute ago|{1} A minute ago|[2,*] {{count}} minutes ago","common.datetime.hours_ago":"{0} Less than an hour ago|{1} An hour ago|[2,*] {{count}} hours ago","common.datetime.days_ago":"{0} Less than a day ago|{1} A day ago|[2,*] {{count}} days ago","common.datetime.weeks_ago":"{0} Less than a week ago|{1} A week ago|[2,*] {{count}} weeks ago","common.datetime.months_ago":"{0} Less than a month ago|{1} A month ago|[2,*] {{count}} months ago","common.datetime.years_ago":"{0} Less than a year ago|{1} A year ago|[2,*] {{count}} years ago","common.no_traits_found":"No traits found.","common.empty_transactions":"You don't have any transactions yet. Once transactions have been made, they will show up here.","common.error":"Error","common.refresh":"Refresh","common.refresh_metadata":"Refresh Metadata","common.refreshing_metadata":"Refreshing Metadata... Please check back later.","common.refreshing_activity":"Refreshing Activity... Please check back later.","common.pending_confirmation":"Pending Confirmation","common.confirmed_transaction":"Confirmed Transaction","common.transaction_error":"Transaction Error","common.transaction_error_description_first_part":"Your transaction encountered an error. View this transaction on","common.transaction_error_description_second_part":"for more details.","common.home":"Home","common.contact":"Contact","common.menu":"Menu","common.website":"Website","common.twitter":"Twitter","common.discord":"Discord","common.facebook":"Facebook","common.reddit":"Reddit","common.x":"X","common.sort":"Sort","common.drafts":"Drafts","common.draft":"Draft","common.delete_draft":"Delete Draft","common.share_on":"Share on {{platform}}","footer.copyright":"{{year}} © Dashbrd. All rights reserved.","footer.all_rights_reserved":"All rights reserved","footer.privacy_policy":"Privacy Policy","footer.terms_of_service":"Terms of Service","footer.powered_by":"Powered by","format.fiat":"{{ value, currency }}","format.number":"{{ value, number }}","metatags.home.title":"Dashbrd | Web3 Portfolio Management Made Simple","metatags.home.description":"Simplify your Web3 journey with Dashbrd. Manage your portfolio of tokens, NFTs, and other digital collectibles across the Ethereum and Polygon blockchains.","metatags.home.image":"/images/meta/home.png","metatags.error.title":"Error {{code}} | Dashbrd","metatags.wallet.title":"My Wallet | Dashbrd","metatags.galleries.title":"Top NFT Galleries | Dashbrd","metatags.galleries.image":"/images/meta/nft-galleries.png","metatags.galleries.description":"Explore user published NFT galleries to find custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.most_popular.title":"Most Popular Galleries | Dashbrd","metatags.galleries.most_popular.image":"/images/meta/most-popular-nft-galleries.png","metatags.galleries.most_popular.description":"Explore and discover Most Popular NFT Galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.newest.title":"Newest Galleries | Dashbrd","metatags.galleries.newest.image":"/images/meta/newest-nft-galleries.png","metatags.galleries.newest.description":"Explore and discover most recent NFT galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More","metatags.galleries.most_valuable.title":"Most Valuable Galleries | Dashbrd","metatags.galleries.most_valuable.image":"/images/meta/most-valuable-nft-galleries.png","metatags.galleries.most_valuable.description":"Explore and discover Most Valuable NFT Galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.view.title":"{{name}} | Dashbrd","metatags.galleries.view.description":"{{name}} | A Curated NFT Gallery at Dashbrd","metatags.galleries.view.image":"/images/meta/nft-gallery.png","metatags.my_galleries.title":"My Galleries | Dashbrd","metatags.my_galleries.title_draft":"My Draft Galleries | Dashbrd","metatags.my_galleries.create.title":"Create Gallery | Dashbrd","metatags.my_galleries.edit.title":"Edit {{name}} | Dashbrd","metatags.collections.title":"Collections | Dashbrd","metatags.collections.view.title":"{{name}} Collection | Dashbrd","metatags.collections.view.description":"Immerse yourself in the intricate details of {{name}} collection, featuring remarkable digital assets. Start your NFT journey today!","metatags.collections.view.image":"/images/meta/nft-collection.png","metatags.my-collections.title":"My Collections | Dashbrd","metatags.nfts.view.title":"{{nft}} NFT | Dashbrd","metatags.nfts.view.description":"Uncover the complete story of {{nft}} NFT from the {{collection}} collection, delving into its unique attributes and distinctive features.","metatags.nfts.view.image":"/images/meta/nft-details.png","metatags.settings.title":"Settings | Dashbrd","metatags.articles.title":"Articles | Dashbrd","metatags.articles.view.title":"{{title}} | Dashbrd","metatags.login.title":"Login | Dashbrd","metatags.privacy_policy.title":"Privacy Policy | Dashbrd","metatags.privacy_policy.description":"Dashbrd’s privacy policy outlines the information we collect and explains your choices surrounding how we use information about you.","metatags.terms_of_service.title":"Terms of Service | Dashbrd","metatags.terms_of_service.description":"These Terms of Service cover your use and access to services, products or websites of Dashbrd.","metatags.cookie_policy.title":"Cookie Policy | Dashbrd","metatags.cookie_policy.description":"Dashbrd uses cookies to make the website more user-friendly. Find out about the main types of cookies we use, and what we use them for.","metatags.welcome.title":"Welcome to Dashbrd | Web3 Simplified","pages.onboarding.title":"Get Started","pages.onboarding.heading":"Your monkeys were bored and ran off, we are trying to round them up.","pages.onboarding.message":"We are setting up your account. This process usually takes just a few minutes, but can take up to 15 minutes.","pages.error.heading":"Oops, something went wrong ...","pages.error.message":"Please try again or get in touch if the issue persists.","pages.maintenance.title":"Dashbrd is currently down for scheduled maintenance.","pages.maintenance.description":"We expect to be back soon. Thanks for your patience.","pages.dashboard.title":"My Wallet","pages.dashboard.breakdown.title":"Portfolio Breakdown","pages.dashboard.line_chart.data_error":"Could not load chart data","pages.articles.title":"Articles","pages.articles.featured_collections":"Featured Collections","pages.articles.placeholder_more_soon":"More Soon","pages.articles.no_articles":"No articles have been published yet. Please check back later!","pages.articles.header_title":"Explore our collection of","pages.articles.header_suffix_one":"published article","pages.articles.header_suffix_other":"published articles","pages.articles.audio_version":"Audio version","pages.articles.consists_of_collections":"{0} This article highlights {{count}} collections|{1} This article highlights {{count}} collection|[2,*] This article highlights {{count}} collections","pages.collections.title":"Collections","pages.collections.collections":"Collections","pages.collections.popular_collections":"Popular Collections","pages.collections.collection_value":"Collection Value","pages.collections.nfts_owned":"NFTs Owned","pages.collections.header_title":"You own <0>{{nftsCount}} {{nfts}} across <0>{{collectionsCount}} {{collections}}, worth about <0><1>{{worth}}","pages.collections.search_placeholder":"Search by Collection","pages.collections.properties":"Properties","pages.collections.collections_network":"Collections Network","pages.collections.property_search_placeholder":"Feature Search","pages.collections.floor_price":"Floor Price","pages.collections.value":"Value","pages.collections.rarity":"Rarity","pages.collections.report":"Report","pages.collections.hide_collection":"Hide Collection","pages.collections.unhide_collection":"Unhide Collection","pages.collections.no_collections":"You do not own any NFTs yet. Once you do they will be shown here.","pages.collections.all_collections_hidden":"You have hidden all your collections. Unhide and they will appear here.","pages.collections.about_collection":"About Collection","pages.collections.show_hidden":"Show Hidden","pages.collections.show_my_collection":"Show My Collection","pages.collections.owned":"Owned","pages.collections.activities.loading_activities":"We're fetching Activity for this NFT, please hang tight, this can take a while.","pages.collections.activities.loading_activities_collection":"We're fetching Activity for this collection, please hang tight, this can take a while.","pages.collections.activities.ignores_activities":"We don't support activity history for this collection yet.","pages.collections.activities.no_activity":"This collection does not have any activity yet.","pages.collections.activities.types.LABEL_MINT":"Mint","pages.collections.activities.types.LABEL_TRANSFER":"Transfer","pages.collections.activities.types.LABEL_SALE":"Sale","pages.collections.articles.no_articles":"No articles have been linked to this collection as of now.","pages.collections.articles.no_articles_with_filters":"We could not find any articles matching your search criteria, please try again!","pages.collections.articles.search_placeholder":"Search in Articles","pages.collections.articles.sort_latest":"Latest","pages.collections.articles.sort_popularity":"Most Popular","pages.collections.search.loading_results":"Loading results...","pages.collections.search.no_results":"We could not find anything matching your search criteria, please try again!","pages.collections.search.no_results_with_filters":"We could not find anything matching your filters, please try again!","pages.collections.search.no_results_ownership":"You do not own any NFTs in this collection","pages.collections.search.error":"Could not load search results. Please try again later.","pages.collections.sorting.token_number":"Token Number","pages.collections.sorting.recently_received":"Recently Received","pages.collections.sorting.recently_created":"Recently Created","pages.collections.sorting.oldest_collection":"Oldest Collection","pages.collections.traits.description":"List of NFT traits by % of occurrence in the collection","pages.collections.traits.no_traits":"No Properties can be found for this NFT","pages.collections.menu.collection":"Collection","pages.collections.menu.articles":"Articles","pages.collections.menu.activity":"Activity","pages.collections.hidden_modal.collection_hidden":"Collection Hidden","pages.collections.hidden_modal.description":"This collection is currently set to Hidden. Are you sure you want to unhide this collection? You can\n reset the collection to hidden from the collection menu.","pages.collections.hidden_modal.unhide":"Unhide","pages.collections.hidden_modal.error":"Something went wrong. Please try again.","pages.collections.external_modal.you_wish_continue":"You are about to leave Dashbrd to an external website. Dashbrd has no control over the content of\n this site. Are you sure you wish to continue?","pages.collections.external_modal.not_show":"Do not show this message again.","pages.collections.refresh.title":"Refresh your collection","pages.collections.refresh.notice":"You can refresh data every 15 minutes.","pages.collections.refresh.notice_wait":"Please wait. You can refresh data every 15 minutes.","pages.collections.refresh.toast":"We're updating information for your collection.","pages.nfts.nft":"nft","pages.nfts.about_nft":"About NFT","pages.nfts.owned_by":"Owned by","pages.nfts.collection_image":"collection image","pages.nfts.menu.properties":"Properties","pages.nfts.menu.activity":"Activity","pages.reports.title":"Submit a Report","pages.reports.description":"Thanks for looking out by reporting things that break the rules. Let us know what's happening and we'll receive the report.","pages.reports.success":"Thank you for your report. We'll review it and see if it breaks our ToS.","pages.reports.failed":"Something went wrong. Please try again.","pages.reports.throttle":"You have made too many requests. Please wait {{time}} before reporting again.","pages.reports.reported":"You have already reported this {{model}}.","pages.reports.reasons.spam":"Spam","pages.reports.reasons.violence":"Promoting Violence","pages.reports.reasons.hate":"Hate","pages.reports.reasons.inappropriate_content":"Inappropriate Content","pages.reports.reasons.impersonation":"Impersonation","pages.reports.reasons.trademark":"Trademark or Copyright","pages.reports.reasons.selfharm":"Self-Harm","pages.reports.reasons.harassment":"Harassment","pages.galleries.title":"Galleries","pages.galleries.empty_title":"No galleries have been published yet. Once they do they will appear here.","pages.galleries.search.loading_results":"Loading results...","pages.galleries.search.no_results":"We could not find anything matching your search criteria, please try again!","pages.galleries.search.placeholder":"Search by name or curator address","pages.galleries.search.placeholder_nfts":"Search by NFTs","pages.galleries.search.error":"Could not load search results. Please try again later.","pages.galleries.my_galleries.title":"My Galleries","pages.galleries.my_galleries.subtitle":"Manage your galleries","pages.galleries.my_galleries.new_gallery":"New Gallery","pages.galleries.my_galleries.no_galleries":"You have not created any galleries yet. To create a gallery, click on the \"Create Gallery\" button.","pages.galleries.my_galleries.no_draft_galleries":"You have no draft galleries yet. To create a gallery, click on the \"Create Gallery\" button.","pages.galleries.my_galleries.succesfully_deleted":"Gallery has been successfully removed","pages.galleries.my_galleries.draft_succesfully_deleted":"Draft has been successfully removed","pages.galleries.my_galleries.successfully_created":"Gallery has been successfully created","pages.galleries.my_galleries.successfully_updated":"Gallery has been successfully updated","pages.galleries.my_galleries.new_gallery_no_nfts":"Creating a Gallery requires you to own an NFT.","pages.galleries.my_galleries.delete_modal.title":"Delete Draft","pages.galleries.my_galleries.delete_modal.text":"Are you sure you want to delete the draft? Everything you've done will be deleted and you won't be able to get it back.","pages.galleries.my_galleries.nfts_no_longer_owned":"NFTs no longer owned by this wallet have been removed from the draft”","pages.galleries.copy_gallery_link":"Copy Gallery Link","pages.galleries.my_nfts":"My NFTs","pages.galleries.value":"Value","pages.galleries.floor_price":"Floor Price","pages.galleries.nfts":"NFTs","pages.galleries.collections":"Collections","pages.galleries.galleries_count_simple":"{0} galleries|{1} gallery|[2,*] galleries","pages.galleries.galleries_count":"{0} {{count}} Galleries|{1} {{count}} Gallery|[2,*] {{count}} Galleries","pages.galleries.collections_count_simple":"{0} collections|{1} collection|[2,*] collections","pages.galleries.collections_count":"{0} {{count}} Collections|{1} {{count}} Collection|[2,*] {{count}} Collections","pages.galleries.nfts_count_simple":"{0} NFTs|{1} NFT|[2,*] NFTs","pages.galleries.nfts_count":"{0} {{count}} NFTs|{1} {{count}} NFT|[2,*] {{count}} NFTs","pages.galleries.users_count_simple":"{0} users|{1} user|[2,*] users","pages.galleries.users_count":"{0} {{count}} Users|{1} {{count}} User|[2,*] {{count}} Users","pages.galleries.featuring":"Featuring","pages.galleries.curated_by":"Curated by","pages.galleries.worth_about":"Worth About","pages.galleries.valued_at":"valued at","pages.galleries.from":"From","pages.galleries.most_popular_galleries":"Most Popular Galleries","pages.galleries.newest_galleries":"Newest Galleries","pages.galleries.most_valuable_galleries":"Most Valuable Galleries","pages.galleries.most_popular":"Most Popular","pages.galleries.newest":"Newest","pages.galleries.most_valuable":"Most Valuable","pages.galleries.create.search_by_nfts":"Search by NFTs","pages.galleries.create.input_placeholder":"Enter gallery name","pages.galleries.create.title_too_long":"Gallery name must not exceed {{max}} characters.","pages.galleries.create.already_selected_nft":"NFT already exists in this gallery","pages.galleries.create.nft_missing_image":"Only NFTs with images can be added to galleries","pages.galleries.create.nft_gallery_limit":"You can only add 16 NFTs per gallery","pages.galleries.create.gallery_cover":"Gallery Cover","pages.galleries.create.gallery_cover_description":"The cover is used for the card on the gallery list page. While the cover is not a requirement it will allow you to add personality and stand out from the crowd.","pages.galleries.create.gallery_cover_information":"Image dimensions must be at least 287px x 190px, with a max size of 2 MB (JPG, PNG or GIF)","pages.galleries.create.no_results":"We could not find anything matching your search criteria, please try again!","pages.galleries.create.templates.cover":"Cover","pages.galleries.create.templates.template":"Template","pages.galleries.create.templates.select":"Select Gallery Template","pages.galleries.create.templates.basic":"Basic Gallery","pages.galleries.create.templates.coming_soon":"More Coming Soon","pages.galleries.create.load_more_collections_one":"Load {{count}} More Collection","pages.galleries.create.load_more_collections_other":"Load {{count}} More Collections","pages.galleries.create.load_more_nfts":"Load More NFTs","pages.galleries.create.can_purchase":"You can purchase NFTs with these top NFT Marketplaces:","pages.galleries.create.must_own_one_nft":"You must own at least one (1) NFT in order to create a gallery.","pages.galleries.create.back_to_galleries":"Back to Galleries","pages.galleries.create.draft_saved":"Draft Saved","pages.galleries.create.saving_to_draft":"Saving to draft","pages.galleries.create.drafts_limit_modal_title":"Draft Gallery Limit","pages.galleries.create.drafts_limit_modal_message":"You’ve hit your limit for draft galleries. While you can still make new galleries and publish them, they won’t be saved as drafts. To Free up space, you can either delete existing drafts or publish them.","pages.galleries.create.drafts_limit_modal_cancel":"Go to Drafts","pages.galleries.delete_modal.title":"Delete Gallery","pages.galleries.delete_modal.confirmation_text":"Are you sure you want to delete the gallery? Deleting a Gallery is permanent, all associated views and likes will be lost.","pages.galleries.consists_of_collections":"{0} This gallery consists of {{count}} collections|{1} This gallery consists of {{count}} collection|[2,*] This gallery consists of {{count}} collections","pages.galleries.guest_banner.title":"Craft the ultimate","pages.galleries.guest_banner.subtitle":"Pick your favorites, curate your gallery, & share it with the world.","pages.profile.title":"Profile","pages.token_panel.balance_tooltip":"Total percentage of the portfolio held in this token","pages.token_panel.insufficient_funds":"Insufficient Balance","pages.token_panel.error":"Dashbrd has failed to load token information. Please try again later.","pages.token_panel.failed_to_retrieve_transactions":"We were unable to fetch your transactions.","pages.token_panel.tabs.transaction_history":"Transaction History","pages.token_panel.tabs.history":"History","pages.token_panel.tabs.market_data":"Market Data","pages.token_panel.details.current_price":"Current Price","pages.token_panel.details.title":"Token Details","pages.token_panel.details.market_cap":"Market Cap","pages.token_panel.details.volume":"Daily Volume","pages.token_panel.details.supply":"Minted Supply","pages.token_panel.details.ath":"All-Time High","pages.token_panel.details.atl":"All-Time Low","pages.token_panel.chart.failed":"Dashbrd has failed to load chart information. Please try again later.","pages.transaction_details_panel.title":"Transaction Details","pages.transaction_details_panel.details.blockchain":"Blockchain","pages.transaction_details_panel.details.timestamp":"Timestamp","pages.transaction_details_panel.details.transaction_hash":"Transaction Hash","pages.transaction_details_panel.details.transaction_fee":"Transaction Fee","pages.transaction_details_panel.details.gas_price":"Gas Price","pages.transaction_details_panel.details.gas_used":"Gas Used","pages.transaction_details_panel.details.nonce":"Nonce","pages.send_receive_panel.send.labels.token_and_amount":"Token and Amount","pages.send_receive_panel.send.labels.destination_address":"Destination Address","pages.send_receive_panel.send.labels.projected_fee":"Projected Fee","pages.send_receive_panel.send.placeholders.enter_amount":"Enter Amount","pages.send_receive_panel.send.placeholders.insert_recipient_address":"Insert Recipient Address","pages.send_receive_panel.send.placeholders.projected_fee":"Projected Fee","pages.send_receive_panel.send.errors.amount":"Insufficient Funds: You do not have enough to cover the amount + fee.","pages.send_receive_panel.send.errors.destination":"Destination address is not correct. Check and input again.","pages.send_receive_panel.send.hints.token_price":"Token Price","pages.send_receive_panel.send.fees.Fast":"Fast","pages.send_receive_panel.send.fees.Avg":"Avg","pages.send_receive_panel.send.fees.Slow":"Slow","pages.send_receive_panel.send.search_dropdown.placeholder":"Search token","pages.send_receive_panel.send.search_dropdown.no_results":"No Results","pages.send_receive_panel.send.search_dropdown.error":"Error occurred while searching tokens.","pages.send_receive_panel.send.transaction_time":"Transaction Time: ~{{ time }} minutes","pages.send_receive_panel.send.from":"From","pages.send_receive_panel.send.to":"To","pages.send_receive_panel.send.amount":"Amount","pages.send_receive_panel.send.fee":"Fee","pages.send_receive_panel.send.total_amount":"Total Amount","pages.send_receive_panel.send.waiting_message":"Review and verify the information on your MetaMask. Sign to send the transaction.","pages.send_receive_panel.send.waiting_spinner_text":"Waiting for confirmation...","pages.send_receive_panel.send.failed_message":"It looks like something went wrong while sending your transaction. Press 'Retry' to make another attempt.","pages.send_receive_panel.receive.alert":"Send only Polygon or Ethereum Network compatible tokens to this address or you could permanently lose your funds!","pages.settings.title":"Settings","pages.settings.sidebar.general":"General","pages.settings.sidebar.notifications":"Notifications","pages.settings.sidebar.session_history":"Sessions History","pages.settings.general.title":"Settings","pages.settings.general.subtitle":"Customize your App Experience","pages.settings.general.currency":"Currency","pages.settings.general.currency_subtitle":"Select your default currency which will be used throughout the app.","pages.settings.general.time_date":"Time & Date","pages.settings.general.time_date_subtitle":"Select how you want time and date be shown inside app.","pages.settings.general.date_format":"Date Format","pages.settings.general.time_format":"Time Format","pages.settings.general.timezone":"Timezone","pages.settings.general.set_defaults":"Set Defaults","pages.settings.general.set_defaults_content":"Reverting to the default settings will remove any customizations previously made. Are you sure?","pages.settings.general.save":"Save Settings","pages.settings.general.saved":"Your settings have been successfully saved","pages.wallet.title":"Wallet","pages.privacy_policy.title":"Privacy Policy","pages.terms_of_service.title":"Terms of Service","pagination.previous":"« Previous","pagination.next":"Next »","passwords.reset":"Your password has been reset!","passwords.sent":"We have emailed your password reset link!","passwords.throttled":"Please wait before retrying.","passwords.token":"This password reset token is invalid.","passwords.user":"We can't find a user with that email address.","urls.landing":"https://dashbrd.com","urls.cookie_policy":"https://dashbrd.com/cookie-policy","urls.privacy_policy":"https://dashbrd.com/privacy-policy","urls.terms_of_service":"https://dashbrd.com/terms-of-service","urls.twitter":"https://x.com/DashbrdApp","urls.discord":"https://discord.gg/MJyWKkCJ5k","urls.github":"https://github.com/ArdentHQ/dashbrd","urls.coingecko":"https://www.coingecko.com","urls.etherscan":"https://etherscan.io","urls.polygonscan":"https://polygonscan.com","urls.alchemy":"https://www.alchemy.com","urls.moralis":"https://moralis.io","urls.mnemonic":"https://www.mnemonichq.com","urls.opensea":"https://opensea.io/","urls.explorers.etherscan.token_transactions":"https://etherscan.io/token/{{token}}?a={{address}}","urls.explorers.etherscan.addresses":"https://etherscan.io/address/{{address}}","urls.explorers.etherscan.transactions":"https://etherscan.io/tx/{{id}}","urls.explorers.etherscan.nft":"https://etherscan.io/nft/{{address}}/{{nftId}}","urls.explorers.polygonscan.token_transactions":"https://polygonscan.com/token/{{token}}?a={{address}}","urls.explorers.polygonscan.addresses":"https://polygonscan.com/address/{{address}}","urls.explorers.polygonscan.transactions":"https://polygonscan.com/tx/{{id}}","urls.explorers.polygonscan.nft":"https://polygonscan.com/nft/{{address}}/{{nftId}}","urls.explorers.mumbai.token_transactions":"https://mumbai.polygonscan.com/token/{{token}}?a={{address}}","urls.explorers.mumbai.addresses":"https://mumbai.polygonscan.com/address/{{address}}","urls.explorers.mumbai.transactions":"https://mumbai.polygonscan.com/tx/{{id}}","urls.explorers.mumbai.nft":"https://mumbai.polygonscan.com/nft/{{address}}/{{nftId}}","urls.explorers.goerli.token_transactions":"https://goerli.etherscan.io/token/{{token}}?a={{address}}","urls.explorers.goerli.addresses":"https://goerli.etherscan.io/address/{{address}}","urls.explorers.goerli.transactions":"https://goerli.etherscan.io/tx/{{id}}","urls.explorers.goerli.nft":"https://goerli.etherscan.io/nft/{{address}}/{{nftId}}","urls.marketplaces.opensea.collection":"https://opensea.io/assets/{{network}}/{{address}}","urls.marketplaces.opensea.nft":"https://opensea.io/assets/{{network}}/{{address}}/{{nftId}}","urls.marketplaces.rarible.collection":"https://rarible.com/collection/{{address}}/items","urls.marketplaces.rarible.nft":"https://rarible.com/token/{{address}}:{{nftId}}","urls.marketplaces.blur.collection":"https://blur.io/collection/{{address}}","urls.marketplaces.blur.nft":"https://blur.io/asset/{{address}}/{{nftId}}","urls.marketplaces.looksrare.collection":"https://looksrare.org/collections/{{address}}","urls.marketplaces.looksrare.nft":"https://looksrare.org/collections/{{address}}/{{nftId}}","validation.accepted":"The {{attribute}} must be accepted.","validation.accepted_if":"The {{attribute}} must be accepted when {{other}} is {{value}}.","validation.active_url":"The {{attribute}} is not a valid URL.","validation.after":"The {{attribute}} must be a date after {{date}}.","validation.after_or_equal":"The {{attribute}} must be a date after or equal to {{date}}.","validation.alpha":"The {{attribute}} must only contain letters.","validation.alpha_dash":"The {{attribute}} must only contain letters, numbers, dashes and underscores.","validation.alpha_num":"The {{attribute}} must only contain letters and numbers.","validation.array":"The {{attribute}} must be an array.","validation.ascii":"The {{attribute}} must only contain single-byte alphanumeric characters and symbols.","validation.before":"The {{attribute}} must be a date before {{date}}.","validation.before_or_equal":"The {{attribute}} must be a date before or equal to {{date}}.","validation.between.array":"The {{attribute}} must have between {{min}} and {{max}} items.","validation.between.file":"The {{attribute}} must be between {{min}} and {{max}} kilobytes.","validation.between.numeric":"The {{attribute}} must be between {{min}} and {{max}}.","validation.between.string":"The {{attribute}} must be between {{min}} and {{max}} characters.","validation.boolean":"The {{attribute}} field must be true or false.","validation.confirmed":"The {{attribute}} confirmation does not match.","validation.current_password":"The password is incorrect.","validation.date":"The {{attribute}} is not a valid date.","validation.date_equals":"The {{attribute}} must be a date equal to {{date}}.","validation.date_format":"The {{attribute}} does not match the format {{format}}.","validation.decimal":"The {{attribute}} must have {{decimal}} decimal places.","validation.declined":"The {{attribute}} must be declined.","validation.declined_if":"The {{attribute}} must be declined when {{other}} is {{value}}.","validation.different":"The {{attribute}} and {{other}} must be different.","validation.digits":"The {{attribute}} must be {{digits}} digits.","validation.digits_between":"The {{attribute}} must be between {{min}} and {{max}} digits.","validation.dimensions":"The {{attribute}} has invalid image dimensions.","validation.distinct":"The {{attribute}} field has a duplicate value.","validation.doesnt_end_with":"The {{attribute}} may not end with one of the following: {{values}}.","validation.doesnt_start_with":"The {{attribute}} may not start with one of the following: {{values}}.","validation.email":"The {{attribute}} must be a valid email address.","validation.ends_with":"The {{attribute}} must end with one of the following: {{values}}.","validation.enum":"The selected {{attribute}} is invalid.","validation.exists":"The selected {{attribute}} is invalid.","validation.file":"The {{attribute}} must be a file.","validation.filled":"The {{attribute}} field must have a value.","validation.gt.array":"The {{attribute}} must have more than {{value}} items.","validation.gt.file":"The {{attribute}} must be greater than {{value}} kilobytes.","validation.gt.numeric":"The {{attribute}} must be greater than {{value}}.","validation.gt.string":"The {{attribute}} must be greater than {{value}} characters.","validation.gte.array":"The {{attribute}} must have {{value}} items or more.","validation.gte.file":"The {{attribute}} must be greater than or equal to {{value}} kilobytes.","validation.gte.numeric":"The {{attribute}} must be greater than or equal to {{value}}.","validation.gte.string":"The {{attribute}} must be greater than or equal to {{value}} characters.","validation.image":"The {{attribute}} must be an image.","validation.in":"The selected {{attribute}} is invalid.","validation.in_array":"The {{attribute}} field does not exist in {{other}}.","validation.integer":"The {{attribute}} must be an integer.","validation.ip":"The {{attribute}} must be a valid IP address.","validation.ipv4":"The {{attribute}} must be a valid IPv4 address.","validation.ipv6":"The {{attribute}} must be a valid IPv6 address.","validation.json":"The {{attribute}} must be a valid JSON string.","validation.lowercase":"The {{attribute}} must be lowercase.","validation.lt.array":"The {{attribute}} must have less than {{value}} items.","validation.lt.file":"The {{attribute}} must be less than {{value}} kilobytes.","validation.lt.numeric":"The {{attribute}} must be less than {{value}}.","validation.lt.string":"The {{attribute}} must be less than {{value}} characters.","validation.lte.array":"The {{attribute}} must not have more than {{value}} items.","validation.lte.file":"The {{attribute}} must be less than or equal to {{value}} kilobytes.","validation.lte.numeric":"The {{attribute}} must be less than or equal to {{value}}.","validation.lte.string":"The {{attribute}} must be less than or equal to {{value}} characters.","validation.mac_address":"The {{attribute}} must be a valid MAC address.","validation.max.array":"The {{attribute}} must not have more than {{max}} items.","validation.max.file":"The {{attribute}} must not be greater than {{max}} kilobytes.","validation.max.numeric":"The {{attribute}} must not be greater than {{max}}.","validation.max.string":"The {{attribute}} must not be greater than {{max}} characters.","validation.max_digits":"The {{attribute}} must not have more than {{max}} digits.","validation.mimes":"The {{attribute}} must be a file of type: {{values}}.","validation.mimetypes":"The {{attribute}} must be a file of type: {{values}}.","validation.min.array":"The {{attribute}} must have at least {{min}} items.","validation.min.file":"The {{attribute}} must be at least {{min}} kilobytes.","validation.min.numeric":"The {{attribute}} must be at least {{min}}.","validation.min.string":"The {{attribute}} must be at least {{min}} characters.","validation.min_digits":"The {{attribute}} must have at least {{min}} digits.","validation.missing":"The {{attribute}} field must be missing.","validation.missing_if":"The {{attribute}} field must be missing when {{other}} is {{value}}.","validation.missing_unless":"The {{attribute}} field must be missing unless {{other}} is {{value}}.","validation.missing_with":"The {{attribute}} field must be missing when {{values}} is present.","validation.missing_with_all":"The {{attribute}} field must be missing when {{values}} are present.","validation.multiple_of":"The {{attribute}} must be a multiple of {{value}}.","validation.not_in":"The selected {{attribute}} is invalid.","validation.not_regex":"The {{attribute}} format is invalid.","validation.numeric":"The {{attribute}} must be a number.","validation.password.letters":"The {{attribute}} must contain at least one letter.","validation.password.mixed":"The {{attribute}} must contain at least one uppercase and one lowercase letter.","validation.password.numbers":"The {{attribute}} must contain at least one number.","validation.password.symbols":"The {{attribute}} must contain at least one symbol.","validation.password.uncompromised":"The given {{attribute}} has appeared in a data leak. Please choose a different {{attribute}}.","validation.present":"The {{attribute}} field must be present.","validation.prohibited":"The {{attribute}} field is prohibited.","validation.prohibited_if":"The {{attribute}} field is prohibited when {{other}} is {{value}}.","validation.prohibited_unless":"The {{attribute}} field is prohibited unless {{other}} is in {{values}}.","validation.prohibits":"The {{attribute}} field prohibits {{other}} from being present.","validation.regex":"The {{attribute}} format is invalid.","validation.required":"The {{attribute}} field is required.","validation.required_array_keys":"The {{attribute}} field must contain entries for: {{values}}.","validation.required_if":"The {{attribute}} field is required when {{other}} is {{value}}.","validation.required_if_accepted":"The {{attribute}} field is required when {{other}} is accepted.","validation.required_unless":"The {{attribute}} field is required unless {{other}} is in {{values}}.","validation.required_with":"The {{attribute}} field is required when {{values}} is present.","validation.required_with_all":"The {{attribute}} field is required when {{values}} are present.","validation.required_without":"The {{attribute}} field is required when {{values}} is not present.","validation.required_without_all":"The {{attribute}} field is required when none of {{values}} are present.","validation.same":"The {{attribute}} and {{other}} must match.","validation.size.array":"The {{attribute}} must contain {{size}} items.","validation.size.file":"The {{attribute}} must be {{size}} kilobytes.","validation.size.numeric":"The {{attribute}} must be {{size}}.","validation.size.string":"The {{attribute}} must be {{size}} characters.","validation.starts_with":"The {{attribute}} must start with one of the following: {{values}}.","validation.string":"The {{attribute}} must be a string.","validation.timezone":"The {{attribute}} must be a valid timezone.","validation.unique":"The {{attribute}} has already been taken.","validation.uploaded":"The {{attribute}} failed to upload.","validation.uppercase":"The {{attribute}} must be uppercase.","validation.url":"The {{attribute}} must be a valid URL.","validation.ulid":"The {{attribute}} must be a valid ULID.","validation.uuid":"The {{attribute}} must be a valid UUID.","validation.custom.attribute-name.rule-name":"custom-message","validation.unsupported_currency_code":"The currency code you provided is invalid or not supported.","validation.unsupported_period":"The period you provided is invalid or not supported.","validation.unsupported_token_symbol":"The token symbol you provided is invalid or not supported.","validation.gallery_title_required":"Gallery name is required.","validation.gallery_title_max_characters":"The gallery name should not exceed 50 characters.","validation.gallery_title_invalid":"The gallery name is invalid.","validation.nfts_required":"Please add at least one NFT.","validation.nfts_max_size":"Galleries can contain no more than {{limit}} NFTs","validation.invalid_nfts":"The NFT in position {{position}} is invalid, please select another one.","validation.invalid_cover":"You have selected an invalid cover image, please try another one."} \ No newline at end of file +{"auth.welcome":"Welcome to Dashbrd","auth.logged_in":"You're logged in!","auth.log_out":"Log out","auth.failed":"These credentials do not match our records.","auth.session_timeout":"Your session has timed out. Please refresh the page and try connecting your account again.","auth.session_timeout_modal":"Seems like your session has timed out. Please connnect your wallet again.","auth.password":"The provided password is incorrect.","auth.throttle":"Too many login attempts. Please try again in {{seconds}} seconds.","auth.wallet.connecting":"Connecting …","auth.wallet.waiting_for_signature":"Waiting for Signature …","auth.wallet.switching_wallet":"Switching Wallet …","auth.wallet.connect":"Connect Wallet","auth.wallet.connect_long":"Connect Your Wallet to Get Started","auth.wallet.sign_subtitle":"Connect Your Wallet to Continue","auth.wallet.disconnect":"Disconnect Wallet","auth.wallet.install":"Install MetaMask","auth.wallet.install_long":"Install MetaMask to Get Started","auth.wallet.sign":"Sign Message","auth.wallet.sign_message":"Welcome to Dashbrd. In order to login, sign this message with your wallet. It doesn't cost you anything!\n\nSigning ID (you can ignore this): {{nonce}}","auth.wallet.connect_subtitle":"Click on the MetaMask icon in your browser to confirm the action and connect your wallet.","auth.wallet.requires_signature":"In order to prevent impersonation, we require a signature to perform this action. This signature is only a signed message and does not give any access to your wallet.","auth.errors.metamask.no_account":"No account found. Please connect your wallet and try again.","auth.errors.metamask.generic":"Connection attempt error. Please retry and follow the steps to connect your wallet.","auth.errors.metamask.invalid_network":"Please switch to Polygon or Ethereum Mainnet in your MetaMask plugin to connect to Dashbrd.","auth.errors.metamask.provider_missing":"You don't have MetaMask installed in your browser. Please install and try again.","auth.errors.metamask.user_rejected":"It looks like you cancelled signing of the authentication message. Please try again.","auth.errors.metamask.provider_not_set":"Ethereum provider is not set","auth.validation.wallet_login_failed":"There was a problem trying to verify your signature. Please try again.","auth.validation.invalid_address":"Your wallet address is invalid. Please try again.","auth.validation.invalid_signature":"Signature is invalid. Please try again.","auth.validation.invalid_network":"Please switch to Polygon or Ethereum Mainnet in your MetaMask plugin to connect to Dashbrd.","common.author":"Author","common.add":"Add","common.amount":"Amount","common.balance":"Balance","common.cancel":"Cancel","common.delete":"Delete","common.edit":"Edit","common.confirm":"Confirm","common.connect":"Connect","common.continue":"Continue","common.done":"Done","common.filter":"Filter","common.items":"Items","common.receive":"Receive","common.received":"Received","common.retry":"Retry","common.records":"Records","common.save":"Save","common.send":"Send","common.sent":"Sent","common.show":"Show","common.searching":"Searching...","common.other":"Other","common.owned":"Owned","common.token":"Token","common.tokens":"Tokens","common.wallet":"Wallet","common.pending":"Pending","common.publish":"Publish","common.published":"Published","common.empty":"Empty","common.your_address":"Your Address","common.warning":"Warning","common.my_address":"My Address","common.my_wallet":"My Wallet","common.my_collections":"My Collections","common.my_balance":"My Balance","common.na":"N/A","common.simple_plural_without_data":"One comment|Many comments","common.simple_plural_with_data":"{{count}} comment|{{count}} comments","common.advanced_plural_without_data":"{0} no comments yet|{1} 1 comment|[2,*] Many comments","common.advanced_plural_with_data":"{0} no comments yet|{1} 1 comment|[2,*] {{count}} comments","common.copy_clipboard":"Copy to Clipboard","common.copy":"Copy","common.download":"Download","common.zoom":"Zoom","common.my_collection":"My Collection","common.max":"Max","common.chain":"Chain","common.copied":"Copied!","common.coming_soon":"Coming Soon","common.more_details":"More Details","common.close":"Close","common.close_toast":"Close toast","common.loading":"Loading","common.price":"Price","common.articles":"Articles","common.most_popular":"Most Popular","common.market_cap":"Market Cap","common.volume":"Volume","common.volume_frequency":"Volume {{frequency}}","common.value":"Value","common.last_n_days":"Last {{count}} Days","common.details":"Details","common.view_all":"View All","common.view_more_on_polygonscan":"View More on Polygonscan","common.view_more_on_etherscan":"View More on Etherscan","common.view_nft_on_etherscan":"View NFT on Etherscan","common.view_nft_on_polygonscan":"View NFT on Polygonscan","common.view_nft_on_goerli_tesnet":"View NFT on Goerli Testnet Explorer","common.view_nft_on_mumbai_tesnet":"View NFT on Mumbai Testnet Explorer","common.polygonscan":"Polygonscan","common.etherscan":"Etherscan","common.featured":"Featured","common.floor_price":"Floor Price","common.floor":"Floor","common.supply":"Supply","common.owners":"Owners","common.created":"Created","common.nft":"NFT","common.collection":"Collection","common.collections":"Collections","common.gallery":"Gallery","common.basic_gallery":"Basic Gallery","common.gallery_name":"Gallery Name","common.create_gallery":"Create Gallery","common.external_link":"External Link","common.follow_link":"Follow Link","common.cover":"Cover","common.template":"Template","common.page":"Page","common.polygon":"Polygon","common.ethereum":"Ethereum","common.mumbai":"Mumbai","common.goerli":"Goerli","common.of":"of","common.pagination_input_placeholder":"Enter the page number","common.pagination_input_placeholder_mobile":"Page number","common.nft_count":"{0} {{count}} NFTs|{1} {{count}} NFT|[2,*] {{count}} NFTs","common.nft_gallery":"NFT Gallery","common.unable_to_retrieve_image":"Unable to retrieve your NFT image at this time","common.optional":"Optional","common.selected":"Selected","common.select":"Select","common.preview":"Preview","common.image_size_error":"Image size must not exceed 2MB","common.image_dimensions_error":"Image dimensions must exceed 287px x 190px","common.write_to_confirm":"Write {{word}} to confirm","common.n_hours":"{0} {{count}} hour|{1} {{count}} hour|[2,*] {{count}} hours","common.n_minutes":"{0} {{count}} minute|{1} {{count}} minute|[2,*] {{count}} minutes","common.report":"Report","common.n_nfts":"{0}NFTs|{1}NFT|[2,*]NFTs","common.n_collections":"{0}collections|{1}collection|[2,*]collections","common.back":"Back","common.back_to":"Back to","common.name":"Name","common.type":"Type","common.from":"From","common.to":"To","common.sale_price":"Sale Price","common.recent_activity":"Recent Activity","common.time":"Time","common.datetime.few_seconds_ago":"A few seconds ago","common.datetime.minutes_ago":"{0} Less than a minute ago|{1} A minute ago|[2,*] {{count}} minutes ago","common.datetime.hours_ago":"{0} Less than an hour ago|{1} An hour ago|[2,*] {{count}} hours ago","common.datetime.days_ago":"{0} Less than a day ago|{1} A day ago|[2,*] {{count}} days ago","common.datetime.weeks_ago":"{0} Less than a week ago|{1} A week ago|[2,*] {{count}} weeks ago","common.datetime.months_ago":"{0} Less than a month ago|{1} A month ago|[2,*] {{count}} months ago","common.datetime.years_ago":"{0} Less than a year ago|{1} A year ago|[2,*] {{count}} years ago","common.no_traits_found":"No traits found.","common.empty_transactions":"You don't have any transactions yet. Once transactions have been made, they will show up here.","common.error":"Error","common.refresh":"Refresh","common.refresh_metadata":"Refresh Metadata","common.refreshing_metadata":"Refreshing Metadata... Please check back later.","common.refreshing_activity":"Refreshing Activity... Please check back later.","common.pending_confirmation":"Pending Confirmation","common.confirmed_transaction":"Confirmed Transaction","common.transaction_error":"Transaction Error","common.transaction_error_description_first_part":"Your transaction encountered an error. View this transaction on","common.transaction_error_description_second_part":"for more details.","common.home":"Home","common.contact":"Contact","common.menu":"Menu","common.website":"Website","common.twitter":"Twitter","common.discord":"Discord","common.facebook":"Facebook","common.reddit":"Reddit","common.x":"X","common.sort":"Sort","common.drafts":"Drafts","common.draft":"Draft","common.delete_draft":"Delete Draft","common.share_on":"Share on {{platform}}","common.top":"Top","footer.copyright":"{{year}} © Dashbrd. All rights reserved.","footer.all_rights_reserved":"All rights reserved","footer.privacy_policy":"Privacy Policy","footer.terms_of_service":"Terms of Service","footer.powered_by":"Powered by","format.fiat":"{{ value, currency }}","format.number":"{{ value, number }}","metatags.home.title":"Dashbrd | Web3 Portfolio Management Made Simple","metatags.home.description":"Simplify your Web3 journey with Dashbrd. Manage your portfolio of tokens, NFTs, and other digital collectibles across the Ethereum and Polygon blockchains.","metatags.home.image":"/images/meta/home.png","metatags.error.title":"Error {{code}} | Dashbrd","metatags.wallet.title":"My Wallet | Dashbrd","metatags.galleries.title":"Top NFT Galleries | Dashbrd","metatags.galleries.image":"/images/meta/nft-galleries.png","metatags.galleries.description":"Explore user published NFT galleries to find custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.most_popular.title":"Most Popular Galleries | Dashbrd","metatags.galleries.most_popular.image":"/images/meta/most-popular-nft-galleries.png","metatags.galleries.most_popular.description":"Explore and discover Most Popular NFT Galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.newest.title":"Newest Galleries | Dashbrd","metatags.galleries.newest.image":"/images/meta/newest-nft-galleries.png","metatags.galleries.newest.description":"Explore and discover most recent NFT galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More","metatags.galleries.most_valuable.title":"Most Valuable Galleries | Dashbrd","metatags.galleries.most_valuable.image":"/images/meta/most-valuable-nft-galleries.png","metatags.galleries.most_valuable.description":"Explore and discover Most Valuable NFT Galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.view.title":"{{name}} | Dashbrd","metatags.galleries.view.description":"{{name}} | A Curated NFT Gallery at Dashbrd","metatags.galleries.view.image":"/images/meta/nft-gallery.png","metatags.my_galleries.title":"My Galleries | Dashbrd","metatags.my_galleries.title_draft":"My Draft Galleries | Dashbrd","metatags.my_galleries.create.title":"Create Gallery | Dashbrd","metatags.my_galleries.edit.title":"Edit {{name}} | Dashbrd","metatags.collections.title":"Collections | Dashbrd","metatags.collections.view.title":"{{name}} Collection | Dashbrd","metatags.collections.view.description":"Immerse yourself in the intricate details of {{name}} collection, featuring remarkable digital assets. Start your NFT journey today!","metatags.collections.view.image":"/images/meta/nft-collection.png","metatags.my-collections.title":"My Collections | Dashbrd","metatags.nfts.view.title":"{{nft}} NFT | Dashbrd","metatags.nfts.view.description":"Uncover the complete story of {{nft}} NFT from the {{collection}} collection, delving into its unique attributes and distinctive features.","metatags.nfts.view.image":"/images/meta/nft-details.png","metatags.settings.title":"Settings | Dashbrd","metatags.articles.title":"Articles | Dashbrd","metatags.articles.view.title":"{{title}} | Dashbrd","metatags.login.title":"Login | Dashbrd","metatags.privacy_policy.title":"Privacy Policy | Dashbrd","metatags.privacy_policy.description":"Dashbrd’s privacy policy outlines the information we collect and explains your choices surrounding how we use information about you.","metatags.terms_of_service.title":"Terms of Service | Dashbrd","metatags.terms_of_service.description":"These Terms of Service cover your use and access to services, products or websites of Dashbrd.","metatags.cookie_policy.title":"Cookie Policy | Dashbrd","metatags.cookie_policy.description":"Dashbrd uses cookies to make the website more user-friendly. Find out about the main types of cookies we use, and what we use them for.","metatags.welcome.title":"Welcome to Dashbrd | Web3 Simplified","pages.onboarding.title":"Get Started","pages.onboarding.heading":"Your monkeys were bored and ran off, we are trying to round them up.","pages.onboarding.message":"We are setting up your account. This process usually takes just a few minutes, but can take up to 15 minutes.","pages.error.heading":"Oops, something went wrong ...","pages.error.message":"Please try again or get in touch if the issue persists.","pages.maintenance.title":"Dashbrd is currently down for scheduled maintenance.","pages.maintenance.description":"We expect to be back soon. Thanks for your patience.","pages.dashboard.title":"My Wallet","pages.dashboard.breakdown.title":"Portfolio Breakdown","pages.dashboard.line_chart.data_error":"Could not load chart data","pages.articles.title":"Articles","pages.articles.featured_collections":"Featured Collections","pages.articles.placeholder_more_soon":"More Soon","pages.articles.no_articles":"No articles have been published yet. Please check back later!","pages.articles.header_title":"Explore our collection of","pages.articles.header_suffix_one":"published article","pages.articles.header_suffix_other":"published articles","pages.articles.audio_version":"Audio version","pages.articles.consists_of_collections":"{0} This article highlights {{count}} collections|{1} This article highlights {{count}} collection|[2,*] This article highlights {{count}} collections","pages.collections.title":"Collections","pages.collections.collections":"Collections","pages.collections.popular_collections":"Popular Collections","pages.collections.collection_value":"Collection Value","pages.collections.nfts_owned":"NFTs Owned","pages.collections.header_title":"You own <0>{{nftsCount}} {{nfts}} across <0>{{collectionsCount}} {{collections}}, worth about <0><1>{{worth}}","pages.collections.search_placeholder":"Search by Collection","pages.collections.properties":"Properties","pages.collections.collections_network":"Collections Network","pages.collections.property_search_placeholder":"Feature Search","pages.collections.floor_price":"Floor Price","pages.collections.value":"Value","pages.collections.rarity":"Rarity","pages.collections.report":"Report","pages.collections.hide_collection":"Hide Collection","pages.collections.unhide_collection":"Unhide Collection","pages.collections.no_collections":"You do not own any NFTs yet. Once you do they will be shown here.","pages.collections.all_collections_hidden":"You have hidden all your collections. Unhide and they will appear here.","pages.collections.about_collection":"About Collection","pages.collections.show_hidden":"Show Hidden","pages.collections.show_my_collection":"Show My Collection","pages.collections.owned":"Owned","pages.collections.activities.loading_activities":"We're fetching Activity for this NFT, please hang tight, this can take a while.","pages.collections.activities.loading_activities_collection":"We're fetching Activity for this collection, please hang tight, this can take a while.","pages.collections.activities.ignores_activities":"We don't support activity history for this collection yet.","pages.collections.activities.no_activity":"This collection does not have any activity yet.","pages.collections.activities.types.LABEL_MINT":"Mint","pages.collections.activities.types.LABEL_TRANSFER":"Transfer","pages.collections.activities.types.LABEL_SALE":"Sale","pages.collections.articles.no_articles":"No articles have been linked to this collection as of now.","pages.collections.articles.no_articles_with_filters":"We could not find any articles matching your search criteria, please try again!","pages.collections.articles.search_placeholder":"Search in Articles","pages.collections.articles.sort_latest":"Latest","pages.collections.articles.sort_popularity":"Most Popular","pages.collections.search.loading_results":"Loading results...","pages.collections.search.no_results":"We could not find anything matching your search criteria, please try again!","pages.collections.search.no_results_with_filters":"We could not find anything matching your filters, please try again!","pages.collections.search.no_results_ownership":"You do not own any NFTs in this collection","pages.collections.search.error":"Could not load search results. Please try again later.","pages.collections.sorting.token_number":"Token Number","pages.collections.sorting.recently_received":"Recently Received","pages.collections.sorting.recently_created":"Recently Created","pages.collections.sorting.oldest_collection":"Oldest Collection","pages.collections.traits.description":"List of NFT traits by % of occurrence in the collection","pages.collections.traits.no_traits":"No Properties can be found for this NFT","pages.collections.menu.collection":"Collection","pages.collections.menu.articles":"Articles","pages.collections.menu.activity":"Activity","pages.collections.hidden_modal.collection_hidden":"Collection Hidden","pages.collections.hidden_modal.description":"This collection is currently set to Hidden. Are you sure you want to unhide this collection? You can\n reset the collection to hidden from the collection menu.","pages.collections.hidden_modal.unhide":"Unhide","pages.collections.hidden_modal.error":"Something went wrong. Please try again.","pages.collections.external_modal.you_wish_continue":"You are about to leave Dashbrd to an external website. Dashbrd has no control over the content of\n this site. Are you sure you wish to continue?","pages.collections.external_modal.not_show":"Do not show this message again.","pages.collections.refresh.title":"Refresh your collection","pages.collections.refresh.notice":"You can refresh data every 15 minutes.","pages.collections.refresh.notice_wait":"Please wait. You can refresh data every 15 minutes.","pages.collections.refresh.toast":"We're updating information for your collection.","pages.nfts.nft":"nft","pages.nfts.about_nft":"About NFT","pages.nfts.owned_by":"Owned by","pages.nfts.collection_image":"collection image","pages.nfts.menu.properties":"Properties","pages.nfts.menu.activity":"Activity","pages.reports.title":"Submit a Report","pages.reports.description":"Thanks for looking out by reporting things that break the rules. Let us know what's happening and we'll receive the report.","pages.reports.success":"Thank you for your report. We'll review it and see if it breaks our ToS.","pages.reports.failed":"Something went wrong. Please try again.","pages.reports.throttle":"You have made too many requests. Please wait {{time}} before reporting again.","pages.reports.reported":"You have already reported this {{model}}.","pages.reports.reasons.spam":"Spam","pages.reports.reasons.violence":"Promoting Violence","pages.reports.reasons.hate":"Hate","pages.reports.reasons.inappropriate_content":"Inappropriate Content","pages.reports.reasons.impersonation":"Impersonation","pages.reports.reasons.trademark":"Trademark or Copyright","pages.reports.reasons.selfharm":"Self-Harm","pages.reports.reasons.harassment":"Harassment","pages.galleries.title":"Galleries","pages.galleries.empty_title":"No galleries have been published yet. Once they do they will appear here.","pages.galleries.search.loading_results":"Loading results...","pages.galleries.search.no_results":"We could not find anything matching your search criteria, please try again!","pages.galleries.search.placeholder":"Search by name or curator address","pages.galleries.search.placeholder_nfts":"Search by NFTs","pages.galleries.search.error":"Could not load search results. Please try again later.","pages.galleries.my_galleries.title":"My Galleries","pages.galleries.my_galleries.subtitle":"Manage your galleries","pages.galleries.my_galleries.new_gallery":"New Gallery","pages.galleries.my_galleries.no_galleries":"You have not created any galleries yet. To create a gallery, click on the \"Create Gallery\" button.","pages.galleries.my_galleries.no_draft_galleries":"You have no draft galleries yet. To create a gallery, click on the \"Create Gallery\" button.","pages.galleries.my_galleries.succesfully_deleted":"Gallery has been successfully removed","pages.galleries.my_galleries.draft_succesfully_deleted":"Draft has been successfully removed","pages.galleries.my_galleries.successfully_created":"Gallery has been successfully created","pages.galleries.my_galleries.successfully_updated":"Gallery has been successfully updated","pages.galleries.my_galleries.new_gallery_no_nfts":"Creating a Gallery requires you to own an NFT.","pages.galleries.my_galleries.delete_modal.title":"Delete Draft","pages.galleries.my_galleries.delete_modal.text":"Are you sure you want to delete the draft? Everything you've done will be deleted and you won't be able to get it back.","pages.galleries.my_galleries.nfts_no_longer_owned":"NFTs no longer owned by this wallet have been removed from the draft”","pages.galleries.copy_gallery_link":"Copy Gallery Link","pages.galleries.my_nfts":"My NFTs","pages.galleries.value":"Value","pages.galleries.floor_price":"Floor Price","pages.galleries.nfts":"NFTs","pages.galleries.collections":"Collections","pages.galleries.galleries_count_simple":"{0} galleries|{1} gallery|[2,*] galleries","pages.galleries.galleries_count":"{0} {{count}} Galleries|{1} {{count}} Gallery|[2,*] {{count}} Galleries","pages.galleries.collections_count_simple":"{0} collections|{1} collection|[2,*] collections","pages.galleries.collections_count":"{0} {{count}} Collections|{1} {{count}} Collection|[2,*] {{count}} Collections","pages.galleries.nfts_count_simple":"{0} NFTs|{1} NFT|[2,*] NFTs","pages.galleries.nfts_count":"{0} {{count}} NFTs|{1} {{count}} NFT|[2,*] {{count}} NFTs","pages.galleries.users_count_simple":"{0} users|{1} user|[2,*] users","pages.galleries.users_count":"{0} {{count}} Users|{1} {{count}} User|[2,*] {{count}} Users","pages.galleries.featuring":"Featuring","pages.galleries.curated_by":"Curated by","pages.galleries.worth_about":"Worth About","pages.galleries.valued_at":"valued at","pages.galleries.from":"From","pages.galleries.most_popular_galleries":"Most Popular Galleries","pages.galleries.newest_galleries":"Newest Galleries","pages.galleries.most_valuable_galleries":"Most Valuable Galleries","pages.galleries.most_popular":"Most Popular","pages.galleries.newest":"Newest","pages.galleries.most_valuable":"Most Valuable","pages.galleries.create.search_by_nfts":"Search by NFTs","pages.galleries.create.input_placeholder":"Enter gallery name","pages.galleries.create.title_too_long":"Gallery name must not exceed {{max}} characters.","pages.galleries.create.already_selected_nft":"NFT already exists in this gallery","pages.galleries.create.nft_missing_image":"Only NFTs with images can be added to galleries","pages.galleries.create.nft_gallery_limit":"You can only add 16 NFTs per gallery","pages.galleries.create.gallery_cover":"Gallery Cover","pages.galleries.create.gallery_cover_description":"The cover is used for the card on the gallery list page. While the cover is not a requirement it will allow you to add personality and stand out from the crowd.","pages.galleries.create.gallery_cover_information":"Image dimensions must be at least 287px x 190px, with a max size of 2 MB (JPG, PNG or GIF)","pages.galleries.create.no_results":"We could not find anything matching your search criteria, please try again!","pages.galleries.create.templates.cover":"Cover","pages.galleries.create.templates.template":"Template","pages.galleries.create.templates.select":"Select Gallery Template","pages.galleries.create.templates.basic":"Basic Gallery","pages.galleries.create.templates.coming_soon":"More Coming Soon","pages.galleries.create.load_more_collections_one":"Load {{count}} More Collection","pages.galleries.create.load_more_collections_other":"Load {{count}} More Collections","pages.galleries.create.load_more_nfts":"Load More NFTs","pages.galleries.create.can_purchase":"You can purchase NFTs with these top NFT Marketplaces:","pages.galleries.create.must_own_one_nft":"You must own at least one (1) NFT in order to create a gallery.","pages.galleries.create.back_to_galleries":"Back to Galleries","pages.galleries.create.draft_saved":"Draft Saved","pages.galleries.create.saving_to_draft":"Saving to draft","pages.galleries.create.drafts_limit_modal_title":"Draft Gallery Limit","pages.galleries.create.drafts_limit_modal_message":"You’ve hit your limit for draft galleries. While you can still make new galleries and publish them, they won’t be saved as drafts. To Free up space, you can either delete existing drafts or publish them.","pages.galleries.create.drafts_limit_modal_cancel":"Go to Drafts","pages.galleries.delete_modal.title":"Delete Gallery","pages.galleries.delete_modal.confirmation_text":"Are you sure you want to delete the gallery? Deleting a Gallery is permanent, all associated views and likes will be lost.","pages.galleries.consists_of_collections":"{0} This gallery consists of {{count}} collections|{1} This gallery consists of {{count}} collection|[2,*] This gallery consists of {{count}} collections","pages.galleries.guest_banner.title":"Craft the ultimate","pages.galleries.guest_banner.subtitle":"Pick your favorites, curate your gallery, & share it with the world.","pages.profile.title":"Profile","pages.token_panel.balance_tooltip":"Total percentage of the portfolio held in this token","pages.token_panel.insufficient_funds":"Insufficient Balance","pages.token_panel.error":"Dashbrd has failed to load token information. Please try again later.","pages.token_panel.failed_to_retrieve_transactions":"We were unable to fetch your transactions.","pages.token_panel.tabs.transaction_history":"Transaction History","pages.token_panel.tabs.history":"History","pages.token_panel.tabs.market_data":"Market Data","pages.token_panel.details.current_price":"Current Price","pages.token_panel.details.title":"Token Details","pages.token_panel.details.market_cap":"Market Cap","pages.token_panel.details.volume":"Daily Volume","pages.token_panel.details.supply":"Minted Supply","pages.token_panel.details.ath":"All-Time High","pages.token_panel.details.atl":"All-Time Low","pages.token_panel.chart.failed":"Dashbrd has failed to load chart information. Please try again later.","pages.transaction_details_panel.title":"Transaction Details","pages.transaction_details_panel.details.blockchain":"Blockchain","pages.transaction_details_panel.details.timestamp":"Timestamp","pages.transaction_details_panel.details.transaction_hash":"Transaction Hash","pages.transaction_details_panel.details.transaction_fee":"Transaction Fee","pages.transaction_details_panel.details.gas_price":"Gas Price","pages.transaction_details_panel.details.gas_used":"Gas Used","pages.transaction_details_panel.details.nonce":"Nonce","pages.send_receive_panel.send.labels.token_and_amount":"Token and Amount","pages.send_receive_panel.send.labels.destination_address":"Destination Address","pages.send_receive_panel.send.labels.projected_fee":"Projected Fee","pages.send_receive_panel.send.placeholders.enter_amount":"Enter Amount","pages.send_receive_panel.send.placeholders.insert_recipient_address":"Insert Recipient Address","pages.send_receive_panel.send.placeholders.projected_fee":"Projected Fee","pages.send_receive_panel.send.errors.amount":"Insufficient Funds: You do not have enough to cover the amount + fee.","pages.send_receive_panel.send.errors.destination":"Destination address is not correct. Check and input again.","pages.send_receive_panel.send.hints.token_price":"Token Price","pages.send_receive_panel.send.fees.Fast":"Fast","pages.send_receive_panel.send.fees.Avg":"Avg","pages.send_receive_panel.send.fees.Slow":"Slow","pages.send_receive_panel.send.search_dropdown.placeholder":"Search token","pages.send_receive_panel.send.search_dropdown.no_results":"No Results","pages.send_receive_panel.send.search_dropdown.error":"Error occurred while searching tokens.","pages.send_receive_panel.send.transaction_time":"Transaction Time: ~{{ time }} minutes","pages.send_receive_panel.send.from":"From","pages.send_receive_panel.send.to":"To","pages.send_receive_panel.send.amount":"Amount","pages.send_receive_panel.send.fee":"Fee","pages.send_receive_panel.send.total_amount":"Total Amount","pages.send_receive_panel.send.waiting_message":"Review and verify the information on your MetaMask. Sign to send the transaction.","pages.send_receive_panel.send.waiting_spinner_text":"Waiting for confirmation...","pages.send_receive_panel.send.failed_message":"It looks like something went wrong while sending your transaction. Press 'Retry' to make another attempt.","pages.send_receive_panel.receive.alert":"Send only Polygon or Ethereum Network compatible tokens to this address or you could permanently lose your funds!","pages.settings.title":"Settings","pages.settings.sidebar.general":"General","pages.settings.sidebar.notifications":"Notifications","pages.settings.sidebar.session_history":"Sessions History","pages.settings.general.title":"Settings","pages.settings.general.subtitle":"Customize your App Experience","pages.settings.general.currency":"Currency","pages.settings.general.currency_subtitle":"Select your default currency which will be used throughout the app.","pages.settings.general.time_date":"Time & Date","pages.settings.general.time_date_subtitle":"Select how you want time and date be shown inside app.","pages.settings.general.date_format":"Date Format","pages.settings.general.time_format":"Time Format","pages.settings.general.timezone":"Timezone","pages.settings.general.set_defaults":"Set Defaults","pages.settings.general.set_defaults_content":"Reverting to the default settings will remove any customizations previously made. Are you sure?","pages.settings.general.save":"Save Settings","pages.settings.general.saved":"Your settings have been successfully saved","pages.wallet.title":"Wallet","pages.privacy_policy.title":"Privacy Policy","pages.terms_of_service.title":"Terms of Service","pagination.previous":"« Previous","pagination.next":"Next »","passwords.reset":"Your password has been reset!","passwords.sent":"We have emailed your password reset link!","passwords.throttled":"Please wait before retrying.","passwords.token":"This password reset token is invalid.","passwords.user":"We can't find a user with that email address.","urls.landing":"https://dashbrd.com","urls.cookie_policy":"https://dashbrd.com/cookie-policy","urls.privacy_policy":"https://dashbrd.com/privacy-policy","urls.terms_of_service":"https://dashbrd.com/terms-of-service","urls.twitter":"https://x.com/DashbrdApp","urls.discord":"https://discord.gg/MJyWKkCJ5k","urls.github":"https://github.com/ArdentHQ/dashbrd","urls.coingecko":"https://www.coingecko.com","urls.etherscan":"https://etherscan.io","urls.polygonscan":"https://polygonscan.com","urls.alchemy":"https://www.alchemy.com","urls.moralis":"https://moralis.io","urls.mnemonic":"https://www.mnemonichq.com","urls.opensea":"https://opensea.io/","urls.explorers.etherscan.token_transactions":"https://etherscan.io/token/{{token}}?a={{address}}","urls.explorers.etherscan.addresses":"https://etherscan.io/address/{{address}}","urls.explorers.etherscan.transactions":"https://etherscan.io/tx/{{id}}","urls.explorers.etherscan.nft":"https://etherscan.io/nft/{{address}}/{{nftId}}","urls.explorers.polygonscan.token_transactions":"https://polygonscan.com/token/{{token}}?a={{address}}","urls.explorers.polygonscan.addresses":"https://polygonscan.com/address/{{address}}","urls.explorers.polygonscan.transactions":"https://polygonscan.com/tx/{{id}}","urls.explorers.polygonscan.nft":"https://polygonscan.com/nft/{{address}}/{{nftId}}","urls.explorers.mumbai.token_transactions":"https://mumbai.polygonscan.com/token/{{token}}?a={{address}}","urls.explorers.mumbai.addresses":"https://mumbai.polygonscan.com/address/{{address}}","urls.explorers.mumbai.transactions":"https://mumbai.polygonscan.com/tx/{{id}}","urls.explorers.mumbai.nft":"https://mumbai.polygonscan.com/nft/{{address}}/{{nftId}}","urls.explorers.goerli.token_transactions":"https://goerli.etherscan.io/token/{{token}}?a={{address}}","urls.explorers.goerli.addresses":"https://goerli.etherscan.io/address/{{address}}","urls.explorers.goerli.transactions":"https://goerli.etherscan.io/tx/{{id}}","urls.explorers.goerli.nft":"https://goerli.etherscan.io/nft/{{address}}/{{nftId}}","urls.marketplaces.opensea.collection":"https://opensea.io/assets/{{network}}/{{address}}","urls.marketplaces.opensea.nft":"https://opensea.io/assets/{{network}}/{{address}}/{{nftId}}","urls.marketplaces.rarible.collection":"https://rarible.com/collection/{{address}}/items","urls.marketplaces.rarible.nft":"https://rarible.com/token/{{address}}:{{nftId}}","urls.marketplaces.blur.collection":"https://blur.io/collection/{{address}}","urls.marketplaces.blur.nft":"https://blur.io/asset/{{address}}/{{nftId}}","urls.marketplaces.looksrare.collection":"https://looksrare.org/collections/{{address}}","urls.marketplaces.looksrare.nft":"https://looksrare.org/collections/{{address}}/{{nftId}}","validation.accepted":"The {{attribute}} must be accepted.","validation.accepted_if":"The {{attribute}} must be accepted when {{other}} is {{value}}.","validation.active_url":"The {{attribute}} is not a valid URL.","validation.after":"The {{attribute}} must be a date after {{date}}.","validation.after_or_equal":"The {{attribute}} must be a date after or equal to {{date}}.","validation.alpha":"The {{attribute}} must only contain letters.","validation.alpha_dash":"The {{attribute}} must only contain letters, numbers, dashes and underscores.","validation.alpha_num":"The {{attribute}} must only contain letters and numbers.","validation.array":"The {{attribute}} must be an array.","validation.ascii":"The {{attribute}} must only contain single-byte alphanumeric characters and symbols.","validation.before":"The {{attribute}} must be a date before {{date}}.","validation.before_or_equal":"The {{attribute}} must be a date before or equal to {{date}}.","validation.between.array":"The {{attribute}} must have between {{min}} and {{max}} items.","validation.between.file":"The {{attribute}} must be between {{min}} and {{max}} kilobytes.","validation.between.numeric":"The {{attribute}} must be between {{min}} and {{max}}.","validation.between.string":"The {{attribute}} must be between {{min}} and {{max}} characters.","validation.boolean":"The {{attribute}} field must be true or false.","validation.confirmed":"The {{attribute}} confirmation does not match.","validation.current_password":"The password is incorrect.","validation.date":"The {{attribute}} is not a valid date.","validation.date_equals":"The {{attribute}} must be a date equal to {{date}}.","validation.date_format":"The {{attribute}} does not match the format {{format}}.","validation.decimal":"The {{attribute}} must have {{decimal}} decimal places.","validation.declined":"The {{attribute}} must be declined.","validation.declined_if":"The {{attribute}} must be declined when {{other}} is {{value}}.","validation.different":"The {{attribute}} and {{other}} must be different.","validation.digits":"The {{attribute}} must be {{digits}} digits.","validation.digits_between":"The {{attribute}} must be between {{min}} and {{max}} digits.","validation.dimensions":"The {{attribute}} has invalid image dimensions.","validation.distinct":"The {{attribute}} field has a duplicate value.","validation.doesnt_end_with":"The {{attribute}} may not end with one of the following: {{values}}.","validation.doesnt_start_with":"The {{attribute}} may not start with one of the following: {{values}}.","validation.email":"The {{attribute}} must be a valid email address.","validation.ends_with":"The {{attribute}} must end with one of the following: {{values}}.","validation.enum":"The selected {{attribute}} is invalid.","validation.exists":"The selected {{attribute}} is invalid.","validation.file":"The {{attribute}} must be a file.","validation.filled":"The {{attribute}} field must have a value.","validation.gt.array":"The {{attribute}} must have more than {{value}} items.","validation.gt.file":"The {{attribute}} must be greater than {{value}} kilobytes.","validation.gt.numeric":"The {{attribute}} must be greater than {{value}}.","validation.gt.string":"The {{attribute}} must be greater than {{value}} characters.","validation.gte.array":"The {{attribute}} must have {{value}} items or more.","validation.gte.file":"The {{attribute}} must be greater than or equal to {{value}} kilobytes.","validation.gte.numeric":"The {{attribute}} must be greater than or equal to {{value}}.","validation.gte.string":"The {{attribute}} must be greater than or equal to {{value}} characters.","validation.image":"The {{attribute}} must be an image.","validation.in":"The selected {{attribute}} is invalid.","validation.in_array":"The {{attribute}} field does not exist in {{other}}.","validation.integer":"The {{attribute}} must be an integer.","validation.ip":"The {{attribute}} must be a valid IP address.","validation.ipv4":"The {{attribute}} must be a valid IPv4 address.","validation.ipv6":"The {{attribute}} must be a valid IPv6 address.","validation.json":"The {{attribute}} must be a valid JSON string.","validation.lowercase":"The {{attribute}} must be lowercase.","validation.lt.array":"The {{attribute}} must have less than {{value}} items.","validation.lt.file":"The {{attribute}} must be less than {{value}} kilobytes.","validation.lt.numeric":"The {{attribute}} must be less than {{value}}.","validation.lt.string":"The {{attribute}} must be less than {{value}} characters.","validation.lte.array":"The {{attribute}} must not have more than {{value}} items.","validation.lte.file":"The {{attribute}} must be less than or equal to {{value}} kilobytes.","validation.lte.numeric":"The {{attribute}} must be less than or equal to {{value}}.","validation.lte.string":"The {{attribute}} must be less than or equal to {{value}} characters.","validation.mac_address":"The {{attribute}} must be a valid MAC address.","validation.max.array":"The {{attribute}} must not have more than {{max}} items.","validation.max.file":"The {{attribute}} must not be greater than {{max}} kilobytes.","validation.max.numeric":"The {{attribute}} must not be greater than {{max}}.","validation.max.string":"The {{attribute}} must not be greater than {{max}} characters.","validation.max_digits":"The {{attribute}} must not have more than {{max}} digits.","validation.mimes":"The {{attribute}} must be a file of type: {{values}}.","validation.mimetypes":"The {{attribute}} must be a file of type: {{values}}.","validation.min.array":"The {{attribute}} must have at least {{min}} items.","validation.min.file":"The {{attribute}} must be at least {{min}} kilobytes.","validation.min.numeric":"The {{attribute}} must be at least {{min}}.","validation.min.string":"The {{attribute}} must be at least {{min}} characters.","validation.min_digits":"The {{attribute}} must have at least {{min}} digits.","validation.missing":"The {{attribute}} field must be missing.","validation.missing_if":"The {{attribute}} field must be missing when {{other}} is {{value}}.","validation.missing_unless":"The {{attribute}} field must be missing unless {{other}} is {{value}}.","validation.missing_with":"The {{attribute}} field must be missing when {{values}} is present.","validation.missing_with_all":"The {{attribute}} field must be missing when {{values}} are present.","validation.multiple_of":"The {{attribute}} must be a multiple of {{value}}.","validation.not_in":"The selected {{attribute}} is invalid.","validation.not_regex":"The {{attribute}} format is invalid.","validation.numeric":"The {{attribute}} must be a number.","validation.password.letters":"The {{attribute}} must contain at least one letter.","validation.password.mixed":"The {{attribute}} must contain at least one uppercase and one lowercase letter.","validation.password.numbers":"The {{attribute}} must contain at least one number.","validation.password.symbols":"The {{attribute}} must contain at least one symbol.","validation.password.uncompromised":"The given {{attribute}} has appeared in a data leak. Please choose a different {{attribute}}.","validation.present":"The {{attribute}} field must be present.","validation.prohibited":"The {{attribute}} field is prohibited.","validation.prohibited_if":"The {{attribute}} field is prohibited when {{other}} is {{value}}.","validation.prohibited_unless":"The {{attribute}} field is prohibited unless {{other}} is in {{values}}.","validation.prohibits":"The {{attribute}} field prohibits {{other}} from being present.","validation.regex":"The {{attribute}} format is invalid.","validation.required":"The {{attribute}} field is required.","validation.required_array_keys":"The {{attribute}} field must contain entries for: {{values}}.","validation.required_if":"The {{attribute}} field is required when {{other}} is {{value}}.","validation.required_if_accepted":"The {{attribute}} field is required when {{other}} is accepted.","validation.required_unless":"The {{attribute}} field is required unless {{other}} is in {{values}}.","validation.required_with":"The {{attribute}} field is required when {{values}} is present.","validation.required_with_all":"The {{attribute}} field is required when {{values}} are present.","validation.required_without":"The {{attribute}} field is required when {{values}} is not present.","validation.required_without_all":"The {{attribute}} field is required when none of {{values}} are present.","validation.same":"The {{attribute}} and {{other}} must match.","validation.size.array":"The {{attribute}} must contain {{size}} items.","validation.size.file":"The {{attribute}} must be {{size}} kilobytes.","validation.size.numeric":"The {{attribute}} must be {{size}}.","validation.size.string":"The {{attribute}} must be {{size}} characters.","validation.starts_with":"The {{attribute}} must start with one of the following: {{values}}.","validation.string":"The {{attribute}} must be a string.","validation.timezone":"The {{attribute}} must be a valid timezone.","validation.unique":"The {{attribute}} has already been taken.","validation.uploaded":"The {{attribute}} failed to upload.","validation.uppercase":"The {{attribute}} must be uppercase.","validation.url":"The {{attribute}} must be a valid URL.","validation.ulid":"The {{attribute}} must be a valid ULID.","validation.uuid":"The {{attribute}} must be a valid UUID.","validation.custom.attribute-name.rule-name":"custom-message","validation.unsupported_currency_code":"The currency code you provided is invalid or not supported.","validation.unsupported_period":"The period you provided is invalid or not supported.","validation.unsupported_token_symbol":"The token symbol you provided is invalid or not supported.","validation.gallery_title_required":"Gallery name is required.","validation.gallery_title_max_characters":"The gallery name should not exceed 50 characters.","validation.gallery_title_invalid":"The gallery name is invalid.","validation.nfts_required":"Please add at least one NFT.","validation.nfts_max_size":"Galleries can contain no more than {{limit}} NFTs","validation.invalid_nfts":"The NFT in position {{position}} is invalid, please select another one.","validation.invalid_cover":"You have selected an invalid cover image, please try another one."} \ No newline at end of file diff --git a/resources/js/Pages/Collections/Components/PopularCollectionsSorting/PopularCollectionsSorting.tsx b/resources/js/Pages/Collections/Components/PopularCollectionsSorting/PopularCollectionsSorting.tsx new file mode 100644 index 000000000..a9e0ad763 --- /dev/null +++ b/resources/js/Pages/Collections/Components/PopularCollectionsSorting/PopularCollectionsSorting.tsx @@ -0,0 +1,59 @@ +import { Tab } from "@headlessui/react"; +import { router } from "@inertiajs/react"; +import { Fragment } from "react"; +import { useTranslation } from "react-i18next"; +import { Tabs } from "@/Components/Tabs"; + +interface Properties { + active: "top" | "floor-price"; +} + +export const PopularCollectionsSorting = ({ active }: Properties): JSX.Element => { + const { t } = useTranslation(); + + const sortBy = (sort: "top" | "floor-price"): void => { + if (sort === active) { + return; + } + + router.get( + route("collections"), + { sort: sort === "floor-price" ? sort : undefined }, + { + only: ["collections", "activeSort"], + preserveScroll: true, + preserveState: true, + }, + ); + }; + + return ( + + + + + { + sortBy("top"); + }} + > + {t("common.top")} + + + + + { + sortBy("floor-price"); + }} + > + {t("common.floor_price")} + + + + + + ); +}; diff --git a/resources/js/Pages/Collections/Components/PopularCollectionsSorting/index.tsx b/resources/js/Pages/Collections/Components/PopularCollectionsSorting/index.tsx new file mode 100644 index 000000000..c3f532039 --- /dev/null +++ b/resources/js/Pages/Collections/Components/PopularCollectionsSorting/index.tsx @@ -0,0 +1 @@ +export * from "./PopularCollectionsSorting"; diff --git a/resources/js/Pages/Collections/Index.tsx b/resources/js/Pages/Collections/Index.tsx index 8d79d4c85..d6883b749 100644 --- a/resources/js/Pages/Collections/Index.tsx +++ b/resources/js/Pages/Collections/Index.tsx @@ -1,17 +1,20 @@ import { type PageProps } from "@inertiajs/core"; import { Head, usePage } from "@inertiajs/react"; import { useTranslation } from "react-i18next"; +import { PopularCollectionsSorting } from "./Components/PopularCollectionsSorting"; import { PopularCollectionsTable } from "@/Components/Collections/PopularCollectionsTable"; import { Heading } from "@/Components/Heading"; import { type PaginationData } from "@/Components/Pagination/Pagination.contracts"; import { DefaultLayout } from "@/Layouts/DefaultLayout"; interface CollectionsIndexProperties extends PageProps { + activeSort: "top" | "floor-price"; title: string; collections: PaginationData; } const CollectionsIndex = ({ + activeSort, title, collections: { data: collections }, auth, @@ -31,6 +34,10 @@ const CollectionsIndex = ({
    {t("pages.collections.popular_collections")} +
    + +
    +
    Date: Fri, 24 Nov 2023 10:55:10 +0100 Subject: [PATCH 005/145] refactor: load collections in general instead of user specific (#501) --- app/Http/Controllers/CollectionController.php | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/app/Http/Controllers/CollectionController.php b/app/Http/Controllers/CollectionController.php index bcf33aab1..3d44344f9 100644 --- a/app/Http/Controllers/CollectionController.php +++ b/app/Http/Controllers/CollectionController.php @@ -41,17 +41,15 @@ public function index(Request $request): Response|JsonResponse|RedirectResponse $currency = $user ? $user->currency() : CurrencyCode::USD; - $collectionQuery = $user ? $user->collections() : Collection::query(); - /** @var LengthAwarePaginator $collections */ - $collections = $collectionQuery - ->when($request->query('sort') !== 'floor-price', fn ($q) => $q->orderBy('volume', 'desc')) // TODO: order by top... - ->orderByFloorPrice('desc', $currency) - ->with([ - 'network', - 'floorPriceToken', - ]) - ->simplePaginate(12); + $collections = Collection::query() + ->when($request->query('sort') !== 'floor-price', fn ($q) => $q->orderBy('volume', 'desc')) // TODO: order by top... + ->orderByFloorPrice('desc', $currency) + ->with([ + 'network', + 'floorPriceToken', + ]) + ->simplePaginate(12); return Inertia::render('Collections/Index', [ 'activeSort' => $request->query('sort') === 'floor-price' ? 'floor-price' : 'top', From b14e6c44b88ba7b622cdbb5f67adac88558a6f73 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josip=20Crnkovi=C4=87?= Date: Fri, 24 Nov 2023 11:12:43 +0100 Subject: [PATCH 006/145] refactor: display icon in admin panel when collection is featured (#502) --- app/Filament/Resources/CollectionResource.php | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/app/Filament/Resources/CollectionResource.php b/app/Filament/Resources/CollectionResource.php index b49dd05fa..40d963a1e 100644 --- a/app/Filament/Resources/CollectionResource.php +++ b/app/Filament/Resources/CollectionResource.php @@ -13,6 +13,7 @@ use Filament\Resources\Resource; use Filament\Tables\Actions\Action; use Filament\Tables\Actions\ActionGroup; +use Filament\Tables\Columns\IconColumn; use Filament\Tables\Columns\ImageColumn; use Filament\Tables\Columns\TextColumn; use Filament\Tables\Filters\Filter; @@ -72,14 +73,14 @@ public static function table(Table $table): Table ->url(fn (Collection $collection) => $collection->website()) ->default('Unknown'), - TextColumn::make('is_featured') - ->label('Currently Featured') - ->getStateUsing(fn (Collection $collection) => $collection->is_featured ? 'Yes' : 'No') + IconColumn::make('is_featured') + ->label('Featured') + ->boolean() ->sortable(), ]) ->filters([ Filter::make('is_featured') - ->label('Currently Featured') + ->label('Featured') ->query(fn (Builder $query): Builder => $query->where('is_featured', true)), ]) ->actions([ From 109578c834750f25f4e615ae4515fc6fcf3d8781 Mon Sep 17 00:00:00 2001 From: ItsANameToo <35610748+ItsANameToo@users.noreply.github.com> Date: Fri, 24 Nov 2023 11:13:26 +0100 Subject: [PATCH 007/145] fix: phpunit misconfiguration (#503) --- phpunit.xml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/phpunit.xml b/phpunit.xml index 0ff1d4e8b..3af49fe2a 100644 --- a/phpunit.xml +++ b/phpunit.xml @@ -15,10 +15,9 @@ - + - - + From 34ae9a7beb6283128f0f95836914f7bec4111fd4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josip=20Crnkovi=C4=87?= Date: Fri, 24 Nov 2023 11:38:11 +0100 Subject: [PATCH 008/145] refactor: add "view all" button to popular collections (#492) --- resources/js/Pages/Collections/Index.tsx | 61 ++++++++++++++++++------ 1 file changed, 47 insertions(+), 14 deletions(-) diff --git a/resources/js/Pages/Collections/Index.tsx b/resources/js/Pages/Collections/Index.tsx index d6883b749..3b3c412d7 100644 --- a/resources/js/Pages/Collections/Index.tsx +++ b/resources/js/Pages/Collections/Index.tsx @@ -2,6 +2,7 @@ import { type PageProps } from "@inertiajs/core"; import { Head, usePage } from "@inertiajs/react"; import { useTranslation } from "react-i18next"; import { PopularCollectionsSorting } from "./Components/PopularCollectionsSorting"; +import { ButtonLink } from "@/Components/Buttons/ButtonLink"; import { PopularCollectionsTable } from "@/Components/Collections/PopularCollectionsTable"; import { Heading } from "@/Components/Heading"; import { type PaginationData } from "@/Components/Pagination/Pagination.contracts"; @@ -32,25 +33,43 @@ const CollectionsIndex = ({
    - {t("pages.collections.popular_collections")} +
    + {t("pages.collections.popular_collections")} -
    - +
    + +
    -
    -
    - +
    +
    + +
    + +
    + +
    +
    + +
    +
    +
    + +
    + +
    + +
    -
    - +
    +
    @@ -58,4 +77,18 @@ const CollectionsIndex = ({ ); }; +const ViewAllButton = (): JSX.Element => { + const { t } = useTranslation(); + + return ( + + {t("common.view_all")} + + ); +}; + export default CollectionsIndex; From a077b37945e948a1b9f2bd4c5f50ea367e1e0932 Mon Sep 17 00:00:00 2001 From: shahin-hq <132887516+shahin-hq@users.noreply.github.com> Date: Fri, 24 Nov 2023 15:05:44 +0400 Subject: [PATCH 009/145] feat: collections chain filter (#495) --- app/Http/Controllers/CollectionController.php | 13 ++++ app/Models/Collection.php | 19 ++++++ lang/en/common.php | 1 + resources/icons/ethereum.svg | 1 + resources/icons/polygon.svg | 1 + .../Networks/NetworkIcon/NetworkIcon.test.tsx | 18 ++++- .../Networks/NetworkIcon/NetworkIcon.tsx | 12 +++- resources/js/I18n/Locales/en.json | 2 +- .../ChainFilters.tsx | 68 +++++++++++++++++++ .../PopularCollectionsFilters/index.tsx | 1 + resources/js/Pages/Collections/Index.tsx | 36 ++++++++-- resources/js/icons.tsx | 4 ++ tests/App/Models/CollectionTest.php | 31 +++++++++ 13 files changed, 196 insertions(+), 11 deletions(-) create mode 100644 resources/icons/ethereum.svg create mode 100644 resources/icons/polygon.svg create mode 100644 resources/js/Pages/Collections/Components/PopularCollectionsFilters/ChainFilters.tsx create mode 100644 resources/js/Pages/Collections/Components/PopularCollectionsFilters/index.tsx diff --git a/app/Http/Controllers/CollectionController.php b/app/Http/Controllers/CollectionController.php index 3d44344f9..76d92b768 100644 --- a/app/Http/Controllers/CollectionController.php +++ b/app/Http/Controllers/CollectionController.php @@ -14,6 +14,7 @@ use App\Data\Nfts\NftActivitiesData; use App\Data\Nfts\NftActivityData; use App\Data\Token\TokenData; +use App\Enums\Chain; use App\Enums\CurrencyCode; use App\Enums\NftTransferType; use App\Enums\TraitDisplayType; @@ -41,9 +42,18 @@ public function index(Request $request): Response|JsonResponse|RedirectResponse $currency = $user ? $user->currency() : CurrencyCode::USD; + $collectionQuery = $user ? $user->collections() : Collection::query(); + + $chainId = match ($request->query('chain')) { + 'polygon' => Chain::Polygon->value, + 'ethereum' => Chain::ETH->value, + default => null, + }; + /** @var LengthAwarePaginator $collections */ $collections = Collection::query() ->when($request->query('sort') !== 'floor-price', fn ($q) => $q->orderBy('volume', 'desc')) // TODO: order by top... + ->filterByChainId($chainId) ->orderByFloorPrice('desc', $currency) ->with([ 'network', @@ -53,6 +63,9 @@ public function index(Request $request): Response|JsonResponse|RedirectResponse return Inertia::render('Collections/Index', [ 'activeSort' => $request->query('sort') === 'floor-price' ? 'floor-price' : 'top', + 'filters' => [ + 'chain' => $request->query('chain') ?? null, + ], 'title' => trans('metatags.collections.title'), 'collections' => PopularCollectionData::collection( $collections->through(fn ($collection) => PopularCollectionData::fromModel($collection, $currency)) diff --git a/app/Models/Collection.php b/app/Models/Collection.php index 6ddcd18fb..4173d99b5 100644 --- a/app/Models/Collection.php +++ b/app/Models/Collection.php @@ -302,6 +302,25 @@ public function scopeOrderByChainId(Builder $query, string $direction): Builder return $query->orderBy($select, $direction); } + /** + * @param Builder $query + * @return Builder + */ + public function scopeFilterByChainId(Builder $query, ?int $chainId): Builder + { + if (empty($chainId)) { + return $query; + } + + /** @var Network $network */ + $network = Network::query() + ->select('id') + ->where('networks.chain_id', $chainId) + ->first(); + + return $query->where('collections.network_id', $network->id); + } + /** * @param Builder $query * @return Builder diff --git a/lang/en/common.php b/lang/en/common.php index 48b7ba148..c0fcd16b6 100644 --- a/lang/en/common.php +++ b/lang/en/common.php @@ -162,4 +162,5 @@ 'delete_draft' => 'Delete Draft', 'share_on' => 'Share on {{platform}}', 'top' => 'Top', + 'all_chains' => 'All chains', ]; diff --git a/resources/icons/ethereum.svg b/resources/icons/ethereum.svg new file mode 100644 index 000000000..777c6587b --- /dev/null +++ b/resources/icons/ethereum.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/icons/polygon.svg b/resources/icons/polygon.svg new file mode 100644 index 000000000..6403df404 --- /dev/null +++ b/resources/icons/polygon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/js/Components/Networks/NetworkIcon/NetworkIcon.test.tsx b/resources/js/Components/Networks/NetworkIcon/NetworkIcon.test.tsx index cab7432d8..2968b2b3b 100644 --- a/resources/js/Components/Networks/NetworkIcon/NetworkIcon.test.tsx +++ b/resources/js/Components/Networks/NetworkIcon/NetworkIcon.test.tsx @@ -1,4 +1,5 @@ import React from "react"; +import { expect } from "vitest"; import { NetworkIcon } from "./NetworkIcon"; import { render, screen } from "@/Tests/testing-library"; @@ -27,6 +28,20 @@ describe("NetworkIcon", () => { expect(screen.getByTestId("Polygon__text")).toHaveTextContent("Polygon"); }); + it.each([ + [1, "Ethereum"], + [137, "Polygon"], + ])("should render network with a simple icon", (networkId, iconName) => { + render( + , + ); + + expect(screen.getByTestId(`icon-${iconName}`)).toBeInTheDocument(); + }); + it("should render ethereum logo for ethereum networks", () => { render( { expect(screen.getByTestId("Mumbai__text")).toHaveTextContent("Mumbai"); }); - const sizes: Array<["sm" | "md" | "xl", string]> = [ + const sizes: Array<["sm" | "md" | "xl" | "sm-md", string]> = [ ["sm", "w-3.5 h-3.5"], ["md", "w-5 h-5"], ["xl", "w-8 h-8"], + ["sm-md", "w-4 h-4"], ]; it.each(sizes)("should render network icon with different size", (size, className) => { render( diff --git a/resources/js/Components/Networks/NetworkIcon/NetworkIcon.tsx b/resources/js/Components/Networks/NetworkIcon/NetworkIcon.tsx index 56a513477..b3b156437 100644 --- a/resources/js/Components/Networks/NetworkIcon/NetworkIcon.tsx +++ b/resources/js/Components/Networks/NetworkIcon/NetworkIcon.tsx @@ -1,5 +1,6 @@ import cn from "classnames"; import { useTranslation } from "react-i18next"; +import { Icon } from "@/Components/Icon"; import { Tooltip } from "@/Components/Tooltip"; import { useNetwork } from "@/Hooks/useNetwork"; import { Ethereum, Polygon } from "@/images"; @@ -9,7 +10,8 @@ interface Properties { withoutTooltip?: boolean; className?: string; textClassName?: string; - iconSize?: "sm" | "md" | "xl"; + iconSize?: "sm" | "md" | "xl" | "sm-md"; + simpleIcon?: boolean; } export const NetworkIcon = ({ @@ -18,6 +20,7 @@ export const NetworkIcon = ({ className, textClassName, iconSize = "md", + simpleIcon = false, }: Properties): JSX.Element => { const { t } = useTranslation(); const { isPolygon, isEthereum, isTestnet } = useNetwork(); @@ -31,6 +34,9 @@ export const NetworkIcon = ({ case "sm": iconSizeClass = "w-3.5 h-3.5"; break; + case "sm-md": + iconSizeClass = "w-4 h-4"; + break; default: iconSizeClass = "w-5 h-5"; break; @@ -51,7 +57,7 @@ export const NetworkIcon = ({ content={t("common.polygon")} >
    - + {simpleIcon ? : }
    )} @@ -62,7 +68,7 @@ export const NetworkIcon = ({ content={t("common.ethereum")} >
    - + {simpleIcon ? : }
    )} diff --git a/resources/js/I18n/Locales/en.json b/resources/js/I18n/Locales/en.json index f17ae3622..2fba59afb 100644 --- a/resources/js/I18n/Locales/en.json +++ b/resources/js/I18n/Locales/en.json @@ -1 +1 @@ -{"auth.welcome":"Welcome to Dashbrd","auth.logged_in":"You're logged in!","auth.log_out":"Log out","auth.failed":"These credentials do not match our records.","auth.session_timeout":"Your session has timed out. Please refresh the page and try connecting your account again.","auth.session_timeout_modal":"Seems like your session has timed out. Please connnect your wallet again.","auth.password":"The provided password is incorrect.","auth.throttle":"Too many login attempts. Please try again in {{seconds}} seconds.","auth.wallet.connecting":"Connecting …","auth.wallet.waiting_for_signature":"Waiting for Signature …","auth.wallet.switching_wallet":"Switching Wallet …","auth.wallet.connect":"Connect Wallet","auth.wallet.connect_long":"Connect Your Wallet to Get Started","auth.wallet.sign_subtitle":"Connect Your Wallet to Continue","auth.wallet.disconnect":"Disconnect Wallet","auth.wallet.install":"Install MetaMask","auth.wallet.install_long":"Install MetaMask to Get Started","auth.wallet.sign":"Sign Message","auth.wallet.sign_message":"Welcome to Dashbrd. In order to login, sign this message with your wallet. It doesn't cost you anything!\n\nSigning ID (you can ignore this): {{nonce}}","auth.wallet.connect_subtitle":"Click on the MetaMask icon in your browser to confirm the action and connect your wallet.","auth.wallet.requires_signature":"In order to prevent impersonation, we require a signature to perform this action. This signature is only a signed message and does not give any access to your wallet.","auth.errors.metamask.no_account":"No account found. Please connect your wallet and try again.","auth.errors.metamask.generic":"Connection attempt error. Please retry and follow the steps to connect your wallet.","auth.errors.metamask.invalid_network":"Please switch to Polygon or Ethereum Mainnet in your MetaMask plugin to connect to Dashbrd.","auth.errors.metamask.provider_missing":"You don't have MetaMask installed in your browser. Please install and try again.","auth.errors.metamask.user_rejected":"It looks like you cancelled signing of the authentication message. Please try again.","auth.errors.metamask.provider_not_set":"Ethereum provider is not set","auth.validation.wallet_login_failed":"There was a problem trying to verify your signature. Please try again.","auth.validation.invalid_address":"Your wallet address is invalid. Please try again.","auth.validation.invalid_signature":"Signature is invalid. Please try again.","auth.validation.invalid_network":"Please switch to Polygon or Ethereum Mainnet in your MetaMask plugin to connect to Dashbrd.","common.author":"Author","common.add":"Add","common.amount":"Amount","common.balance":"Balance","common.cancel":"Cancel","common.delete":"Delete","common.edit":"Edit","common.confirm":"Confirm","common.connect":"Connect","common.continue":"Continue","common.done":"Done","common.filter":"Filter","common.items":"Items","common.receive":"Receive","common.received":"Received","common.retry":"Retry","common.records":"Records","common.save":"Save","common.send":"Send","common.sent":"Sent","common.show":"Show","common.searching":"Searching...","common.other":"Other","common.owned":"Owned","common.token":"Token","common.tokens":"Tokens","common.wallet":"Wallet","common.pending":"Pending","common.publish":"Publish","common.published":"Published","common.empty":"Empty","common.your_address":"Your Address","common.warning":"Warning","common.my_address":"My Address","common.my_wallet":"My Wallet","common.my_collections":"My Collections","common.my_balance":"My Balance","common.na":"N/A","common.simple_plural_without_data":"One comment|Many comments","common.simple_plural_with_data":"{{count}} comment|{{count}} comments","common.advanced_plural_without_data":"{0} no comments yet|{1} 1 comment|[2,*] Many comments","common.advanced_plural_with_data":"{0} no comments yet|{1} 1 comment|[2,*] {{count}} comments","common.copy_clipboard":"Copy to Clipboard","common.copy":"Copy","common.download":"Download","common.zoom":"Zoom","common.my_collection":"My Collection","common.max":"Max","common.chain":"Chain","common.copied":"Copied!","common.coming_soon":"Coming Soon","common.more_details":"More Details","common.close":"Close","common.close_toast":"Close toast","common.loading":"Loading","common.price":"Price","common.articles":"Articles","common.most_popular":"Most Popular","common.market_cap":"Market Cap","common.volume":"Volume","common.volume_frequency":"Volume {{frequency}}","common.value":"Value","common.last_n_days":"Last {{count}} Days","common.details":"Details","common.view_all":"View All","common.view_more_on_polygonscan":"View More on Polygonscan","common.view_more_on_etherscan":"View More on Etherscan","common.view_nft_on_etherscan":"View NFT on Etherscan","common.view_nft_on_polygonscan":"View NFT on Polygonscan","common.view_nft_on_goerli_tesnet":"View NFT on Goerli Testnet Explorer","common.view_nft_on_mumbai_tesnet":"View NFT on Mumbai Testnet Explorer","common.polygonscan":"Polygonscan","common.etherscan":"Etherscan","common.featured":"Featured","common.floor_price":"Floor Price","common.floor":"Floor","common.supply":"Supply","common.owners":"Owners","common.created":"Created","common.nft":"NFT","common.collection":"Collection","common.collections":"Collections","common.gallery":"Gallery","common.basic_gallery":"Basic Gallery","common.gallery_name":"Gallery Name","common.create_gallery":"Create Gallery","common.external_link":"External Link","common.follow_link":"Follow Link","common.cover":"Cover","common.template":"Template","common.page":"Page","common.polygon":"Polygon","common.ethereum":"Ethereum","common.mumbai":"Mumbai","common.goerli":"Goerli","common.of":"of","common.pagination_input_placeholder":"Enter the page number","common.pagination_input_placeholder_mobile":"Page number","common.nft_count":"{0} {{count}} NFTs|{1} {{count}} NFT|[2,*] {{count}} NFTs","common.nft_gallery":"NFT Gallery","common.unable_to_retrieve_image":"Unable to retrieve your NFT image at this time","common.optional":"Optional","common.selected":"Selected","common.select":"Select","common.preview":"Preview","common.image_size_error":"Image size must not exceed 2MB","common.image_dimensions_error":"Image dimensions must exceed 287px x 190px","common.write_to_confirm":"Write {{word}} to confirm","common.n_hours":"{0} {{count}} hour|{1} {{count}} hour|[2,*] {{count}} hours","common.n_minutes":"{0} {{count}} minute|{1} {{count}} minute|[2,*] {{count}} minutes","common.report":"Report","common.n_nfts":"{0}NFTs|{1}NFT|[2,*]NFTs","common.n_collections":"{0}collections|{1}collection|[2,*]collections","common.back":"Back","common.back_to":"Back to","common.name":"Name","common.type":"Type","common.from":"From","common.to":"To","common.sale_price":"Sale Price","common.recent_activity":"Recent Activity","common.time":"Time","common.datetime.few_seconds_ago":"A few seconds ago","common.datetime.minutes_ago":"{0} Less than a minute ago|{1} A minute ago|[2,*] {{count}} minutes ago","common.datetime.hours_ago":"{0} Less than an hour ago|{1} An hour ago|[2,*] {{count}} hours ago","common.datetime.days_ago":"{0} Less than a day ago|{1} A day ago|[2,*] {{count}} days ago","common.datetime.weeks_ago":"{0} Less than a week ago|{1} A week ago|[2,*] {{count}} weeks ago","common.datetime.months_ago":"{0} Less than a month ago|{1} A month ago|[2,*] {{count}} months ago","common.datetime.years_ago":"{0} Less than a year ago|{1} A year ago|[2,*] {{count}} years ago","common.no_traits_found":"No traits found.","common.empty_transactions":"You don't have any transactions yet. Once transactions have been made, they will show up here.","common.error":"Error","common.refresh":"Refresh","common.refresh_metadata":"Refresh Metadata","common.refreshing_metadata":"Refreshing Metadata... Please check back later.","common.refreshing_activity":"Refreshing Activity... Please check back later.","common.pending_confirmation":"Pending Confirmation","common.confirmed_transaction":"Confirmed Transaction","common.transaction_error":"Transaction Error","common.transaction_error_description_first_part":"Your transaction encountered an error. View this transaction on","common.transaction_error_description_second_part":"for more details.","common.home":"Home","common.contact":"Contact","common.menu":"Menu","common.website":"Website","common.twitter":"Twitter","common.discord":"Discord","common.facebook":"Facebook","common.reddit":"Reddit","common.x":"X","common.sort":"Sort","common.drafts":"Drafts","common.draft":"Draft","common.delete_draft":"Delete Draft","common.share_on":"Share on {{platform}}","common.top":"Top","footer.copyright":"{{year}} © Dashbrd. All rights reserved.","footer.all_rights_reserved":"All rights reserved","footer.privacy_policy":"Privacy Policy","footer.terms_of_service":"Terms of Service","footer.powered_by":"Powered by","format.fiat":"{{ value, currency }}","format.number":"{{ value, number }}","metatags.home.title":"Dashbrd | Web3 Portfolio Management Made Simple","metatags.home.description":"Simplify your Web3 journey with Dashbrd. Manage your portfolio of tokens, NFTs, and other digital collectibles across the Ethereum and Polygon blockchains.","metatags.home.image":"/images/meta/home.png","metatags.error.title":"Error {{code}} | Dashbrd","metatags.wallet.title":"My Wallet | Dashbrd","metatags.galleries.title":"Top NFT Galleries | Dashbrd","metatags.galleries.image":"/images/meta/nft-galleries.png","metatags.galleries.description":"Explore user published NFT galleries to find custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.most_popular.title":"Most Popular Galleries | Dashbrd","metatags.galleries.most_popular.image":"/images/meta/most-popular-nft-galleries.png","metatags.galleries.most_popular.description":"Explore and discover Most Popular NFT Galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.newest.title":"Newest Galleries | Dashbrd","metatags.galleries.newest.image":"/images/meta/newest-nft-galleries.png","metatags.galleries.newest.description":"Explore and discover most recent NFT galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More","metatags.galleries.most_valuable.title":"Most Valuable Galleries | Dashbrd","metatags.galleries.most_valuable.image":"/images/meta/most-valuable-nft-galleries.png","metatags.galleries.most_valuable.description":"Explore and discover Most Valuable NFT Galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.view.title":"{{name}} | Dashbrd","metatags.galleries.view.description":"{{name}} | A Curated NFT Gallery at Dashbrd","metatags.galleries.view.image":"/images/meta/nft-gallery.png","metatags.my_galleries.title":"My Galleries | Dashbrd","metatags.my_galleries.title_draft":"My Draft Galleries | Dashbrd","metatags.my_galleries.create.title":"Create Gallery | Dashbrd","metatags.my_galleries.edit.title":"Edit {{name}} | Dashbrd","metatags.collections.title":"Collections | Dashbrd","metatags.collections.view.title":"{{name}} Collection | Dashbrd","metatags.collections.view.description":"Immerse yourself in the intricate details of {{name}} collection, featuring remarkable digital assets. Start your NFT journey today!","metatags.collections.view.image":"/images/meta/nft-collection.png","metatags.my-collections.title":"My Collections | Dashbrd","metatags.nfts.view.title":"{{nft}} NFT | Dashbrd","metatags.nfts.view.description":"Uncover the complete story of {{nft}} NFT from the {{collection}} collection, delving into its unique attributes and distinctive features.","metatags.nfts.view.image":"/images/meta/nft-details.png","metatags.settings.title":"Settings | Dashbrd","metatags.articles.title":"Articles | Dashbrd","metatags.articles.view.title":"{{title}} | Dashbrd","metatags.login.title":"Login | Dashbrd","metatags.privacy_policy.title":"Privacy Policy | Dashbrd","metatags.privacy_policy.description":"Dashbrd’s privacy policy outlines the information we collect and explains your choices surrounding how we use information about you.","metatags.terms_of_service.title":"Terms of Service | Dashbrd","metatags.terms_of_service.description":"These Terms of Service cover your use and access to services, products or websites of Dashbrd.","metatags.cookie_policy.title":"Cookie Policy | Dashbrd","metatags.cookie_policy.description":"Dashbrd uses cookies to make the website more user-friendly. Find out about the main types of cookies we use, and what we use them for.","metatags.welcome.title":"Welcome to Dashbrd | Web3 Simplified","pages.onboarding.title":"Get Started","pages.onboarding.heading":"Your monkeys were bored and ran off, we are trying to round them up.","pages.onboarding.message":"We are setting up your account. This process usually takes just a few minutes, but can take up to 15 minutes.","pages.error.heading":"Oops, something went wrong ...","pages.error.message":"Please try again or get in touch if the issue persists.","pages.maintenance.title":"Dashbrd is currently down for scheduled maintenance.","pages.maintenance.description":"We expect to be back soon. Thanks for your patience.","pages.dashboard.title":"My Wallet","pages.dashboard.breakdown.title":"Portfolio Breakdown","pages.dashboard.line_chart.data_error":"Could not load chart data","pages.articles.title":"Articles","pages.articles.featured_collections":"Featured Collections","pages.articles.placeholder_more_soon":"More Soon","pages.articles.no_articles":"No articles have been published yet. Please check back later!","pages.articles.header_title":"Explore our collection of","pages.articles.header_suffix_one":"published article","pages.articles.header_suffix_other":"published articles","pages.articles.audio_version":"Audio version","pages.articles.consists_of_collections":"{0} This article highlights {{count}} collections|{1} This article highlights {{count}} collection|[2,*] This article highlights {{count}} collections","pages.collections.title":"Collections","pages.collections.collections":"Collections","pages.collections.popular_collections":"Popular Collections","pages.collections.collection_value":"Collection Value","pages.collections.nfts_owned":"NFTs Owned","pages.collections.header_title":"You own <0>{{nftsCount}} {{nfts}} across <0>{{collectionsCount}} {{collections}}, worth about <0><1>{{worth}}","pages.collections.search_placeholder":"Search by Collection","pages.collections.properties":"Properties","pages.collections.collections_network":"Collections Network","pages.collections.property_search_placeholder":"Feature Search","pages.collections.floor_price":"Floor Price","pages.collections.value":"Value","pages.collections.rarity":"Rarity","pages.collections.report":"Report","pages.collections.hide_collection":"Hide Collection","pages.collections.unhide_collection":"Unhide Collection","pages.collections.no_collections":"You do not own any NFTs yet. Once you do they will be shown here.","pages.collections.all_collections_hidden":"You have hidden all your collections. Unhide and they will appear here.","pages.collections.about_collection":"About Collection","pages.collections.show_hidden":"Show Hidden","pages.collections.show_my_collection":"Show My Collection","pages.collections.owned":"Owned","pages.collections.activities.loading_activities":"We're fetching Activity for this NFT, please hang tight, this can take a while.","pages.collections.activities.loading_activities_collection":"We're fetching Activity for this collection, please hang tight, this can take a while.","pages.collections.activities.ignores_activities":"We don't support activity history for this collection yet.","pages.collections.activities.no_activity":"This collection does not have any activity yet.","pages.collections.activities.types.LABEL_MINT":"Mint","pages.collections.activities.types.LABEL_TRANSFER":"Transfer","pages.collections.activities.types.LABEL_SALE":"Sale","pages.collections.articles.no_articles":"No articles have been linked to this collection as of now.","pages.collections.articles.no_articles_with_filters":"We could not find any articles matching your search criteria, please try again!","pages.collections.articles.search_placeholder":"Search in Articles","pages.collections.articles.sort_latest":"Latest","pages.collections.articles.sort_popularity":"Most Popular","pages.collections.search.loading_results":"Loading results...","pages.collections.search.no_results":"We could not find anything matching your search criteria, please try again!","pages.collections.search.no_results_with_filters":"We could not find anything matching your filters, please try again!","pages.collections.search.no_results_ownership":"You do not own any NFTs in this collection","pages.collections.search.error":"Could not load search results. Please try again later.","pages.collections.sorting.token_number":"Token Number","pages.collections.sorting.recently_received":"Recently Received","pages.collections.sorting.recently_created":"Recently Created","pages.collections.sorting.oldest_collection":"Oldest Collection","pages.collections.traits.description":"List of NFT traits by % of occurrence in the collection","pages.collections.traits.no_traits":"No Properties can be found for this NFT","pages.collections.menu.collection":"Collection","pages.collections.menu.articles":"Articles","pages.collections.menu.activity":"Activity","pages.collections.hidden_modal.collection_hidden":"Collection Hidden","pages.collections.hidden_modal.description":"This collection is currently set to Hidden. Are you sure you want to unhide this collection? You can\n reset the collection to hidden from the collection menu.","pages.collections.hidden_modal.unhide":"Unhide","pages.collections.hidden_modal.error":"Something went wrong. Please try again.","pages.collections.external_modal.you_wish_continue":"You are about to leave Dashbrd to an external website. Dashbrd has no control over the content of\n this site. Are you sure you wish to continue?","pages.collections.external_modal.not_show":"Do not show this message again.","pages.collections.refresh.title":"Refresh your collection","pages.collections.refresh.notice":"You can refresh data every 15 minutes.","pages.collections.refresh.notice_wait":"Please wait. You can refresh data every 15 minutes.","pages.collections.refresh.toast":"We're updating information for your collection.","pages.nfts.nft":"nft","pages.nfts.about_nft":"About NFT","pages.nfts.owned_by":"Owned by","pages.nfts.collection_image":"collection image","pages.nfts.menu.properties":"Properties","pages.nfts.menu.activity":"Activity","pages.reports.title":"Submit a Report","pages.reports.description":"Thanks for looking out by reporting things that break the rules. Let us know what's happening and we'll receive the report.","pages.reports.success":"Thank you for your report. We'll review it and see if it breaks our ToS.","pages.reports.failed":"Something went wrong. Please try again.","pages.reports.throttle":"You have made too many requests. Please wait {{time}} before reporting again.","pages.reports.reported":"You have already reported this {{model}}.","pages.reports.reasons.spam":"Spam","pages.reports.reasons.violence":"Promoting Violence","pages.reports.reasons.hate":"Hate","pages.reports.reasons.inappropriate_content":"Inappropriate Content","pages.reports.reasons.impersonation":"Impersonation","pages.reports.reasons.trademark":"Trademark or Copyright","pages.reports.reasons.selfharm":"Self-Harm","pages.reports.reasons.harassment":"Harassment","pages.galleries.title":"Galleries","pages.galleries.empty_title":"No galleries have been published yet. Once they do they will appear here.","pages.galleries.search.loading_results":"Loading results...","pages.galleries.search.no_results":"We could not find anything matching your search criteria, please try again!","pages.galleries.search.placeholder":"Search by name or curator address","pages.galleries.search.placeholder_nfts":"Search by NFTs","pages.galleries.search.error":"Could not load search results. Please try again later.","pages.galleries.my_galleries.title":"My Galleries","pages.galleries.my_galleries.subtitle":"Manage your galleries","pages.galleries.my_galleries.new_gallery":"New Gallery","pages.galleries.my_galleries.no_galleries":"You have not created any galleries yet. To create a gallery, click on the \"Create Gallery\" button.","pages.galleries.my_galleries.no_draft_galleries":"You have no draft galleries yet. To create a gallery, click on the \"Create Gallery\" button.","pages.galleries.my_galleries.succesfully_deleted":"Gallery has been successfully removed","pages.galleries.my_galleries.draft_succesfully_deleted":"Draft has been successfully removed","pages.galleries.my_galleries.successfully_created":"Gallery has been successfully created","pages.galleries.my_galleries.successfully_updated":"Gallery has been successfully updated","pages.galleries.my_galleries.new_gallery_no_nfts":"Creating a Gallery requires you to own an NFT.","pages.galleries.my_galleries.delete_modal.title":"Delete Draft","pages.galleries.my_galleries.delete_modal.text":"Are you sure you want to delete the draft? Everything you've done will be deleted and you won't be able to get it back.","pages.galleries.my_galleries.nfts_no_longer_owned":"NFTs no longer owned by this wallet have been removed from the draft”","pages.galleries.copy_gallery_link":"Copy Gallery Link","pages.galleries.my_nfts":"My NFTs","pages.galleries.value":"Value","pages.galleries.floor_price":"Floor Price","pages.galleries.nfts":"NFTs","pages.galleries.collections":"Collections","pages.galleries.galleries_count_simple":"{0} galleries|{1} gallery|[2,*] galleries","pages.galleries.galleries_count":"{0} {{count}} Galleries|{1} {{count}} Gallery|[2,*] {{count}} Galleries","pages.galleries.collections_count_simple":"{0} collections|{1} collection|[2,*] collections","pages.galleries.collections_count":"{0} {{count}} Collections|{1} {{count}} Collection|[2,*] {{count}} Collections","pages.galleries.nfts_count_simple":"{0} NFTs|{1} NFT|[2,*] NFTs","pages.galleries.nfts_count":"{0} {{count}} NFTs|{1} {{count}} NFT|[2,*] {{count}} NFTs","pages.galleries.users_count_simple":"{0} users|{1} user|[2,*] users","pages.galleries.users_count":"{0} {{count}} Users|{1} {{count}} User|[2,*] {{count}} Users","pages.galleries.featuring":"Featuring","pages.galleries.curated_by":"Curated by","pages.galleries.worth_about":"Worth About","pages.galleries.valued_at":"valued at","pages.galleries.from":"From","pages.galleries.most_popular_galleries":"Most Popular Galleries","pages.galleries.newest_galleries":"Newest Galleries","pages.galleries.most_valuable_galleries":"Most Valuable Galleries","pages.galleries.most_popular":"Most Popular","pages.galleries.newest":"Newest","pages.galleries.most_valuable":"Most Valuable","pages.galleries.create.search_by_nfts":"Search by NFTs","pages.galleries.create.input_placeholder":"Enter gallery name","pages.galleries.create.title_too_long":"Gallery name must not exceed {{max}} characters.","pages.galleries.create.already_selected_nft":"NFT already exists in this gallery","pages.galleries.create.nft_missing_image":"Only NFTs with images can be added to galleries","pages.galleries.create.nft_gallery_limit":"You can only add 16 NFTs per gallery","pages.galleries.create.gallery_cover":"Gallery Cover","pages.galleries.create.gallery_cover_description":"The cover is used for the card on the gallery list page. While the cover is not a requirement it will allow you to add personality and stand out from the crowd.","pages.galleries.create.gallery_cover_information":"Image dimensions must be at least 287px x 190px, with a max size of 2 MB (JPG, PNG or GIF)","pages.galleries.create.no_results":"We could not find anything matching your search criteria, please try again!","pages.galleries.create.templates.cover":"Cover","pages.galleries.create.templates.template":"Template","pages.galleries.create.templates.select":"Select Gallery Template","pages.galleries.create.templates.basic":"Basic Gallery","pages.galleries.create.templates.coming_soon":"More Coming Soon","pages.galleries.create.load_more_collections_one":"Load {{count}} More Collection","pages.galleries.create.load_more_collections_other":"Load {{count}} More Collections","pages.galleries.create.load_more_nfts":"Load More NFTs","pages.galleries.create.can_purchase":"You can purchase NFTs with these top NFT Marketplaces:","pages.galleries.create.must_own_one_nft":"You must own at least one (1) NFT in order to create a gallery.","pages.galleries.create.back_to_galleries":"Back to Galleries","pages.galleries.create.draft_saved":"Draft Saved","pages.galleries.create.saving_to_draft":"Saving to draft","pages.galleries.create.drafts_limit_modal_title":"Draft Gallery Limit","pages.galleries.create.drafts_limit_modal_message":"You’ve hit your limit for draft galleries. While you can still make new galleries and publish them, they won’t be saved as drafts. To Free up space, you can either delete existing drafts or publish them.","pages.galleries.create.drafts_limit_modal_cancel":"Go to Drafts","pages.galleries.delete_modal.title":"Delete Gallery","pages.galleries.delete_modal.confirmation_text":"Are you sure you want to delete the gallery? Deleting a Gallery is permanent, all associated views and likes will be lost.","pages.galleries.consists_of_collections":"{0} This gallery consists of {{count}} collections|{1} This gallery consists of {{count}} collection|[2,*] This gallery consists of {{count}} collections","pages.galleries.guest_banner.title":"Craft the ultimate","pages.galleries.guest_banner.subtitle":"Pick your favorites, curate your gallery, & share it with the world.","pages.profile.title":"Profile","pages.token_panel.balance_tooltip":"Total percentage of the portfolio held in this token","pages.token_panel.insufficient_funds":"Insufficient Balance","pages.token_panel.error":"Dashbrd has failed to load token information. Please try again later.","pages.token_panel.failed_to_retrieve_transactions":"We were unable to fetch your transactions.","pages.token_panel.tabs.transaction_history":"Transaction History","pages.token_panel.tabs.history":"History","pages.token_panel.tabs.market_data":"Market Data","pages.token_panel.details.current_price":"Current Price","pages.token_panel.details.title":"Token Details","pages.token_panel.details.market_cap":"Market Cap","pages.token_panel.details.volume":"Daily Volume","pages.token_panel.details.supply":"Minted Supply","pages.token_panel.details.ath":"All-Time High","pages.token_panel.details.atl":"All-Time Low","pages.token_panel.chart.failed":"Dashbrd has failed to load chart information. Please try again later.","pages.transaction_details_panel.title":"Transaction Details","pages.transaction_details_panel.details.blockchain":"Blockchain","pages.transaction_details_panel.details.timestamp":"Timestamp","pages.transaction_details_panel.details.transaction_hash":"Transaction Hash","pages.transaction_details_panel.details.transaction_fee":"Transaction Fee","pages.transaction_details_panel.details.gas_price":"Gas Price","pages.transaction_details_panel.details.gas_used":"Gas Used","pages.transaction_details_panel.details.nonce":"Nonce","pages.send_receive_panel.send.labels.token_and_amount":"Token and Amount","pages.send_receive_panel.send.labels.destination_address":"Destination Address","pages.send_receive_panel.send.labels.projected_fee":"Projected Fee","pages.send_receive_panel.send.placeholders.enter_amount":"Enter Amount","pages.send_receive_panel.send.placeholders.insert_recipient_address":"Insert Recipient Address","pages.send_receive_panel.send.placeholders.projected_fee":"Projected Fee","pages.send_receive_panel.send.errors.amount":"Insufficient Funds: You do not have enough to cover the amount + fee.","pages.send_receive_panel.send.errors.destination":"Destination address is not correct. Check and input again.","pages.send_receive_panel.send.hints.token_price":"Token Price","pages.send_receive_panel.send.fees.Fast":"Fast","pages.send_receive_panel.send.fees.Avg":"Avg","pages.send_receive_panel.send.fees.Slow":"Slow","pages.send_receive_panel.send.search_dropdown.placeholder":"Search token","pages.send_receive_panel.send.search_dropdown.no_results":"No Results","pages.send_receive_panel.send.search_dropdown.error":"Error occurred while searching tokens.","pages.send_receive_panel.send.transaction_time":"Transaction Time: ~{{ time }} minutes","pages.send_receive_panel.send.from":"From","pages.send_receive_panel.send.to":"To","pages.send_receive_panel.send.amount":"Amount","pages.send_receive_panel.send.fee":"Fee","pages.send_receive_panel.send.total_amount":"Total Amount","pages.send_receive_panel.send.waiting_message":"Review and verify the information on your MetaMask. Sign to send the transaction.","pages.send_receive_panel.send.waiting_spinner_text":"Waiting for confirmation...","pages.send_receive_panel.send.failed_message":"It looks like something went wrong while sending your transaction. Press 'Retry' to make another attempt.","pages.send_receive_panel.receive.alert":"Send only Polygon or Ethereum Network compatible tokens to this address or you could permanently lose your funds!","pages.settings.title":"Settings","pages.settings.sidebar.general":"General","pages.settings.sidebar.notifications":"Notifications","pages.settings.sidebar.session_history":"Sessions History","pages.settings.general.title":"Settings","pages.settings.general.subtitle":"Customize your App Experience","pages.settings.general.currency":"Currency","pages.settings.general.currency_subtitle":"Select your default currency which will be used throughout the app.","pages.settings.general.time_date":"Time & Date","pages.settings.general.time_date_subtitle":"Select how you want time and date be shown inside app.","pages.settings.general.date_format":"Date Format","pages.settings.general.time_format":"Time Format","pages.settings.general.timezone":"Timezone","pages.settings.general.set_defaults":"Set Defaults","pages.settings.general.set_defaults_content":"Reverting to the default settings will remove any customizations previously made. Are you sure?","pages.settings.general.save":"Save Settings","pages.settings.general.saved":"Your settings have been successfully saved","pages.wallet.title":"Wallet","pages.privacy_policy.title":"Privacy Policy","pages.terms_of_service.title":"Terms of Service","pagination.previous":"« Previous","pagination.next":"Next »","passwords.reset":"Your password has been reset!","passwords.sent":"We have emailed your password reset link!","passwords.throttled":"Please wait before retrying.","passwords.token":"This password reset token is invalid.","passwords.user":"We can't find a user with that email address.","urls.landing":"https://dashbrd.com","urls.cookie_policy":"https://dashbrd.com/cookie-policy","urls.privacy_policy":"https://dashbrd.com/privacy-policy","urls.terms_of_service":"https://dashbrd.com/terms-of-service","urls.twitter":"https://x.com/DashbrdApp","urls.discord":"https://discord.gg/MJyWKkCJ5k","urls.github":"https://github.com/ArdentHQ/dashbrd","urls.coingecko":"https://www.coingecko.com","urls.etherscan":"https://etherscan.io","urls.polygonscan":"https://polygonscan.com","urls.alchemy":"https://www.alchemy.com","urls.moralis":"https://moralis.io","urls.mnemonic":"https://www.mnemonichq.com","urls.opensea":"https://opensea.io/","urls.explorers.etherscan.token_transactions":"https://etherscan.io/token/{{token}}?a={{address}}","urls.explorers.etherscan.addresses":"https://etherscan.io/address/{{address}}","urls.explorers.etherscan.transactions":"https://etherscan.io/tx/{{id}}","urls.explorers.etherscan.nft":"https://etherscan.io/nft/{{address}}/{{nftId}}","urls.explorers.polygonscan.token_transactions":"https://polygonscan.com/token/{{token}}?a={{address}}","urls.explorers.polygonscan.addresses":"https://polygonscan.com/address/{{address}}","urls.explorers.polygonscan.transactions":"https://polygonscan.com/tx/{{id}}","urls.explorers.polygonscan.nft":"https://polygonscan.com/nft/{{address}}/{{nftId}}","urls.explorers.mumbai.token_transactions":"https://mumbai.polygonscan.com/token/{{token}}?a={{address}}","urls.explorers.mumbai.addresses":"https://mumbai.polygonscan.com/address/{{address}}","urls.explorers.mumbai.transactions":"https://mumbai.polygonscan.com/tx/{{id}}","urls.explorers.mumbai.nft":"https://mumbai.polygonscan.com/nft/{{address}}/{{nftId}}","urls.explorers.goerli.token_transactions":"https://goerli.etherscan.io/token/{{token}}?a={{address}}","urls.explorers.goerli.addresses":"https://goerli.etherscan.io/address/{{address}}","urls.explorers.goerli.transactions":"https://goerli.etherscan.io/tx/{{id}}","urls.explorers.goerli.nft":"https://goerli.etherscan.io/nft/{{address}}/{{nftId}}","urls.marketplaces.opensea.collection":"https://opensea.io/assets/{{network}}/{{address}}","urls.marketplaces.opensea.nft":"https://opensea.io/assets/{{network}}/{{address}}/{{nftId}}","urls.marketplaces.rarible.collection":"https://rarible.com/collection/{{address}}/items","urls.marketplaces.rarible.nft":"https://rarible.com/token/{{address}}:{{nftId}}","urls.marketplaces.blur.collection":"https://blur.io/collection/{{address}}","urls.marketplaces.blur.nft":"https://blur.io/asset/{{address}}/{{nftId}}","urls.marketplaces.looksrare.collection":"https://looksrare.org/collections/{{address}}","urls.marketplaces.looksrare.nft":"https://looksrare.org/collections/{{address}}/{{nftId}}","validation.accepted":"The {{attribute}} must be accepted.","validation.accepted_if":"The {{attribute}} must be accepted when {{other}} is {{value}}.","validation.active_url":"The {{attribute}} is not a valid URL.","validation.after":"The {{attribute}} must be a date after {{date}}.","validation.after_or_equal":"The {{attribute}} must be a date after or equal to {{date}}.","validation.alpha":"The {{attribute}} must only contain letters.","validation.alpha_dash":"The {{attribute}} must only contain letters, numbers, dashes and underscores.","validation.alpha_num":"The {{attribute}} must only contain letters and numbers.","validation.array":"The {{attribute}} must be an array.","validation.ascii":"The {{attribute}} must only contain single-byte alphanumeric characters and symbols.","validation.before":"The {{attribute}} must be a date before {{date}}.","validation.before_or_equal":"The {{attribute}} must be a date before or equal to {{date}}.","validation.between.array":"The {{attribute}} must have between {{min}} and {{max}} items.","validation.between.file":"The {{attribute}} must be between {{min}} and {{max}} kilobytes.","validation.between.numeric":"The {{attribute}} must be between {{min}} and {{max}}.","validation.between.string":"The {{attribute}} must be between {{min}} and {{max}} characters.","validation.boolean":"The {{attribute}} field must be true or false.","validation.confirmed":"The {{attribute}} confirmation does not match.","validation.current_password":"The password is incorrect.","validation.date":"The {{attribute}} is not a valid date.","validation.date_equals":"The {{attribute}} must be a date equal to {{date}}.","validation.date_format":"The {{attribute}} does not match the format {{format}}.","validation.decimal":"The {{attribute}} must have {{decimal}} decimal places.","validation.declined":"The {{attribute}} must be declined.","validation.declined_if":"The {{attribute}} must be declined when {{other}} is {{value}}.","validation.different":"The {{attribute}} and {{other}} must be different.","validation.digits":"The {{attribute}} must be {{digits}} digits.","validation.digits_between":"The {{attribute}} must be between {{min}} and {{max}} digits.","validation.dimensions":"The {{attribute}} has invalid image dimensions.","validation.distinct":"The {{attribute}} field has a duplicate value.","validation.doesnt_end_with":"The {{attribute}} may not end with one of the following: {{values}}.","validation.doesnt_start_with":"The {{attribute}} may not start with one of the following: {{values}}.","validation.email":"The {{attribute}} must be a valid email address.","validation.ends_with":"The {{attribute}} must end with one of the following: {{values}}.","validation.enum":"The selected {{attribute}} is invalid.","validation.exists":"The selected {{attribute}} is invalid.","validation.file":"The {{attribute}} must be a file.","validation.filled":"The {{attribute}} field must have a value.","validation.gt.array":"The {{attribute}} must have more than {{value}} items.","validation.gt.file":"The {{attribute}} must be greater than {{value}} kilobytes.","validation.gt.numeric":"The {{attribute}} must be greater than {{value}}.","validation.gt.string":"The {{attribute}} must be greater than {{value}} characters.","validation.gte.array":"The {{attribute}} must have {{value}} items or more.","validation.gte.file":"The {{attribute}} must be greater than or equal to {{value}} kilobytes.","validation.gte.numeric":"The {{attribute}} must be greater than or equal to {{value}}.","validation.gte.string":"The {{attribute}} must be greater than or equal to {{value}} characters.","validation.image":"The {{attribute}} must be an image.","validation.in":"The selected {{attribute}} is invalid.","validation.in_array":"The {{attribute}} field does not exist in {{other}}.","validation.integer":"The {{attribute}} must be an integer.","validation.ip":"The {{attribute}} must be a valid IP address.","validation.ipv4":"The {{attribute}} must be a valid IPv4 address.","validation.ipv6":"The {{attribute}} must be a valid IPv6 address.","validation.json":"The {{attribute}} must be a valid JSON string.","validation.lowercase":"The {{attribute}} must be lowercase.","validation.lt.array":"The {{attribute}} must have less than {{value}} items.","validation.lt.file":"The {{attribute}} must be less than {{value}} kilobytes.","validation.lt.numeric":"The {{attribute}} must be less than {{value}}.","validation.lt.string":"The {{attribute}} must be less than {{value}} characters.","validation.lte.array":"The {{attribute}} must not have more than {{value}} items.","validation.lte.file":"The {{attribute}} must be less than or equal to {{value}} kilobytes.","validation.lte.numeric":"The {{attribute}} must be less than or equal to {{value}}.","validation.lte.string":"The {{attribute}} must be less than or equal to {{value}} characters.","validation.mac_address":"The {{attribute}} must be a valid MAC address.","validation.max.array":"The {{attribute}} must not have more than {{max}} items.","validation.max.file":"The {{attribute}} must not be greater than {{max}} kilobytes.","validation.max.numeric":"The {{attribute}} must not be greater than {{max}}.","validation.max.string":"The {{attribute}} must not be greater than {{max}} characters.","validation.max_digits":"The {{attribute}} must not have more than {{max}} digits.","validation.mimes":"The {{attribute}} must be a file of type: {{values}}.","validation.mimetypes":"The {{attribute}} must be a file of type: {{values}}.","validation.min.array":"The {{attribute}} must have at least {{min}} items.","validation.min.file":"The {{attribute}} must be at least {{min}} kilobytes.","validation.min.numeric":"The {{attribute}} must be at least {{min}}.","validation.min.string":"The {{attribute}} must be at least {{min}} characters.","validation.min_digits":"The {{attribute}} must have at least {{min}} digits.","validation.missing":"The {{attribute}} field must be missing.","validation.missing_if":"The {{attribute}} field must be missing when {{other}} is {{value}}.","validation.missing_unless":"The {{attribute}} field must be missing unless {{other}} is {{value}}.","validation.missing_with":"The {{attribute}} field must be missing when {{values}} is present.","validation.missing_with_all":"The {{attribute}} field must be missing when {{values}} are present.","validation.multiple_of":"The {{attribute}} must be a multiple of {{value}}.","validation.not_in":"The selected {{attribute}} is invalid.","validation.not_regex":"The {{attribute}} format is invalid.","validation.numeric":"The {{attribute}} must be a number.","validation.password.letters":"The {{attribute}} must contain at least one letter.","validation.password.mixed":"The {{attribute}} must contain at least one uppercase and one lowercase letter.","validation.password.numbers":"The {{attribute}} must contain at least one number.","validation.password.symbols":"The {{attribute}} must contain at least one symbol.","validation.password.uncompromised":"The given {{attribute}} has appeared in a data leak. Please choose a different {{attribute}}.","validation.present":"The {{attribute}} field must be present.","validation.prohibited":"The {{attribute}} field is prohibited.","validation.prohibited_if":"The {{attribute}} field is prohibited when {{other}} is {{value}}.","validation.prohibited_unless":"The {{attribute}} field is prohibited unless {{other}} is in {{values}}.","validation.prohibits":"The {{attribute}} field prohibits {{other}} from being present.","validation.regex":"The {{attribute}} format is invalid.","validation.required":"The {{attribute}} field is required.","validation.required_array_keys":"The {{attribute}} field must contain entries for: {{values}}.","validation.required_if":"The {{attribute}} field is required when {{other}} is {{value}}.","validation.required_if_accepted":"The {{attribute}} field is required when {{other}} is accepted.","validation.required_unless":"The {{attribute}} field is required unless {{other}} is in {{values}}.","validation.required_with":"The {{attribute}} field is required when {{values}} is present.","validation.required_with_all":"The {{attribute}} field is required when {{values}} are present.","validation.required_without":"The {{attribute}} field is required when {{values}} is not present.","validation.required_without_all":"The {{attribute}} field is required when none of {{values}} are present.","validation.same":"The {{attribute}} and {{other}} must match.","validation.size.array":"The {{attribute}} must contain {{size}} items.","validation.size.file":"The {{attribute}} must be {{size}} kilobytes.","validation.size.numeric":"The {{attribute}} must be {{size}}.","validation.size.string":"The {{attribute}} must be {{size}} characters.","validation.starts_with":"The {{attribute}} must start with one of the following: {{values}}.","validation.string":"The {{attribute}} must be a string.","validation.timezone":"The {{attribute}} must be a valid timezone.","validation.unique":"The {{attribute}} has already been taken.","validation.uploaded":"The {{attribute}} failed to upload.","validation.uppercase":"The {{attribute}} must be uppercase.","validation.url":"The {{attribute}} must be a valid URL.","validation.ulid":"The {{attribute}} must be a valid ULID.","validation.uuid":"The {{attribute}} must be a valid UUID.","validation.custom.attribute-name.rule-name":"custom-message","validation.unsupported_currency_code":"The currency code you provided is invalid or not supported.","validation.unsupported_period":"The period you provided is invalid or not supported.","validation.unsupported_token_symbol":"The token symbol you provided is invalid or not supported.","validation.gallery_title_required":"Gallery name is required.","validation.gallery_title_max_characters":"The gallery name should not exceed 50 characters.","validation.gallery_title_invalid":"The gallery name is invalid.","validation.nfts_required":"Please add at least one NFT.","validation.nfts_max_size":"Galleries can contain no more than {{limit}} NFTs","validation.invalid_nfts":"The NFT in position {{position}} is invalid, please select another one.","validation.invalid_cover":"You have selected an invalid cover image, please try another one."} \ No newline at end of file +{"auth.welcome":"Welcome to Dashbrd","auth.logged_in":"You're logged in!","auth.log_out":"Log out","auth.failed":"These credentials do not match our records.","auth.session_timeout":"Your session has timed out. Please refresh the page and try connecting your account again.","auth.session_timeout_modal":"Seems like your session has timed out. Please connnect your wallet again.","auth.password":"The provided password is incorrect.","auth.throttle":"Too many login attempts. Please try again in {{seconds}} seconds.","auth.wallet.connecting":"Connecting …","auth.wallet.waiting_for_signature":"Waiting for Signature …","auth.wallet.switching_wallet":"Switching Wallet …","auth.wallet.connect":"Connect Wallet","auth.wallet.connect_long":"Connect Your Wallet to Get Started","auth.wallet.sign_subtitle":"Connect Your Wallet to Continue","auth.wallet.disconnect":"Disconnect Wallet","auth.wallet.install":"Install MetaMask","auth.wallet.install_long":"Install MetaMask to Get Started","auth.wallet.sign":"Sign Message","auth.wallet.sign_message":"Welcome to Dashbrd. In order to login, sign this message with your wallet. It doesn't cost you anything!\n\nSigning ID (you can ignore this): {{nonce}}","auth.wallet.connect_subtitle":"Click on the MetaMask icon in your browser to confirm the action and connect your wallet.","auth.wallet.requires_signature":"In order to prevent impersonation, we require a signature to perform this action. This signature is only a signed message and does not give any access to your wallet.","auth.errors.metamask.no_account":"No account found. Please connect your wallet and try again.","auth.errors.metamask.generic":"Connection attempt error. Please retry and follow the steps to connect your wallet.","auth.errors.metamask.invalid_network":"Please switch to Polygon or Ethereum Mainnet in your MetaMask plugin to connect to Dashbrd.","auth.errors.metamask.provider_missing":"You don't have MetaMask installed in your browser. Please install and try again.","auth.errors.metamask.user_rejected":"It looks like you cancelled signing of the authentication message. Please try again.","auth.errors.metamask.provider_not_set":"Ethereum provider is not set","auth.validation.wallet_login_failed":"There was a problem trying to verify your signature. Please try again.","auth.validation.invalid_address":"Your wallet address is invalid. Please try again.","auth.validation.invalid_signature":"Signature is invalid. Please try again.","auth.validation.invalid_network":"Please switch to Polygon or Ethereum Mainnet in your MetaMask plugin to connect to Dashbrd.","common.author":"Author","common.add":"Add","common.amount":"Amount","common.balance":"Balance","common.cancel":"Cancel","common.delete":"Delete","common.edit":"Edit","common.confirm":"Confirm","common.connect":"Connect","common.continue":"Continue","common.done":"Done","common.filter":"Filter","common.items":"Items","common.receive":"Receive","common.received":"Received","common.retry":"Retry","common.records":"Records","common.save":"Save","common.send":"Send","common.sent":"Sent","common.show":"Show","common.searching":"Searching...","common.other":"Other","common.owned":"Owned","common.token":"Token","common.tokens":"Tokens","common.wallet":"Wallet","common.pending":"Pending","common.publish":"Publish","common.published":"Published","common.empty":"Empty","common.your_address":"Your Address","common.warning":"Warning","common.my_address":"My Address","common.my_wallet":"My Wallet","common.my_collections":"My Collections","common.my_balance":"My Balance","common.na":"N/A","common.simple_plural_without_data":"One comment|Many comments","common.simple_plural_with_data":"{{count}} comment|{{count}} comments","common.advanced_plural_without_data":"{0} no comments yet|{1} 1 comment|[2,*] Many comments","common.advanced_plural_with_data":"{0} no comments yet|{1} 1 comment|[2,*] {{count}} comments","common.copy_clipboard":"Copy to Clipboard","common.copy":"Copy","common.download":"Download","common.zoom":"Zoom","common.my_collection":"My Collection","common.max":"Max","common.chain":"Chain","common.copied":"Copied!","common.coming_soon":"Coming Soon","common.more_details":"More Details","common.close":"Close","common.close_toast":"Close toast","common.loading":"Loading","common.price":"Price","common.articles":"Articles","common.most_popular":"Most Popular","common.market_cap":"Market Cap","common.volume":"Volume","common.volume_frequency":"Volume {{frequency}}","common.value":"Value","common.last_n_days":"Last {{count}} Days","common.details":"Details","common.view_all":"View All","common.view_more_on_polygonscan":"View More on Polygonscan","common.view_more_on_etherscan":"View More on Etherscan","common.view_nft_on_etherscan":"View NFT on Etherscan","common.view_nft_on_polygonscan":"View NFT on Polygonscan","common.view_nft_on_goerli_tesnet":"View NFT on Goerli Testnet Explorer","common.view_nft_on_mumbai_tesnet":"View NFT on Mumbai Testnet Explorer","common.polygonscan":"Polygonscan","common.etherscan":"Etherscan","common.featured":"Featured","common.floor_price":"Floor Price","common.floor":"Floor","common.supply":"Supply","common.owners":"Owners","common.created":"Created","common.nft":"NFT","common.collection":"Collection","common.collections":"Collections","common.gallery":"Gallery","common.basic_gallery":"Basic Gallery","common.gallery_name":"Gallery Name","common.create_gallery":"Create Gallery","common.external_link":"External Link","common.follow_link":"Follow Link","common.cover":"Cover","common.template":"Template","common.page":"Page","common.polygon":"Polygon","common.ethereum":"Ethereum","common.mumbai":"Mumbai","common.goerli":"Goerli","common.of":"of","common.pagination_input_placeholder":"Enter the page number","common.pagination_input_placeholder_mobile":"Page number","common.nft_count":"{0} {{count}} NFTs|{1} {{count}} NFT|[2,*] {{count}} NFTs","common.nft_gallery":"NFT Gallery","common.unable_to_retrieve_image":"Unable to retrieve your NFT image at this time","common.optional":"Optional","common.selected":"Selected","common.select":"Select","common.preview":"Preview","common.image_size_error":"Image size must not exceed 2MB","common.image_dimensions_error":"Image dimensions must exceed 287px x 190px","common.write_to_confirm":"Write {{word}} to confirm","common.n_hours":"{0} {{count}} hour|{1} {{count}} hour|[2,*] {{count}} hours","common.n_minutes":"{0} {{count}} minute|{1} {{count}} minute|[2,*] {{count}} minutes","common.report":"Report","common.n_nfts":"{0}NFTs|{1}NFT|[2,*]NFTs","common.n_collections":"{0}collections|{1}collection|[2,*]collections","common.back":"Back","common.back_to":"Back to","common.name":"Name","common.type":"Type","common.from":"From","common.to":"To","common.sale_price":"Sale Price","common.recent_activity":"Recent Activity","common.time":"Time","common.datetime.few_seconds_ago":"A few seconds ago","common.datetime.minutes_ago":"{0} Less than a minute ago|{1} A minute ago|[2,*] {{count}} minutes ago","common.datetime.hours_ago":"{0} Less than an hour ago|{1} An hour ago|[2,*] {{count}} hours ago","common.datetime.days_ago":"{0} Less than a day ago|{1} A day ago|[2,*] {{count}} days ago","common.datetime.weeks_ago":"{0} Less than a week ago|{1} A week ago|[2,*] {{count}} weeks ago","common.datetime.months_ago":"{0} Less than a month ago|{1} A month ago|[2,*] {{count}} months ago","common.datetime.years_ago":"{0} Less than a year ago|{1} A year ago|[2,*] {{count}} years ago","common.no_traits_found":"No traits found.","common.empty_transactions":"You don't have any transactions yet. Once transactions have been made, they will show up here.","common.error":"Error","common.refresh":"Refresh","common.refresh_metadata":"Refresh Metadata","common.refreshing_metadata":"Refreshing Metadata... Please check back later.","common.refreshing_activity":"Refreshing Activity... Please check back later.","common.pending_confirmation":"Pending Confirmation","common.confirmed_transaction":"Confirmed Transaction","common.transaction_error":"Transaction Error","common.transaction_error_description_first_part":"Your transaction encountered an error. View this transaction on","common.transaction_error_description_second_part":"for more details.","common.home":"Home","common.contact":"Contact","common.menu":"Menu","common.website":"Website","common.twitter":"Twitter","common.discord":"Discord","common.facebook":"Facebook","common.reddit":"Reddit","common.x":"X","common.sort":"Sort","common.drafts":"Drafts","common.draft":"Draft","common.delete_draft":"Delete Draft","common.share_on":"Share on {{platform}}","common.top":"Top","common.all_chains":"All chains","footer.copyright":"{{year}} © Dashbrd. All rights reserved.","footer.all_rights_reserved":"All rights reserved","footer.privacy_policy":"Privacy Policy","footer.terms_of_service":"Terms of Service","footer.powered_by":"Powered by","format.fiat":"{{ value, currency }}","format.number":"{{ value, number }}","metatags.home.title":"Dashbrd | Web3 Portfolio Management Made Simple","metatags.home.description":"Simplify your Web3 journey with Dashbrd. Manage your portfolio of tokens, NFTs, and other digital collectibles across the Ethereum and Polygon blockchains.","metatags.home.image":"/images/meta/home.png","metatags.error.title":"Error {{code}} | Dashbrd","metatags.wallet.title":"My Wallet | Dashbrd","metatags.galleries.title":"Top NFT Galleries | Dashbrd","metatags.galleries.image":"/images/meta/nft-galleries.png","metatags.galleries.description":"Explore user published NFT galleries to find custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.most_popular.title":"Most Popular Galleries | Dashbrd","metatags.galleries.most_popular.image":"/images/meta/most-popular-nft-galleries.png","metatags.galleries.most_popular.description":"Explore and discover Most Popular NFT Galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.newest.title":"Newest Galleries | Dashbrd","metatags.galleries.newest.image":"/images/meta/newest-nft-galleries.png","metatags.galleries.newest.description":"Explore and discover most recent NFT galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More","metatags.galleries.most_valuable.title":"Most Valuable Galleries | Dashbrd","metatags.galleries.most_valuable.image":"/images/meta/most-valuable-nft-galleries.png","metatags.galleries.most_valuable.description":"Explore and discover Most Valuable NFT Galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.view.title":"{{name}} | Dashbrd","metatags.galleries.view.description":"{{name}} | A Curated NFT Gallery at Dashbrd","metatags.galleries.view.image":"/images/meta/nft-gallery.png","metatags.my_galleries.title":"My Galleries | Dashbrd","metatags.my_galleries.title_draft":"My Draft Galleries | Dashbrd","metatags.my_galleries.create.title":"Create Gallery | Dashbrd","metatags.my_galleries.edit.title":"Edit {{name}} | Dashbrd","metatags.collections.title":"Collections | Dashbrd","metatags.collections.view.title":"{{name}} Collection | Dashbrd","metatags.collections.view.description":"Immerse yourself in the intricate details of {{name}} collection, featuring remarkable digital assets. Start your NFT journey today!","metatags.collections.view.image":"/images/meta/nft-collection.png","metatags.my-collections.title":"My Collections | Dashbrd","metatags.nfts.view.title":"{{nft}} NFT | Dashbrd","metatags.nfts.view.description":"Uncover the complete story of {{nft}} NFT from the {{collection}} collection, delving into its unique attributes and distinctive features.","metatags.nfts.view.image":"/images/meta/nft-details.png","metatags.settings.title":"Settings | Dashbrd","metatags.articles.title":"Articles | Dashbrd","metatags.articles.view.title":"{{title}} | Dashbrd","metatags.login.title":"Login | Dashbrd","metatags.privacy_policy.title":"Privacy Policy | Dashbrd","metatags.privacy_policy.description":"Dashbrd’s privacy policy outlines the information we collect and explains your choices surrounding how we use information about you.","metatags.terms_of_service.title":"Terms of Service | Dashbrd","metatags.terms_of_service.description":"These Terms of Service cover your use and access to services, products or websites of Dashbrd.","metatags.cookie_policy.title":"Cookie Policy | Dashbrd","metatags.cookie_policy.description":"Dashbrd uses cookies to make the website more user-friendly. Find out about the main types of cookies we use, and what we use them for.","metatags.welcome.title":"Welcome to Dashbrd | Web3 Simplified","pages.onboarding.title":"Get Started","pages.onboarding.heading":"Your monkeys were bored and ran off, we are trying to round them up.","pages.onboarding.message":"We are setting up your account. This process usually takes just a few minutes, but can take up to 15 minutes.","pages.error.heading":"Oops, something went wrong ...","pages.error.message":"Please try again or get in touch if the issue persists.","pages.maintenance.title":"Dashbrd is currently down for scheduled maintenance.","pages.maintenance.description":"We expect to be back soon. Thanks for your patience.","pages.dashboard.title":"My Wallet","pages.dashboard.breakdown.title":"Portfolio Breakdown","pages.dashboard.line_chart.data_error":"Could not load chart data","pages.articles.title":"Articles","pages.articles.featured_collections":"Featured Collections","pages.articles.placeholder_more_soon":"More Soon","pages.articles.no_articles":"No articles have been published yet. Please check back later!","pages.articles.header_title":"Explore our collection of","pages.articles.header_suffix_one":"published article","pages.articles.header_suffix_other":"published articles","pages.articles.audio_version":"Audio version","pages.articles.consists_of_collections":"{0} This article highlights {{count}} collections|{1} This article highlights {{count}} collection|[2,*] This article highlights {{count}} collections","pages.collections.title":"Collections","pages.collections.collections":"Collections","pages.collections.popular_collections":"Popular Collections","pages.collections.collection_value":"Collection Value","pages.collections.nfts_owned":"NFTs Owned","pages.collections.header_title":"You own <0>{{nftsCount}} {{nfts}} across <0>{{collectionsCount}} {{collections}}, worth about <0><1>{{worth}}","pages.collections.search_placeholder":"Search by Collection","pages.collections.properties":"Properties","pages.collections.collections_network":"Collections Network","pages.collections.property_search_placeholder":"Feature Search","pages.collections.floor_price":"Floor Price","pages.collections.value":"Value","pages.collections.rarity":"Rarity","pages.collections.report":"Report","pages.collections.hide_collection":"Hide Collection","pages.collections.unhide_collection":"Unhide Collection","pages.collections.no_collections":"You do not own any NFTs yet. Once you do they will be shown here.","pages.collections.all_collections_hidden":"You have hidden all your collections. Unhide and they will appear here.","pages.collections.about_collection":"About Collection","pages.collections.show_hidden":"Show Hidden","pages.collections.show_my_collection":"Show My Collection","pages.collections.owned":"Owned","pages.collections.activities.loading_activities":"We're fetching Activity for this NFT, please hang tight, this can take a while.","pages.collections.activities.loading_activities_collection":"We're fetching Activity for this collection, please hang tight, this can take a while.","pages.collections.activities.ignores_activities":"We don't support activity history for this collection yet.","pages.collections.activities.no_activity":"This collection does not have any activity yet.","pages.collections.activities.types.LABEL_MINT":"Mint","pages.collections.activities.types.LABEL_TRANSFER":"Transfer","pages.collections.activities.types.LABEL_SALE":"Sale","pages.collections.articles.no_articles":"No articles have been linked to this collection as of now.","pages.collections.articles.no_articles_with_filters":"We could not find any articles matching your search criteria, please try again!","pages.collections.articles.search_placeholder":"Search in Articles","pages.collections.articles.sort_latest":"Latest","pages.collections.articles.sort_popularity":"Most Popular","pages.collections.search.loading_results":"Loading results...","pages.collections.search.no_results":"We could not find anything matching your search criteria, please try again!","pages.collections.search.no_results_with_filters":"We could not find anything matching your filters, please try again!","pages.collections.search.no_results_ownership":"You do not own any NFTs in this collection","pages.collections.search.error":"Could not load search results. Please try again later.","pages.collections.sorting.token_number":"Token Number","pages.collections.sorting.recently_received":"Recently Received","pages.collections.sorting.recently_created":"Recently Created","pages.collections.sorting.oldest_collection":"Oldest Collection","pages.collections.traits.description":"List of NFT traits by % of occurrence in the collection","pages.collections.traits.no_traits":"No Properties can be found for this NFT","pages.collections.menu.collection":"Collection","pages.collections.menu.articles":"Articles","pages.collections.menu.activity":"Activity","pages.collections.hidden_modal.collection_hidden":"Collection Hidden","pages.collections.hidden_modal.description":"This collection is currently set to Hidden. Are you sure you want to unhide this collection? You can\n reset the collection to hidden from the collection menu.","pages.collections.hidden_modal.unhide":"Unhide","pages.collections.hidden_modal.error":"Something went wrong. Please try again.","pages.collections.external_modal.you_wish_continue":"You are about to leave Dashbrd to an external website. Dashbrd has no control over the content of\n this site. Are you sure you wish to continue?","pages.collections.external_modal.not_show":"Do not show this message again.","pages.collections.refresh.title":"Refresh your collection","pages.collections.refresh.notice":"You can refresh data every 15 minutes.","pages.collections.refresh.notice_wait":"Please wait. You can refresh data every 15 minutes.","pages.collections.refresh.toast":"We're updating information for your collection.","pages.nfts.nft":"nft","pages.nfts.about_nft":"About NFT","pages.nfts.owned_by":"Owned by","pages.nfts.collection_image":"collection image","pages.nfts.menu.properties":"Properties","pages.nfts.menu.activity":"Activity","pages.reports.title":"Submit a Report","pages.reports.description":"Thanks for looking out by reporting things that break the rules. Let us know what's happening and we'll receive the report.","pages.reports.success":"Thank you for your report. We'll review it and see if it breaks our ToS.","pages.reports.failed":"Something went wrong. Please try again.","pages.reports.throttle":"You have made too many requests. Please wait {{time}} before reporting again.","pages.reports.reported":"You have already reported this {{model}}.","pages.reports.reasons.spam":"Spam","pages.reports.reasons.violence":"Promoting Violence","pages.reports.reasons.hate":"Hate","pages.reports.reasons.inappropriate_content":"Inappropriate Content","pages.reports.reasons.impersonation":"Impersonation","pages.reports.reasons.trademark":"Trademark or Copyright","pages.reports.reasons.selfharm":"Self-Harm","pages.reports.reasons.harassment":"Harassment","pages.galleries.title":"Galleries","pages.galleries.empty_title":"No galleries have been published yet. Once they do they will appear here.","pages.galleries.search.loading_results":"Loading results...","pages.galleries.search.no_results":"We could not find anything matching your search criteria, please try again!","pages.galleries.search.placeholder":"Search by name or curator address","pages.galleries.search.placeholder_nfts":"Search by NFTs","pages.galleries.search.error":"Could not load search results. Please try again later.","pages.galleries.my_galleries.title":"My Galleries","pages.galleries.my_galleries.subtitle":"Manage your galleries","pages.galleries.my_galleries.new_gallery":"New Gallery","pages.galleries.my_galleries.no_galleries":"You have not created any galleries yet. To create a gallery, click on the \"Create Gallery\" button.","pages.galleries.my_galleries.no_draft_galleries":"You have no draft galleries yet. To create a gallery, click on the \"Create Gallery\" button.","pages.galleries.my_galleries.succesfully_deleted":"Gallery has been successfully removed","pages.galleries.my_galleries.draft_succesfully_deleted":"Draft has been successfully removed","pages.galleries.my_galleries.successfully_created":"Gallery has been successfully created","pages.galleries.my_galleries.successfully_updated":"Gallery has been successfully updated","pages.galleries.my_galleries.new_gallery_no_nfts":"Creating a Gallery requires you to own an NFT.","pages.galleries.my_galleries.delete_modal.title":"Delete Draft","pages.galleries.my_galleries.delete_modal.text":"Are you sure you want to delete the draft? Everything you've done will be deleted and you won't be able to get it back.","pages.galleries.my_galleries.nfts_no_longer_owned":"NFTs no longer owned by this wallet have been removed from the draft”","pages.galleries.copy_gallery_link":"Copy Gallery Link","pages.galleries.my_nfts":"My NFTs","pages.galleries.value":"Value","pages.galleries.floor_price":"Floor Price","pages.galleries.nfts":"NFTs","pages.galleries.collections":"Collections","pages.galleries.galleries_count_simple":"{0} galleries|{1} gallery|[2,*] galleries","pages.galleries.galleries_count":"{0} {{count}} Galleries|{1} {{count}} Gallery|[2,*] {{count}} Galleries","pages.galleries.collections_count_simple":"{0} collections|{1} collection|[2,*] collections","pages.galleries.collections_count":"{0} {{count}} Collections|{1} {{count}} Collection|[2,*] {{count}} Collections","pages.galleries.nfts_count_simple":"{0} NFTs|{1} NFT|[2,*] NFTs","pages.galleries.nfts_count":"{0} {{count}} NFTs|{1} {{count}} NFT|[2,*] {{count}} NFTs","pages.galleries.users_count_simple":"{0} users|{1} user|[2,*] users","pages.galleries.users_count":"{0} {{count}} Users|{1} {{count}} User|[2,*] {{count}} Users","pages.galleries.featuring":"Featuring","pages.galleries.curated_by":"Curated by","pages.galleries.worth_about":"Worth About","pages.galleries.valued_at":"valued at","pages.galleries.from":"From","pages.galleries.most_popular_galleries":"Most Popular Galleries","pages.galleries.newest_galleries":"Newest Galleries","pages.galleries.most_valuable_galleries":"Most Valuable Galleries","pages.galleries.most_popular":"Most Popular","pages.galleries.newest":"Newest","pages.galleries.most_valuable":"Most Valuable","pages.galleries.create.search_by_nfts":"Search by NFTs","pages.galleries.create.input_placeholder":"Enter gallery name","pages.galleries.create.title_too_long":"Gallery name must not exceed {{max}} characters.","pages.galleries.create.already_selected_nft":"NFT already exists in this gallery","pages.galleries.create.nft_missing_image":"Only NFTs with images can be added to galleries","pages.galleries.create.nft_gallery_limit":"You can only add 16 NFTs per gallery","pages.galleries.create.gallery_cover":"Gallery Cover","pages.galleries.create.gallery_cover_description":"The cover is used for the card on the gallery list page. While the cover is not a requirement it will allow you to add personality and stand out from the crowd.","pages.galleries.create.gallery_cover_information":"Image dimensions must be at least 287px x 190px, with a max size of 2 MB (JPG, PNG or GIF)","pages.galleries.create.no_results":"We could not find anything matching your search criteria, please try again!","pages.galleries.create.templates.cover":"Cover","pages.galleries.create.templates.template":"Template","pages.galleries.create.templates.select":"Select Gallery Template","pages.galleries.create.templates.basic":"Basic Gallery","pages.galleries.create.templates.coming_soon":"More Coming Soon","pages.galleries.create.load_more_collections_one":"Load {{count}} More Collection","pages.galleries.create.load_more_collections_other":"Load {{count}} More Collections","pages.galleries.create.load_more_nfts":"Load More NFTs","pages.galleries.create.can_purchase":"You can purchase NFTs with these top NFT Marketplaces:","pages.galleries.create.must_own_one_nft":"You must own at least one (1) NFT in order to create a gallery.","pages.galleries.create.back_to_galleries":"Back to Galleries","pages.galleries.create.draft_saved":"Draft Saved","pages.galleries.create.saving_to_draft":"Saving to draft","pages.galleries.create.drafts_limit_modal_title":"Draft Gallery Limit","pages.galleries.create.drafts_limit_modal_message":"You’ve hit your limit for draft galleries. While you can still make new galleries and publish them, they won’t be saved as drafts. To Free up space, you can either delete existing drafts or publish them.","pages.galleries.create.drafts_limit_modal_cancel":"Go to Drafts","pages.galleries.delete_modal.title":"Delete Gallery","pages.galleries.delete_modal.confirmation_text":"Are you sure you want to delete the gallery? Deleting a Gallery is permanent, all associated views and likes will be lost.","pages.galleries.consists_of_collections":"{0} This gallery consists of {{count}} collections|{1} This gallery consists of {{count}} collection|[2,*] This gallery consists of {{count}} collections","pages.galleries.guest_banner.title":"Craft the ultimate","pages.galleries.guest_banner.subtitle":"Pick your favorites, curate your gallery, & share it with the world.","pages.profile.title":"Profile","pages.token_panel.balance_tooltip":"Total percentage of the portfolio held in this token","pages.token_panel.insufficient_funds":"Insufficient Balance","pages.token_panel.error":"Dashbrd has failed to load token information. Please try again later.","pages.token_panel.failed_to_retrieve_transactions":"We were unable to fetch your transactions.","pages.token_panel.tabs.transaction_history":"Transaction History","pages.token_panel.tabs.history":"History","pages.token_panel.tabs.market_data":"Market Data","pages.token_panel.details.current_price":"Current Price","pages.token_panel.details.title":"Token Details","pages.token_panel.details.market_cap":"Market Cap","pages.token_panel.details.volume":"Daily Volume","pages.token_panel.details.supply":"Minted Supply","pages.token_panel.details.ath":"All-Time High","pages.token_panel.details.atl":"All-Time Low","pages.token_panel.chart.failed":"Dashbrd has failed to load chart information. Please try again later.","pages.transaction_details_panel.title":"Transaction Details","pages.transaction_details_panel.details.blockchain":"Blockchain","pages.transaction_details_panel.details.timestamp":"Timestamp","pages.transaction_details_panel.details.transaction_hash":"Transaction Hash","pages.transaction_details_panel.details.transaction_fee":"Transaction Fee","pages.transaction_details_panel.details.gas_price":"Gas Price","pages.transaction_details_panel.details.gas_used":"Gas Used","pages.transaction_details_panel.details.nonce":"Nonce","pages.send_receive_panel.send.labels.token_and_amount":"Token and Amount","pages.send_receive_panel.send.labels.destination_address":"Destination Address","pages.send_receive_panel.send.labels.projected_fee":"Projected Fee","pages.send_receive_panel.send.placeholders.enter_amount":"Enter Amount","pages.send_receive_panel.send.placeholders.insert_recipient_address":"Insert Recipient Address","pages.send_receive_panel.send.placeholders.projected_fee":"Projected Fee","pages.send_receive_panel.send.errors.amount":"Insufficient Funds: You do not have enough to cover the amount + fee.","pages.send_receive_panel.send.errors.destination":"Destination address is not correct. Check and input again.","pages.send_receive_panel.send.hints.token_price":"Token Price","pages.send_receive_panel.send.fees.Fast":"Fast","pages.send_receive_panel.send.fees.Avg":"Avg","pages.send_receive_panel.send.fees.Slow":"Slow","pages.send_receive_panel.send.search_dropdown.placeholder":"Search token","pages.send_receive_panel.send.search_dropdown.no_results":"No Results","pages.send_receive_panel.send.search_dropdown.error":"Error occurred while searching tokens.","pages.send_receive_panel.send.transaction_time":"Transaction Time: ~{{ time }} minutes","pages.send_receive_panel.send.from":"From","pages.send_receive_panel.send.to":"To","pages.send_receive_panel.send.amount":"Amount","pages.send_receive_panel.send.fee":"Fee","pages.send_receive_panel.send.total_amount":"Total Amount","pages.send_receive_panel.send.waiting_message":"Review and verify the information on your MetaMask. Sign to send the transaction.","pages.send_receive_panel.send.waiting_spinner_text":"Waiting for confirmation...","pages.send_receive_panel.send.failed_message":"It looks like something went wrong while sending your transaction. Press 'Retry' to make another attempt.","pages.send_receive_panel.receive.alert":"Send only Polygon or Ethereum Network compatible tokens to this address or you could permanently lose your funds!","pages.settings.title":"Settings","pages.settings.sidebar.general":"General","pages.settings.sidebar.notifications":"Notifications","pages.settings.sidebar.session_history":"Sessions History","pages.settings.general.title":"Settings","pages.settings.general.subtitle":"Customize your App Experience","pages.settings.general.currency":"Currency","pages.settings.general.currency_subtitle":"Select your default currency which will be used throughout the app.","pages.settings.general.time_date":"Time & Date","pages.settings.general.time_date_subtitle":"Select how you want time and date be shown inside app.","pages.settings.general.date_format":"Date Format","pages.settings.general.time_format":"Time Format","pages.settings.general.timezone":"Timezone","pages.settings.general.set_defaults":"Set Defaults","pages.settings.general.set_defaults_content":"Reverting to the default settings will remove any customizations previously made. Are you sure?","pages.settings.general.save":"Save Settings","pages.settings.general.saved":"Your settings have been successfully saved","pages.wallet.title":"Wallet","pages.privacy_policy.title":"Privacy Policy","pages.terms_of_service.title":"Terms of Service","pagination.previous":"« Previous","pagination.next":"Next »","passwords.reset":"Your password has been reset!","passwords.sent":"We have emailed your password reset link!","passwords.throttled":"Please wait before retrying.","passwords.token":"This password reset token is invalid.","passwords.user":"We can't find a user with that email address.","urls.landing":"https://dashbrd.com","urls.cookie_policy":"https://dashbrd.com/cookie-policy","urls.privacy_policy":"https://dashbrd.com/privacy-policy","urls.terms_of_service":"https://dashbrd.com/terms-of-service","urls.twitter":"https://x.com/DashbrdApp","urls.discord":"https://discord.gg/MJyWKkCJ5k","urls.github":"https://github.com/ArdentHQ/dashbrd","urls.coingecko":"https://www.coingecko.com","urls.etherscan":"https://etherscan.io","urls.polygonscan":"https://polygonscan.com","urls.alchemy":"https://www.alchemy.com","urls.moralis":"https://moralis.io","urls.mnemonic":"https://www.mnemonichq.com","urls.opensea":"https://opensea.io/","urls.explorers.etherscan.token_transactions":"https://etherscan.io/token/{{token}}?a={{address}}","urls.explorers.etherscan.addresses":"https://etherscan.io/address/{{address}}","urls.explorers.etherscan.transactions":"https://etherscan.io/tx/{{id}}","urls.explorers.etherscan.nft":"https://etherscan.io/nft/{{address}}/{{nftId}}","urls.explorers.polygonscan.token_transactions":"https://polygonscan.com/token/{{token}}?a={{address}}","urls.explorers.polygonscan.addresses":"https://polygonscan.com/address/{{address}}","urls.explorers.polygonscan.transactions":"https://polygonscan.com/tx/{{id}}","urls.explorers.polygonscan.nft":"https://polygonscan.com/nft/{{address}}/{{nftId}}","urls.explorers.mumbai.token_transactions":"https://mumbai.polygonscan.com/token/{{token}}?a={{address}}","urls.explorers.mumbai.addresses":"https://mumbai.polygonscan.com/address/{{address}}","urls.explorers.mumbai.transactions":"https://mumbai.polygonscan.com/tx/{{id}}","urls.explorers.mumbai.nft":"https://mumbai.polygonscan.com/nft/{{address}}/{{nftId}}","urls.explorers.goerli.token_transactions":"https://goerli.etherscan.io/token/{{token}}?a={{address}}","urls.explorers.goerli.addresses":"https://goerli.etherscan.io/address/{{address}}","urls.explorers.goerli.transactions":"https://goerli.etherscan.io/tx/{{id}}","urls.explorers.goerli.nft":"https://goerli.etherscan.io/nft/{{address}}/{{nftId}}","urls.marketplaces.opensea.collection":"https://opensea.io/assets/{{network}}/{{address}}","urls.marketplaces.opensea.nft":"https://opensea.io/assets/{{network}}/{{address}}/{{nftId}}","urls.marketplaces.rarible.collection":"https://rarible.com/collection/{{address}}/items","urls.marketplaces.rarible.nft":"https://rarible.com/token/{{address}}:{{nftId}}","urls.marketplaces.blur.collection":"https://blur.io/collection/{{address}}","urls.marketplaces.blur.nft":"https://blur.io/asset/{{address}}/{{nftId}}","urls.marketplaces.looksrare.collection":"https://looksrare.org/collections/{{address}}","urls.marketplaces.looksrare.nft":"https://looksrare.org/collections/{{address}}/{{nftId}}","validation.accepted":"The {{attribute}} must be accepted.","validation.accepted_if":"The {{attribute}} must be accepted when {{other}} is {{value}}.","validation.active_url":"The {{attribute}} is not a valid URL.","validation.after":"The {{attribute}} must be a date after {{date}}.","validation.after_or_equal":"The {{attribute}} must be a date after or equal to {{date}}.","validation.alpha":"The {{attribute}} must only contain letters.","validation.alpha_dash":"The {{attribute}} must only contain letters, numbers, dashes and underscores.","validation.alpha_num":"The {{attribute}} must only contain letters and numbers.","validation.array":"The {{attribute}} must be an array.","validation.ascii":"The {{attribute}} must only contain single-byte alphanumeric characters and symbols.","validation.before":"The {{attribute}} must be a date before {{date}}.","validation.before_or_equal":"The {{attribute}} must be a date before or equal to {{date}}.","validation.between.array":"The {{attribute}} must have between {{min}} and {{max}} items.","validation.between.file":"The {{attribute}} must be between {{min}} and {{max}} kilobytes.","validation.between.numeric":"The {{attribute}} must be between {{min}} and {{max}}.","validation.between.string":"The {{attribute}} must be between {{min}} and {{max}} characters.","validation.boolean":"The {{attribute}} field must be true or false.","validation.confirmed":"The {{attribute}} confirmation does not match.","validation.current_password":"The password is incorrect.","validation.date":"The {{attribute}} is not a valid date.","validation.date_equals":"The {{attribute}} must be a date equal to {{date}}.","validation.date_format":"The {{attribute}} does not match the format {{format}}.","validation.decimal":"The {{attribute}} must have {{decimal}} decimal places.","validation.declined":"The {{attribute}} must be declined.","validation.declined_if":"The {{attribute}} must be declined when {{other}} is {{value}}.","validation.different":"The {{attribute}} and {{other}} must be different.","validation.digits":"The {{attribute}} must be {{digits}} digits.","validation.digits_between":"The {{attribute}} must be between {{min}} and {{max}} digits.","validation.dimensions":"The {{attribute}} has invalid image dimensions.","validation.distinct":"The {{attribute}} field has a duplicate value.","validation.doesnt_end_with":"The {{attribute}} may not end with one of the following: {{values}}.","validation.doesnt_start_with":"The {{attribute}} may not start with one of the following: {{values}}.","validation.email":"The {{attribute}} must be a valid email address.","validation.ends_with":"The {{attribute}} must end with one of the following: {{values}}.","validation.enum":"The selected {{attribute}} is invalid.","validation.exists":"The selected {{attribute}} is invalid.","validation.file":"The {{attribute}} must be a file.","validation.filled":"The {{attribute}} field must have a value.","validation.gt.array":"The {{attribute}} must have more than {{value}} items.","validation.gt.file":"The {{attribute}} must be greater than {{value}} kilobytes.","validation.gt.numeric":"The {{attribute}} must be greater than {{value}}.","validation.gt.string":"The {{attribute}} must be greater than {{value}} characters.","validation.gte.array":"The {{attribute}} must have {{value}} items or more.","validation.gte.file":"The {{attribute}} must be greater than or equal to {{value}} kilobytes.","validation.gte.numeric":"The {{attribute}} must be greater than or equal to {{value}}.","validation.gte.string":"The {{attribute}} must be greater than or equal to {{value}} characters.","validation.image":"The {{attribute}} must be an image.","validation.in":"The selected {{attribute}} is invalid.","validation.in_array":"The {{attribute}} field does not exist in {{other}}.","validation.integer":"The {{attribute}} must be an integer.","validation.ip":"The {{attribute}} must be a valid IP address.","validation.ipv4":"The {{attribute}} must be a valid IPv4 address.","validation.ipv6":"The {{attribute}} must be a valid IPv6 address.","validation.json":"The {{attribute}} must be a valid JSON string.","validation.lowercase":"The {{attribute}} must be lowercase.","validation.lt.array":"The {{attribute}} must have less than {{value}} items.","validation.lt.file":"The {{attribute}} must be less than {{value}} kilobytes.","validation.lt.numeric":"The {{attribute}} must be less than {{value}}.","validation.lt.string":"The {{attribute}} must be less than {{value}} characters.","validation.lte.array":"The {{attribute}} must not have more than {{value}} items.","validation.lte.file":"The {{attribute}} must be less than or equal to {{value}} kilobytes.","validation.lte.numeric":"The {{attribute}} must be less than or equal to {{value}}.","validation.lte.string":"The {{attribute}} must be less than or equal to {{value}} characters.","validation.mac_address":"The {{attribute}} must be a valid MAC address.","validation.max.array":"The {{attribute}} must not have more than {{max}} items.","validation.max.file":"The {{attribute}} must not be greater than {{max}} kilobytes.","validation.max.numeric":"The {{attribute}} must not be greater than {{max}}.","validation.max.string":"The {{attribute}} must not be greater than {{max}} characters.","validation.max_digits":"The {{attribute}} must not have more than {{max}} digits.","validation.mimes":"The {{attribute}} must be a file of type: {{values}}.","validation.mimetypes":"The {{attribute}} must be a file of type: {{values}}.","validation.min.array":"The {{attribute}} must have at least {{min}} items.","validation.min.file":"The {{attribute}} must be at least {{min}} kilobytes.","validation.min.numeric":"The {{attribute}} must be at least {{min}}.","validation.min.string":"The {{attribute}} must be at least {{min}} characters.","validation.min_digits":"The {{attribute}} must have at least {{min}} digits.","validation.missing":"The {{attribute}} field must be missing.","validation.missing_if":"The {{attribute}} field must be missing when {{other}} is {{value}}.","validation.missing_unless":"The {{attribute}} field must be missing unless {{other}} is {{value}}.","validation.missing_with":"The {{attribute}} field must be missing when {{values}} is present.","validation.missing_with_all":"The {{attribute}} field must be missing when {{values}} are present.","validation.multiple_of":"The {{attribute}} must be a multiple of {{value}}.","validation.not_in":"The selected {{attribute}} is invalid.","validation.not_regex":"The {{attribute}} format is invalid.","validation.numeric":"The {{attribute}} must be a number.","validation.password.letters":"The {{attribute}} must contain at least one letter.","validation.password.mixed":"The {{attribute}} must contain at least one uppercase and one lowercase letter.","validation.password.numbers":"The {{attribute}} must contain at least one number.","validation.password.symbols":"The {{attribute}} must contain at least one symbol.","validation.password.uncompromised":"The given {{attribute}} has appeared in a data leak. Please choose a different {{attribute}}.","validation.present":"The {{attribute}} field must be present.","validation.prohibited":"The {{attribute}} field is prohibited.","validation.prohibited_if":"The {{attribute}} field is prohibited when {{other}} is {{value}}.","validation.prohibited_unless":"The {{attribute}} field is prohibited unless {{other}} is in {{values}}.","validation.prohibits":"The {{attribute}} field prohibits {{other}} from being present.","validation.regex":"The {{attribute}} format is invalid.","validation.required":"The {{attribute}} field is required.","validation.required_array_keys":"The {{attribute}} field must contain entries for: {{values}}.","validation.required_if":"The {{attribute}} field is required when {{other}} is {{value}}.","validation.required_if_accepted":"The {{attribute}} field is required when {{other}} is accepted.","validation.required_unless":"The {{attribute}} field is required unless {{other}} is in {{values}}.","validation.required_with":"The {{attribute}} field is required when {{values}} is present.","validation.required_with_all":"The {{attribute}} field is required when {{values}} are present.","validation.required_without":"The {{attribute}} field is required when {{values}} is not present.","validation.required_without_all":"The {{attribute}} field is required when none of {{values}} are present.","validation.same":"The {{attribute}} and {{other}} must match.","validation.size.array":"The {{attribute}} must contain {{size}} items.","validation.size.file":"The {{attribute}} must be {{size}} kilobytes.","validation.size.numeric":"The {{attribute}} must be {{size}}.","validation.size.string":"The {{attribute}} must be {{size}} characters.","validation.starts_with":"The {{attribute}} must start with one of the following: {{values}}.","validation.string":"The {{attribute}} must be a string.","validation.timezone":"The {{attribute}} must be a valid timezone.","validation.unique":"The {{attribute}} has already been taken.","validation.uploaded":"The {{attribute}} failed to upload.","validation.uppercase":"The {{attribute}} must be uppercase.","validation.url":"The {{attribute}} must be a valid URL.","validation.ulid":"The {{attribute}} must be a valid ULID.","validation.uuid":"The {{attribute}} must be a valid UUID.","validation.custom.attribute-name.rule-name":"custom-message","validation.unsupported_currency_code":"The currency code you provided is invalid or not supported.","validation.unsupported_period":"The period you provided is invalid or not supported.","validation.unsupported_token_symbol":"The token symbol you provided is invalid or not supported.","validation.gallery_title_required":"Gallery name is required.","validation.gallery_title_max_characters":"The gallery name should not exceed 50 characters.","validation.gallery_title_invalid":"The gallery name is invalid.","validation.nfts_required":"Please add at least one NFT.","validation.nfts_max_size":"Galleries can contain no more than {{limit}} NFTs","validation.invalid_nfts":"The NFT in position {{position}} is invalid, please select another one.","validation.invalid_cover":"You have selected an invalid cover image, please try another one."} \ No newline at end of file diff --git a/resources/js/Pages/Collections/Components/PopularCollectionsFilters/ChainFilters.tsx b/resources/js/Pages/Collections/Components/PopularCollectionsFilters/ChainFilters.tsx new file mode 100644 index 000000000..d5529b4ec --- /dev/null +++ b/resources/js/Pages/Collections/Components/PopularCollectionsFilters/ChainFilters.tsx @@ -0,0 +1,68 @@ +import { Tab } from "@headlessui/react"; +import { Fragment } from "react"; +import { useTranslation } from "react-i18next"; +import { NetworkIcon } from "@/Components/Networks/NetworkIcon"; +import { Tabs } from "@/Components/Tabs"; + +interface Properties { + chain?: ChainFilter; + setChain: (chain?: ChainFilter) => void; +} + +export enum ChainFilter { + polygon = "polygon", + ethereum = "ethereum", +} + +export const ChainFilters = ({ chain, setChain }: Properties): JSX.Element => { + const { t } = useTranslation(); + + return ( + + + + + { + setChain(undefined); + }} + > + {t("common.all_chains")} + + + + + { + setChain(ChainFilter.polygon); + }} + > + + + + + + { + setChain(ChainFilter.ethereum); + }} + > + + + + + + + ); +}; diff --git a/resources/js/Pages/Collections/Components/PopularCollectionsFilters/index.tsx b/resources/js/Pages/Collections/Components/PopularCollectionsFilters/index.tsx new file mode 100644 index 000000000..2a3c2a6e6 --- /dev/null +++ b/resources/js/Pages/Collections/Components/PopularCollectionsFilters/index.tsx @@ -0,0 +1 @@ +export * from "./ChainFilters"; diff --git a/resources/js/Pages/Collections/Index.tsx b/resources/js/Pages/Collections/Index.tsx index 3b3c412d7..73ca95120 100644 --- a/resources/js/Pages/Collections/Index.tsx +++ b/resources/js/Pages/Collections/Index.tsx @@ -1,17 +1,23 @@ import { type PageProps } from "@inertiajs/core"; -import { Head, usePage } from "@inertiajs/react"; +import { Head, router, usePage } from "@inertiajs/react"; +import { useEffect, useState } from "react"; import { useTranslation } from "react-i18next"; import { PopularCollectionsSorting } from "./Components/PopularCollectionsSorting"; import { ButtonLink } from "@/Components/Buttons/ButtonLink"; import { PopularCollectionsTable } from "@/Components/Collections/PopularCollectionsTable"; import { Heading } from "@/Components/Heading"; import { type PaginationData } from "@/Components/Pagination/Pagination.contracts"; +import { useIsFirstRender } from "@/Hooks/useIsFirstRender"; import { DefaultLayout } from "@/Layouts/DefaultLayout"; +import { type ChainFilter, ChainFilters } from "@/Pages/Collections/Components/PopularCollectionsFilters"; interface CollectionsIndexProperties extends PageProps { activeSort: "top" | "floor-price"; title: string; collections: PaginationData; + filters: { + chain: ChainFilter | null; + }; } const CollectionsIndex = ({ @@ -19,14 +25,28 @@ const CollectionsIndex = ({ title, collections: { data: collections }, auth, + filters, }: CollectionsIndexProperties): JSX.Element => { const { t } = useTranslation(); const { props } = usePage(); - const collectionsColumn1: App.Data.Collections.PopularCollectionData[] = collections.slice(0, 6); + const [chain, setChain] = useState(filters.chain ?? undefined); - const collectionsColumn2: App.Data.Collections.PopularCollectionData[] = collections.slice(6, 12); + const isFirstRender = useIsFirstRender(); + + useEffect(() => { + if (isFirstRender) return; + + router.get( + route("collections"), + { chain }, + { + preserveScroll: true, + preserveState: true, + }, + ); + }, [chain]); return ( @@ -42,8 +62,12 @@ const CollectionsIndex = ({
    -
    +
    +
    @@ -55,14 +79,14 @@ const CollectionsIndex = ({
    diff --git a/resources/js/icons.tsx b/resources/js/icons.tsx index c09620f66..fc2831515 100644 --- a/resources/js/icons.tsx +++ b/resources/js/icons.tsx @@ -45,6 +45,7 @@ import { ReactComponent as Document } from "@icons/document.svg"; import { ReactComponent as DoorExit } from "@icons/door-exit.svg"; import { ReactComponent as DoubleCheck } from "@icons/double-check.svg"; import { ReactComponent as Ellipsis } from "@icons/ellipsis.svg"; +import { ReactComponent as Ethereum } from "@icons/ethereum.svg"; import { ReactComponent as ExclamationInTriangle } from "@icons/exclamation-in-triangle.svg"; import { ReactComponent as Explorer } from "@icons/explorer.svg"; import { ReactComponent as Eye } from "@icons/eye.svg"; @@ -86,6 +87,7 @@ import { ReactComponent as WalletOpacity } from "@icons/opacity/wallet.svg"; import { ReactComponent as Pencil } from "@icons/pencil.svg"; import { ReactComponent as PlusInMagnifyingGlass } from "@icons/plus-in-magnifying-glass.svg"; import { ReactComponent as Plus } from "@icons/plus.svg"; +import { ReactComponent as Polygon } from "@icons/polygon.svg"; import { ReactComponent as Redo } from "@icons/redo.svg"; import { ReactComponent as Refresh } from "@icons/refresh.svg"; import { ReactComponent as RoundedSquareWithPencil } from "@icons/rounded-square-with-pencil.svg"; @@ -228,4 +230,6 @@ export const SvgCollection = { FatDoubleCheck, AudioPause, AudioPlay, + Polygon, + Ethereum, }; diff --git a/tests/App/Models/CollectionTest.php b/tests/App/Models/CollectionTest.php index c4dbea64a..8612696ee 100644 --- a/tests/App/Models/CollectionTest.php +++ b/tests/App/Models/CollectionTest.php @@ -254,6 +254,37 @@ expect(Collection::search($user, '9999')->count())->toBe(1); }); +it('should filter collections by chainId', function () { + $ethNetwork = Network::query()->where('chain_id', 1)->first(); + $polygonNetwork = Network::query()->where('chain_id', 137)->first(); + + Collection::factory()->create([ + 'name' => 'Collection 1', + 'network_id' => $ethNetwork->id, + ]); + + Collection::factory()->create([ + 'name' => 'Collection 2', + 'network_id' => $polygonNetwork->id, + ]); + + $ethCollections = Collection::query()->filterByChainId(1)->get(); + + expect($ethCollections->count())->toBe(1) + ->and($ethCollections->first()->name)->toBe('Collection 1'); + + $polygonCollections = Collection::query()->filterByChainId(137)->get(); + + expect($polygonCollections->count())->toBe(1) + ->and($polygonCollections->first()->name)->toBe('Collection 2'); + + $allCollections = Collection::query()->filterByChainId(null)->orderBy('id')->get(); + + expect($allCollections->count())->toBe(2) + ->and($allCollections[0]->name)->toBe('Collection 1') + ->and($allCollections[1]->name)->toBe('Collection 2'); +}); + it('filters the collections by nft concatenated name', function () { $user = createUser(); From e07966e7c5b18e46fd087e10dca742df39dc4cf5 Mon Sep 17 00:00:00 2001 From: Patricio Marroquin <55117912+patricio0312rev@users.noreply.github.com> Date: Mon, 27 Nov 2023 04:14:56 -0500 Subject: [PATCH 010/145] fix: remove login requirement for collections overview page (#506) --- app/Http/Controllers/CollectionController.php | 1 + 1 file changed, 1 insertion(+) diff --git a/app/Http/Controllers/CollectionController.php b/app/Http/Controllers/CollectionController.php index 76d92b768..51df4f692 100644 --- a/app/Http/Controllers/CollectionController.php +++ b/app/Http/Controllers/CollectionController.php @@ -62,6 +62,7 @@ public function index(Request $request): Response|JsonResponse|RedirectResponse ->simplePaginate(12); return Inertia::render('Collections/Index', [ + 'allowsGuests' => true, 'activeSort' => $request->query('sort') === 'floor-price' ? 'floor-price' : 'top', 'filters' => [ 'chain' => $request->query('chain') ?? null, From 07d933cebf040965569548ba0188e6b2ad0b04a1 Mon Sep 17 00:00:00 2001 From: Patricio Marroquin <55117912+patricio0312rev@users.noreply.github.com> Date: Mon, 27 Nov 2023 04:19:50 -0500 Subject: [PATCH 011/145] refactor: limit featured collections to 4 on admin panel (#507) --- app/Filament/Resources/CollectionResource.php | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/app/Filament/Resources/CollectionResource.php b/app/Filament/Resources/CollectionResource.php index 40d963a1e..fe30481c2 100644 --- a/app/Filament/Resources/CollectionResource.php +++ b/app/Filament/Resources/CollectionResource.php @@ -10,6 +10,7 @@ use App\Models\Collection; use Filament\Forms\Components\Select; use Filament\Forms\Form; +use Filament\Notifications\Notification; use Filament\Resources\Resource; use Filament\Tables\Actions\Action; use Filament\Tables\Actions\ActionGroup; @@ -87,9 +88,16 @@ public static function table(Table $table): Table ActionGroup::make([ Action::make('updateIsFeatured') ->action(function (Collection $collection) { - $collection->update([ - 'is_featured' => ! $collection->is_featured, - ]); + if (! $collection->is_featured && Collection::where('is_featured', true)->count() >= 4) { + Notification::make() + ->title('There are already 4 collections marked as featured. Please remove one before selecting a new one.') + ->warning() + ->send(); + } else { + return $collection->update([ + 'is_featured' => ! $collection->is_featured, + ]); + } }) ->label(fn (Collection $collection) => $collection->is_featured ? 'Unmark as featured' : 'Mark as featured') ->icon('heroicon-s-star'), From ae32435c55cc3a6f525c3e2bf335553d3102426f Mon Sep 17 00:00:00 2001 From: Patricio Marroquin <55117912+patricio0312rev@users.noreply.github.com> Date: Mon, 27 Nov 2023 04:49:04 -0500 Subject: [PATCH 012/145] feat: featured collections carousel (#494) --- .../Collections/CollectionFeaturedData.php | 73 ++++++++++++++ app/Http/Controllers/CollectionController.php | 15 +++ app/Models/Collection.php | 6 ++ database/factories/CollectionFactory.php | 1 + database/seeders/NftSeeder.php | 9 ++ lang/en/common.php | 1 + lang/en/pages.php | 4 + resources/css/app.css | 18 ++++ .../PopularCollectionsTable.blocks.tsx | 22 ++--- resources/js/Components/GridHeader.test.tsx | 12 +++ resources/js/Components/GridHeader.tsx | 10 +- resources/js/I18n/Locales/en.json | 2 +- .../CollectionImageWithIcon.tsx | 36 +++++++ .../Components/CollectionImage/index.tsx | 1 + .../CollectionNft/CollectionNft.tsx | 13 ++- .../FeaturedCollectionNfts.tsx | 34 +++++++ .../FeaturedCollectionStats.tsx | 62 ++++++++++++ .../FeaturedCollectionsCarousel.tsx | 28 ++++++ .../FeaturedCollectionsItem.tsx | 99 +++++++++++++++++++ .../Components/FeaturedCollections/index.tsx | 4 + resources/js/Pages/Collections/Index.tsx | 7 +- resources/js/Utils/Currency.test.tsx | 14 +++ resources/js/Utils/Currency.tsx | 7 +- resources/types/generated.d.ts | 20 ++++ .../Controllers/CollectionControllerTest.php | 46 +++++++++ 25 files changed, 522 insertions(+), 22 deletions(-) create mode 100644 app/Data/Collections/CollectionFeaturedData.php create mode 100644 resources/js/Pages/Collections/Components/CollectionImage/CollectionImageWithIcon.tsx create mode 100644 resources/js/Pages/Collections/Components/CollectionImage/index.tsx create mode 100644 resources/js/Pages/Collections/Components/FeaturedCollections/FeaturedCollectionNfts.tsx create mode 100644 resources/js/Pages/Collections/Components/FeaturedCollections/FeaturedCollectionStats.tsx create mode 100644 resources/js/Pages/Collections/Components/FeaturedCollections/FeaturedCollectionsCarousel.tsx create mode 100644 resources/js/Pages/Collections/Components/FeaturedCollections/FeaturedCollectionsItem.tsx create mode 100644 resources/js/Pages/Collections/Components/FeaturedCollections/index.tsx diff --git a/app/Data/Collections/CollectionFeaturedData.php b/app/Data/Collections/CollectionFeaturedData.php new file mode 100644 index 000000000..d48ced6e0 --- /dev/null +++ b/app/Data/Collections/CollectionFeaturedData.php @@ -0,0 +1,73 @@ + $nfts + */ + public function __construct( + public int $id, + public string $name, + public string $slug, + public string $address, + #[LiteralTypeScriptType('App.Enums.Chain')] + public int $chainId, + public ?string $floorPrice, + public ?float $floorPriceFiat, + public ?string $floorPriceCurrency, + public ?int $floorPriceDecimals, + #[WithTransformer(IpfsGatewayUrlTransformer::class)] + public ?string $image, + public ?string $banner, + public ?string $openSeaSlug, + public string $website, + public int $nftsCount, + #[DataCollectionOf(GalleryNftData::class)] + public DataCollection $nfts, + public bool $isFeatured, + public ?string $description, + public ?string $volume, + ) { + } + + public static function fromModel(Collection $collection, CurrencyCode $currency): self + { + return new self( + id: $collection->id, + name: $collection->name, + slug: $collection->slug, + address: $collection->address, + chainId: $collection->network->chain_id, + floorPrice: $collection->floor_price, + floorPriceFiat: (float) $collection->fiatValue($currency), + floorPriceCurrency: $collection->floorPriceToken ? Str::lower($collection->floorPriceToken->symbol) : null, + floorPriceDecimals: $collection->floorPriceToken?->decimals, + image: $collection->extra_attributes->get('image'), + banner: $collection->extra_attributes->get('banner'), + openSeaSlug: $collection->extra_attributes->get('opensea_slug'), + website: $collection->website(), + nftsCount: $collection->nfts_count, + nfts: GalleryNftData::collection($collection->cachedNfts), + isFeatured: $collection->is_featured, + description: $collection->description, + volume: $collection->volume, + ); + } +} diff --git a/app/Http/Controllers/CollectionController.php b/app/Http/Controllers/CollectionController.php index 51df4f692..e8133390c 100644 --- a/app/Http/Controllers/CollectionController.php +++ b/app/Http/Controllers/CollectionController.php @@ -7,6 +7,7 @@ use App\Data\Articles\ArticleData; use App\Data\Articles\ArticlesData; use App\Data\Collections\CollectionDetailData; +use App\Data\Collections\CollectionFeaturedData; use App\Data\Collections\CollectionTraitFilterData; use App\Data\Collections\PopularCollectionData; use App\Data\Gallery\GalleryNftData; @@ -30,6 +31,7 @@ use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; use Illuminate\Pagination\LengthAwarePaginator; +use Illuminate\Support\Facades\Cache; use Inertia\Inertia; use Inertia\Response; use Spatie\LaravelData\PaginatedDataCollection; @@ -40,6 +42,16 @@ public function index(Request $request): Response|JsonResponse|RedirectResponse { $user = $request->user(); + $featuredCollections = Collection::where('is_featured', true) + ->withCount(['nfts']) + ->get(); + + $featuredCollections->each(function (Collection $collection) { + $collection->cachedNfts = Cache::remember('featuredNftsForCollection'.$collection->id, 3600 * 12, function () use ($collection) { + return $collection->nfts()->inRandomOrder()->take(3)->get(); + }); + }); + $currency = $user ? $user->currency() : CurrencyCode::USD; $collectionQuery = $user ? $user->collections() : Collection::query(); @@ -71,6 +83,9 @@ public function index(Request $request): Response|JsonResponse|RedirectResponse 'collections' => PopularCollectionData::collection( $collections->through(fn ($collection) => PopularCollectionData::fromModel($collection, $currency)) ), + 'featuredCollections' => $featuredCollections->map(function (Collection $collection) use ($user) { + return CollectionFeaturedData::fromModel($collection, $user ? $user->currency() : CurrencyCode::USD); + }), ]); } diff --git a/app/Models/Collection.php b/app/Models/Collection.php index 4173d99b5..9d3d0958e 100644 --- a/app/Models/Collection.php +++ b/app/Models/Collection.php @@ -33,6 +33,7 @@ * @property ?string $floor_price * @property ?string $last_indexed_token_number * @property ?string $image + * @property \Illuminate\Database\Eloquent\Collection $cachedNfts * * @method BelongsToMany
    articlesWithCollections() */ @@ -44,6 +45,11 @@ class Collection extends Model const DISCORD_URL = 'https://discord.gg/'; + /** + * @var \Illuminate\Database\Eloquent\Collection + */ + public $cachedNfts; + /** * @var array */ diff --git a/database/factories/CollectionFactory.php b/database/factories/CollectionFactory.php index 92a619610..c2d6d2b45 100644 --- a/database/factories/CollectionFactory.php +++ b/database/factories/CollectionFactory.php @@ -38,6 +38,7 @@ public function definition(): array 'image' => fake()->imageUrl(360, 360, 'animals', true), 'website' => fake()->url(), ]), + 'is_featured' => fn () => random_int(0, 1), ]; } } diff --git a/database/seeders/NftSeeder.php b/database/seeders/NftSeeder.php index 895244e59..f200f6cd7 100644 --- a/database/seeders/NftSeeder.php +++ b/database/seeders/NftSeeder.php @@ -40,6 +40,8 @@ public function run(): void 'website' => $collectionArray['website'], ]), 'created_at' => fake()->dateTimeBetween('-2 months'), + 'is_featured' => $collectionArray['is_featured'] ?? false, + 'description' => $collectionArray['description'] ?? '', ]); if (Feature::active(Features::Collections->value)) { @@ -122,6 +124,8 @@ private function collections(): array ['Background', 'Cosmic Purple', TraitDisplayType::Property, 6, 0.06], ['Beak', 'Small', TraitDisplayType::Property, 4125, 42.15], ], + 'is_featured' => true, + 'description' => 'Moonbirds are a collection of 10,000 unique NFTs living on the Ethereum blockchain. Each Moonbird is algorithmically generated and has a unique combination of traits, including body, eyes, beak, wings, and background. Moonbirds are a Proof NFT project.', ], [ // https://opensea.io/collection/timelessnfts @@ -158,6 +162,8 @@ private function collections(): array 'traits' => [ ['Background', 'Blue', TraitDisplayType::Property, 1636, 16.36], ], + 'is_featured' => true, + 'description' => 'Tubby Cats are a collection of 10,000 unique NFTs living on the Ethereum blockchain. Each Tubby Cat is algorithmically generated and has a unique combination of traits, including body, eyes, mouth, and background. Tubby Cats are a Proof NFT project.', ], [ // https://opensea.io/collection/alphadogs @@ -176,6 +182,7 @@ private function collections(): array 'traits' => [ ['Background', 'Blue', TraitDisplayType::Property, 1636, 16.36], ], + 'is_featured' => true, ], [ // https://opensea.io/collection/devilvalley @@ -210,6 +217,8 @@ private function collections(): array 'traits' => [ ['Beak', 'Small', TraitDisplayType::Property, 4125, 42.15], ], + 'is_featured' => true, + 'description' => 'EDGEHOGS are a collection of 10,000 unique NFTs living on the Ethereum blockchain. Each EDGEHOG is algorithmically generated and has a unique combination of traits, including body, eyes, beak, wings, and background. EDGEHOGS are a Proof NFT project.', ], [ // https://opensea.io/collection/cryptoadz-by-gremplin diff --git a/lang/en/common.php b/lang/en/common.php index c0fcd16b6..5e78e389e 100644 --- a/lang/en/common.php +++ b/lang/en/common.php @@ -114,6 +114,7 @@ 'n_hours' => '{0} :count hour|{1} :count hour|[2,*] :count hours', 'n_minutes' => '{0} :count minute|{1} :count minute|[2,*] :count minutes', 'report' => 'Report', + 'nfts' => 'NFTs', 'n_nfts' => '{0}NFTs|{1}NFT|[2,*]NFTs', 'n_collections' => '{0}collections|{1}collection|[2,*]collections', 'back' => 'Back', diff --git a/lang/en/pages.php b/lang/en/pages.php index 2f6b648fc..82ebe3581 100644 --- a/lang/en/pages.php +++ b/lang/en/pages.php @@ -121,6 +121,10 @@ 'notice_wait' => 'Please wait. You can refresh data every 15 minutes.', 'toast' => "We're updating information for your collection.", ], + 'featured' => [ + 'title' => 'Featured Collections', + 'button' => 'Explore Collection', + ], ], 'nfts' => [ diff --git a/resources/css/app.css b/resources/css/app.css index e9ec32cc9..4c9ce01d5 100644 --- a/resources/css/app.css +++ b/resources/css/app.css @@ -49,3 +49,21 @@ .dark .auth-overlay-shadow { box-shadow: 0px 15px 35px 0px rgba(18, 18, 19, 0.4); } + +.featured-collections-overlay { + background-image: linear-gradient(180deg, rgb(var(--theme-color-primary-50)) 47.38%, transparent 216.53%); +} + +.dark .featured-collections-overlay { + background-image: linear-gradient(181deg, rgb(var(--theme-color-dark-800)) 41.03%, transparent 208.87%); +} + +@media (min-width: 960px) { + .featured-collections-overlay { + background-image: linear-gradient(90deg, rgb(var(--theme-color-primary-50)) 55.67%, transparent 151.85%); + } + + .dark .featured-collections-overlay { + background-image: linear-gradient(90deg, rgb(var(--theme-color-dark-800)) 55.67%, transparent 151.85%); + } +} diff --git a/resources/js/Components/Collections/PopularCollectionsTable/PopularCollectionsTable.blocks.tsx b/resources/js/Components/Collections/PopularCollectionsTable/PopularCollectionsTable.blocks.tsx index 77986da23..7b25a7929 100644 --- a/resources/js/Components/Collections/PopularCollectionsTable/PopularCollectionsTable.blocks.tsx +++ b/resources/js/Components/Collections/PopularCollectionsTable/PopularCollectionsTable.blocks.tsx @@ -1,10 +1,9 @@ import { useRef } from "react"; import { useTranslation } from "react-i18next"; -import { Img } from "@/Components/Image"; -import { NetworkIcon } from "@/Components/Networks/NetworkIcon"; import { PriceChange } from "@/Components/PriceChange/PriceChange"; import { Tooltip } from "@/Components/Tooltip"; import { useIsTruncated } from "@/Hooks/useIsTruncated"; +import { CollectionImageWithIcon } from "@/Pages/Collections/Components/CollectionImage"; import { FormatCrypto, FormatFiat } from "@/Utils/Currency"; import { isTruthy } from "@/Utils/is-truthy"; @@ -23,18 +22,13 @@ export const PopularCollectionName = ({ className="group relative h-11 w-full cursor-pointer md:h-12" >
    -
    - - -
    - -
    -
    +
    { expect(screen.getByTestId("GridHeader__title")).toHaveTextContent("Test Grid"); expect(screen.getByTestId("GridHeader__value")).toHaveTextContent("Missing Value"); }); + + it("should handle custom class name for wrapper", () => { + render( + , + ); + + expect(screen.getByTestId("GridHeader__wrapper")).toHaveClass("test-wrapper"); + }); }); diff --git a/resources/js/Components/GridHeader.tsx b/resources/js/Components/GridHeader.tsx index 573961a14..a81b61cec 100644 --- a/resources/js/Components/GridHeader.tsx +++ b/resources/js/Components/GridHeader.tsx @@ -5,6 +5,7 @@ interface GridHeaderProperties { title: string; value: string | number | JSX.Element | null; className?: string; + wrapperClassName?: string; emptyValue?: string | null; } @@ -12,6 +13,7 @@ export const GridHeader = ({ title, value, className, + wrapperClassName, emptyValue = null, ...properties }: GridHeaderProperties): JSX.Element => { @@ -29,7 +31,13 @@ export const GridHeader = ({ )} {...properties} > -
    +
    Dashbrd. All rights reserved.","footer.all_rights_reserved":"All rights reserved","footer.privacy_policy":"Privacy Policy","footer.terms_of_service":"Terms of Service","footer.powered_by":"Powered by","format.fiat":"{{ value, currency }}","format.number":"{{ value, number }}","metatags.home.title":"Dashbrd | Web3 Portfolio Management Made Simple","metatags.home.description":"Simplify your Web3 journey with Dashbrd. Manage your portfolio of tokens, NFTs, and other digital collectibles across the Ethereum and Polygon blockchains.","metatags.home.image":"/images/meta/home.png","metatags.error.title":"Error {{code}} | Dashbrd","metatags.wallet.title":"My Wallet | Dashbrd","metatags.galleries.title":"Top NFT Galleries | Dashbrd","metatags.galleries.image":"/images/meta/nft-galleries.png","metatags.galleries.description":"Explore user published NFT galleries to find custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.most_popular.title":"Most Popular Galleries | Dashbrd","metatags.galleries.most_popular.image":"/images/meta/most-popular-nft-galleries.png","metatags.galleries.most_popular.description":"Explore and discover Most Popular NFT Galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.newest.title":"Newest Galleries | Dashbrd","metatags.galleries.newest.image":"/images/meta/newest-nft-galleries.png","metatags.galleries.newest.description":"Explore and discover most recent NFT galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More","metatags.galleries.most_valuable.title":"Most Valuable Galleries | Dashbrd","metatags.galleries.most_valuable.image":"/images/meta/most-valuable-nft-galleries.png","metatags.galleries.most_valuable.description":"Explore and discover Most Valuable NFT Galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.view.title":"{{name}} | Dashbrd","metatags.galleries.view.description":"{{name}} | A Curated NFT Gallery at Dashbrd","metatags.galleries.view.image":"/images/meta/nft-gallery.png","metatags.my_galleries.title":"My Galleries | Dashbrd","metatags.my_galleries.title_draft":"My Draft Galleries | Dashbrd","metatags.my_galleries.create.title":"Create Gallery | Dashbrd","metatags.my_galleries.edit.title":"Edit {{name}} | Dashbrd","metatags.collections.title":"Collections | Dashbrd","metatags.collections.view.title":"{{name}} Collection | Dashbrd","metatags.collections.view.description":"Immerse yourself in the intricate details of {{name}} collection, featuring remarkable digital assets. Start your NFT journey today!","metatags.collections.view.image":"/images/meta/nft-collection.png","metatags.my-collections.title":"My Collections | Dashbrd","metatags.nfts.view.title":"{{nft}} NFT | Dashbrd","metatags.nfts.view.description":"Uncover the complete story of {{nft}} NFT from the {{collection}} collection, delving into its unique attributes and distinctive features.","metatags.nfts.view.image":"/images/meta/nft-details.png","metatags.settings.title":"Settings | Dashbrd","metatags.articles.title":"Articles | Dashbrd","metatags.articles.view.title":"{{title}} | Dashbrd","metatags.login.title":"Login | Dashbrd","metatags.privacy_policy.title":"Privacy Policy | Dashbrd","metatags.privacy_policy.description":"Dashbrd’s privacy policy outlines the information we collect and explains your choices surrounding how we use information about you.","metatags.terms_of_service.title":"Terms of Service | Dashbrd","metatags.terms_of_service.description":"These Terms of Service cover your use and access to services, products or websites of Dashbrd.","metatags.cookie_policy.title":"Cookie Policy | Dashbrd","metatags.cookie_policy.description":"Dashbrd uses cookies to make the website more user-friendly. Find out about the main types of cookies we use, and what we use them for.","metatags.welcome.title":"Welcome to Dashbrd | Web3 Simplified","pages.onboarding.title":"Get Started","pages.onboarding.heading":"Your monkeys were bored and ran off, we are trying to round them up.","pages.onboarding.message":"We are setting up your account. This process usually takes just a few minutes, but can take up to 15 minutes.","pages.error.heading":"Oops, something went wrong ...","pages.error.message":"Please try again or get in touch if the issue persists.","pages.maintenance.title":"Dashbrd is currently down for scheduled maintenance.","pages.maintenance.description":"We expect to be back soon. Thanks for your patience.","pages.dashboard.title":"My Wallet","pages.dashboard.breakdown.title":"Portfolio Breakdown","pages.dashboard.line_chart.data_error":"Could not load chart data","pages.articles.title":"Articles","pages.articles.featured_collections":"Featured Collections","pages.articles.placeholder_more_soon":"More Soon","pages.articles.no_articles":"No articles have been published yet. Please check back later!","pages.articles.header_title":"Explore our collection of","pages.articles.header_suffix_one":"published article","pages.articles.header_suffix_other":"published articles","pages.articles.audio_version":"Audio version","pages.articles.consists_of_collections":"{0} This article highlights {{count}} collections|{1} This article highlights {{count}} collection|[2,*] This article highlights {{count}} collections","pages.collections.title":"Collections","pages.collections.collections":"Collections","pages.collections.popular_collections":"Popular Collections","pages.collections.collection_value":"Collection Value","pages.collections.nfts_owned":"NFTs Owned","pages.collections.header_title":"You own <0>{{nftsCount}} {{nfts}} across <0>{{collectionsCount}} {{collections}}, worth about <0><1>{{worth}}","pages.collections.search_placeholder":"Search by Collection","pages.collections.properties":"Properties","pages.collections.collections_network":"Collections Network","pages.collections.property_search_placeholder":"Feature Search","pages.collections.floor_price":"Floor Price","pages.collections.value":"Value","pages.collections.rarity":"Rarity","pages.collections.report":"Report","pages.collections.hide_collection":"Hide Collection","pages.collections.unhide_collection":"Unhide Collection","pages.collections.no_collections":"You do not own any NFTs yet. Once you do they will be shown here.","pages.collections.all_collections_hidden":"You have hidden all your collections. Unhide and they will appear here.","pages.collections.about_collection":"About Collection","pages.collections.show_hidden":"Show Hidden","pages.collections.show_my_collection":"Show My Collection","pages.collections.owned":"Owned","pages.collections.activities.loading_activities":"We're fetching Activity for this NFT, please hang tight, this can take a while.","pages.collections.activities.loading_activities_collection":"We're fetching Activity for this collection, please hang tight, this can take a while.","pages.collections.activities.ignores_activities":"We don't support activity history for this collection yet.","pages.collections.activities.no_activity":"This collection does not have any activity yet.","pages.collections.activities.types.LABEL_MINT":"Mint","pages.collections.activities.types.LABEL_TRANSFER":"Transfer","pages.collections.activities.types.LABEL_SALE":"Sale","pages.collections.articles.no_articles":"No articles have been linked to this collection as of now.","pages.collections.articles.no_articles_with_filters":"We could not find any articles matching your search criteria, please try again!","pages.collections.articles.search_placeholder":"Search in Articles","pages.collections.articles.sort_latest":"Latest","pages.collections.articles.sort_popularity":"Most Popular","pages.collections.search.loading_results":"Loading results...","pages.collections.search.no_results":"We could not find anything matching your search criteria, please try again!","pages.collections.search.no_results_with_filters":"We could not find anything matching your filters, please try again!","pages.collections.search.no_results_ownership":"You do not own any NFTs in this collection","pages.collections.search.error":"Could not load search results. Please try again later.","pages.collections.sorting.token_number":"Token Number","pages.collections.sorting.recently_received":"Recently Received","pages.collections.sorting.recently_created":"Recently Created","pages.collections.sorting.oldest_collection":"Oldest Collection","pages.collections.traits.description":"List of NFT traits by % of occurrence in the collection","pages.collections.traits.no_traits":"No Properties can be found for this NFT","pages.collections.menu.collection":"Collection","pages.collections.menu.articles":"Articles","pages.collections.menu.activity":"Activity","pages.collections.hidden_modal.collection_hidden":"Collection Hidden","pages.collections.hidden_modal.description":"This collection is currently set to Hidden. Are you sure you want to unhide this collection? You can\n reset the collection to hidden from the collection menu.","pages.collections.hidden_modal.unhide":"Unhide","pages.collections.hidden_modal.error":"Something went wrong. Please try again.","pages.collections.external_modal.you_wish_continue":"You are about to leave Dashbrd to an external website. Dashbrd has no control over the content of\n this site. Are you sure you wish to continue?","pages.collections.external_modal.not_show":"Do not show this message again.","pages.collections.refresh.title":"Refresh your collection","pages.collections.refresh.notice":"You can refresh data every 15 minutes.","pages.collections.refresh.notice_wait":"Please wait. You can refresh data every 15 minutes.","pages.collections.refresh.toast":"We're updating information for your collection.","pages.nfts.nft":"nft","pages.nfts.about_nft":"About NFT","pages.nfts.owned_by":"Owned by","pages.nfts.collection_image":"collection image","pages.nfts.menu.properties":"Properties","pages.nfts.menu.activity":"Activity","pages.reports.title":"Submit a Report","pages.reports.description":"Thanks for looking out by reporting things that break the rules. Let us know what's happening and we'll receive the report.","pages.reports.success":"Thank you for your report. We'll review it and see if it breaks our ToS.","pages.reports.failed":"Something went wrong. Please try again.","pages.reports.throttle":"You have made too many requests. Please wait {{time}} before reporting again.","pages.reports.reported":"You have already reported this {{model}}.","pages.reports.reasons.spam":"Spam","pages.reports.reasons.violence":"Promoting Violence","pages.reports.reasons.hate":"Hate","pages.reports.reasons.inappropriate_content":"Inappropriate Content","pages.reports.reasons.impersonation":"Impersonation","pages.reports.reasons.trademark":"Trademark or Copyright","pages.reports.reasons.selfharm":"Self-Harm","pages.reports.reasons.harassment":"Harassment","pages.galleries.title":"Galleries","pages.galleries.empty_title":"No galleries have been published yet. Once they do they will appear here.","pages.galleries.search.loading_results":"Loading results...","pages.galleries.search.no_results":"We could not find anything matching your search criteria, please try again!","pages.galleries.search.placeholder":"Search by name or curator address","pages.galleries.search.placeholder_nfts":"Search by NFTs","pages.galleries.search.error":"Could not load search results. Please try again later.","pages.galleries.my_galleries.title":"My Galleries","pages.galleries.my_galleries.subtitle":"Manage your galleries","pages.galleries.my_galleries.new_gallery":"New Gallery","pages.galleries.my_galleries.no_galleries":"You have not created any galleries yet. To create a gallery, click on the \"Create Gallery\" button.","pages.galleries.my_galleries.no_draft_galleries":"You have no draft galleries yet. To create a gallery, click on the \"Create Gallery\" button.","pages.galleries.my_galleries.succesfully_deleted":"Gallery has been successfully removed","pages.galleries.my_galleries.draft_succesfully_deleted":"Draft has been successfully removed","pages.galleries.my_galleries.successfully_created":"Gallery has been successfully created","pages.galleries.my_galleries.successfully_updated":"Gallery has been successfully updated","pages.galleries.my_galleries.new_gallery_no_nfts":"Creating a Gallery requires you to own an NFT.","pages.galleries.my_galleries.delete_modal.title":"Delete Draft","pages.galleries.my_galleries.delete_modal.text":"Are you sure you want to delete the draft? Everything you've done will be deleted and you won't be able to get it back.","pages.galleries.my_galleries.nfts_no_longer_owned":"NFTs no longer owned by this wallet have been removed from the draft”","pages.galleries.copy_gallery_link":"Copy Gallery Link","pages.galleries.my_nfts":"My NFTs","pages.galleries.value":"Value","pages.galleries.floor_price":"Floor Price","pages.galleries.nfts":"NFTs","pages.galleries.collections":"Collections","pages.galleries.galleries_count_simple":"{0} galleries|{1} gallery|[2,*] galleries","pages.galleries.galleries_count":"{0} {{count}} Galleries|{1} {{count}} Gallery|[2,*] {{count}} Galleries","pages.galleries.collections_count_simple":"{0} collections|{1} collection|[2,*] collections","pages.galleries.collections_count":"{0} {{count}} Collections|{1} {{count}} Collection|[2,*] {{count}} Collections","pages.galleries.nfts_count_simple":"{0} NFTs|{1} NFT|[2,*] NFTs","pages.galleries.nfts_count":"{0} {{count}} NFTs|{1} {{count}} NFT|[2,*] {{count}} NFTs","pages.galleries.users_count_simple":"{0} users|{1} user|[2,*] users","pages.galleries.users_count":"{0} {{count}} Users|{1} {{count}} User|[2,*] {{count}} Users","pages.galleries.featuring":"Featuring","pages.galleries.curated_by":"Curated by","pages.galleries.worth_about":"Worth About","pages.galleries.valued_at":"valued at","pages.galleries.from":"From","pages.galleries.most_popular_galleries":"Most Popular Galleries","pages.galleries.newest_galleries":"Newest Galleries","pages.galleries.most_valuable_galleries":"Most Valuable Galleries","pages.galleries.most_popular":"Most Popular","pages.galleries.newest":"Newest","pages.galleries.most_valuable":"Most Valuable","pages.galleries.create.search_by_nfts":"Search by NFTs","pages.galleries.create.input_placeholder":"Enter gallery name","pages.galleries.create.title_too_long":"Gallery name must not exceed {{max}} characters.","pages.galleries.create.already_selected_nft":"NFT already exists in this gallery","pages.galleries.create.nft_missing_image":"Only NFTs with images can be added to galleries","pages.galleries.create.nft_gallery_limit":"You can only add 16 NFTs per gallery","pages.galleries.create.gallery_cover":"Gallery Cover","pages.galleries.create.gallery_cover_description":"The cover is used for the card on the gallery list page. While the cover is not a requirement it will allow you to add personality and stand out from the crowd.","pages.galleries.create.gallery_cover_information":"Image dimensions must be at least 287px x 190px, with a max size of 2 MB (JPG, PNG or GIF)","pages.galleries.create.no_results":"We could not find anything matching your search criteria, please try again!","pages.galleries.create.templates.cover":"Cover","pages.galleries.create.templates.template":"Template","pages.galleries.create.templates.select":"Select Gallery Template","pages.galleries.create.templates.basic":"Basic Gallery","pages.galleries.create.templates.coming_soon":"More Coming Soon","pages.galleries.create.load_more_collections_one":"Load {{count}} More Collection","pages.galleries.create.load_more_collections_other":"Load {{count}} More Collections","pages.galleries.create.load_more_nfts":"Load More NFTs","pages.galleries.create.can_purchase":"You can purchase NFTs with these top NFT Marketplaces:","pages.galleries.create.must_own_one_nft":"You must own at least one (1) NFT in order to create a gallery.","pages.galleries.create.back_to_galleries":"Back to Galleries","pages.galleries.create.draft_saved":"Draft Saved","pages.galleries.create.saving_to_draft":"Saving to draft","pages.galleries.create.drafts_limit_modal_title":"Draft Gallery Limit","pages.galleries.create.drafts_limit_modal_message":"You’ve hit your limit for draft galleries. While you can still make new galleries and publish them, they won’t be saved as drafts. To Free up space, you can either delete existing drafts or publish them.","pages.galleries.create.drafts_limit_modal_cancel":"Go to Drafts","pages.galleries.delete_modal.title":"Delete Gallery","pages.galleries.delete_modal.confirmation_text":"Are you sure you want to delete the gallery? Deleting a Gallery is permanent, all associated views and likes will be lost.","pages.galleries.consists_of_collections":"{0} This gallery consists of {{count}} collections|{1} This gallery consists of {{count}} collection|[2,*] This gallery consists of {{count}} collections","pages.galleries.guest_banner.title":"Craft the ultimate","pages.galleries.guest_banner.subtitle":"Pick your favorites, curate your gallery, & share it with the world.","pages.profile.title":"Profile","pages.token_panel.balance_tooltip":"Total percentage of the portfolio held in this token","pages.token_panel.insufficient_funds":"Insufficient Balance","pages.token_panel.error":"Dashbrd has failed to load token information. Please try again later.","pages.token_panel.failed_to_retrieve_transactions":"We were unable to fetch your transactions.","pages.token_panel.tabs.transaction_history":"Transaction History","pages.token_panel.tabs.history":"History","pages.token_panel.tabs.market_data":"Market Data","pages.token_panel.details.current_price":"Current Price","pages.token_panel.details.title":"Token Details","pages.token_panel.details.market_cap":"Market Cap","pages.token_panel.details.volume":"Daily Volume","pages.token_panel.details.supply":"Minted Supply","pages.token_panel.details.ath":"All-Time High","pages.token_panel.details.atl":"All-Time Low","pages.token_panel.chart.failed":"Dashbrd has failed to load chart information. Please try again later.","pages.transaction_details_panel.title":"Transaction Details","pages.transaction_details_panel.details.blockchain":"Blockchain","pages.transaction_details_panel.details.timestamp":"Timestamp","pages.transaction_details_panel.details.transaction_hash":"Transaction Hash","pages.transaction_details_panel.details.transaction_fee":"Transaction Fee","pages.transaction_details_panel.details.gas_price":"Gas Price","pages.transaction_details_panel.details.gas_used":"Gas Used","pages.transaction_details_panel.details.nonce":"Nonce","pages.send_receive_panel.send.labels.token_and_amount":"Token and Amount","pages.send_receive_panel.send.labels.destination_address":"Destination Address","pages.send_receive_panel.send.labels.projected_fee":"Projected Fee","pages.send_receive_panel.send.placeholders.enter_amount":"Enter Amount","pages.send_receive_panel.send.placeholders.insert_recipient_address":"Insert Recipient Address","pages.send_receive_panel.send.placeholders.projected_fee":"Projected Fee","pages.send_receive_panel.send.errors.amount":"Insufficient Funds: You do not have enough to cover the amount + fee.","pages.send_receive_panel.send.errors.destination":"Destination address is not correct. Check and input again.","pages.send_receive_panel.send.hints.token_price":"Token Price","pages.send_receive_panel.send.fees.Fast":"Fast","pages.send_receive_panel.send.fees.Avg":"Avg","pages.send_receive_panel.send.fees.Slow":"Slow","pages.send_receive_panel.send.search_dropdown.placeholder":"Search token","pages.send_receive_panel.send.search_dropdown.no_results":"No Results","pages.send_receive_panel.send.search_dropdown.error":"Error occurred while searching tokens.","pages.send_receive_panel.send.transaction_time":"Transaction Time: ~{{ time }} minutes","pages.send_receive_panel.send.from":"From","pages.send_receive_panel.send.to":"To","pages.send_receive_panel.send.amount":"Amount","pages.send_receive_panel.send.fee":"Fee","pages.send_receive_panel.send.total_amount":"Total Amount","pages.send_receive_panel.send.waiting_message":"Review and verify the information on your MetaMask. Sign to send the transaction.","pages.send_receive_panel.send.waiting_spinner_text":"Waiting for confirmation...","pages.send_receive_panel.send.failed_message":"It looks like something went wrong while sending your transaction. Press 'Retry' to make another attempt.","pages.send_receive_panel.receive.alert":"Send only Polygon or Ethereum Network compatible tokens to this address or you could permanently lose your funds!","pages.settings.title":"Settings","pages.settings.sidebar.general":"General","pages.settings.sidebar.notifications":"Notifications","pages.settings.sidebar.session_history":"Sessions History","pages.settings.general.title":"Settings","pages.settings.general.subtitle":"Customize your App Experience","pages.settings.general.currency":"Currency","pages.settings.general.currency_subtitle":"Select your default currency which will be used throughout the app.","pages.settings.general.time_date":"Time & Date","pages.settings.general.time_date_subtitle":"Select how you want time and date be shown inside app.","pages.settings.general.date_format":"Date Format","pages.settings.general.time_format":"Time Format","pages.settings.general.timezone":"Timezone","pages.settings.general.set_defaults":"Set Defaults","pages.settings.general.set_defaults_content":"Reverting to the default settings will remove any customizations previously made. Are you sure?","pages.settings.general.save":"Save Settings","pages.settings.general.saved":"Your settings have been successfully saved","pages.wallet.title":"Wallet","pages.privacy_policy.title":"Privacy Policy","pages.terms_of_service.title":"Terms of Service","pagination.previous":"« Previous","pagination.next":"Next »","passwords.reset":"Your password has been reset!","passwords.sent":"We have emailed your password reset link!","passwords.throttled":"Please wait before retrying.","passwords.token":"This password reset token is invalid.","passwords.user":"We can't find a user with that email address.","urls.landing":"https://dashbrd.com","urls.cookie_policy":"https://dashbrd.com/cookie-policy","urls.privacy_policy":"https://dashbrd.com/privacy-policy","urls.terms_of_service":"https://dashbrd.com/terms-of-service","urls.twitter":"https://x.com/DashbrdApp","urls.discord":"https://discord.gg/MJyWKkCJ5k","urls.github":"https://github.com/ArdentHQ/dashbrd","urls.coingecko":"https://www.coingecko.com","urls.etherscan":"https://etherscan.io","urls.polygonscan":"https://polygonscan.com","urls.alchemy":"https://www.alchemy.com","urls.moralis":"https://moralis.io","urls.mnemonic":"https://www.mnemonichq.com","urls.opensea":"https://opensea.io/","urls.explorers.etherscan.token_transactions":"https://etherscan.io/token/{{token}}?a={{address}}","urls.explorers.etherscan.addresses":"https://etherscan.io/address/{{address}}","urls.explorers.etherscan.transactions":"https://etherscan.io/tx/{{id}}","urls.explorers.etherscan.nft":"https://etherscan.io/nft/{{address}}/{{nftId}}","urls.explorers.polygonscan.token_transactions":"https://polygonscan.com/token/{{token}}?a={{address}}","urls.explorers.polygonscan.addresses":"https://polygonscan.com/address/{{address}}","urls.explorers.polygonscan.transactions":"https://polygonscan.com/tx/{{id}}","urls.explorers.polygonscan.nft":"https://polygonscan.com/nft/{{address}}/{{nftId}}","urls.explorers.mumbai.token_transactions":"https://mumbai.polygonscan.com/token/{{token}}?a={{address}}","urls.explorers.mumbai.addresses":"https://mumbai.polygonscan.com/address/{{address}}","urls.explorers.mumbai.transactions":"https://mumbai.polygonscan.com/tx/{{id}}","urls.explorers.mumbai.nft":"https://mumbai.polygonscan.com/nft/{{address}}/{{nftId}}","urls.explorers.goerli.token_transactions":"https://goerli.etherscan.io/token/{{token}}?a={{address}}","urls.explorers.goerli.addresses":"https://goerli.etherscan.io/address/{{address}}","urls.explorers.goerli.transactions":"https://goerli.etherscan.io/tx/{{id}}","urls.explorers.goerli.nft":"https://goerli.etherscan.io/nft/{{address}}/{{nftId}}","urls.marketplaces.opensea.collection":"https://opensea.io/assets/{{network}}/{{address}}","urls.marketplaces.opensea.nft":"https://opensea.io/assets/{{network}}/{{address}}/{{nftId}}","urls.marketplaces.rarible.collection":"https://rarible.com/collection/{{address}}/items","urls.marketplaces.rarible.nft":"https://rarible.com/token/{{address}}:{{nftId}}","urls.marketplaces.blur.collection":"https://blur.io/collection/{{address}}","urls.marketplaces.blur.nft":"https://blur.io/asset/{{address}}/{{nftId}}","urls.marketplaces.looksrare.collection":"https://looksrare.org/collections/{{address}}","urls.marketplaces.looksrare.nft":"https://looksrare.org/collections/{{address}}/{{nftId}}","validation.accepted":"The {{attribute}} must be accepted.","validation.accepted_if":"The {{attribute}} must be accepted when {{other}} is {{value}}.","validation.active_url":"The {{attribute}} is not a valid URL.","validation.after":"The {{attribute}} must be a date after {{date}}.","validation.after_or_equal":"The {{attribute}} must be a date after or equal to {{date}}.","validation.alpha":"The {{attribute}} must only contain letters.","validation.alpha_dash":"The {{attribute}} must only contain letters, numbers, dashes and underscores.","validation.alpha_num":"The {{attribute}} must only contain letters and numbers.","validation.array":"The {{attribute}} must be an array.","validation.ascii":"The {{attribute}} must only contain single-byte alphanumeric characters and symbols.","validation.before":"The {{attribute}} must be a date before {{date}}.","validation.before_or_equal":"The {{attribute}} must be a date before or equal to {{date}}.","validation.between.array":"The {{attribute}} must have between {{min}} and {{max}} items.","validation.between.file":"The {{attribute}} must be between {{min}} and {{max}} kilobytes.","validation.between.numeric":"The {{attribute}} must be between {{min}} and {{max}}.","validation.between.string":"The {{attribute}} must be between {{min}} and {{max}} characters.","validation.boolean":"The {{attribute}} field must be true or false.","validation.confirmed":"The {{attribute}} confirmation does not match.","validation.current_password":"The password is incorrect.","validation.date":"The {{attribute}} is not a valid date.","validation.date_equals":"The {{attribute}} must be a date equal to {{date}}.","validation.date_format":"The {{attribute}} does not match the format {{format}}.","validation.decimal":"The {{attribute}} must have {{decimal}} decimal places.","validation.declined":"The {{attribute}} must be declined.","validation.declined_if":"The {{attribute}} must be declined when {{other}} is {{value}}.","validation.different":"The {{attribute}} and {{other}} must be different.","validation.digits":"The {{attribute}} must be {{digits}} digits.","validation.digits_between":"The {{attribute}} must be between {{min}} and {{max}} digits.","validation.dimensions":"The {{attribute}} has invalid image dimensions.","validation.distinct":"The {{attribute}} field has a duplicate value.","validation.doesnt_end_with":"The {{attribute}} may not end with one of the following: {{values}}.","validation.doesnt_start_with":"The {{attribute}} may not start with one of the following: {{values}}.","validation.email":"The {{attribute}} must be a valid email address.","validation.ends_with":"The {{attribute}} must end with one of the following: {{values}}.","validation.enum":"The selected {{attribute}} is invalid.","validation.exists":"The selected {{attribute}} is invalid.","validation.file":"The {{attribute}} must be a file.","validation.filled":"The {{attribute}} field must have a value.","validation.gt.array":"The {{attribute}} must have more than {{value}} items.","validation.gt.file":"The {{attribute}} must be greater than {{value}} kilobytes.","validation.gt.numeric":"The {{attribute}} must be greater than {{value}}.","validation.gt.string":"The {{attribute}} must be greater than {{value}} characters.","validation.gte.array":"The {{attribute}} must have {{value}} items or more.","validation.gte.file":"The {{attribute}} must be greater than or equal to {{value}} kilobytes.","validation.gte.numeric":"The {{attribute}} must be greater than or equal to {{value}}.","validation.gte.string":"The {{attribute}} must be greater than or equal to {{value}} characters.","validation.image":"The {{attribute}} must be an image.","validation.in":"The selected {{attribute}} is invalid.","validation.in_array":"The {{attribute}} field does not exist in {{other}}.","validation.integer":"The {{attribute}} must be an integer.","validation.ip":"The {{attribute}} must be a valid IP address.","validation.ipv4":"The {{attribute}} must be a valid IPv4 address.","validation.ipv6":"The {{attribute}} must be a valid IPv6 address.","validation.json":"The {{attribute}} must be a valid JSON string.","validation.lowercase":"The {{attribute}} must be lowercase.","validation.lt.array":"The {{attribute}} must have less than {{value}} items.","validation.lt.file":"The {{attribute}} must be less than {{value}} kilobytes.","validation.lt.numeric":"The {{attribute}} must be less than {{value}}.","validation.lt.string":"The {{attribute}} must be less than {{value}} characters.","validation.lte.array":"The {{attribute}} must not have more than {{value}} items.","validation.lte.file":"The {{attribute}} must be less than or equal to {{value}} kilobytes.","validation.lte.numeric":"The {{attribute}} must be less than or equal to {{value}}.","validation.lte.string":"The {{attribute}} must be less than or equal to {{value}} characters.","validation.mac_address":"The {{attribute}} must be a valid MAC address.","validation.max.array":"The {{attribute}} must not have more than {{max}} items.","validation.max.file":"The {{attribute}} must not be greater than {{max}} kilobytes.","validation.max.numeric":"The {{attribute}} must not be greater than {{max}}.","validation.max.string":"The {{attribute}} must not be greater than {{max}} characters.","validation.max_digits":"The {{attribute}} must not have more than {{max}} digits.","validation.mimes":"The {{attribute}} must be a file of type: {{values}}.","validation.mimetypes":"The {{attribute}} must be a file of type: {{values}}.","validation.min.array":"The {{attribute}} must have at least {{min}} items.","validation.min.file":"The {{attribute}} must be at least {{min}} kilobytes.","validation.min.numeric":"The {{attribute}} must be at least {{min}}.","validation.min.string":"The {{attribute}} must be at least {{min}} characters.","validation.min_digits":"The {{attribute}} must have at least {{min}} digits.","validation.missing":"The {{attribute}} field must be missing.","validation.missing_if":"The {{attribute}} field must be missing when {{other}} is {{value}}.","validation.missing_unless":"The {{attribute}} field must be missing unless {{other}} is {{value}}.","validation.missing_with":"The {{attribute}} field must be missing when {{values}} is present.","validation.missing_with_all":"The {{attribute}} field must be missing when {{values}} are present.","validation.multiple_of":"The {{attribute}} must be a multiple of {{value}}.","validation.not_in":"The selected {{attribute}} is invalid.","validation.not_regex":"The {{attribute}} format is invalid.","validation.numeric":"The {{attribute}} must be a number.","validation.password.letters":"The {{attribute}} must contain at least one letter.","validation.password.mixed":"The {{attribute}} must contain at least one uppercase and one lowercase letter.","validation.password.numbers":"The {{attribute}} must contain at least one number.","validation.password.symbols":"The {{attribute}} must contain at least one symbol.","validation.password.uncompromised":"The given {{attribute}} has appeared in a data leak. Please choose a different {{attribute}}.","validation.present":"The {{attribute}} field must be present.","validation.prohibited":"The {{attribute}} field is prohibited.","validation.prohibited_if":"The {{attribute}} field is prohibited when {{other}} is {{value}}.","validation.prohibited_unless":"The {{attribute}} field is prohibited unless {{other}} is in {{values}}.","validation.prohibits":"The {{attribute}} field prohibits {{other}} from being present.","validation.regex":"The {{attribute}} format is invalid.","validation.required":"The {{attribute}} field is required.","validation.required_array_keys":"The {{attribute}} field must contain entries for: {{values}}.","validation.required_if":"The {{attribute}} field is required when {{other}} is {{value}}.","validation.required_if_accepted":"The {{attribute}} field is required when {{other}} is accepted.","validation.required_unless":"The {{attribute}} field is required unless {{other}} is in {{values}}.","validation.required_with":"The {{attribute}} field is required when {{values}} is present.","validation.required_with_all":"The {{attribute}} field is required when {{values}} are present.","validation.required_without":"The {{attribute}} field is required when {{values}} is not present.","validation.required_without_all":"The {{attribute}} field is required when none of {{values}} are present.","validation.same":"The {{attribute}} and {{other}} must match.","validation.size.array":"The {{attribute}} must contain {{size}} items.","validation.size.file":"The {{attribute}} must be {{size}} kilobytes.","validation.size.numeric":"The {{attribute}} must be {{size}}.","validation.size.string":"The {{attribute}} must be {{size}} characters.","validation.starts_with":"The {{attribute}} must start with one of the following: {{values}}.","validation.string":"The {{attribute}} must be a string.","validation.timezone":"The {{attribute}} must be a valid timezone.","validation.unique":"The {{attribute}} has already been taken.","validation.uploaded":"The {{attribute}} failed to upload.","validation.uppercase":"The {{attribute}} must be uppercase.","validation.url":"The {{attribute}} must be a valid URL.","validation.ulid":"The {{attribute}} must be a valid ULID.","validation.uuid":"The {{attribute}} must be a valid UUID.","validation.custom.attribute-name.rule-name":"custom-message","validation.unsupported_currency_code":"The currency code you provided is invalid or not supported.","validation.unsupported_period":"The period you provided is invalid or not supported.","validation.unsupported_token_symbol":"The token symbol you provided is invalid or not supported.","validation.gallery_title_required":"Gallery name is required.","validation.gallery_title_max_characters":"The gallery name should not exceed 50 characters.","validation.gallery_title_invalid":"The gallery name is invalid.","validation.nfts_required":"Please add at least one NFT.","validation.nfts_max_size":"Galleries can contain no more than {{limit}} NFTs","validation.invalid_nfts":"The NFT in position {{position}} is invalid, please select another one.","validation.invalid_cover":"You have selected an invalid cover image, please try another one."} \ No newline at end of file +{"auth.welcome":"Welcome to Dashbrd","auth.logged_in":"You're logged in!","auth.log_out":"Log out","auth.failed":"These credentials do not match our records.","auth.session_timeout":"Your session has timed out. Please refresh the page and try connecting your account again.","auth.session_timeout_modal":"Seems like your session has timed out. Please connnect your wallet again.","auth.password":"The provided password is incorrect.","auth.throttle":"Too many login attempts. Please try again in {{seconds}} seconds.","auth.wallet.connecting":"Connecting …","auth.wallet.waiting_for_signature":"Waiting for Signature …","auth.wallet.switching_wallet":"Switching Wallet …","auth.wallet.connect":"Connect Wallet","auth.wallet.connect_long":"Connect Your Wallet to Get Started","auth.wallet.sign_subtitle":"Connect Your Wallet to Continue","auth.wallet.disconnect":"Disconnect Wallet","auth.wallet.install":"Install MetaMask","auth.wallet.install_long":"Install MetaMask to Get Started","auth.wallet.sign":"Sign Message","auth.wallet.sign_message":"Welcome to Dashbrd. In order to login, sign this message with your wallet. It doesn't cost you anything!\n\nSigning ID (you can ignore this): {{nonce}}","auth.wallet.connect_subtitle":"Click on the MetaMask icon in your browser to confirm the action and connect your wallet.","auth.wallet.requires_signature":"In order to prevent impersonation, we require a signature to perform this action. This signature is only a signed message and does not give any access to your wallet.","auth.errors.metamask.no_account":"No account found. Please connect your wallet and try again.","auth.errors.metamask.generic":"Connection attempt error. Please retry and follow the steps to connect your wallet.","auth.errors.metamask.invalid_network":"Please switch to Polygon or Ethereum Mainnet in your MetaMask plugin to connect to Dashbrd.","auth.errors.metamask.provider_missing":"You don't have MetaMask installed in your browser. Please install and try again.","auth.errors.metamask.user_rejected":"It looks like you cancelled signing of the authentication message. Please try again.","auth.errors.metamask.provider_not_set":"Ethereum provider is not set","auth.validation.wallet_login_failed":"There was a problem trying to verify your signature. Please try again.","auth.validation.invalid_address":"Your wallet address is invalid. Please try again.","auth.validation.invalid_signature":"Signature is invalid. Please try again.","auth.validation.invalid_network":"Please switch to Polygon or Ethereum Mainnet in your MetaMask plugin to connect to Dashbrd.","common.author":"Author","common.add":"Add","common.amount":"Amount","common.balance":"Balance","common.cancel":"Cancel","common.delete":"Delete","common.edit":"Edit","common.confirm":"Confirm","common.connect":"Connect","common.continue":"Continue","common.done":"Done","common.filter":"Filter","common.items":"Items","common.receive":"Receive","common.received":"Received","common.retry":"Retry","common.records":"Records","common.save":"Save","common.send":"Send","common.sent":"Sent","common.show":"Show","common.searching":"Searching...","common.other":"Other","common.owned":"Owned","common.token":"Token","common.tokens":"Tokens","common.wallet":"Wallet","common.pending":"Pending","common.publish":"Publish","common.published":"Published","common.empty":"Empty","common.your_address":"Your Address","common.warning":"Warning","common.my_address":"My Address","common.my_wallet":"My Wallet","common.my_collections":"My Collections","common.my_balance":"My Balance","common.na":"N/A","common.simple_plural_without_data":"One comment|Many comments","common.simple_plural_with_data":"{{count}} comment|{{count}} comments","common.advanced_plural_without_data":"{0} no comments yet|{1} 1 comment|[2,*] Many comments","common.advanced_plural_with_data":"{0} no comments yet|{1} 1 comment|[2,*] {{count}} comments","common.copy_clipboard":"Copy to Clipboard","common.copy":"Copy","common.download":"Download","common.zoom":"Zoom","common.my_collection":"My Collection","common.max":"Max","common.chain":"Chain","common.copied":"Copied!","common.coming_soon":"Coming Soon","common.more_details":"More Details","common.close":"Close","common.close_toast":"Close toast","common.loading":"Loading","common.price":"Price","common.articles":"Articles","common.most_popular":"Most Popular","common.market_cap":"Market Cap","common.volume":"Volume","common.volume_frequency":"Volume {{frequency}}","common.value":"Value","common.last_n_days":"Last {{count}} Days","common.details":"Details","common.view_all":"View All","common.view_more_on_polygonscan":"View More on Polygonscan","common.view_more_on_etherscan":"View More on Etherscan","common.view_nft_on_etherscan":"View NFT on Etherscan","common.view_nft_on_polygonscan":"View NFT on Polygonscan","common.view_nft_on_goerli_tesnet":"View NFT on Goerli Testnet Explorer","common.view_nft_on_mumbai_tesnet":"View NFT on Mumbai Testnet Explorer","common.polygonscan":"Polygonscan","common.etherscan":"Etherscan","common.featured":"Featured","common.floor_price":"Floor Price","common.floor":"Floor","common.supply":"Supply","common.owners":"Owners","common.created":"Created","common.nft":"NFT","common.collection":"Collection","common.collections":"Collections","common.gallery":"Gallery","common.basic_gallery":"Basic Gallery","common.gallery_name":"Gallery Name","common.create_gallery":"Create Gallery","common.external_link":"External Link","common.follow_link":"Follow Link","common.cover":"Cover","common.template":"Template","common.page":"Page","common.polygon":"Polygon","common.ethereum":"Ethereum","common.mumbai":"Mumbai","common.goerli":"Goerli","common.of":"of","common.pagination_input_placeholder":"Enter the page number","common.pagination_input_placeholder_mobile":"Page number","common.nft_count":"{0} {{count}} NFTs|{1} {{count}} NFT|[2,*] {{count}} NFTs","common.nft_gallery":"NFT Gallery","common.unable_to_retrieve_image":"Unable to retrieve your NFT image at this time","common.optional":"Optional","common.selected":"Selected","common.select":"Select","common.preview":"Preview","common.image_size_error":"Image size must not exceed 2MB","common.image_dimensions_error":"Image dimensions must exceed 287px x 190px","common.write_to_confirm":"Write {{word}} to confirm","common.n_hours":"{0} {{count}} hour|{1} {{count}} hour|[2,*] {{count}} hours","common.n_minutes":"{0} {{count}} minute|{1} {{count}} minute|[2,*] {{count}} minutes","common.report":"Report","common.nfts":"NFTs","common.n_nfts":"{0}NFTs|{1}NFT|[2,*]NFTs","common.n_collections":"{0}collections|{1}collection|[2,*]collections","common.back":"Back","common.back_to":"Back to","common.name":"Name","common.type":"Type","common.from":"From","common.to":"To","common.sale_price":"Sale Price","common.recent_activity":"Recent Activity","common.time":"Time","common.datetime.few_seconds_ago":"A few seconds ago","common.datetime.minutes_ago":"{0} Less than a minute ago|{1} A minute ago|[2,*] {{count}} minutes ago","common.datetime.hours_ago":"{0} Less than an hour ago|{1} An hour ago|[2,*] {{count}} hours ago","common.datetime.days_ago":"{0} Less than a day ago|{1} A day ago|[2,*] {{count}} days ago","common.datetime.weeks_ago":"{0} Less than a week ago|{1} A week ago|[2,*] {{count}} weeks ago","common.datetime.months_ago":"{0} Less than a month ago|{1} A month ago|[2,*] {{count}} months ago","common.datetime.years_ago":"{0} Less than a year ago|{1} A year ago|[2,*] {{count}} years ago","common.no_traits_found":"No traits found.","common.empty_transactions":"You don't have any transactions yet. Once transactions have been made, they will show up here.","common.error":"Error","common.refresh":"Refresh","common.refresh_metadata":"Refresh Metadata","common.refreshing_metadata":"Refreshing Metadata... Please check back later.","common.refreshing_activity":"Refreshing Activity... Please check back later.","common.pending_confirmation":"Pending Confirmation","common.confirmed_transaction":"Confirmed Transaction","common.transaction_error":"Transaction Error","common.transaction_error_description_first_part":"Your transaction encountered an error. View this transaction on","common.transaction_error_description_second_part":"for more details.","common.home":"Home","common.contact":"Contact","common.menu":"Menu","common.website":"Website","common.twitter":"Twitter","common.discord":"Discord","common.facebook":"Facebook","common.reddit":"Reddit","common.x":"X","common.sort":"Sort","common.drafts":"Drafts","common.draft":"Draft","common.delete_draft":"Delete Draft","common.share_on":"Share on {{platform}}","common.top":"Top","common.all_chains":"All chains","footer.copyright":"{{year}} © Dashbrd. All rights reserved.","footer.all_rights_reserved":"All rights reserved","footer.privacy_policy":"Privacy Policy","footer.terms_of_service":"Terms of Service","footer.powered_by":"Powered by","format.fiat":"{{ value, currency }}","format.number":"{{ value, number }}","metatags.home.title":"Dashbrd | Web3 Portfolio Management Made Simple","metatags.home.description":"Simplify your Web3 journey with Dashbrd. Manage your portfolio of tokens, NFTs, and other digital collectibles across the Ethereum and Polygon blockchains.","metatags.home.image":"/images/meta/home.png","metatags.error.title":"Error {{code}} | Dashbrd","metatags.wallet.title":"My Wallet | Dashbrd","metatags.galleries.title":"Top NFT Galleries | Dashbrd","metatags.galleries.image":"/images/meta/nft-galleries.png","metatags.galleries.description":"Explore user published NFT galleries to find custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.most_popular.title":"Most Popular Galleries | Dashbrd","metatags.galleries.most_popular.image":"/images/meta/most-popular-nft-galleries.png","metatags.galleries.most_popular.description":"Explore and discover Most Popular NFT Galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.newest.title":"Newest Galleries | Dashbrd","metatags.galleries.newest.image":"/images/meta/newest-nft-galleries.png","metatags.galleries.newest.description":"Explore and discover most recent NFT galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More","metatags.galleries.most_valuable.title":"Most Valuable Galleries | Dashbrd","metatags.galleries.most_valuable.image":"/images/meta/most-valuable-nft-galleries.png","metatags.galleries.most_valuable.description":"Explore and discover Most Valuable NFT Galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.view.title":"{{name}} | Dashbrd","metatags.galleries.view.description":"{{name}} | A Curated NFT Gallery at Dashbrd","metatags.galleries.view.image":"/images/meta/nft-gallery.png","metatags.my_galleries.title":"My Galleries | Dashbrd","metatags.my_galleries.title_draft":"My Draft Galleries | Dashbrd","metatags.my_galleries.create.title":"Create Gallery | Dashbrd","metatags.my_galleries.edit.title":"Edit {{name}} | Dashbrd","metatags.collections.title":"Collections | Dashbrd","metatags.collections.view.title":"{{name}} Collection | Dashbrd","metatags.collections.view.description":"Immerse yourself in the intricate details of {{name}} collection, featuring remarkable digital assets. Start your NFT journey today!","metatags.collections.view.image":"/images/meta/nft-collection.png","metatags.my-collections.title":"My Collections | Dashbrd","metatags.nfts.view.title":"{{nft}} NFT | Dashbrd","metatags.nfts.view.description":"Uncover the complete story of {{nft}} NFT from the {{collection}} collection, delving into its unique attributes and distinctive features.","metatags.nfts.view.image":"/images/meta/nft-details.png","metatags.settings.title":"Settings | Dashbrd","metatags.articles.title":"Articles | Dashbrd","metatags.articles.view.title":"{{title}} | Dashbrd","metatags.login.title":"Login | Dashbrd","metatags.privacy_policy.title":"Privacy Policy | Dashbrd","metatags.privacy_policy.description":"Dashbrd’s privacy policy outlines the information we collect and explains your choices surrounding how we use information about you.","metatags.terms_of_service.title":"Terms of Service | Dashbrd","metatags.terms_of_service.description":"These Terms of Service cover your use and access to services, products or websites of Dashbrd.","metatags.cookie_policy.title":"Cookie Policy | Dashbrd","metatags.cookie_policy.description":"Dashbrd uses cookies to make the website more user-friendly. Find out about the main types of cookies we use, and what we use them for.","metatags.welcome.title":"Welcome to Dashbrd | Web3 Simplified","pages.onboarding.title":"Get Started","pages.onboarding.heading":"Your monkeys were bored and ran off, we are trying to round them up.","pages.onboarding.message":"We are setting up your account. This process usually takes just a few minutes, but can take up to 15 minutes.","pages.error.heading":"Oops, something went wrong ...","pages.error.message":"Please try again or get in touch if the issue persists.","pages.maintenance.title":"Dashbrd is currently down for scheduled maintenance.","pages.maintenance.description":"We expect to be back soon. Thanks for your patience.","pages.dashboard.title":"My Wallet","pages.dashboard.breakdown.title":"Portfolio Breakdown","pages.dashboard.line_chart.data_error":"Could not load chart data","pages.articles.title":"Articles","pages.articles.featured_collections":"Featured Collections","pages.articles.placeholder_more_soon":"More Soon","pages.articles.no_articles":"No articles have been published yet. Please check back later!","pages.articles.header_title":"Explore our collection of","pages.articles.header_suffix_one":"published article","pages.articles.header_suffix_other":"published articles","pages.articles.audio_version":"Audio version","pages.articles.consists_of_collections":"{0} This article highlights {{count}} collections|{1} This article highlights {{count}} collection|[2,*] This article highlights {{count}} collections","pages.collections.title":"Collections","pages.collections.collections":"Collections","pages.collections.popular_collections":"Popular Collections","pages.collections.collection_value":"Collection Value","pages.collections.nfts_owned":"NFTs Owned","pages.collections.header_title":"You own <0>{{nftsCount}} {{nfts}} across <0>{{collectionsCount}} {{collections}}, worth about <0><1>{{worth}}","pages.collections.search_placeholder":"Search by Collection","pages.collections.properties":"Properties","pages.collections.collections_network":"Collections Network","pages.collections.property_search_placeholder":"Feature Search","pages.collections.floor_price":"Floor Price","pages.collections.value":"Value","pages.collections.rarity":"Rarity","pages.collections.report":"Report","pages.collections.hide_collection":"Hide Collection","pages.collections.unhide_collection":"Unhide Collection","pages.collections.no_collections":"You do not own any NFTs yet. Once you do they will be shown here.","pages.collections.all_collections_hidden":"You have hidden all your collections. Unhide and they will appear here.","pages.collections.about_collection":"About Collection","pages.collections.show_hidden":"Show Hidden","pages.collections.show_my_collection":"Show My Collection","pages.collections.owned":"Owned","pages.collections.activities.loading_activities":"We're fetching Activity for this NFT, please hang tight, this can take a while.","pages.collections.activities.loading_activities_collection":"We're fetching Activity for this collection, please hang tight, this can take a while.","pages.collections.activities.ignores_activities":"We don't support activity history for this collection yet.","pages.collections.activities.no_activity":"This collection does not have any activity yet.","pages.collections.activities.types.LABEL_MINT":"Mint","pages.collections.activities.types.LABEL_TRANSFER":"Transfer","pages.collections.activities.types.LABEL_SALE":"Sale","pages.collections.articles.no_articles":"No articles have been linked to this collection as of now.","pages.collections.articles.no_articles_with_filters":"We could not find any articles matching your search criteria, please try again!","pages.collections.articles.search_placeholder":"Search in Articles","pages.collections.articles.sort_latest":"Latest","pages.collections.articles.sort_popularity":"Most Popular","pages.collections.search.loading_results":"Loading results...","pages.collections.search.no_results":"We could not find anything matching your search criteria, please try again!","pages.collections.search.no_results_with_filters":"We could not find anything matching your filters, please try again!","pages.collections.search.no_results_ownership":"You do not own any NFTs in this collection","pages.collections.search.error":"Could not load search results. Please try again later.","pages.collections.sorting.token_number":"Token Number","pages.collections.sorting.recently_received":"Recently Received","pages.collections.sorting.recently_created":"Recently Created","pages.collections.sorting.oldest_collection":"Oldest Collection","pages.collections.traits.description":"List of NFT traits by % of occurrence in the collection","pages.collections.traits.no_traits":"No Properties can be found for this NFT","pages.collections.menu.collection":"Collection","pages.collections.menu.articles":"Articles","pages.collections.menu.activity":"Activity","pages.collections.hidden_modal.collection_hidden":"Collection Hidden","pages.collections.hidden_modal.description":"This collection is currently set to Hidden. Are you sure you want to unhide this collection? You can\n reset the collection to hidden from the collection menu.","pages.collections.hidden_modal.unhide":"Unhide","pages.collections.hidden_modal.error":"Something went wrong. Please try again.","pages.collections.external_modal.you_wish_continue":"You are about to leave Dashbrd to an external website. Dashbrd has no control over the content of\n this site. Are you sure you wish to continue?","pages.collections.external_modal.not_show":"Do not show this message again.","pages.collections.refresh.title":"Refresh your collection","pages.collections.refresh.notice":"You can refresh data every 15 minutes.","pages.collections.refresh.notice_wait":"Please wait. You can refresh data every 15 minutes.","pages.collections.refresh.toast":"We're updating information for your collection.","pages.collections.featured.title":"Featured Collections","pages.collections.featured.button":"Explore Collection","pages.nfts.nft":"nft","pages.nfts.about_nft":"About NFT","pages.nfts.owned_by":"Owned by","pages.nfts.collection_image":"collection image","pages.nfts.menu.properties":"Properties","pages.nfts.menu.activity":"Activity","pages.reports.title":"Submit a Report","pages.reports.description":"Thanks for looking out by reporting things that break the rules. Let us know what's happening and we'll receive the report.","pages.reports.success":"Thank you for your report. We'll review it and see if it breaks our ToS.","pages.reports.failed":"Something went wrong. Please try again.","pages.reports.throttle":"You have made too many requests. Please wait {{time}} before reporting again.","pages.reports.reported":"You have already reported this {{model}}.","pages.reports.reasons.spam":"Spam","pages.reports.reasons.violence":"Promoting Violence","pages.reports.reasons.hate":"Hate","pages.reports.reasons.inappropriate_content":"Inappropriate Content","pages.reports.reasons.impersonation":"Impersonation","pages.reports.reasons.trademark":"Trademark or Copyright","pages.reports.reasons.selfharm":"Self-Harm","pages.reports.reasons.harassment":"Harassment","pages.galleries.title":"Galleries","pages.galleries.empty_title":"No galleries have been published yet. Once they do they will appear here.","pages.galleries.search.loading_results":"Loading results...","pages.galleries.search.no_results":"We could not find anything matching your search criteria, please try again!","pages.galleries.search.placeholder":"Search by name or curator address","pages.galleries.search.placeholder_nfts":"Search by NFTs","pages.galleries.search.error":"Could not load search results. Please try again later.","pages.galleries.my_galleries.title":"My Galleries","pages.galleries.my_galleries.subtitle":"Manage your galleries","pages.galleries.my_galleries.new_gallery":"New Gallery","pages.galleries.my_galleries.no_galleries":"You have not created any galleries yet. To create a gallery, click on the \"Create Gallery\" button.","pages.galleries.my_galleries.no_draft_galleries":"You have no draft galleries yet. To create a gallery, click on the \"Create Gallery\" button.","pages.galleries.my_galleries.succesfully_deleted":"Gallery has been successfully removed","pages.galleries.my_galleries.draft_succesfully_deleted":"Draft has been successfully removed","pages.galleries.my_galleries.successfully_created":"Gallery has been successfully created","pages.galleries.my_galleries.successfully_updated":"Gallery has been successfully updated","pages.galleries.my_galleries.new_gallery_no_nfts":"Creating a Gallery requires you to own an NFT.","pages.galleries.my_galleries.delete_modal.title":"Delete Draft","pages.galleries.my_galleries.delete_modal.text":"Are you sure you want to delete the draft? Everything you've done will be deleted and you won't be able to get it back.","pages.galleries.my_galleries.nfts_no_longer_owned":"NFTs no longer owned by this wallet have been removed from the draft”","pages.galleries.copy_gallery_link":"Copy Gallery Link","pages.galleries.my_nfts":"My NFTs","pages.galleries.value":"Value","pages.galleries.floor_price":"Floor Price","pages.galleries.nfts":"NFTs","pages.galleries.collections":"Collections","pages.galleries.galleries_count_simple":"{0} galleries|{1} gallery|[2,*] galleries","pages.galleries.galleries_count":"{0} {{count}} Galleries|{1} {{count}} Gallery|[2,*] {{count}} Galleries","pages.galleries.collections_count_simple":"{0} collections|{1} collection|[2,*] collections","pages.galleries.collections_count":"{0} {{count}} Collections|{1} {{count}} Collection|[2,*] {{count}} Collections","pages.galleries.nfts_count_simple":"{0} NFTs|{1} NFT|[2,*] NFTs","pages.galleries.nfts_count":"{0} {{count}} NFTs|{1} {{count}} NFT|[2,*] {{count}} NFTs","pages.galleries.users_count_simple":"{0} users|{1} user|[2,*] users","pages.galleries.users_count":"{0} {{count}} Users|{1} {{count}} User|[2,*] {{count}} Users","pages.galleries.featuring":"Featuring","pages.galleries.curated_by":"Curated by","pages.galleries.worth_about":"Worth About","pages.galleries.valued_at":"valued at","pages.galleries.from":"From","pages.galleries.most_popular_galleries":"Most Popular Galleries","pages.galleries.newest_galleries":"Newest Galleries","pages.galleries.most_valuable_galleries":"Most Valuable Galleries","pages.galleries.most_popular":"Most Popular","pages.galleries.newest":"Newest","pages.galleries.most_valuable":"Most Valuable","pages.galleries.create.search_by_nfts":"Search by NFTs","pages.galleries.create.input_placeholder":"Enter gallery name","pages.galleries.create.title_too_long":"Gallery name must not exceed {{max}} characters.","pages.galleries.create.already_selected_nft":"NFT already exists in this gallery","pages.galleries.create.nft_missing_image":"Only NFTs with images can be added to galleries","pages.galleries.create.nft_gallery_limit":"You can only add 16 NFTs per gallery","pages.galleries.create.gallery_cover":"Gallery Cover","pages.galleries.create.gallery_cover_description":"The cover is used for the card on the gallery list page. While the cover is not a requirement it will allow you to add personality and stand out from the crowd.","pages.galleries.create.gallery_cover_information":"Image dimensions must be at least 287px x 190px, with a max size of 2 MB (JPG, PNG or GIF)","pages.galleries.create.no_results":"We could not find anything matching your search criteria, please try again!","pages.galleries.create.templates.cover":"Cover","pages.galleries.create.templates.template":"Template","pages.galleries.create.templates.select":"Select Gallery Template","pages.galleries.create.templates.basic":"Basic Gallery","pages.galleries.create.templates.coming_soon":"More Coming Soon","pages.galleries.create.load_more_collections_one":"Load {{count}} More Collection","pages.galleries.create.load_more_collections_other":"Load {{count}} More Collections","pages.galleries.create.load_more_nfts":"Load More NFTs","pages.galleries.create.can_purchase":"You can purchase NFTs with these top NFT Marketplaces:","pages.galleries.create.must_own_one_nft":"You must own at least one (1) NFT in order to create a gallery.","pages.galleries.create.back_to_galleries":"Back to Galleries","pages.galleries.create.draft_saved":"Draft Saved","pages.galleries.create.saving_to_draft":"Saving to draft","pages.galleries.create.drafts_limit_modal_title":"Draft Gallery Limit","pages.galleries.create.drafts_limit_modal_message":"You’ve hit your limit for draft galleries. While you can still make new galleries and publish them, they won’t be saved as drafts. To Free up space, you can either delete existing drafts or publish them.","pages.galleries.create.drafts_limit_modal_cancel":"Go to Drafts","pages.galleries.delete_modal.title":"Delete Gallery","pages.galleries.delete_modal.confirmation_text":"Are you sure you want to delete the gallery? Deleting a Gallery is permanent, all associated views and likes will be lost.","pages.galleries.consists_of_collections":"{0} This gallery consists of {{count}} collections|{1} This gallery consists of {{count}} collection|[2,*] This gallery consists of {{count}} collections","pages.galleries.guest_banner.title":"Craft the ultimate","pages.galleries.guest_banner.subtitle":"Pick your favorites, curate your gallery, & share it with the world.","pages.profile.title":"Profile","pages.token_panel.balance_tooltip":"Total percentage of the portfolio held in this token","pages.token_panel.insufficient_funds":"Insufficient Balance","pages.token_panel.error":"Dashbrd has failed to load token information. Please try again later.","pages.token_panel.failed_to_retrieve_transactions":"We were unable to fetch your transactions.","pages.token_panel.tabs.transaction_history":"Transaction History","pages.token_panel.tabs.history":"History","pages.token_panel.tabs.market_data":"Market Data","pages.token_panel.details.current_price":"Current Price","pages.token_panel.details.title":"Token Details","pages.token_panel.details.market_cap":"Market Cap","pages.token_panel.details.volume":"Daily Volume","pages.token_panel.details.supply":"Minted Supply","pages.token_panel.details.ath":"All-Time High","pages.token_panel.details.atl":"All-Time Low","pages.token_panel.chart.failed":"Dashbrd has failed to load chart information. Please try again later.","pages.transaction_details_panel.title":"Transaction Details","pages.transaction_details_panel.details.blockchain":"Blockchain","pages.transaction_details_panel.details.timestamp":"Timestamp","pages.transaction_details_panel.details.transaction_hash":"Transaction Hash","pages.transaction_details_panel.details.transaction_fee":"Transaction Fee","pages.transaction_details_panel.details.gas_price":"Gas Price","pages.transaction_details_panel.details.gas_used":"Gas Used","pages.transaction_details_panel.details.nonce":"Nonce","pages.send_receive_panel.send.labels.token_and_amount":"Token and Amount","pages.send_receive_panel.send.labels.destination_address":"Destination Address","pages.send_receive_panel.send.labels.projected_fee":"Projected Fee","pages.send_receive_panel.send.placeholders.enter_amount":"Enter Amount","pages.send_receive_panel.send.placeholders.insert_recipient_address":"Insert Recipient Address","pages.send_receive_panel.send.placeholders.projected_fee":"Projected Fee","pages.send_receive_panel.send.errors.amount":"Insufficient Funds: You do not have enough to cover the amount + fee.","pages.send_receive_panel.send.errors.destination":"Destination address is not correct. Check and input again.","pages.send_receive_panel.send.hints.token_price":"Token Price","pages.send_receive_panel.send.fees.Fast":"Fast","pages.send_receive_panel.send.fees.Avg":"Avg","pages.send_receive_panel.send.fees.Slow":"Slow","pages.send_receive_panel.send.search_dropdown.placeholder":"Search token","pages.send_receive_panel.send.search_dropdown.no_results":"No Results","pages.send_receive_panel.send.search_dropdown.error":"Error occurred while searching tokens.","pages.send_receive_panel.send.transaction_time":"Transaction Time: ~{{ time }} minutes","pages.send_receive_panel.send.from":"From","pages.send_receive_panel.send.to":"To","pages.send_receive_panel.send.amount":"Amount","pages.send_receive_panel.send.fee":"Fee","pages.send_receive_panel.send.total_amount":"Total Amount","pages.send_receive_panel.send.waiting_message":"Review and verify the information on your MetaMask. Sign to send the transaction.","pages.send_receive_panel.send.waiting_spinner_text":"Waiting for confirmation...","pages.send_receive_panel.send.failed_message":"It looks like something went wrong while sending your transaction. Press 'Retry' to make another attempt.","pages.send_receive_panel.receive.alert":"Send only Polygon or Ethereum Network compatible tokens to this address or you could permanently lose your funds!","pages.settings.title":"Settings","pages.settings.sidebar.general":"General","pages.settings.sidebar.notifications":"Notifications","pages.settings.sidebar.session_history":"Sessions History","pages.settings.general.title":"Settings","pages.settings.general.subtitle":"Customize your App Experience","pages.settings.general.currency":"Currency","pages.settings.general.currency_subtitle":"Select your default currency which will be used throughout the app.","pages.settings.general.time_date":"Time & Date","pages.settings.general.time_date_subtitle":"Select how you want time and date be shown inside app.","pages.settings.general.date_format":"Date Format","pages.settings.general.time_format":"Time Format","pages.settings.general.timezone":"Timezone","pages.settings.general.set_defaults":"Set Defaults","pages.settings.general.set_defaults_content":"Reverting to the default settings will remove any customizations previously made. Are you sure?","pages.settings.general.save":"Save Settings","pages.settings.general.saved":"Your settings have been successfully saved","pages.wallet.title":"Wallet","pages.privacy_policy.title":"Privacy Policy","pages.terms_of_service.title":"Terms of Service","pagination.previous":"« Previous","pagination.next":"Next »","passwords.reset":"Your password has been reset!","passwords.sent":"We have emailed your password reset link!","passwords.throttled":"Please wait before retrying.","passwords.token":"This password reset token is invalid.","passwords.user":"We can't find a user with that email address.","urls.landing":"https://dashbrd.com","urls.cookie_policy":"https://dashbrd.com/cookie-policy","urls.privacy_policy":"https://dashbrd.com/privacy-policy","urls.terms_of_service":"https://dashbrd.com/terms-of-service","urls.twitter":"https://x.com/DashbrdApp","urls.discord":"https://discord.gg/MJyWKkCJ5k","urls.github":"https://github.com/ArdentHQ/dashbrd","urls.coingecko":"https://www.coingecko.com","urls.etherscan":"https://etherscan.io","urls.polygonscan":"https://polygonscan.com","urls.alchemy":"https://www.alchemy.com","urls.moralis":"https://moralis.io","urls.mnemonic":"https://www.mnemonichq.com","urls.opensea":"https://opensea.io/","urls.explorers.etherscan.token_transactions":"https://etherscan.io/token/{{token}}?a={{address}}","urls.explorers.etherscan.addresses":"https://etherscan.io/address/{{address}}","urls.explorers.etherscan.transactions":"https://etherscan.io/tx/{{id}}","urls.explorers.etherscan.nft":"https://etherscan.io/nft/{{address}}/{{nftId}}","urls.explorers.polygonscan.token_transactions":"https://polygonscan.com/token/{{token}}?a={{address}}","urls.explorers.polygonscan.addresses":"https://polygonscan.com/address/{{address}}","urls.explorers.polygonscan.transactions":"https://polygonscan.com/tx/{{id}}","urls.explorers.polygonscan.nft":"https://polygonscan.com/nft/{{address}}/{{nftId}}","urls.explorers.mumbai.token_transactions":"https://mumbai.polygonscan.com/token/{{token}}?a={{address}}","urls.explorers.mumbai.addresses":"https://mumbai.polygonscan.com/address/{{address}}","urls.explorers.mumbai.transactions":"https://mumbai.polygonscan.com/tx/{{id}}","urls.explorers.mumbai.nft":"https://mumbai.polygonscan.com/nft/{{address}}/{{nftId}}","urls.explorers.goerli.token_transactions":"https://goerli.etherscan.io/token/{{token}}?a={{address}}","urls.explorers.goerli.addresses":"https://goerli.etherscan.io/address/{{address}}","urls.explorers.goerli.transactions":"https://goerli.etherscan.io/tx/{{id}}","urls.explorers.goerli.nft":"https://goerli.etherscan.io/nft/{{address}}/{{nftId}}","urls.marketplaces.opensea.collection":"https://opensea.io/assets/{{network}}/{{address}}","urls.marketplaces.opensea.nft":"https://opensea.io/assets/{{network}}/{{address}}/{{nftId}}","urls.marketplaces.rarible.collection":"https://rarible.com/collection/{{address}}/items","urls.marketplaces.rarible.nft":"https://rarible.com/token/{{address}}:{{nftId}}","urls.marketplaces.blur.collection":"https://blur.io/collection/{{address}}","urls.marketplaces.blur.nft":"https://blur.io/asset/{{address}}/{{nftId}}","urls.marketplaces.looksrare.collection":"https://looksrare.org/collections/{{address}}","urls.marketplaces.looksrare.nft":"https://looksrare.org/collections/{{address}}/{{nftId}}","validation.accepted":"The {{attribute}} must be accepted.","validation.accepted_if":"The {{attribute}} must be accepted when {{other}} is {{value}}.","validation.active_url":"The {{attribute}} is not a valid URL.","validation.after":"The {{attribute}} must be a date after {{date}}.","validation.after_or_equal":"The {{attribute}} must be a date after or equal to {{date}}.","validation.alpha":"The {{attribute}} must only contain letters.","validation.alpha_dash":"The {{attribute}} must only contain letters, numbers, dashes and underscores.","validation.alpha_num":"The {{attribute}} must only contain letters and numbers.","validation.array":"The {{attribute}} must be an array.","validation.ascii":"The {{attribute}} must only contain single-byte alphanumeric characters and symbols.","validation.before":"The {{attribute}} must be a date before {{date}}.","validation.before_or_equal":"The {{attribute}} must be a date before or equal to {{date}}.","validation.between.array":"The {{attribute}} must have between {{min}} and {{max}} items.","validation.between.file":"The {{attribute}} must be between {{min}} and {{max}} kilobytes.","validation.between.numeric":"The {{attribute}} must be between {{min}} and {{max}}.","validation.between.string":"The {{attribute}} must be between {{min}} and {{max}} characters.","validation.boolean":"The {{attribute}} field must be true or false.","validation.confirmed":"The {{attribute}} confirmation does not match.","validation.current_password":"The password is incorrect.","validation.date":"The {{attribute}} is not a valid date.","validation.date_equals":"The {{attribute}} must be a date equal to {{date}}.","validation.date_format":"The {{attribute}} does not match the format {{format}}.","validation.decimal":"The {{attribute}} must have {{decimal}} decimal places.","validation.declined":"The {{attribute}} must be declined.","validation.declined_if":"The {{attribute}} must be declined when {{other}} is {{value}}.","validation.different":"The {{attribute}} and {{other}} must be different.","validation.digits":"The {{attribute}} must be {{digits}} digits.","validation.digits_between":"The {{attribute}} must be between {{min}} and {{max}} digits.","validation.dimensions":"The {{attribute}} has invalid image dimensions.","validation.distinct":"The {{attribute}} field has a duplicate value.","validation.doesnt_end_with":"The {{attribute}} may not end with one of the following: {{values}}.","validation.doesnt_start_with":"The {{attribute}} may not start with one of the following: {{values}}.","validation.email":"The {{attribute}} must be a valid email address.","validation.ends_with":"The {{attribute}} must end with one of the following: {{values}}.","validation.enum":"The selected {{attribute}} is invalid.","validation.exists":"The selected {{attribute}} is invalid.","validation.file":"The {{attribute}} must be a file.","validation.filled":"The {{attribute}} field must have a value.","validation.gt.array":"The {{attribute}} must have more than {{value}} items.","validation.gt.file":"The {{attribute}} must be greater than {{value}} kilobytes.","validation.gt.numeric":"The {{attribute}} must be greater than {{value}}.","validation.gt.string":"The {{attribute}} must be greater than {{value}} characters.","validation.gte.array":"The {{attribute}} must have {{value}} items or more.","validation.gte.file":"The {{attribute}} must be greater than or equal to {{value}} kilobytes.","validation.gte.numeric":"The {{attribute}} must be greater than or equal to {{value}}.","validation.gte.string":"The {{attribute}} must be greater than or equal to {{value}} characters.","validation.image":"The {{attribute}} must be an image.","validation.in":"The selected {{attribute}} is invalid.","validation.in_array":"The {{attribute}} field does not exist in {{other}}.","validation.integer":"The {{attribute}} must be an integer.","validation.ip":"The {{attribute}} must be a valid IP address.","validation.ipv4":"The {{attribute}} must be a valid IPv4 address.","validation.ipv6":"The {{attribute}} must be a valid IPv6 address.","validation.json":"The {{attribute}} must be a valid JSON string.","validation.lowercase":"The {{attribute}} must be lowercase.","validation.lt.array":"The {{attribute}} must have less than {{value}} items.","validation.lt.file":"The {{attribute}} must be less than {{value}} kilobytes.","validation.lt.numeric":"The {{attribute}} must be less than {{value}}.","validation.lt.string":"The {{attribute}} must be less than {{value}} characters.","validation.lte.array":"The {{attribute}} must not have more than {{value}} items.","validation.lte.file":"The {{attribute}} must be less than or equal to {{value}} kilobytes.","validation.lte.numeric":"The {{attribute}} must be less than or equal to {{value}}.","validation.lte.string":"The {{attribute}} must be less than or equal to {{value}} characters.","validation.mac_address":"The {{attribute}} must be a valid MAC address.","validation.max.array":"The {{attribute}} must not have more than {{max}} items.","validation.max.file":"The {{attribute}} must not be greater than {{max}} kilobytes.","validation.max.numeric":"The {{attribute}} must not be greater than {{max}}.","validation.max.string":"The {{attribute}} must not be greater than {{max}} characters.","validation.max_digits":"The {{attribute}} must not have more than {{max}} digits.","validation.mimes":"The {{attribute}} must be a file of type: {{values}}.","validation.mimetypes":"The {{attribute}} must be a file of type: {{values}}.","validation.min.array":"The {{attribute}} must have at least {{min}} items.","validation.min.file":"The {{attribute}} must be at least {{min}} kilobytes.","validation.min.numeric":"The {{attribute}} must be at least {{min}}.","validation.min.string":"The {{attribute}} must be at least {{min}} characters.","validation.min_digits":"The {{attribute}} must have at least {{min}} digits.","validation.missing":"The {{attribute}} field must be missing.","validation.missing_if":"The {{attribute}} field must be missing when {{other}} is {{value}}.","validation.missing_unless":"The {{attribute}} field must be missing unless {{other}} is {{value}}.","validation.missing_with":"The {{attribute}} field must be missing when {{values}} is present.","validation.missing_with_all":"The {{attribute}} field must be missing when {{values}} are present.","validation.multiple_of":"The {{attribute}} must be a multiple of {{value}}.","validation.not_in":"The selected {{attribute}} is invalid.","validation.not_regex":"The {{attribute}} format is invalid.","validation.numeric":"The {{attribute}} must be a number.","validation.password.letters":"The {{attribute}} must contain at least one letter.","validation.password.mixed":"The {{attribute}} must contain at least one uppercase and one lowercase letter.","validation.password.numbers":"The {{attribute}} must contain at least one number.","validation.password.symbols":"The {{attribute}} must contain at least one symbol.","validation.password.uncompromised":"The given {{attribute}} has appeared in a data leak. Please choose a different {{attribute}}.","validation.present":"The {{attribute}} field must be present.","validation.prohibited":"The {{attribute}} field is prohibited.","validation.prohibited_if":"The {{attribute}} field is prohibited when {{other}} is {{value}}.","validation.prohibited_unless":"The {{attribute}} field is prohibited unless {{other}} is in {{values}}.","validation.prohibits":"The {{attribute}} field prohibits {{other}} from being present.","validation.regex":"The {{attribute}} format is invalid.","validation.required":"The {{attribute}} field is required.","validation.required_array_keys":"The {{attribute}} field must contain entries for: {{values}}.","validation.required_if":"The {{attribute}} field is required when {{other}} is {{value}}.","validation.required_if_accepted":"The {{attribute}} field is required when {{other}} is accepted.","validation.required_unless":"The {{attribute}} field is required unless {{other}} is in {{values}}.","validation.required_with":"The {{attribute}} field is required when {{values}} is present.","validation.required_with_all":"The {{attribute}} field is required when {{values}} are present.","validation.required_without":"The {{attribute}} field is required when {{values}} is not present.","validation.required_without_all":"The {{attribute}} field is required when none of {{values}} are present.","validation.same":"The {{attribute}} and {{other}} must match.","validation.size.array":"The {{attribute}} must contain {{size}} items.","validation.size.file":"The {{attribute}} must be {{size}} kilobytes.","validation.size.numeric":"The {{attribute}} must be {{size}}.","validation.size.string":"The {{attribute}} must be {{size}} characters.","validation.starts_with":"The {{attribute}} must start with one of the following: {{values}}.","validation.string":"The {{attribute}} must be a string.","validation.timezone":"The {{attribute}} must be a valid timezone.","validation.unique":"The {{attribute}} has already been taken.","validation.uploaded":"The {{attribute}} failed to upload.","validation.uppercase":"The {{attribute}} must be uppercase.","validation.url":"The {{attribute}} must be a valid URL.","validation.ulid":"The {{attribute}} must be a valid ULID.","validation.uuid":"The {{attribute}} must be a valid UUID.","validation.custom.attribute-name.rule-name":"custom-message","validation.unsupported_currency_code":"The currency code you provided is invalid or not supported.","validation.unsupported_period":"The period you provided is invalid or not supported.","validation.unsupported_token_symbol":"The token symbol you provided is invalid or not supported.","validation.gallery_title_required":"Gallery name is required.","validation.gallery_title_max_characters":"The gallery name should not exceed 50 characters.","validation.gallery_title_invalid":"The gallery name is invalid.","validation.nfts_required":"Please add at least one NFT.","validation.nfts_max_size":"Galleries can contain no more than {{limit}} NFTs","validation.invalid_nfts":"The NFT in position {{position}} is invalid, please select another one.","validation.invalid_cover":"You have selected an invalid cover image, please try another one."} \ No newline at end of file diff --git a/resources/js/Pages/Collections/Components/CollectionImage/CollectionImageWithIcon.tsx b/resources/js/Pages/Collections/Components/CollectionImage/CollectionImageWithIcon.tsx new file mode 100644 index 000000000..7fe3c7308 --- /dev/null +++ b/resources/js/Pages/Collections/Components/CollectionImage/CollectionImageWithIcon.tsx @@ -0,0 +1,36 @@ +import cn from "classnames"; +import React from "react"; +import { Img } from "@/Components/Image"; +import { NetworkIcon } from "@/Components/Networks/NetworkIcon"; + +export const CollectionImageWithIcon = ({ + image, + chainId, + className, + wrapperClassName, + networkClassName, +}: { + image: string | null; + chainId: App.Enums.Chain; + className?: string; + wrapperClassName?: string; + networkClassName?: string; +}): JSX.Element => ( +
    + + +
    + +
    +
    +); diff --git a/resources/js/Pages/Collections/Components/CollectionImage/index.tsx b/resources/js/Pages/Collections/Components/CollectionImage/index.tsx new file mode 100644 index 000000000..d05e5ee65 --- /dev/null +++ b/resources/js/Pages/Collections/Components/CollectionImage/index.tsx @@ -0,0 +1 @@ +export * from "./CollectionImageWithIcon"; diff --git a/resources/js/Pages/Collections/Components/CollectionNft/CollectionNft.tsx b/resources/js/Pages/Collections/Components/CollectionNft/CollectionNft.tsx index c7e76d315..5a8ffb76b 100644 --- a/resources/js/Pages/Collections/Components/CollectionNft/CollectionNft.tsx +++ b/resources/js/Pages/Collections/Components/CollectionNft/CollectionNft.tsx @@ -7,7 +7,13 @@ import { Tooltip } from "@/Components/Tooltip"; import { useIsTruncated } from "@/Hooks/useIsTruncated"; import { isTruthy } from "@/Utils/is-truthy"; -export const CollectionNft = ({ nft }: { nft: App.Data.Gallery.GalleryNftData }): JSX.Element => { +export const CollectionNft = ({ + nft, + classNames, +}: { + nft: App.Data.Gallery.GalleryNftData; + classNames?: string; +}): JSX.Element => { const { t } = useTranslation(); const nftTokenNumberReference = useRef(null); @@ -22,7 +28,10 @@ export const CollectionNft = ({ nft }: { nft: App.Data.Gallery.GalleryNftData }) collection: nft.collectionSlug, nft: nft.tokenNumber, })} - className="transition-default group cursor-pointer rounded-xl border border-theme-secondary-300 p-2 ring-theme-primary-100 hover:ring-2 dark:border-theme-dark-700 dark:ring-theme-dark-700" + className={cn( + "transition-default group cursor-pointer rounded-xl border border-theme-secondary-300 p-2 ring-theme-primary-100 hover:ring-2 dark:border-theme-dark-700 dark:ring-theme-dark-700", + classNames, + )} > { + const defaultNftCardStyles = + "bg-white dark:bg-theme-dark-900 grid sm:w-full sm:h-full min-w-full lg:min-w-fit lg:w-52 lg:h-fit"; + + return ( +
    1, + })} + > + + {nfts.length > 1 && ( + + )} + {nfts.length > 2 && ( +
    + ); +}; diff --git a/resources/js/Pages/Collections/Components/FeaturedCollections/FeaturedCollectionStats.tsx b/resources/js/Pages/Collections/Components/FeaturedCollections/FeaturedCollectionStats.tsx new file mode 100644 index 000000000..7b37df584 --- /dev/null +++ b/resources/js/Pages/Collections/Components/FeaturedCollections/FeaturedCollectionStats.tsx @@ -0,0 +1,62 @@ +import React from "react"; +import { useTranslation } from "react-i18next"; +import { GridHeader } from "@/Components/GridHeader"; +import { FormatCrypto } from "@/Utils/Currency"; + +export const FeaturedCollectionStats = ({ + floorPrice, + floorPriceCurrency, + floorPriceDecimals, + nftsCount, + volume, +}: { + floorPrice: string | null; + floorPriceCurrency: string | null; + floorPriceDecimals: number | null; + nftsCount: number; + volume: string | null; +}): JSX.Element => { + const { t } = useTranslation(); + + const token: Pick = { + name: "", + symbol: floorPriceCurrency ?? "", + decimals: floorPriceDecimals ?? 18, + }; + + return ( +
    + +
    + + } + /> +
    + + } + /> +
    + ); +}; diff --git a/resources/js/Pages/Collections/Components/FeaturedCollections/FeaturedCollectionsCarousel.tsx b/resources/js/Pages/Collections/Components/FeaturedCollections/FeaturedCollectionsCarousel.tsx new file mode 100644 index 000000000..0182094f6 --- /dev/null +++ b/resources/js/Pages/Collections/Components/FeaturedCollections/FeaturedCollectionsCarousel.tsx @@ -0,0 +1,28 @@ +import React from "react"; +import { Autoplay, Navigation, Pagination } from "swiper"; +import { FeaturedCollectionsItem } from "./FeaturedCollectionsItem"; +import { Carousel, CarouselItem } from "@/Components/Carousel"; + +export const FeaturedCollectionsCarousel = ({ + featuredCollections, +}: { + featuredCollections: App.Data.Collections.CollectionFeaturedData[]; +}): JSX.Element => ( + + {featuredCollections.map((collection, index) => ( + + + + ))} + +); diff --git a/resources/js/Pages/Collections/Components/FeaturedCollections/FeaturedCollectionsItem.tsx b/resources/js/Pages/Collections/Components/FeaturedCollections/FeaturedCollectionsItem.tsx new file mode 100644 index 000000000..672ab06a8 --- /dev/null +++ b/resources/js/Pages/Collections/Components/FeaturedCollections/FeaturedCollectionsItem.tsx @@ -0,0 +1,99 @@ +import React from "react"; +import { useTranslation } from "react-i18next"; +import { FeaturedCollectionNfts } from "./FeaturedCollectionNfts"; +import { FeaturedCollectionStats } from "./FeaturedCollectionStats"; +import { ButtonLink } from "@/Components/Buttons/ButtonLink"; +import { Heading } from "@/Components/Heading"; +import { Img } from "@/Components/Image"; +import { CollectionImageWithIcon } from "@/Pages/Collections/Components/CollectionImage"; + +const truncateDescription = ( + description: App.Data.Collections.CollectionFeaturedData["description"], +): string | null => { + if (description !== null && description.length > 120) { + return description.slice(0, 117) + "..."; + } + + return description; +}; + +const FeaturedCollectionInfo = ({ data }: { data: App.Data.Collections.CollectionFeaturedData }): JSX.Element => { + const { t } = useTranslation(); + + return ( +
    +
    +
    +
    + + +
    + + {t("pages.collections.featured.title")} + + + {data.name} + +
    +
    + +
    + {truncateDescription(data.description)} +
    + +
    + + + {t("pages.collections.featured.button")} + +
    +
    + + +
    +
    + ); +}; + +export const FeaturedCollectionsItem = ({ + data, +}: { + data: App.Data.Collections.CollectionFeaturedData; +}): JSX.Element => ( +
    +
    + {data.name}} + /> + +
    +
    + + +
    +); diff --git a/resources/js/Pages/Collections/Components/FeaturedCollections/index.tsx b/resources/js/Pages/Collections/Components/FeaturedCollections/index.tsx new file mode 100644 index 000000000..17af26011 --- /dev/null +++ b/resources/js/Pages/Collections/Components/FeaturedCollections/index.tsx @@ -0,0 +1,4 @@ +export * from "./FeaturedCollectionsCarousel"; +export * from "./FeaturedCollectionsItem"; +export * from "./FeaturedCollectionNfts"; +export * from "./FeaturedCollectionStats"; diff --git a/resources/js/Pages/Collections/Index.tsx b/resources/js/Pages/Collections/Index.tsx index 73ca95120..8b0ca3c9e 100644 --- a/resources/js/Pages/Collections/Index.tsx +++ b/resources/js/Pages/Collections/Index.tsx @@ -2,6 +2,7 @@ import { type PageProps } from "@inertiajs/core"; import { Head, router, usePage } from "@inertiajs/react"; import { useEffect, useState } from "react"; import { useTranslation } from "react-i18next"; +import { FeaturedCollectionsCarousel } from "./Components/FeaturedCollections"; import { PopularCollectionsSorting } from "./Components/PopularCollectionsSorting"; import { ButtonLink } from "@/Components/Buttons/ButtonLink"; import { PopularCollectionsTable } from "@/Components/Collections/PopularCollectionsTable"; @@ -15,6 +16,7 @@ interface CollectionsIndexProperties extends PageProps { activeSort: "top" | "floor-price"; title: string; collections: PaginationData; + featuredCollections: App.Data.Collections.CollectionFeaturedData[]; filters: { chain: ChainFilter | null; }; @@ -23,6 +25,7 @@ interface CollectionsIndexProperties extends PageProps { const CollectionsIndex = ({ activeSort, title, + featuredCollections, collections: { data: collections }, auth, filters, @@ -51,8 +54,8 @@ const CollectionsIndex = ({ return ( - -
    + +
    {t("pages.collections.popular_collections")} diff --git a/resources/js/Utils/Currency.test.tsx b/resources/js/Utils/Currency.test.tsx index c4ee278bc..9a3a2feba 100644 --- a/resources/js/Utils/Currency.test.tsx +++ b/resources/js/Utils/Currency.test.tsx @@ -82,6 +82,20 @@ describe("Currency helpers", () => { expect(screen.getByText("123,456.1235 ETH")).toBeTruthy(); }); + + it("should display as many decimals as in maximumFractionDigits", () => { + render( + + + , + ); + + expect(screen.getByText("123,456.12 ETH")).toBeTruthy(); + }); }); describe("FormatNumber", () => { diff --git a/resources/js/Utils/Currency.tsx b/resources/js/Utils/Currency.tsx index 016e36431..49dc6e9c9 100644 --- a/resources/js/Utils/Currency.tsx +++ b/resources/js/Utils/Currency.tsx @@ -19,6 +19,7 @@ interface FiatProperties extends CurrencyProperties { interface CryptoProperties { value: string; token: App.Data.Token.TokenData | Pick; + maximumFractionDigits?: number; } const fiatValue = ({ @@ -95,6 +96,7 @@ export const formatCrypto = ({ value, token, t, + maximumFractionDigits = 4, }: CryptoProperties & { t: TFunction<"translation", undefined, "translation">; }): string => { @@ -105,19 +107,20 @@ export const formatCrypto = ({ value: { lng: browserLocale(), minimumFractionDigits: 0, - maximumFractionDigits: 4, + maximumFractionDigits, }, }, }); }; -export const FormatCrypto = ({ value, token }: CryptoProperties): JSX.Element => { +export const FormatCrypto = ({ value, token, maximumFractionDigits }: CryptoProperties): JSX.Element => { const { t } = useTranslation(); const number = formatCrypto({ value, token, t, + maximumFractionDigits, }); return <>{`${number} ${token.symbol.toUpperCase()}`}; diff --git a/resources/types/generated.d.ts b/resources/types/generated.d.ts index 28440828c..c55fa3cec 100644 --- a/resources/types/generated.d.ts +++ b/resources/types/generated.d.ts @@ -176,6 +176,26 @@ declare namespace App.Data.Collections { activityUpdateRequestedAt: string | null; isFetchingActivity: boolean | null; }; + export type CollectionFeaturedData = { + id: number; + name: string; + slug: string; + address: string; + chainId: App.Enums.Chain; + floorPrice: string | null; + floorPriceFiat: number | null; + floorPriceCurrency: string | null; + floorPriceDecimals: number | null; + image: string | null; + banner: string | null; + openSeaSlug: string | null; + website: string; + nftsCount: number; + nfts: Array; + isFeatured: boolean; + description: string | null; + volume: string | null; + }; export type CollectionNftData = { id: number; collectionId: number; diff --git a/tests/App/Http/Controllers/CollectionControllerTest.php b/tests/App/Http/Controllers/CollectionControllerTest.php index 635f619df..78730a201 100644 --- a/tests/App/Http/Controllers/CollectionControllerTest.php +++ b/tests/App/Http/Controllers/CollectionControllerTest.php @@ -13,6 +13,7 @@ use App\Models\Token; use Carbon\Carbon; use Illuminate\Support\Facades\Bus; +use Illuminate\Support\Facades\Cache; use Inertia\Testing\AssertableInertia as Assert; it('can render the collections overview page', function () { @@ -23,6 +24,51 @@ ->assertStatus(200); }); +it('can return featured collections', function () { + $user = createUser(); + + Collection::factory(8)->create([ + 'is_featured' => false, + ]); + + Collection::factory(2)->create([ + 'is_featured' => true, + ]); + + $this->actingAs($user) + ->get(route('collections')) + ->assertStatus(200) + ->assertInertia( + fn (Assert $page) => $page + ->component('Collections/Index') + ->has( + 'featuredCollections' + ), + fn (Assert $page) => $page->where('featuredCollections', 2) + + ); +}); + +it('can cache 3 random nfts from a featured collection', function () { + $user = createUser(); + + $collection = Collection::factory()->create([ + 'is_featured' => true, + ]); + + $nfts = Nft::factory(10)->create([ + 'collection_id' => $collection->id, + ]); + + $this->actingAs($user) + ->get(route('collections')) + ->assertStatus(200); + + $cachedNfts = Cache::get('featuredNftsForCollection'.$collection->id); + + expect(count($cachedNfts))->toEqual(3); +}); + it('can render the collections view page', function () { $user = createUser(); From 4207598f3b335f52d23663d87a5d68ef0f626476 Mon Sep 17 00:00:00 2001 From: Patricio Marroquin <55117912+patricio0312rev@users.noreply.github.com> Date: Mon, 27 Nov 2023 05:09:35 -0500 Subject: [PATCH 013/145] refactor: scope for featured collections (#510) --- app/Filament/Resources/CollectionResource.php | 2 +- app/Models/Collection.php | 10 ++++++++++ database/factories/CollectionFactory.php | 2 +- tests/App/Models/CollectionTest.php | 14 ++++++++++++++ 4 files changed, 26 insertions(+), 2 deletions(-) diff --git a/app/Filament/Resources/CollectionResource.php b/app/Filament/Resources/CollectionResource.php index fe30481c2..44dc2b1e0 100644 --- a/app/Filament/Resources/CollectionResource.php +++ b/app/Filament/Resources/CollectionResource.php @@ -88,7 +88,7 @@ public static function table(Table $table): Table ActionGroup::make([ Action::make('updateIsFeatured') ->action(function (Collection $collection) { - if (! $collection->is_featured && Collection::where('is_featured', true)->count() >= 4) { + if (! $collection->is_featured && Collection::featured()->count() >= 4) { Notification::make() ->title('There are already 4 collections marked as featured. Please remove one before selecting a new one.') ->warning() diff --git a/app/Models/Collection.php b/app/Models/Collection.php index 9d3d0958e..05fc84396 100644 --- a/app/Models/Collection.php +++ b/app/Models/Collection.php @@ -71,6 +71,7 @@ class Collection extends Model 'is_fetching_activity' => 'bool', 'activity_updated_at' => 'datetime', 'activity_update_requested_at' => 'datetime', + 'is_featured' => 'bool', ]; /** @@ -556,4 +557,13 @@ public function isSpam(): bool { return SpamContract::isSpam($this->address, $this->network); } + + /** + * @param Builder $query + * @return Builder + */ + public function scopeFeatured(Builder $query): Builder + { + return $query->where('is_featured', true); + } } diff --git a/database/factories/CollectionFactory.php b/database/factories/CollectionFactory.php index c2d6d2b45..cfef1e7cb 100644 --- a/database/factories/CollectionFactory.php +++ b/database/factories/CollectionFactory.php @@ -38,7 +38,7 @@ public function definition(): array 'image' => fake()->imageUrl(360, 360, 'animals', true), 'website' => fake()->url(), ]), - 'is_featured' => fn () => random_int(0, 1), + 'is_featured' => false, ]; } } diff --git a/tests/App/Models/CollectionTest.php b/tests/App/Models/CollectionTest.php index 8612696ee..48bc287fd 100644 --- a/tests/App/Models/CollectionTest.php +++ b/tests/App/Models/CollectionTest.php @@ -1183,3 +1183,17 @@ 'supply' => 100000, ])->indexesActivities())->toBeFalse(); }); + +it('can determine if a collection is featured or not using its scope', function () { + $featuredCollection1 = Collection::factory()->create(['is_featured' => true]); + $featuredCollection2 = Collection::factory()->create(['is_featured' => true]); + $nonFeaturedCollection = Collection::factory()->create(['is_featured' => false]); + + $featuredCollections = Collection::featured()->get(); + + $this->assertTrue($featuredCollections->contains($featuredCollection1)); + $this->assertTrue($featuredCollections->contains($featuredCollection2)); + $this->assertFalse($featuredCollections->contains($nonFeaturedCollection)); + + $this->assertEquals(2, Collection::featured()->count()); +}); From 9bae5c19be13d5b7844ffa888524695f61d0712b Mon Sep 17 00:00:00 2001 From: George Mamoulasvili Date: Mon, 27 Nov 2023 19:47:48 +0100 Subject: [PATCH 014/145] refactor: adjust collection carousel ui (#505) --- .../js/Components/Carousel/Carousel.test.tsx | 75 +++++++++- resources/js/Components/Carousel/Carousel.tsx | 54 ++++++- .../Hooks/useCarouselAutoplay.test.ts | 137 ++++++++++++++++++ .../Carousel/Hooks/useCarouselAutoplay.ts | 120 +++++++++++++++ .../CollectionNft/CollectionNft.tsx | 6 +- .../FeaturedCollectionNfts.tsx | 20 +-- .../FeaturedCollectionsCarousel.tsx | 85 ++++++++--- .../FeaturedCollectionsItem.tsx | 7 +- tailwind.config.js | 3 + 9 files changed, 461 insertions(+), 46 deletions(-) create mode 100644 resources/js/Components/Carousel/Hooks/useCarouselAutoplay.test.ts create mode 100644 resources/js/Components/Carousel/Hooks/useCarouselAutoplay.ts diff --git a/resources/js/Components/Carousel/Carousel.test.tsx b/resources/js/Components/Carousel/Carousel.test.tsx index 1b5f43ae5..5a9682a0e 100644 --- a/resources/js/Components/Carousel/Carousel.test.tsx +++ b/resources/js/Components/Carousel/Carousel.test.tsx @@ -1,5 +1,15 @@ +import userEvent from "@testing-library/user-event"; import React from "react"; -import { Carousel, CarouselControls, CarouselItem, CarouselNextButton, CarouselPreviousButton } from "./Carousel"; +import Swiper from "swiper"; +import { + Carousel, + CarouselControls, + CarouselItem, + CarouselNextButton, + CarouselPagination, + CarouselPreviousButton, +} from "./Carousel"; +import * as useCarouselAutoplayMock from "./Hooks/useCarouselAutoplay"; import { render, screen } from "@/Tests/testing-library"; describe("Carousel", () => { @@ -62,4 +72,67 @@ describe("Carousel", () => { expect(screen.getByTestId("CarouselNavigationButtons__previous")).toBeInTheDocument(); }); + + it("should render carousel pagination", () => { + render( + , + ); + + expect(screen.getAllByTestId("CarouselPagination__item")).toHaveLength(2); + }); + + it("should not render carousel pagination if carousel instance is not provided", () => { + render(); + + expect(screen.queryByTestId("CarouselPagination__item")).not.toBeInTheDocument(); + }); + + it("should slide to element when clicking pagination link", async () => { + const slideToMock = vi.fn(); + render( + , + ); + + expect(screen.getAllByTestId("CarouselPagination__item")).toHaveLength(2); + + await userEvent.click(screen.getAllByTestId("CarouselPagination__item")[0]); + expect(slideToMock).toHaveBeenCalled(); + }); + + it("should render pagination with progress bar", () => { + vi.spyOn(useCarouselAutoplayMock, "useCarouselAutoplay").mockImplementation(() => ({ + activeIndex: 0, + progress: 50, + })); + + render( + , + ); + + expect(screen.getAllByTestId("CarouselPagination__progress-bar")[0]).toHaveAttribute("style", "width: 50%;"); + }); }); diff --git a/resources/js/Components/Carousel/Carousel.tsx b/resources/js/Components/Carousel/Carousel.tsx index 10ae92f0f..247b121d8 100644 --- a/resources/js/Components/Carousel/Carousel.tsx +++ b/resources/js/Components/Carousel/Carousel.tsx @@ -2,9 +2,11 @@ import cn from "classnames"; import React, { type ComponentProps } from "react"; import { useTranslation } from "react-i18next"; -import { Grid, Navigation, Pagination } from "swiper"; +import { Autoplay, Grid, Navigation, Pagination } from "swiper"; import { Swiper } from "swiper/react"; -import { type GridOptions } from "swiper/types"; +import { type GridOptions, type Swiper as SwiperClass } from "swiper/types"; +import { twMerge } from "tailwind-merge"; +import { useCarouselAutoplay } from "./Hooks/useCarouselAutoplay"; import { IconButton } from "@/Components/Buttons"; import { ButtonLink } from "@/Components/Buttons/ButtonLink"; import { Heading } from "@/Components/Heading"; @@ -114,11 +116,15 @@ export const Carousel = ({ ( ( ); + +export const CarouselPagination = ({ + carouselInstance, + autoplayDelay = 5000, +}: { + carouselInstance?: SwiperClass; + autoplayDelay?: number; +}): JSX.Element => { + const { activeIndex, progress } = useCarouselAutoplay({ carouselInstance, autoplayDelay }); + + return ( +
    + {Array.from({ length: carouselInstance?.slides.length ?? 0 }, (_, index) => ( +
    { + carouselInstance?.slideTo(index); + }} + > +
    +
    + ))} +
    + ); +}; diff --git a/resources/js/Components/Carousel/Hooks/useCarouselAutoplay.test.ts b/resources/js/Components/Carousel/Hooks/useCarouselAutoplay.test.ts new file mode 100644 index 000000000..000c96b42 --- /dev/null +++ b/resources/js/Components/Carousel/Hooks/useCarouselAutoplay.test.ts @@ -0,0 +1,137 @@ +import { act, renderHook } from "@testing-library/react"; + +import Swiper from "swiper"; +import { type Swiper as SwiperClass } from "swiper/types"; +import { useCarouselAutoplay } from "./useCarouselAutoplay"; + +describe("useCarouselAutoplay", () => { + it("should stay idle if carousel instance is not provided", () => { + const { result } = renderHook(() => useCarouselAutoplay({ carouselInstance: undefined })); + + expect(result.current.activeIndex).toBe(0); + expect(result.current.progress).toBe(0); + }); + + it("should provide progress and active index", () => { + vi.useFakeTimers(); + + const carouselInstance = new Swiper(".test"); + const starEventMock = vi.fn(); + + const { result, rerender } = renderHook(() => + useCarouselAutoplay({ + carouselInstance: { + ...carouselInstance, + slides: ["" as unknown as HTMLElement, " " as unknown as HTMLElement], + on: (eventName: string, handler: (swiper: SwiperClass) => void) => { + handler(carouselInstance); + }, + off: vi.fn(), + autoplay: { + ...carouselInstance.autoplay, + paused: false, + running: true, + start: starEventMock, + }, + }, + autoplayDelay: 1000, + }), + ); + + expect(result.current.progress).toBe(0); + expect(result.current.activeIndex).toBe(0); + + expect(starEventMock).toHaveBeenCalled(); + + rerender(() => + useCarouselAutoplay({ + carouselInstance: undefined, + autoplayDelay: 1000, + }), + ); + + expect(result.current.progress).toBe(0); + expect(result.current.activeIndex).toBe(0); + }); + + it("should not update progress if slider is paused or not running", () => { + vi.useFakeTimers(); + + const carouselInstance = new Swiper(".test"); + const starEventMock = vi.fn(); + const slides = ["" as unknown as HTMLElement, " " as unknown as HTMLElement]; + + const { result } = renderHook(() => + useCarouselAutoplay({ + carouselInstance: { + ...carouselInstance, + slides, + on: (eventName: string, handler: (swiper: SwiperClass) => void) => { + handler({ + ...carouselInstance, + slides, + }); + }, + off: vi.fn(), + autoplay: { + ...carouselInstance.autoplay, + paused: true, + running: false, + start: starEventMock, + }, + }, + autoplayDelay: 100, + }), + ); + + act(() => { + vi.advanceTimersByTime(1000); + }); + + expect(starEventMock).toHaveBeenCalled(); + + expect(result.current.activeIndex).toBe(0); + expect(result.current.progress).toBe(0); + }); + + it("should move to last slide", () => { + vi.useFakeTimers(); + + const carouselInstance = new Swiper(".test"); + const starEventMock = vi.fn(); + const slides = ["" as unknown as HTMLElement, " " as unknown as HTMLElement]; + + const { result } = renderHook(() => + useCarouselAutoplay({ + carouselInstance: { + ...carouselInstance, + slides, + on: (eventName: string, handler: (swiper: SwiperClass) => void) => { + handler({ + ...carouselInstance, + activeIndex: -1, + slides, + }); + }, + off: vi.fn(), + autoplay: { + ...carouselInstance.autoplay, + paused: false, + running: true, + start: starEventMock, + }, + }, + autoplayDelay: 100, + }), + ); + + act(() => { + vi.advanceTimersByTime(1000); + }); + + expect(starEventMock).toHaveBeenCalled(); + + expect(result.current.activeIndex).toBe(2); + expect(result.current.progress).toBe(0); + }); +}); diff --git a/resources/js/Components/Carousel/Hooks/useCarouselAutoplay.ts b/resources/js/Components/Carousel/Hooks/useCarouselAutoplay.ts new file mode 100644 index 000000000..81704479e --- /dev/null +++ b/resources/js/Components/Carousel/Hooks/useCarouselAutoplay.ts @@ -0,0 +1,120 @@ +import { useCallback, useEffect, useState } from "react"; + +import { type Swiper as SwiperClass } from "swiper/types"; +import { isTruthy } from "@/Utils/is-truthy"; + +/** + * Provides autoplay state handling. + * Returns progress until next slide change in percentage (based on autoPlayDelay), + * and the active slides index. + * + */ +export const useCarouselAutoplay = ({ + carouselInstance, + autoplayDelay = 5000, +}: { + carouselInstance?: SwiperClass; + autoplayDelay?: number; +}): { + progress: number; + activeIndex: number; +} => { + const [progress, setProgress] = useState(0); + const [activeIndex, setActiveIndex] = useState(0); + + /** + * Handle slide change event & ensure autoplay is always on, + * and update state accordingly + * + * @param {SwiperClass} swiper + * @returns {void} + */ + const handleSlideChange = useCallback( + (carousel: SwiperClass) => { + const start = (): boolean | undefined => carouselInstance?.autoplay.start(); + + /** + * Update active slide index state. + * activeIndex comes as -1 on the last slide. Corrects it to get the index of the last item. + * + * @param {SwiperClass} swiper + * @returns {void} + */ + const setActiveSlide = (swiper: SwiperClass): void => { + const index = swiper.activeIndex < 0 ? swiper.slides.length : swiper.activeIndex; + setActiveIndex(index); + setProgress(0); + }; + + /** + * Ensure autoplay is always on, as carousel can stop when + * manually changing slides (either by clicking on next/previous links or pagination links) + */ + carousel.on("autoplayStop", start); + + carousel.on("slideChange", setActiveSlide); + + return { + cleanup: () => { + carousel.off("autoplayStop", start); + carousel.off("slideChange", setActiveSlide); + setActiveIndex(0); + setProgress(0); + }, + }; + }, + [carouselInstance], + ); + + /** + * Update progress in percentage until next slide change. + * + * Although swiper emits `autoplayTimeLeft` with the percentage, + * it's not resetting the timer when a manual slide change happens + * (e.g when clicking next/previous arrows or pagination links). + * + * @param {SwiperClass} swiper + * @returns {void} + */ + const updateProgress = useCallback( + (carousel: SwiperClass): { interval: NodeJS.Timeout } => { + const progressUpdateInterval = 200; + + const interval = setInterval(() => { + if (carousel.autoplay.paused || !carousel.autoplay.running) { + return; + } + + const progressPercentageStep = (100 / autoplayDelay) * progressUpdateInterval; + setProgress((currentProgress) => Math.round(currentProgress + progressPercentageStep)); + }, progressUpdateInterval); + + return { interval }; + }, + [carouselInstance], + ); + + /** + * Start listening to slide change events, + * and calculate & update active slide's progress. + */ + useEffect(() => { + if (!isTruthy(carouselInstance)) { + return; + } + + const { cleanup } = handleSlideChange(carouselInstance); + const { interval } = updateProgress(carouselInstance); + + return () => { + // Clear all listeners and reset to defaults. + cleanup(); + clearInterval(interval); + }; + }, [carouselInstance, handleSlideChange, updateProgress]); + + return { + progress, + activeIndex, + }; +}; diff --git a/resources/js/Pages/Collections/Components/CollectionNft/CollectionNft.tsx b/resources/js/Pages/Collections/Components/CollectionNft/CollectionNft.tsx index 5a8ffb76b..625fddc61 100644 --- a/resources/js/Pages/Collections/Components/CollectionNft/CollectionNft.tsx +++ b/resources/js/Pages/Collections/Components/CollectionNft/CollectionNft.tsx @@ -9,10 +9,10 @@ import { isTruthy } from "@/Utils/is-truthy"; export const CollectionNft = ({ nft, - classNames, + className, }: { nft: App.Data.Gallery.GalleryNftData; - classNames?: string; + className?: string; }): JSX.Element => { const { t } = useTranslation(); @@ -30,7 +30,7 @@ export const CollectionNft = ({ })} className={cn( "transition-default group cursor-pointer rounded-xl border border-theme-secondary-300 p-2 ring-theme-primary-100 hover:ring-2 dark:border-theme-dark-700 dark:ring-theme-dark-700", - classNames, + className, )} > diff --git a/resources/js/Pages/Collections/Components/FeaturedCollections/FeaturedCollectionNfts.tsx b/resources/js/Pages/Collections/Components/FeaturedCollections/FeaturedCollectionNfts.tsx index ae0e6f5e7..585c9b5c1 100644 --- a/resources/js/Pages/Collections/Components/FeaturedCollections/FeaturedCollectionNfts.tsx +++ b/resources/js/Pages/Collections/Components/FeaturedCollections/FeaturedCollectionNfts.tsx @@ -1,32 +1,28 @@ -import cn from "classnames"; import React from "react"; +import { twMerge } from "tailwind-merge"; import { CollectionNft } from "@/Pages/Collections/Components/CollectionNft"; export const FeaturedCollectionNfts = ({ nfts }: { nfts: App.Data.Gallery.GalleryNftData[] }): JSX.Element => { - const defaultNftCardStyles = - "bg-white dark:bg-theme-dark-900 grid sm:w-full sm:h-full min-w-full lg:min-w-fit lg:w-52 lg:h-fit"; + const defaultClassName = "w-72 md:w-56 bg-white dark:bg-theme-dark-900 md-lg:w-52"; return ( -
    1, - })} - > +
    + {nfts.length > 1 && ( )} + {nfts.length > 2 && (
    diff --git a/resources/js/Pages/Collections/Components/FeaturedCollections/FeaturedCollectionsCarousel.tsx b/resources/js/Pages/Collections/Components/FeaturedCollections/FeaturedCollectionsCarousel.tsx index 0182094f6..469fbf2ce 100644 --- a/resources/js/Pages/Collections/Components/FeaturedCollections/FeaturedCollectionsCarousel.tsx +++ b/resources/js/Pages/Collections/Components/FeaturedCollections/FeaturedCollectionsCarousel.tsx @@ -1,28 +1,69 @@ -import React from "react"; -import { Autoplay, Navigation, Pagination } from "swiper"; +import React, { useState } from "react"; +import type Swiper from "swiper"; import { FeaturedCollectionsItem } from "./FeaturedCollectionsItem"; -import { Carousel, CarouselItem } from "@/Components/Carousel"; +import { + Carousel, + CarouselItem, + CarouselNextButton, + CarouselPagination, + CarouselPreviousButton, +} from "@/Components/Carousel"; export const FeaturedCollectionsCarousel = ({ featuredCollections, + autoplayDelay = 5000, }: { featuredCollections: App.Data.Collections.CollectionFeaturedData[]; -}): JSX.Element => ( - - {featuredCollections.map((collection, index) => ( - - - - ))} - -); + autoplayDelay?: number; +}): JSX.Element => { + const [carousel, setCarousel] = useState(); + + return ( +
    +
    +
    +
    + +
    +
    + + + {featuredCollections.map((collection, index) => ( + + + + ))} + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + ); +}; diff --git a/resources/js/Pages/Collections/Components/FeaturedCollections/FeaturedCollectionsItem.tsx b/resources/js/Pages/Collections/Components/FeaturedCollections/FeaturedCollectionsItem.tsx index 672ab06a8..424a79bdc 100644 --- a/resources/js/Pages/Collections/Components/FeaturedCollections/FeaturedCollectionsItem.tsx +++ b/resources/js/Pages/Collections/Components/FeaturedCollections/FeaturedCollectionsItem.tsx @@ -21,7 +21,7 @@ const FeaturedCollectionInfo = ({ data }: { data: App.Data.Collections.Collectio const { t } = useTranslation(); return ( -
    +
    @@ -46,7 +46,7 @@ const FeaturedCollectionInfo = ({ data }: { data: App.Data.Collections.Collectio
    -
    +
    {truncateDescription(data.description)}
    @@ -58,6 +58,7 @@ const FeaturedCollectionInfo = ({ data }: { data: App.Data.Collections.Collectio nftsCount={data.nftsCount} volume={data.volume} /> + (
    -
    +
    Date: Tue, 28 Nov 2023 10:14:21 +0100 Subject: [PATCH 015/145] fix: rewind featured collections carousel (#513) --- .../FeaturedCollections/FeaturedCollectionsCarousel.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/resources/js/Pages/Collections/Components/FeaturedCollections/FeaturedCollectionsCarousel.tsx b/resources/js/Pages/Collections/Components/FeaturedCollections/FeaturedCollectionsCarousel.tsx index 469fbf2ce..bb9dcf72e 100644 --- a/resources/js/Pages/Collections/Components/FeaturedCollections/FeaturedCollectionsCarousel.tsx +++ b/resources/js/Pages/Collections/Components/FeaturedCollections/FeaturedCollectionsCarousel.tsx @@ -36,6 +36,7 @@ export const FeaturedCollectionsCarousel = ({ className="overflow-hidden lg:mx-8 lg:rounded-xl lg:border lg:border-theme-secondary-300 dark:lg:border-theme-dark-700 2xl:mx-0" onSwiper={setCarousel} autoHeight + rewind autoplay={{ delay: autoplayDelay, pauseOnMouseEnter: true, From 1e343d4d1f5a9dfddddec8e541923b7e0a7464ed Mon Sep 17 00:00:00 2001 From: Alfonso Bribiesca Date: Tue, 28 Nov 2023 03:44:51 -0600 Subject: [PATCH 016/145] feat: popular collection mobile filters popover (#497) --- app/Http/Controllers/CollectionController.php | 39 +++++++--- resources/js/Components/Tabs.tsx | 26 +++++-- .../PopularCollectionsFilterPopover.tsx | 59 +++++++++++++++ .../PopularCollectionsFilterPopover/index.tsx | 1 + .../ChainFilters.tsx | 13 ++-- .../PopularCollectionsSorting.tsx | 40 ++++------ resources/js/Pages/Collections/Index.tsx | 75 ++++++++++++------- 7 files changed, 183 insertions(+), 70 deletions(-) create mode 100644 resources/js/Pages/Collections/Components/PopularCollectionsFilterPopover/PopularCollectionsFilterPopover.tsx create mode 100644 resources/js/Pages/Collections/Components/PopularCollectionsFilterPopover/index.tsx diff --git a/app/Http/Controllers/CollectionController.php b/app/Http/Controllers/CollectionController.php index e8133390c..ac69c40d7 100644 --- a/app/Http/Controllers/CollectionController.php +++ b/app/Http/Controllers/CollectionController.php @@ -54,8 +54,6 @@ public function index(Request $request): Response|JsonResponse|RedirectResponse $currency = $user ? $user->currency() : CurrencyCode::USD; - $collectionQuery = $user ? $user->collections() : Collection::query(); - $chainId = match ($request->query('chain')) { 'polygon' => Chain::Polygon->value, 'ethereum' => Chain::ETH->value, @@ -74,21 +72,42 @@ public function index(Request $request): Response|JsonResponse|RedirectResponse ->simplePaginate(12); return Inertia::render('Collections/Index', [ - 'allowsGuests' => true, - 'activeSort' => $request->query('sort') === 'floor-price' ? 'floor-price' : 'top', - 'filters' => [ - 'chain' => $request->query('chain') ?? null, - ], - 'title' => trans('metatags.collections.title'), - 'collections' => PopularCollectionData::collection( + 'filters' => fn () => $this->getFilters($request), + 'title' => fn () => trans('metatags.collections.title'), + 'collections' => fn () => PopularCollectionData::collection( $collections->through(fn ($collection) => PopularCollectionData::fromModel($collection, $currency)) ), - 'featuredCollections' => $featuredCollections->map(function (Collection $collection) use ($user) { + 'featuredCollections' => fn () => $featuredCollections->map(function (Collection $collection) use ($user) { return CollectionFeaturedData::fromModel($collection, $user ? $user->currency() : CurrencyCode::USD); }), ]); } + /** + * @return object{chain?: string, sort?: string} + */ + private function getFilters(Request $request): object + { + $filter = [ + 'chain' => $this->getValidValue($request->get('chain'), ['polygon', 'ethereum']), + 'sort' => $this->getValidValue($request->get('sort'), ['floor-price']), + ]; + + // If value is not defined (or invalid), remove it from the array since + // the frontend expect `undefined` values (not `null`) + + // Must be cast to an object due to some Inertia front-end stuff... + return (object) array_filter($filter); + } + + /** + * @param array $validValues + */ + private function getValidValue(?string $value, array $validValues): ?string + { + return in_array($value, $validValues) ? $value : null; + } + public function show(Request $request, Collection $collection): Response { /** @var User|null $user */ diff --git a/resources/js/Components/Tabs.tsx b/resources/js/Components/Tabs.tsx index dbb0cfa5c..acced9516 100644 --- a/resources/js/Components/Tabs.tsx +++ b/resources/js/Components/Tabs.tsx @@ -9,6 +9,7 @@ interface TabAnchorProperties extends Omit { + growClassName?: string; selected?: boolean; icon?: IconName; } @@ -18,11 +19,13 @@ const getTabClasses = ({ disabled = false, selected, className, + growClassName = "grow sm:grow-0", }: { variant: "horizontal" | "vertical" | "icon"; disabled?: boolean; selected: boolean; className?: string; + growClassName?: string; }): string => { const baseClassName = cn( "transition-default flex items-center font-medium whitespace-nowrap outline-none outline-3 focus-visible:outline-theme-primary-300 dark:focus-visible:outline-theme-primary-700", @@ -36,7 +39,7 @@ const getTabClasses = ({ if (variant === "icon") { return cn( baseClassName, - "grow sm:grow-0 justify-center select-none rounded-full w-10 h-10 flex items-center justify-center text-sm -outline-offset-[3px]", + "justify-center select-none rounded-full w-10 h-10 flex items-center justify-center text-sm -outline-offset-[3px]", { "border-transparent bg-white text-theme-secondary-900 shadow-sm dark:bg-theme-dark-800 dark:text-theme-dark-50": selected, @@ -45,12 +48,13 @@ const getTabClasses = ({ "cursor-not-allowed focus:bg-transparent active:bg-transparent dark:text-theme-dark-400": disabled, }, className, + growClassName, ); } if (variant === "horizontal") { return cn( baseClassName, - "grow sm:grow-0 justify-center select-none rounded-full px-4 h-8 text-sm -outline-offset-[3px]", + "justify-center select-none rounded-full px-4 h-8 text-sm -outline-offset-[3px]", { "border-transparent bg-white text-theme-secondary-900 shadow-sm dark:bg-theme-dark-800 dark:text-theme-dark-50": selected, @@ -59,6 +63,7 @@ const getTabClasses = ({ "cursor-not-allowed focus:bg-transparent active:bg-transparent dark:text-theme-dark-400": disabled, }, className, + growClassName, ); } @@ -98,7 +103,10 @@ const DisabledLink = forwardRef( - ({ className, disabled, selected = false, children, icon, ...properties }, reference): JSX.Element => ( + ( + { className, growClassName, disabled, selected = false, children, icon, ...properties }, + reference, + ): JSX.Element => ( + +
    + {t("pages.collections.vote.time_left")} + {": "} + {countdownDisplay} +
    +
    + ); +}; diff --git a/resources/js/Pages/Collections/Components/CollectionOfTheMonth/index.tsx b/resources/js/Pages/Collections/Components/CollectionOfTheMonth/index.tsx new file mode 100644 index 000000000..6f5aabe3a --- /dev/null +++ b/resources/js/Pages/Collections/Components/CollectionOfTheMonth/index.tsx @@ -0,0 +1,3 @@ +export * from "./CollectionOfTheMonth"; +export * from "./VoteCollection"; +export * from "./VoteCountdown"; diff --git a/resources/js/Pages/Collections/Index.tsx b/resources/js/Pages/Collections/Index.tsx index e4bffd013..6bac2bdb0 100644 --- a/resources/js/Pages/Collections/Index.tsx +++ b/resources/js/Pages/Collections/Index.tsx @@ -7,12 +7,12 @@ import { FeaturedCollectionsCarousel } from "./Components/FeaturedCollections"; import { PopularCollectionsFilterPopover } from "./Components/PopularCollectionsFilterPopover"; import { type PopularCollectionsSortBy, PopularCollectionsSorting } from "./Components/PopularCollectionsSorting"; import { ButtonLink } from "@/Components/Buttons/ButtonLink"; -import { CollectionOfTheMonthWinners } from "@/Components/Collections/CollectionOfTheMonthWinners"; import { PopularCollectionsTable } from "@/Components/Collections/PopularCollectionsTable"; import { Heading } from "@/Components/Heading"; import { type PaginationData } from "@/Components/Pagination/Pagination.contracts"; import { useIsFirstRender } from "@/Hooks/useIsFirstRender"; import { DefaultLayout } from "@/Layouts/DefaultLayout"; +import { CollectionOfTheMonth } from "@/Pages/Collections/Components/CollectionOfTheMonth"; import { type ChainFilter, ChainFilters } from "@/Pages/Collections/Components/PopularCollectionsFilters"; interface Filters extends Record { @@ -125,14 +125,9 @@ const CollectionsIndex = ({
    - -
    - {/* Height is hardcoded should depend on the incoming vote table */} -
    {/* Vote table */}
    - - -
    + + ); }; diff --git a/tailwind.config.js b/tailwind.config.js index af5a3fd8d..679d8341d 100644 --- a/tailwind.config.js +++ b/tailwind.config.js @@ -217,6 +217,8 @@ module.exports = { "theme-hint-700": "rgb(var(--theme-color-hint-700) / )", "theme-hint-800": "rgb(var(--theme-color-hint-800) / )", "theme-hint-900": "rgb(var(--theme-color-hint-900) / )", + + "theme-vote-background": "rgba(var(--theme-color-vote-background) / )", }, }, From 8944ac941cfdbd380fff7e8b12f8162c728a440a Mon Sep 17 00:00:00 2001 From: Patricio Marroquin <55117912+patricio0312rev@users.noreply.github.com> Date: Thu, 30 Nov 2023 06:37:54 -0500 Subject: [PATCH 019/145] chore: add nomination link (#522) --- lang/en/pages.php | 1 + resources/js/I18n/Locales/en.json | 2 +- .../CollectionOfTheMonth/VoteCollection.tsx | 17 ++++++++++++++++- 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/lang/en/pages.php b/lang/en/pages.php index 274485911..017cd1d04 100644 --- a/lang/en/pages.php +++ b/lang/en/pages.php @@ -96,6 +96,7 @@ 'vote_for_top_collection' => 'Vote for Top Collection of the Month', 'vote' => 'Vote', 'time_left' => 'Time Left', + 'or_nominate_collection' => 'Or nominate a collection', ], 'sorting' => [ 'token_number' => 'Token Number', diff --git a/resources/js/I18n/Locales/en.json b/resources/js/I18n/Locales/en.json index 7673b624c..9b68dbd98 100644 --- a/resources/js/I18n/Locales/en.json +++ b/resources/js/I18n/Locales/en.json @@ -1 +1 @@ -{"auth.welcome":"Welcome to Dashbrd","auth.logged_in":"You're logged in!","auth.log_out":"Log out","auth.failed":"These credentials do not match our records.","auth.session_timeout":"Your session has timed out. Please refresh the page and try connecting your account again.","auth.session_timeout_modal":"Seems like your session has timed out. Please connnect your wallet again.","auth.password":"The provided password is incorrect.","auth.throttle":"Too many login attempts. Please try again in {{seconds}} seconds.","auth.wallet.connecting":"Connecting …","auth.wallet.waiting_for_signature":"Waiting for Signature …","auth.wallet.switching_wallet":"Switching Wallet …","auth.wallet.connect":"Connect Wallet","auth.wallet.connect_long":"Connect Your Wallet to Get Started","auth.wallet.sign_subtitle":"Connect Your Wallet to Continue","auth.wallet.disconnect":"Disconnect Wallet","auth.wallet.install":"Install MetaMask","auth.wallet.install_long":"Install MetaMask to Get Started","auth.wallet.sign":"Sign Message","auth.wallet.sign_message":"Welcome to Dashbrd. In order to login, sign this message with your wallet. It doesn't cost you anything!\n\nSigning ID (you can ignore this): {{nonce}}","auth.wallet.connect_subtitle":"Click on the MetaMask icon in your browser to confirm the action and connect your wallet.","auth.wallet.requires_signature":"In order to prevent impersonation, we require a signature to perform this action. This signature is only a signed message and does not give any access to your wallet.","auth.errors.metamask.no_account":"No account found. Please connect your wallet and try again.","auth.errors.metamask.generic":"Connection attempt error. Please retry and follow the steps to connect your wallet.","auth.errors.metamask.invalid_network":"Please switch to Polygon or Ethereum Mainnet in your MetaMask plugin to connect to Dashbrd.","auth.errors.metamask.provider_missing":"You don't have MetaMask installed in your browser. Please install and try again.","auth.errors.metamask.user_rejected":"It looks like you cancelled signing of the authentication message. Please try again.","auth.errors.metamask.provider_not_set":"Ethereum provider is not set","auth.validation.wallet_login_failed":"There was a problem trying to verify your signature. Please try again.","auth.validation.invalid_address":"Your wallet address is invalid. Please try again.","auth.validation.invalid_signature":"Signature is invalid. Please try again.","auth.validation.invalid_network":"Please switch to Polygon or Ethereum Mainnet in your MetaMask plugin to connect to Dashbrd.","common.author":"Author","common.add":"Add","common.amount":"Amount","common.balance":"Balance","common.cancel":"Cancel","common.delete":"Delete","common.edit":"Edit","common.confirm":"Confirm","common.connect":"Connect","common.continue":"Continue","common.done":"Done","common.filter":"Filter","common.items":"Items","common.receive":"Receive","common.received":"Received","common.retry":"Retry","common.records":"Records","common.save":"Save","common.send":"Send","common.sent":"Sent","common.show":"Show","common.searching":"Searching...","common.other":"Other","common.owned":"Owned","common.token":"Token","common.tokens":"Tokens","common.wallet":"Wallet","common.pending":"Pending","common.publish":"Publish","common.published":"Published","common.empty":"Empty","common.your_address":"Your Address","common.warning":"Warning","common.my_address":"My Address","common.my_wallet":"My Wallet","common.my_collections":"My Collections","common.my_balance":"My Balance","common.na":"N/A","common.simple_plural_without_data":"One comment|Many comments","common.simple_plural_with_data":"{{count}} comment|{{count}} comments","common.advanced_plural_without_data":"{0} no comments yet|{1} 1 comment|[2,*] Many comments","common.advanced_plural_with_data":"{0} no comments yet|{1} 1 comment|[2,*] {{count}} comments","common.copy_clipboard":"Copy to Clipboard","common.copy":"Copy","common.download":"Download","common.zoom":"Zoom","common.my_collection":"My Collection","common.max":"Max","common.chain":"Chain","common.copied":"Copied!","common.coming_soon":"Coming Soon","common.more_details":"More Details","common.close":"Close","common.close_toast":"Close toast","common.loading":"Loading","common.price":"Price","common.articles":"Articles","common.most_popular":"Most Popular","common.market_cap":"Market Cap","common.volume":"Volume","common.volume_frequency":"Volume {{frequency}}","common.value":"Value","common.last_n_days":"Last {{count}} Days","common.details":"Details","common.view_all":"View All","common.view_more_on_polygonscan":"View More on Polygonscan","common.view_more_on_etherscan":"View More on Etherscan","common.view_nft_on_etherscan":"View NFT on Etherscan","common.view_nft_on_polygonscan":"View NFT on Polygonscan","common.view_nft_on_goerli_tesnet":"View NFT on Goerli Testnet Explorer","common.view_nft_on_mumbai_tesnet":"View NFT on Mumbai Testnet Explorer","common.polygonscan":"Polygonscan","common.etherscan":"Etherscan","common.featured":"Featured","common.floor_price":"Floor Price","common.floor":"Floor","common.supply":"Supply","common.owners":"Owners","common.created":"Created","common.nft":"NFT","common.collection":"Collection","common.collections":"Collections","common.gallery":"Gallery","common.basic_gallery":"Basic Gallery","common.gallery_name":"Gallery Name","common.create_gallery":"Create Gallery","common.external_link":"External Link","common.follow_link":"Follow Link","common.cover":"Cover","common.template":"Template","common.page":"Page","common.polygon":"Polygon","common.ethereum":"Ethereum","common.mumbai":"Mumbai","common.goerli":"Goerli","common.of":"of","common.pagination_input_placeholder":"Enter the page number","common.pagination_input_placeholder_mobile":"Page number","common.nft_count":"{0} {{count}} NFTs|{1} {{count}} NFT|[2,*] {{count}} NFTs","common.nft_gallery":"NFT Gallery","common.unable_to_retrieve_image":"Unable to retrieve your NFT image at this time","common.optional":"Optional","common.selected":"Selected","common.select":"Select","common.preview":"Preview","common.image_size_error":"Image size must not exceed 2MB","common.image_dimensions_error":"Image dimensions must exceed 287px x 190px","common.write_to_confirm":"Write {{word}} to confirm","common.n_hours":"{0} {{count}} hour|{1} {{count}} hour|[2,*] {{count}} hours","common.n_minutes":"{0} {{count}} minute|{1} {{count}} minute|[2,*] {{count}} minutes","common.report":"Report","common.nfts":"NFTs","common.n_nfts":"{0}NFTs|{1}NFT|[2,*]NFTs","common.n_collections":"{0}collections|{1}collection|[2,*]collections","common.back":"Back","common.back_to":"Back to","common.name":"Name","common.type":"Type","common.from":"From","common.to":"To","common.sale_price":"Sale Price","common.recent_activity":"Recent Activity","common.time":"Time","common.datetime.few_seconds_ago":"A few seconds ago","common.datetime.minutes_ago":"{0} Less than a minute ago|{1} A minute ago|[2,*] {{count}} minutes ago","common.datetime.hours_ago":"{0} Less than an hour ago|{1} An hour ago|[2,*] {{count}} hours ago","common.datetime.days_ago":"{0} Less than a day ago|{1} A day ago|[2,*] {{count}} days ago","common.datetime.weeks_ago":"{0} Less than a week ago|{1} A week ago|[2,*] {{count}} weeks ago","common.datetime.months_ago":"{0} Less than a month ago|{1} A month ago|[2,*] {{count}} months ago","common.datetime.years_ago":"{0} Less than a year ago|{1} A year ago|[2,*] {{count}} years ago","common.no_traits_found":"No traits found.","common.empty_transactions":"You don't have any transactions yet. Once transactions have been made, they will show up here.","common.error":"Error","common.refresh":"Refresh","common.refresh_metadata":"Refresh Metadata","common.refreshing_metadata":"Refreshing Metadata... Please check back later.","common.refreshing_activity":"Refreshing Activity... Please check back later.","common.pending_confirmation":"Pending Confirmation","common.confirmed_transaction":"Confirmed Transaction","common.transaction_error":"Transaction Error","common.transaction_error_description_first_part":"Your transaction encountered an error. View this transaction on","common.transaction_error_description_second_part":"for more details.","common.home":"Home","common.contact":"Contact","common.menu":"Menu","common.website":"Website","common.twitter":"Twitter","common.discord":"Discord","common.facebook":"Facebook","common.reddit":"Reddit","common.x":"X","common.sort":"Sort","common.drafts":"Drafts","common.draft":"Draft","common.delete_draft":"Delete Draft","common.share_on":"Share on {{platform}}","common.top":"Top","common.all_chains":"All chains","footer.copyright":"{{year}} © Dashbrd. All rights reserved.","footer.all_rights_reserved":"All rights reserved","footer.privacy_policy":"Privacy Policy","footer.terms_of_service":"Terms of Service","footer.powered_by":"Powered by","format.fiat":"{{ value, currency }}","format.number":"{{ value, number }}","metatags.home.title":"Dashbrd | Web3 Portfolio Management Made Simple","metatags.home.description":"Simplify your Web3 journey with Dashbrd. Manage your portfolio of tokens, NFTs, and other digital collectibles across the Ethereum and Polygon blockchains.","metatags.home.image":"/images/meta/home.png","metatags.error.title":"Error {{code}} | Dashbrd","metatags.wallet.title":"My Wallet | Dashbrd","metatags.galleries.title":"Top NFT Galleries | Dashbrd","metatags.galleries.image":"/images/meta/nft-galleries.png","metatags.galleries.description":"Explore user published NFT galleries to find custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.most_popular.title":"Most Popular Galleries | Dashbrd","metatags.galleries.most_popular.image":"/images/meta/most-popular-nft-galleries.png","metatags.galleries.most_popular.description":"Explore and discover Most Popular NFT Galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.newest.title":"Newest Galleries | Dashbrd","metatags.galleries.newest.image":"/images/meta/newest-nft-galleries.png","metatags.galleries.newest.description":"Explore and discover most recent NFT galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More","metatags.galleries.most_valuable.title":"Most Valuable Galleries | Dashbrd","metatags.galleries.most_valuable.image":"/images/meta/most-valuable-nft-galleries.png","metatags.galleries.most_valuable.description":"Explore and discover Most Valuable NFT Galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.view.title":"{{name}} | Dashbrd","metatags.galleries.view.description":"{{name}} | A Curated NFT Gallery at Dashbrd","metatags.galleries.view.image":"/images/meta/nft-gallery.png","metatags.my_galleries.title":"My Galleries | Dashbrd","metatags.my_galleries.title_draft":"My Draft Galleries | Dashbrd","metatags.my_galleries.create.title":"Create Gallery | Dashbrd","metatags.my_galleries.edit.title":"Edit {{name}} | Dashbrd","metatags.collections.title":"Collections | Dashbrd","metatags.collections.view.title":"{{name}} Collection | Dashbrd","metatags.collections.view.description":"Immerse yourself in the intricate details of {{name}} collection, featuring remarkable digital assets. Start your NFT journey today!","metatags.collections.view.image":"/images/meta/nft-collection.png","metatags.my-collections.title":"My Collections | Dashbrd","metatags.nfts.view.title":"{{nft}} NFT | Dashbrd","metatags.nfts.view.description":"Uncover the complete story of {{nft}} NFT from the {{collection}} collection, delving into its unique attributes and distinctive features.","metatags.nfts.view.image":"/images/meta/nft-details.png","metatags.settings.title":"Settings | Dashbrd","metatags.articles.title":"Articles | Dashbrd","metatags.articles.view.title":"{{title}} | Dashbrd","metatags.login.title":"Login | Dashbrd","metatags.privacy_policy.title":"Privacy Policy | Dashbrd","metatags.privacy_policy.description":"Dashbrd’s privacy policy outlines the information we collect and explains your choices surrounding how we use information about you.","metatags.terms_of_service.title":"Terms of Service | Dashbrd","metatags.terms_of_service.description":"These Terms of Service cover your use and access to services, products or websites of Dashbrd.","metatags.cookie_policy.title":"Cookie Policy | Dashbrd","metatags.cookie_policy.description":"Dashbrd uses cookies to make the website more user-friendly. Find out about the main types of cookies we use, and what we use them for.","metatags.welcome.title":"Welcome to Dashbrd | Web3 Simplified","pages.onboarding.title":"Get Started","pages.onboarding.heading":"Your monkeys were bored and ran off, we are trying to round them up.","pages.onboarding.message":"We are setting up your account. This process usually takes just a few minutes, but can take up to 15 minutes.","pages.error.heading":"Oops, something went wrong ...","pages.error.message":"Please try again or get in touch if the issue persists.","pages.maintenance.title":"Dashbrd is currently down for scheduled maintenance.","pages.maintenance.description":"We expect to be back soon. Thanks for your patience.","pages.dashboard.title":"My Wallet","pages.dashboard.breakdown.title":"Portfolio Breakdown","pages.dashboard.line_chart.data_error":"Could not load chart data","pages.articles.title":"Articles","pages.articles.featured_collections":"Featured Collections","pages.articles.placeholder_more_soon":"More Soon","pages.articles.no_articles":"No articles have been published yet. Please check back later!","pages.articles.header_title":"Explore our collection of","pages.articles.header_suffix_one":"published article","pages.articles.header_suffix_other":"published articles","pages.articles.audio_version":"Audio version","pages.articles.consists_of_collections":"{0} This article highlights {{count}} collections|{1} This article highlights {{count}} collection|[2,*] This article highlights {{count}} collections","pages.collections.title":"Collections","pages.collections.collections":"Collections","pages.collections.popular_collections":"Popular Collections","pages.collections.collection_value":"Collection Value","pages.collections.nfts_owned":"NFTs Owned","pages.collections.header_title":"You own <0>{{nftsCount}} {{nfts}} across <0>{{collectionsCount}} {{collections}}, worth about <0><1>{{worth}}","pages.collections.search_placeholder":"Search by Collection","pages.collections.properties":"Properties","pages.collections.collections_network":"Collections Network","pages.collections.property_search_placeholder":"Feature Search","pages.collections.floor_price":"Floor Price","pages.collections.value":"Value","pages.collections.rarity":"Rarity","pages.collections.report":"Report","pages.collections.hide_collection":"Hide Collection","pages.collections.unhide_collection":"Unhide Collection","pages.collections.no_collections":"You do not own any NFTs yet. Once you do they will be shown here.","pages.collections.all_collections_hidden":"You have hidden all your collections. Unhide and they will appear here.","pages.collections.about_collection":"About Collection","pages.collections.show_hidden":"Show Hidden","pages.collections.show_my_collection":"Show My Collection","pages.collections.owned":"Owned","pages.collections.activities.loading_activities":"We're fetching Activity for this NFT, please hang tight, this can take a while.","pages.collections.activities.loading_activities_collection":"We're fetching Activity for this collection, please hang tight, this can take a while.","pages.collections.activities.ignores_activities":"We don't support activity history for this collection yet.","pages.collections.activities.no_activity":"This collection does not have any activity yet.","pages.collections.activities.types.LABEL_MINT":"Mint","pages.collections.activities.types.LABEL_TRANSFER":"Transfer","pages.collections.activities.types.LABEL_SALE":"Sale","pages.collections.activities.types.LABEL_BURN":"Burn","pages.collections.collection_of_the_month.vote_for_next_months_winners":"Vote now for next month's winners","pages.collections.articles.no_articles":"No articles have been linked to this collection as of now.","pages.collections.articles.no_articles_with_filters":"We could not find any articles matching your search criteria, please try again!","pages.collections.articles.search_placeholder":"Search in Articles","pages.collections.articles.sort_latest":"Latest","pages.collections.articles.sort_popularity":"Most Popular","pages.collections.search.loading_results":"Loading results...","pages.collections.search.no_results":"We could not find anything matching your search criteria, please try again!","pages.collections.search.no_results_with_filters":"We could not find anything matching your filters, please try again!","pages.collections.search.no_results_ownership":"You do not own any NFTs in this collection","pages.collections.search.error":"Could not load search results. Please try again later.","pages.collections.vote.vote_for_top_collection":"Vote for Top Collection of the Month","pages.collections.vote.vote":"Vote","pages.collections.vote.time_left":"Time Left","pages.collections.sorting.token_number":"Token Number","pages.collections.sorting.recently_received":"Recently Received","pages.collections.sorting.recently_created":"Recently Created","pages.collections.sorting.oldest_collection":"Oldest Collection","pages.collections.traits.description":"List of NFT traits by % of occurrence in the collection","pages.collections.traits.no_traits":"No Properties can be found for this NFT","pages.collections.menu.collection":"Collection","pages.collections.menu.articles":"Articles","pages.collections.menu.activity":"Activity","pages.collections.hidden_modal.collection_hidden":"Collection Hidden","pages.collections.hidden_modal.description":"This collection is currently set to Hidden. Are you sure you want to unhide this collection? You can\n reset the collection to hidden from the collection menu.","pages.collections.hidden_modal.unhide":"Unhide","pages.collections.hidden_modal.error":"Something went wrong. Please try again.","pages.collections.external_modal.you_wish_continue":"You are about to leave Dashbrd to an external website. Dashbrd has no control over the content of\n this site. Are you sure you wish to continue?","pages.collections.external_modal.not_show":"Do not show this message again.","pages.collections.refresh.title":"Refresh your collection","pages.collections.refresh.notice":"You can refresh data every 15 minutes.","pages.collections.refresh.notice_wait":"Please wait. You can refresh data every 15 minutes.","pages.collections.refresh.toast":"We're updating information for your collection.","pages.collections.featured.title":"Featured Collections","pages.collections.featured.button":"Explore Collection","pages.nfts.nft":"nft","pages.nfts.about_nft":"About NFT","pages.nfts.owned_by":"Owned by","pages.nfts.collection_image":"collection image","pages.nfts.menu.properties":"Properties","pages.nfts.menu.activity":"Activity","pages.reports.title":"Submit a Report","pages.reports.description":"Thanks for looking out by reporting things that break the rules. Let us know what's happening and we'll receive the report.","pages.reports.success":"Thank you for your report. We'll review it and see if it breaks our ToS.","pages.reports.failed":"Something went wrong. Please try again.","pages.reports.throttle":"You have made too many requests. Please wait {{time}} before reporting again.","pages.reports.reported":"You have already reported this {{model}}.","pages.reports.reasons.spam":"Spam","pages.reports.reasons.violence":"Promoting Violence","pages.reports.reasons.hate":"Hate","pages.reports.reasons.inappropriate_content":"Inappropriate Content","pages.reports.reasons.impersonation":"Impersonation","pages.reports.reasons.trademark":"Trademark or Copyright","pages.reports.reasons.selfharm":"Self-Harm","pages.reports.reasons.harassment":"Harassment","pages.galleries.title":"Galleries","pages.galleries.empty_title":"No galleries have been published yet. Once they do they will appear here.","pages.galleries.search.loading_results":"Loading results...","pages.galleries.search.no_results":"We could not find anything matching your search criteria, please try again!","pages.galleries.search.placeholder":"Search by name or curator address","pages.galleries.search.placeholder_nfts":"Search by NFTs","pages.galleries.search.error":"Could not load search results. Please try again later.","pages.galleries.my_galleries.title":"My Galleries","pages.galleries.my_galleries.subtitle":"Manage your galleries","pages.galleries.my_galleries.new_gallery":"New Gallery","pages.galleries.my_galleries.no_galleries":"You have not created any galleries yet. To create a gallery, click on the \"Create Gallery\" button.","pages.galleries.my_galleries.no_available_collections":"You have hidden all your collections. If you want to create a gallery, make sure you have at least 1 collection available.","pages.galleries.my_galleries.no_draft_galleries":"You have no draft galleries yet. To create a gallery, click on the \"Create Gallery\" button.","pages.galleries.my_galleries.succesfully_deleted":"Gallery has been successfully removed","pages.galleries.my_galleries.draft_succesfully_deleted":"Draft has been successfully removed","pages.galleries.my_galleries.successfully_created":"Gallery has been successfully created","pages.galleries.my_galleries.successfully_updated":"Gallery has been successfully updated","pages.galleries.my_galleries.new_gallery_no_nfts":"Creating a Gallery requires you to own an NFT.","pages.galleries.my_galleries.new_gallery_all_collections_hidden":"Creating a Gallery requires you to have at least 1 collection available.","pages.galleries.my_galleries.delete_modal.title":"Delete Draft","pages.galleries.my_galleries.delete_modal.text":"Are you sure you want to delete the draft? Everything you've done will be deleted and you won't be able to get it back.","pages.galleries.my_galleries.nfts_no_longer_owned":"NFTs no longer owned by this wallet have been removed from the draft”","pages.galleries.copy_gallery_link":"Copy Gallery Link","pages.galleries.my_nfts":"My NFTs","pages.galleries.show_hidden_collections":"Show hidden collections","pages.galleries.value":"Value","pages.galleries.floor_price":"Floor Price","pages.galleries.nfts":"NFTs","pages.galleries.collections":"Collections","pages.galleries.galleries_count_simple":"{0} galleries|{1} gallery|[2,*] galleries","pages.galleries.galleries_count":"{0} {{count}} Galleries|{1} {{count}} Gallery|[2,*] {{count}} Galleries","pages.galleries.collections_count_simple":"{0} collections|{1} collection|[2,*] collections","pages.galleries.collections_count":"{0} {{count}} Collections|{1} {{count}} Collection|[2,*] {{count}} Collections","pages.galleries.nfts_count_simple":"{0} NFTs|{1} NFT|[2,*] NFTs","pages.galleries.nfts_count":"{0} {{count}} NFTs|{1} {{count}} NFT|[2,*] {{count}} NFTs","pages.galleries.users_count_simple":"{0} users|{1} user|[2,*] users","pages.galleries.users_count":"{0} {{count}} Users|{1} {{count}} User|[2,*] {{count}} Users","pages.galleries.featuring":"Featuring","pages.galleries.curated_by":"Curated by","pages.galleries.worth_about":"Worth About","pages.galleries.valued_at":"valued at","pages.galleries.from":"From","pages.galleries.most_popular_galleries":"Most Popular Galleries","pages.galleries.newest_galleries":"Newest Galleries","pages.galleries.most_valuable_galleries":"Most Valuable Galleries","pages.galleries.most_popular":"Most Popular","pages.galleries.newest":"Newest","pages.galleries.most_valuable":"Most Valuable","pages.galleries.create.search_by_nfts":"Search by NFTs","pages.galleries.create.input_placeholder":"Enter gallery name","pages.galleries.create.title_too_long":"Gallery name must not exceed {{max}} characters.","pages.galleries.create.already_selected_nft":"NFT already exists in this gallery","pages.galleries.create.nft_missing_image":"Only NFTs with images can be added to galleries","pages.galleries.create.nft_gallery_limit":"You can only add 16 NFTs per gallery","pages.galleries.create.gallery_cover":"Gallery Cover","pages.galleries.create.gallery_cover_description":"The cover is used for the card on the gallery list page. While the cover is not a requirement it will allow you to add personality and stand out from the crowd.","pages.galleries.create.gallery_cover_information":"Image dimensions must be at least 287px x 190px, with a max size of 2 MB (JPG, PNG or GIF)","pages.galleries.create.no_results":"We could not find anything matching your search criteria, please try again!","pages.galleries.create.templates.cover":"Cover","pages.galleries.create.templates.template":"Template","pages.galleries.create.templates.select":"Select Gallery Template","pages.galleries.create.templates.basic":"Basic Gallery","pages.galleries.create.templates.coming_soon":"More Coming Soon","pages.galleries.create.load_more_collections_one":"Load {{count}} More Collection","pages.galleries.create.load_more_collections_other":"Load {{count}} More Collections","pages.galleries.create.load_more_nfts":"Load More NFTs","pages.galleries.create.can_purchase":"You can purchase NFTs with these top NFT Marketplaces:","pages.galleries.create.must_own_one_nft":"You must own at least one (1) NFT in order to create a gallery.","pages.galleries.create.back_to_galleries":"Back to Galleries","pages.galleries.create.draft_saved":"Draft Saved","pages.galleries.create.saving_to_draft":"Saving to draft","pages.galleries.create.drafts_limit_modal_title":"Draft Gallery Limit","pages.galleries.create.drafts_limit_modal_message":"You’ve hit your limit for draft galleries. While you can still make new galleries and publish them, they won’t be saved as drafts. To Free up space, you can either delete existing drafts or publish them.","pages.galleries.create.drafts_limit_modal_cancel":"Go to Drafts","pages.galleries.delete_modal.title":"Delete Gallery","pages.galleries.delete_modal.confirmation_text":"Are you sure you want to delete the gallery? Deleting a Gallery is permanent, all associated views and likes will be lost.","pages.galleries.consists_of_collections":"{0} This gallery consists of {{count}} collections|{1} This gallery consists of {{count}} collection|[2,*] This gallery consists of {{count}} collections","pages.galleries.guest_banner.title":"Craft the ultimate","pages.galleries.guest_banner.subtitle":"Pick your favorites, curate your gallery, & share it with the world.","pages.profile.title":"Profile","pages.token_panel.balance_tooltip":"Total percentage of the portfolio held in this token","pages.token_panel.insufficient_funds":"Insufficient Balance","pages.token_panel.error":"Dashbrd has failed to load token information. Please try again later.","pages.token_panel.failed_to_retrieve_transactions":"We were unable to fetch your transactions.","pages.token_panel.tabs.transaction_history":"Transaction History","pages.token_panel.tabs.history":"History","pages.token_panel.tabs.market_data":"Market Data","pages.token_panel.details.current_price":"Current Price","pages.token_panel.details.title":"Token Details","pages.token_panel.details.market_cap":"Market Cap","pages.token_panel.details.volume":"Daily Volume","pages.token_panel.details.supply":"Minted Supply","pages.token_panel.details.ath":"All-Time High","pages.token_panel.details.atl":"All-Time Low","pages.token_panel.chart.failed":"Dashbrd has failed to load chart information. Please try again later.","pages.transaction_details_panel.title":"Transaction Details","pages.transaction_details_panel.details.blockchain":"Blockchain","pages.transaction_details_panel.details.timestamp":"Timestamp","pages.transaction_details_panel.details.transaction_hash":"Transaction Hash","pages.transaction_details_panel.details.transaction_fee":"Transaction Fee","pages.transaction_details_panel.details.gas_price":"Gas Price","pages.transaction_details_panel.details.gas_used":"Gas Used","pages.transaction_details_panel.details.nonce":"Nonce","pages.send_receive_panel.send.labels.token_and_amount":"Token and Amount","pages.send_receive_panel.send.labels.destination_address":"Destination Address","pages.send_receive_panel.send.labels.projected_fee":"Projected Fee","pages.send_receive_panel.send.placeholders.enter_amount":"Enter Amount","pages.send_receive_panel.send.placeholders.insert_recipient_address":"Insert Recipient Address","pages.send_receive_panel.send.placeholders.projected_fee":"Projected Fee","pages.send_receive_panel.send.errors.amount":"Insufficient Funds: You do not have enough to cover the amount + fee.","pages.send_receive_panel.send.errors.destination":"Destination address is not correct. Check and input again.","pages.send_receive_panel.send.hints.token_price":"Token Price","pages.send_receive_panel.send.fees.Fast":"Fast","pages.send_receive_panel.send.fees.Avg":"Avg","pages.send_receive_panel.send.fees.Slow":"Slow","pages.send_receive_panel.send.search_dropdown.placeholder":"Search token","pages.send_receive_panel.send.search_dropdown.no_results":"No Results","pages.send_receive_panel.send.search_dropdown.error":"Error occurred while searching tokens.","pages.send_receive_panel.send.transaction_time":"Transaction Time: ~{{ time }} minutes","pages.send_receive_panel.send.from":"From","pages.send_receive_panel.send.to":"To","pages.send_receive_panel.send.amount":"Amount","pages.send_receive_panel.send.fee":"Fee","pages.send_receive_panel.send.total_amount":"Total Amount","pages.send_receive_panel.send.waiting_message":"Review and verify the information on your MetaMask. Sign to send the transaction.","pages.send_receive_panel.send.waiting_spinner_text":"Waiting for confirmation...","pages.send_receive_panel.send.failed_message":"It looks like something went wrong while sending your transaction. Press 'Retry' to make another attempt.","pages.send_receive_panel.receive.alert":"Send only Polygon or Ethereum Network compatible tokens to this address or you could permanently lose your funds!","pages.settings.title":"Settings","pages.settings.sidebar.general":"General","pages.settings.sidebar.notifications":"Notifications","pages.settings.sidebar.session_history":"Sessions History","pages.settings.general.title":"Settings","pages.settings.general.subtitle":"Customize your App Experience","pages.settings.general.currency":"Currency","pages.settings.general.currency_subtitle":"Select your default currency which will be used throughout the app.","pages.settings.general.time_date":"Time & Date","pages.settings.general.time_date_subtitle":"Select how you want time and date be shown inside app.","pages.settings.general.date_format":"Date Format","pages.settings.general.time_format":"Time Format","pages.settings.general.timezone":"Timezone","pages.settings.general.set_defaults":"Set Defaults","pages.settings.general.set_defaults_content":"Reverting to the default settings will remove any customizations previously made. Are you sure?","pages.settings.general.save":"Save Settings","pages.settings.general.saved":"Your settings have been successfully saved","pages.wallet.title":"Wallet","pages.privacy_policy.title":"Privacy Policy","pages.terms_of_service.title":"Terms of Service","pagination.previous":"« Previous","pagination.next":"Next »","passwords.reset":"Your password has been reset!","passwords.sent":"We have emailed your password reset link!","passwords.throttled":"Please wait before retrying.","passwords.token":"This password reset token is invalid.","passwords.user":"We can't find a user with that email address.","urls.landing":"https://dashbrd.com","urls.cookie_policy":"https://dashbrd.com/cookie-policy","urls.privacy_policy":"https://dashbrd.com/privacy-policy","urls.terms_of_service":"https://dashbrd.com/terms-of-service","urls.twitter":"https://x.com/DashbrdApp","urls.discord":"https://discord.gg/MJyWKkCJ5k","urls.github":"https://github.com/ArdentHQ/dashbrd","urls.coingecko":"https://www.coingecko.com","urls.etherscan":"https://etherscan.io","urls.polygonscan":"https://polygonscan.com","urls.alchemy":"https://www.alchemy.com","urls.moralis":"https://moralis.io","urls.mnemonic":"https://www.mnemonichq.com","urls.opensea":"https://opensea.io/","urls.explorers.etherscan.token_transactions":"https://etherscan.io/token/{{token}}?a={{address}}","urls.explorers.etherscan.addresses":"https://etherscan.io/address/{{address}}","urls.explorers.etherscan.transactions":"https://etherscan.io/tx/{{id}}","urls.explorers.etherscan.nft":"https://etherscan.io/nft/{{address}}/{{nftId}}","urls.explorers.polygonscan.token_transactions":"https://polygonscan.com/token/{{token}}?a={{address}}","urls.explorers.polygonscan.addresses":"https://polygonscan.com/address/{{address}}","urls.explorers.polygonscan.transactions":"https://polygonscan.com/tx/{{id}}","urls.explorers.polygonscan.nft":"https://polygonscan.com/nft/{{address}}/{{nftId}}","urls.explorers.mumbai.token_transactions":"https://mumbai.polygonscan.com/token/{{token}}?a={{address}}","urls.explorers.mumbai.addresses":"https://mumbai.polygonscan.com/address/{{address}}","urls.explorers.mumbai.transactions":"https://mumbai.polygonscan.com/tx/{{id}}","urls.explorers.mumbai.nft":"https://mumbai.polygonscan.com/nft/{{address}}/{{nftId}}","urls.explorers.goerli.token_transactions":"https://goerli.etherscan.io/token/{{token}}?a={{address}}","urls.explorers.goerli.addresses":"https://goerli.etherscan.io/address/{{address}}","urls.explorers.goerli.transactions":"https://goerli.etherscan.io/tx/{{id}}","urls.explorers.goerli.nft":"https://goerli.etherscan.io/nft/{{address}}/{{nftId}}","urls.marketplaces.opensea.collection":"https://opensea.io/assets/{{network}}/{{address}}","urls.marketplaces.opensea.nft":"https://opensea.io/assets/{{network}}/{{address}}/{{nftId}}","urls.marketplaces.rarible.collection":"https://rarible.com/collection/{{address}}/items","urls.marketplaces.rarible.nft":"https://rarible.com/token/{{address}}:{{nftId}}","urls.marketplaces.blur.collection":"https://blur.io/collection/{{address}}","urls.marketplaces.blur.nft":"https://blur.io/asset/{{address}}/{{nftId}}","urls.marketplaces.looksrare.collection":"https://looksrare.org/collections/{{address}}","urls.marketplaces.looksrare.nft":"https://looksrare.org/collections/{{address}}/{{nftId}}","validation.accepted":"The {{attribute}} must be accepted.","validation.accepted_if":"The {{attribute}} must be accepted when {{other}} is {{value}}.","validation.active_url":"The {{attribute}} is not a valid URL.","validation.after":"The {{attribute}} must be a date after {{date}}.","validation.after_or_equal":"The {{attribute}} must be a date after or equal to {{date}}.","validation.alpha":"The {{attribute}} must only contain letters.","validation.alpha_dash":"The {{attribute}} must only contain letters, numbers, dashes and underscores.","validation.alpha_num":"The {{attribute}} must only contain letters and numbers.","validation.array":"The {{attribute}} must be an array.","validation.ascii":"The {{attribute}} must only contain single-byte alphanumeric characters and symbols.","validation.before":"The {{attribute}} must be a date before {{date}}.","validation.before_or_equal":"The {{attribute}} must be a date before or equal to {{date}}.","validation.between.array":"The {{attribute}} must have between {{min}} and {{max}} items.","validation.between.file":"The {{attribute}} must be between {{min}} and {{max}} kilobytes.","validation.between.numeric":"The {{attribute}} must be between {{min}} and {{max}}.","validation.between.string":"The {{attribute}} must be between {{min}} and {{max}} characters.","validation.boolean":"The {{attribute}} field must be true or false.","validation.confirmed":"The {{attribute}} confirmation does not match.","validation.current_password":"The password is incorrect.","validation.date":"The {{attribute}} is not a valid date.","validation.date_equals":"The {{attribute}} must be a date equal to {{date}}.","validation.date_format":"The {{attribute}} does not match the format {{format}}.","validation.decimal":"The {{attribute}} must have {{decimal}} decimal places.","validation.declined":"The {{attribute}} must be declined.","validation.declined_if":"The {{attribute}} must be declined when {{other}} is {{value}}.","validation.different":"The {{attribute}} and {{other}} must be different.","validation.digits":"The {{attribute}} must be {{digits}} digits.","validation.digits_between":"The {{attribute}} must be between {{min}} and {{max}} digits.","validation.dimensions":"The {{attribute}} has invalid image dimensions.","validation.distinct":"The {{attribute}} field has a duplicate value.","validation.doesnt_end_with":"The {{attribute}} may not end with one of the following: {{values}}.","validation.doesnt_start_with":"The {{attribute}} may not start with one of the following: {{values}}.","validation.email":"The {{attribute}} must be a valid email address.","validation.ends_with":"The {{attribute}} must end with one of the following: {{values}}.","validation.enum":"The selected {{attribute}} is invalid.","validation.exists":"The selected {{attribute}} is invalid.","validation.file":"The {{attribute}} must be a file.","validation.filled":"The {{attribute}} field must have a value.","validation.gt.array":"The {{attribute}} must have more than {{value}} items.","validation.gt.file":"The {{attribute}} must be greater than {{value}} kilobytes.","validation.gt.numeric":"The {{attribute}} must be greater than {{value}}.","validation.gt.string":"The {{attribute}} must be greater than {{value}} characters.","validation.gte.array":"The {{attribute}} must have {{value}} items or more.","validation.gte.file":"The {{attribute}} must be greater than or equal to {{value}} kilobytes.","validation.gte.numeric":"The {{attribute}} must be greater than or equal to {{value}}.","validation.gte.string":"The {{attribute}} must be greater than or equal to {{value}} characters.","validation.image":"The {{attribute}} must be an image.","validation.in":"The selected {{attribute}} is invalid.","validation.in_array":"The {{attribute}} field does not exist in {{other}}.","validation.integer":"The {{attribute}} must be an integer.","validation.ip":"The {{attribute}} must be a valid IP address.","validation.ipv4":"The {{attribute}} must be a valid IPv4 address.","validation.ipv6":"The {{attribute}} must be a valid IPv6 address.","validation.json":"The {{attribute}} must be a valid JSON string.","validation.lowercase":"The {{attribute}} must be lowercase.","validation.lt.array":"The {{attribute}} must have less than {{value}} items.","validation.lt.file":"The {{attribute}} must be less than {{value}} kilobytes.","validation.lt.numeric":"The {{attribute}} must be less than {{value}}.","validation.lt.string":"The {{attribute}} must be less than {{value}} characters.","validation.lte.array":"The {{attribute}} must not have more than {{value}} items.","validation.lte.file":"The {{attribute}} must be less than or equal to {{value}} kilobytes.","validation.lte.numeric":"The {{attribute}} must be less than or equal to {{value}}.","validation.lte.string":"The {{attribute}} must be less than or equal to {{value}} characters.","validation.mac_address":"The {{attribute}} must be a valid MAC address.","validation.max.array":"The {{attribute}} must not have more than {{max}} items.","validation.max.file":"The {{attribute}} must not be greater than {{max}} kilobytes.","validation.max.numeric":"The {{attribute}} must not be greater than {{max}}.","validation.max.string":"The {{attribute}} must not be greater than {{max}} characters.","validation.max_digits":"The {{attribute}} must not have more than {{max}} digits.","validation.mimes":"The {{attribute}} must be a file of type: {{values}}.","validation.mimetypes":"The {{attribute}} must be a file of type: {{values}}.","validation.min.array":"The {{attribute}} must have at least {{min}} items.","validation.min.file":"The {{attribute}} must be at least {{min}} kilobytes.","validation.min.numeric":"The {{attribute}} must be at least {{min}}.","validation.min.string":"The {{attribute}} must be at least {{min}} characters.","validation.min_digits":"The {{attribute}} must have at least {{min}} digits.","validation.missing":"The {{attribute}} field must be missing.","validation.missing_if":"The {{attribute}} field must be missing when {{other}} is {{value}}.","validation.missing_unless":"The {{attribute}} field must be missing unless {{other}} is {{value}}.","validation.missing_with":"The {{attribute}} field must be missing when {{values}} is present.","validation.missing_with_all":"The {{attribute}} field must be missing when {{values}} are present.","validation.multiple_of":"The {{attribute}} must be a multiple of {{value}}.","validation.not_in":"The selected {{attribute}} is invalid.","validation.not_regex":"The {{attribute}} format is invalid.","validation.numeric":"The {{attribute}} must be a number.","validation.password.letters":"The {{attribute}} must contain at least one letter.","validation.password.mixed":"The {{attribute}} must contain at least one uppercase and one lowercase letter.","validation.password.numbers":"The {{attribute}} must contain at least one number.","validation.password.symbols":"The {{attribute}} must contain at least one symbol.","validation.password.uncompromised":"The given {{attribute}} has appeared in a data leak. Please choose a different {{attribute}}.","validation.present":"The {{attribute}} field must be present.","validation.prohibited":"The {{attribute}} field is prohibited.","validation.prohibited_if":"The {{attribute}} field is prohibited when {{other}} is {{value}}.","validation.prohibited_unless":"The {{attribute}} field is prohibited unless {{other}} is in {{values}}.","validation.prohibits":"The {{attribute}} field prohibits {{other}} from being present.","validation.regex":"The {{attribute}} format is invalid.","validation.required":"The {{attribute}} field is required.","validation.required_array_keys":"The {{attribute}} field must contain entries for: {{values}}.","validation.required_if":"The {{attribute}} field is required when {{other}} is {{value}}.","validation.required_if_accepted":"The {{attribute}} field is required when {{other}} is accepted.","validation.required_unless":"The {{attribute}} field is required unless {{other}} is in {{values}}.","validation.required_with":"The {{attribute}} field is required when {{values}} is present.","validation.required_with_all":"The {{attribute}} field is required when {{values}} are present.","validation.required_without":"The {{attribute}} field is required when {{values}} is not present.","validation.required_without_all":"The {{attribute}} field is required when none of {{values}} are present.","validation.same":"The {{attribute}} and {{other}} must match.","validation.size.array":"The {{attribute}} must contain {{size}} items.","validation.size.file":"The {{attribute}} must be {{size}} kilobytes.","validation.size.numeric":"The {{attribute}} must be {{size}}.","validation.size.string":"The {{attribute}} must be {{size}} characters.","validation.starts_with":"The {{attribute}} must start with one of the following: {{values}}.","validation.string":"The {{attribute}} must be a string.","validation.timezone":"The {{attribute}} must be a valid timezone.","validation.unique":"The {{attribute}} has already been taken.","validation.uploaded":"The {{attribute}} failed to upload.","validation.uppercase":"The {{attribute}} must be uppercase.","validation.url":"The {{attribute}} must be a valid URL.","validation.ulid":"The {{attribute}} must be a valid ULID.","validation.uuid":"The {{attribute}} must be a valid UUID.","validation.custom.attribute-name.rule-name":"custom-message","validation.unsupported_currency_code":"The currency code you provided is invalid or not supported.","validation.unsupported_period":"The period you provided is invalid or not supported.","validation.unsupported_token_symbol":"The token symbol you provided is invalid or not supported.","validation.gallery_title_required":"Gallery name is required.","validation.gallery_title_max_characters":"The gallery name should not exceed 50 characters.","validation.gallery_title_invalid":"The gallery name is invalid.","validation.nfts_required":"Please add at least one NFT.","validation.nfts_max_size":"Galleries can contain no more than {{limit}} NFTs","validation.invalid_nfts":"The NFT in position {{position}} is invalid, please select another one.","validation.invalid_cover":"You have selected an invalid cover image, please try another one."} \ No newline at end of file +{"auth.welcome":"Welcome to Dashbrd","auth.logged_in":"You're logged in!","auth.log_out":"Log out","auth.failed":"These credentials do not match our records.","auth.session_timeout":"Your session has timed out. Please refresh the page and try connecting your account again.","auth.session_timeout_modal":"Seems like your session has timed out. Please connnect your wallet again.","auth.password":"The provided password is incorrect.","auth.throttle":"Too many login attempts. Please try again in {{seconds}} seconds.","auth.wallet.connecting":"Connecting …","auth.wallet.waiting_for_signature":"Waiting for Signature …","auth.wallet.switching_wallet":"Switching Wallet …","auth.wallet.connect":"Connect Wallet","auth.wallet.connect_long":"Connect Your Wallet to Get Started","auth.wallet.sign_subtitle":"Connect Your Wallet to Continue","auth.wallet.disconnect":"Disconnect Wallet","auth.wallet.install":"Install MetaMask","auth.wallet.install_long":"Install MetaMask to Get Started","auth.wallet.sign":"Sign Message","auth.wallet.sign_message":"Welcome to Dashbrd. In order to login, sign this message with your wallet. It doesn't cost you anything!\n\nSigning ID (you can ignore this): {{nonce}}","auth.wallet.connect_subtitle":"Click on the MetaMask icon in your browser to confirm the action and connect your wallet.","auth.wallet.requires_signature":"In order to prevent impersonation, we require a signature to perform this action. This signature is only a signed message and does not give any access to your wallet.","auth.errors.metamask.no_account":"No account found. Please connect your wallet and try again.","auth.errors.metamask.generic":"Connection attempt error. Please retry and follow the steps to connect your wallet.","auth.errors.metamask.invalid_network":"Please switch to Polygon or Ethereum Mainnet in your MetaMask plugin to connect to Dashbrd.","auth.errors.metamask.provider_missing":"You don't have MetaMask installed in your browser. Please install and try again.","auth.errors.metamask.user_rejected":"It looks like you cancelled signing of the authentication message. Please try again.","auth.errors.metamask.provider_not_set":"Ethereum provider is not set","auth.validation.wallet_login_failed":"There was a problem trying to verify your signature. Please try again.","auth.validation.invalid_address":"Your wallet address is invalid. Please try again.","auth.validation.invalid_signature":"Signature is invalid. Please try again.","auth.validation.invalid_network":"Please switch to Polygon or Ethereum Mainnet in your MetaMask plugin to connect to Dashbrd.","common.author":"Author","common.add":"Add","common.amount":"Amount","common.balance":"Balance","common.cancel":"Cancel","common.delete":"Delete","common.edit":"Edit","common.confirm":"Confirm","common.connect":"Connect","common.continue":"Continue","common.done":"Done","common.filter":"Filter","common.items":"Items","common.receive":"Receive","common.received":"Received","common.retry":"Retry","common.records":"Records","common.save":"Save","common.send":"Send","common.sent":"Sent","common.show":"Show","common.searching":"Searching...","common.other":"Other","common.owned":"Owned","common.token":"Token","common.tokens":"Tokens","common.wallet":"Wallet","common.pending":"Pending","common.publish":"Publish","common.published":"Published","common.empty":"Empty","common.your_address":"Your Address","common.warning":"Warning","common.my_address":"My Address","common.my_wallet":"My Wallet","common.my_collections":"My Collections","common.my_balance":"My Balance","common.na":"N/A","common.simple_plural_without_data":"One comment|Many comments","common.simple_plural_with_data":"{{count}} comment|{{count}} comments","common.advanced_plural_without_data":"{0} no comments yet|{1} 1 comment|[2,*] Many comments","common.advanced_plural_with_data":"{0} no comments yet|{1} 1 comment|[2,*] {{count}} comments","common.copy_clipboard":"Copy to Clipboard","common.copy":"Copy","common.download":"Download","common.zoom":"Zoom","common.my_collection":"My Collection","common.max":"Max","common.chain":"Chain","common.copied":"Copied!","common.coming_soon":"Coming Soon","common.more_details":"More Details","common.close":"Close","common.close_toast":"Close toast","common.loading":"Loading","common.price":"Price","common.articles":"Articles","common.most_popular":"Most Popular","common.market_cap":"Market Cap","common.volume":"Volume","common.volume_frequency":"Volume {{frequency}}","common.value":"Value","common.last_n_days":"Last {{count}} Days","common.details":"Details","common.view_all":"View All","common.view_more_on_polygonscan":"View More on Polygonscan","common.view_more_on_etherscan":"View More on Etherscan","common.view_nft_on_etherscan":"View NFT on Etherscan","common.view_nft_on_polygonscan":"View NFT on Polygonscan","common.view_nft_on_goerli_tesnet":"View NFT on Goerli Testnet Explorer","common.view_nft_on_mumbai_tesnet":"View NFT on Mumbai Testnet Explorer","common.polygonscan":"Polygonscan","common.etherscan":"Etherscan","common.featured":"Featured","common.floor_price":"Floor Price","common.floor":"Floor","common.supply":"Supply","common.owners":"Owners","common.created":"Created","common.nft":"NFT","common.collection":"Collection","common.collections":"Collections","common.gallery":"Gallery","common.basic_gallery":"Basic Gallery","common.gallery_name":"Gallery Name","common.create_gallery":"Create Gallery","common.external_link":"External Link","common.follow_link":"Follow Link","common.cover":"Cover","common.template":"Template","common.page":"Page","common.polygon":"Polygon","common.ethereum":"Ethereum","common.mumbai":"Mumbai","common.goerli":"Goerli","common.of":"of","common.pagination_input_placeholder":"Enter the page number","common.pagination_input_placeholder_mobile":"Page number","common.nft_count":"{0} {{count}} NFTs|{1} {{count}} NFT|[2,*] {{count}} NFTs","common.nft_gallery":"NFT Gallery","common.unable_to_retrieve_image":"Unable to retrieve your NFT image at this time","common.optional":"Optional","common.selected":"Selected","common.select":"Select","common.preview":"Preview","common.image_size_error":"Image size must not exceed 2MB","common.image_dimensions_error":"Image dimensions must exceed 287px x 190px","common.write_to_confirm":"Write {{word}} to confirm","common.n_hours":"{0} {{count}} hour|{1} {{count}} hour|[2,*] {{count}} hours","common.n_minutes":"{0} {{count}} minute|{1} {{count}} minute|[2,*] {{count}} minutes","common.report":"Report","common.nfts":"NFTs","common.n_nfts":"{0}NFTs|{1}NFT|[2,*]NFTs","common.n_collections":"{0}collections|{1}collection|[2,*]collections","common.back":"Back","common.back_to":"Back to","common.name":"Name","common.type":"Type","common.from":"From","common.to":"To","common.sale_price":"Sale Price","common.recent_activity":"Recent Activity","common.time":"Time","common.datetime.few_seconds_ago":"A few seconds ago","common.datetime.minutes_ago":"{0} Less than a minute ago|{1} A minute ago|[2,*] {{count}} minutes ago","common.datetime.hours_ago":"{0} Less than an hour ago|{1} An hour ago|[2,*] {{count}} hours ago","common.datetime.days_ago":"{0} Less than a day ago|{1} A day ago|[2,*] {{count}} days ago","common.datetime.weeks_ago":"{0} Less than a week ago|{1} A week ago|[2,*] {{count}} weeks ago","common.datetime.months_ago":"{0} Less than a month ago|{1} A month ago|[2,*] {{count}} months ago","common.datetime.years_ago":"{0} Less than a year ago|{1} A year ago|[2,*] {{count}} years ago","common.no_traits_found":"No traits found.","common.empty_transactions":"You don't have any transactions yet. Once transactions have been made, they will show up here.","common.error":"Error","common.refresh":"Refresh","common.refresh_metadata":"Refresh Metadata","common.refreshing_metadata":"Refreshing Metadata... Please check back later.","common.refreshing_activity":"Refreshing Activity... Please check back later.","common.pending_confirmation":"Pending Confirmation","common.confirmed_transaction":"Confirmed Transaction","common.transaction_error":"Transaction Error","common.transaction_error_description_first_part":"Your transaction encountered an error. View this transaction on","common.transaction_error_description_second_part":"for more details.","common.home":"Home","common.contact":"Contact","common.menu":"Menu","common.website":"Website","common.twitter":"Twitter","common.discord":"Discord","common.facebook":"Facebook","common.reddit":"Reddit","common.x":"X","common.sort":"Sort","common.drafts":"Drafts","common.draft":"Draft","common.delete_draft":"Delete Draft","common.share_on":"Share on {{platform}}","common.top":"Top","common.all_chains":"All chains","footer.copyright":"{{year}} © Dashbrd. All rights reserved.","footer.all_rights_reserved":"All rights reserved","footer.privacy_policy":"Privacy Policy","footer.terms_of_service":"Terms of Service","footer.powered_by":"Powered by","format.fiat":"{{ value, currency }}","format.number":"{{ value, number }}","metatags.home.title":"Dashbrd | Web3 Portfolio Management Made Simple","metatags.home.description":"Simplify your Web3 journey with Dashbrd. Manage your portfolio of tokens, NFTs, and other digital collectibles across the Ethereum and Polygon blockchains.","metatags.home.image":"/images/meta/home.png","metatags.error.title":"Error {{code}} | Dashbrd","metatags.wallet.title":"My Wallet | Dashbrd","metatags.galleries.title":"Top NFT Galleries | Dashbrd","metatags.galleries.image":"/images/meta/nft-galleries.png","metatags.galleries.description":"Explore user published NFT galleries to find custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.most_popular.title":"Most Popular Galleries | Dashbrd","metatags.galleries.most_popular.image":"/images/meta/most-popular-nft-galleries.png","metatags.galleries.most_popular.description":"Explore and discover Most Popular NFT Galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.newest.title":"Newest Galleries | Dashbrd","metatags.galleries.newest.image":"/images/meta/newest-nft-galleries.png","metatags.galleries.newest.description":"Explore and discover most recent NFT galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More","metatags.galleries.most_valuable.title":"Most Valuable Galleries | Dashbrd","metatags.galleries.most_valuable.image":"/images/meta/most-valuable-nft-galleries.png","metatags.galleries.most_valuable.description":"Explore and discover Most Valuable NFT Galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.view.title":"{{name}} | Dashbrd","metatags.galleries.view.description":"{{name}} | A Curated NFT Gallery at Dashbrd","metatags.galleries.view.image":"/images/meta/nft-gallery.png","metatags.my_galleries.title":"My Galleries | Dashbrd","metatags.my_galleries.title_draft":"My Draft Galleries | Dashbrd","metatags.my_galleries.create.title":"Create Gallery | Dashbrd","metatags.my_galleries.edit.title":"Edit {{name}} | Dashbrd","metatags.collections.title":"Collections | Dashbrd","metatags.collections.view.title":"{{name}} Collection | Dashbrd","metatags.collections.view.description":"Immerse yourself in the intricate details of {{name}} collection, featuring remarkable digital assets. Start your NFT journey today!","metatags.collections.view.image":"/images/meta/nft-collection.png","metatags.my-collections.title":"My Collections | Dashbrd","metatags.nfts.view.title":"{{nft}} NFT | Dashbrd","metatags.nfts.view.description":"Uncover the complete story of {{nft}} NFT from the {{collection}} collection, delving into its unique attributes and distinctive features.","metatags.nfts.view.image":"/images/meta/nft-details.png","metatags.settings.title":"Settings | Dashbrd","metatags.articles.title":"Articles | Dashbrd","metatags.articles.view.title":"{{title}} | Dashbrd","metatags.login.title":"Login | Dashbrd","metatags.privacy_policy.title":"Privacy Policy | Dashbrd","metatags.privacy_policy.description":"Dashbrd’s privacy policy outlines the information we collect and explains your choices surrounding how we use information about you.","metatags.terms_of_service.title":"Terms of Service | Dashbrd","metatags.terms_of_service.description":"These Terms of Service cover your use and access to services, products or websites of Dashbrd.","metatags.cookie_policy.title":"Cookie Policy | Dashbrd","metatags.cookie_policy.description":"Dashbrd uses cookies to make the website more user-friendly. Find out about the main types of cookies we use, and what we use them for.","metatags.welcome.title":"Welcome to Dashbrd | Web3 Simplified","pages.onboarding.title":"Get Started","pages.onboarding.heading":"Your monkeys were bored and ran off, we are trying to round them up.","pages.onboarding.message":"We are setting up your account. This process usually takes just a few minutes, but can take up to 15 minutes.","pages.error.heading":"Oops, something went wrong ...","pages.error.message":"Please try again or get in touch if the issue persists.","pages.maintenance.title":"Dashbrd is currently down for scheduled maintenance.","pages.maintenance.description":"We expect to be back soon. Thanks for your patience.","pages.dashboard.title":"My Wallet","pages.dashboard.breakdown.title":"Portfolio Breakdown","pages.dashboard.line_chart.data_error":"Could not load chart data","pages.articles.title":"Articles","pages.articles.featured_collections":"Featured Collections","pages.articles.placeholder_more_soon":"More Soon","pages.articles.no_articles":"No articles have been published yet. Please check back later!","pages.articles.header_title":"Explore our collection of","pages.articles.header_suffix_one":"published article","pages.articles.header_suffix_other":"published articles","pages.articles.audio_version":"Audio version","pages.articles.consists_of_collections":"{0} This article highlights {{count}} collections|{1} This article highlights {{count}} collection|[2,*] This article highlights {{count}} collections","pages.collections.title":"Collections","pages.collections.collections":"Collections","pages.collections.popular_collections":"Popular Collections","pages.collections.collection_value":"Collection Value","pages.collections.nfts_owned":"NFTs Owned","pages.collections.header_title":"You own <0>{{nftsCount}} {{nfts}} across <0>{{collectionsCount}} {{collections}}, worth about <0><1>{{worth}}","pages.collections.search_placeholder":"Search by Collection","pages.collections.properties":"Properties","pages.collections.collections_network":"Collections Network","pages.collections.property_search_placeholder":"Feature Search","pages.collections.floor_price":"Floor Price","pages.collections.value":"Value","pages.collections.rarity":"Rarity","pages.collections.report":"Report","pages.collections.hide_collection":"Hide Collection","pages.collections.unhide_collection":"Unhide Collection","pages.collections.no_collections":"You do not own any NFTs yet. Once you do they will be shown here.","pages.collections.all_collections_hidden":"You have hidden all your collections. Unhide and they will appear here.","pages.collections.about_collection":"About Collection","pages.collections.show_hidden":"Show Hidden","pages.collections.show_my_collection":"Show My Collection","pages.collections.owned":"Owned","pages.collections.activities.loading_activities":"We're fetching Activity for this NFT, please hang tight, this can take a while.","pages.collections.activities.loading_activities_collection":"We're fetching Activity for this collection, please hang tight, this can take a while.","pages.collections.activities.ignores_activities":"We don't support activity history for this collection yet.","pages.collections.activities.no_activity":"This collection does not have any activity yet.","pages.collections.activities.types.LABEL_MINT":"Mint","pages.collections.activities.types.LABEL_TRANSFER":"Transfer","pages.collections.activities.types.LABEL_SALE":"Sale","pages.collections.activities.types.LABEL_BURN":"Burn","pages.collections.collection_of_the_month.vote_for_next_months_winners":"Vote now for next month's winners","pages.collections.articles.no_articles":"No articles have been linked to this collection as of now.","pages.collections.articles.no_articles_with_filters":"We could not find any articles matching your search criteria, please try again!","pages.collections.articles.search_placeholder":"Search in Articles","pages.collections.articles.sort_latest":"Latest","pages.collections.articles.sort_popularity":"Most Popular","pages.collections.search.loading_results":"Loading results...","pages.collections.search.no_results":"We could not find anything matching your search criteria, please try again!","pages.collections.search.no_results_with_filters":"We could not find anything matching your filters, please try again!","pages.collections.search.no_results_ownership":"You do not own any NFTs in this collection","pages.collections.search.error":"Could not load search results. Please try again later.","pages.collections.vote.vote_for_top_collection":"Vote for Top Collection of the Month","pages.collections.vote.vote":"Vote","pages.collections.vote.time_left":"Time Left","pages.collections.vote.or_nominate_collection":"Or nominate a collection","pages.collections.sorting.token_number":"Token Number","pages.collections.sorting.recently_received":"Recently Received","pages.collections.sorting.recently_created":"Recently Created","pages.collections.sorting.oldest_collection":"Oldest Collection","pages.collections.traits.description":"List of NFT traits by % of occurrence in the collection","pages.collections.traits.no_traits":"No Properties can be found for this NFT","pages.collections.menu.collection":"Collection","pages.collections.menu.articles":"Articles","pages.collections.menu.activity":"Activity","pages.collections.hidden_modal.collection_hidden":"Collection Hidden","pages.collections.hidden_modal.description":"This collection is currently set to Hidden. Are you sure you want to unhide this collection? You can\n reset the collection to hidden from the collection menu.","pages.collections.hidden_modal.unhide":"Unhide","pages.collections.hidden_modal.error":"Something went wrong. Please try again.","pages.collections.external_modal.you_wish_continue":"You are about to leave Dashbrd to an external website. Dashbrd has no control over the content of\n this site. Are you sure you wish to continue?","pages.collections.external_modal.not_show":"Do not show this message again.","pages.collections.refresh.title":"Refresh your collection","pages.collections.refresh.notice":"You can refresh data every 15 minutes.","pages.collections.refresh.notice_wait":"Please wait. You can refresh data every 15 minutes.","pages.collections.refresh.toast":"We're updating information for your collection.","pages.collections.featured.title":"Featured Collections","pages.collections.featured.button":"Explore Collection","pages.nfts.nft":"nft","pages.nfts.about_nft":"About NFT","pages.nfts.owned_by":"Owned by","pages.nfts.collection_image":"collection image","pages.nfts.menu.properties":"Properties","pages.nfts.menu.activity":"Activity","pages.reports.title":"Submit a Report","pages.reports.description":"Thanks for looking out by reporting things that break the rules. Let us know what's happening and we'll receive the report.","pages.reports.success":"Thank you for your report. We'll review it and see if it breaks our ToS.","pages.reports.failed":"Something went wrong. Please try again.","pages.reports.throttle":"You have made too many requests. Please wait {{time}} before reporting again.","pages.reports.reported":"You have already reported this {{model}}.","pages.reports.reasons.spam":"Spam","pages.reports.reasons.violence":"Promoting Violence","pages.reports.reasons.hate":"Hate","pages.reports.reasons.inappropriate_content":"Inappropriate Content","pages.reports.reasons.impersonation":"Impersonation","pages.reports.reasons.trademark":"Trademark or Copyright","pages.reports.reasons.selfharm":"Self-Harm","pages.reports.reasons.harassment":"Harassment","pages.galleries.title":"Galleries","pages.galleries.empty_title":"No galleries have been published yet. Once they do they will appear here.","pages.galleries.search.loading_results":"Loading results...","pages.galleries.search.no_results":"We could not find anything matching your search criteria, please try again!","pages.galleries.search.placeholder":"Search by name or curator address","pages.galleries.search.placeholder_nfts":"Search by NFTs","pages.galleries.search.error":"Could not load search results. Please try again later.","pages.galleries.my_galleries.title":"My Galleries","pages.galleries.my_galleries.subtitle":"Manage your galleries","pages.galleries.my_galleries.new_gallery":"New Gallery","pages.galleries.my_galleries.no_galleries":"You have not created any galleries yet. To create a gallery, click on the \"Create Gallery\" button.","pages.galleries.my_galleries.no_available_collections":"You have hidden all your collections. If you want to create a gallery, make sure you have at least 1 collection available.","pages.galleries.my_galleries.no_draft_galleries":"You have no draft galleries yet. To create a gallery, click on the \"Create Gallery\" button.","pages.galleries.my_galleries.succesfully_deleted":"Gallery has been successfully removed","pages.galleries.my_galleries.draft_succesfully_deleted":"Draft has been successfully removed","pages.galleries.my_galleries.successfully_created":"Gallery has been successfully created","pages.galleries.my_galleries.successfully_updated":"Gallery has been successfully updated","pages.galleries.my_galleries.new_gallery_no_nfts":"Creating a Gallery requires you to own an NFT.","pages.galleries.my_galleries.new_gallery_all_collections_hidden":"Creating a Gallery requires you to have at least 1 collection available.","pages.galleries.my_galleries.delete_modal.title":"Delete Draft","pages.galleries.my_galleries.delete_modal.text":"Are you sure you want to delete the draft? Everything you've done will be deleted and you won't be able to get it back.","pages.galleries.my_galleries.nfts_no_longer_owned":"NFTs no longer owned by this wallet have been removed from the draft”","pages.galleries.copy_gallery_link":"Copy Gallery Link","pages.galleries.my_nfts":"My NFTs","pages.galleries.show_hidden_collections":"Show hidden collections","pages.galleries.value":"Value","pages.galleries.floor_price":"Floor Price","pages.galleries.nfts":"NFTs","pages.galleries.collections":"Collections","pages.galleries.galleries_count_simple":"{0} galleries|{1} gallery|[2,*] galleries","pages.galleries.galleries_count":"{0} {{count}} Galleries|{1} {{count}} Gallery|[2,*] {{count}} Galleries","pages.galleries.collections_count_simple":"{0} collections|{1} collection|[2,*] collections","pages.galleries.collections_count":"{0} {{count}} Collections|{1} {{count}} Collection|[2,*] {{count}} Collections","pages.galleries.nfts_count_simple":"{0} NFTs|{1} NFT|[2,*] NFTs","pages.galleries.nfts_count":"{0} {{count}} NFTs|{1} {{count}} NFT|[2,*] {{count}} NFTs","pages.galleries.users_count_simple":"{0} users|{1} user|[2,*] users","pages.galleries.users_count":"{0} {{count}} Users|{1} {{count}} User|[2,*] {{count}} Users","pages.galleries.featuring":"Featuring","pages.galleries.curated_by":"Curated by","pages.galleries.worth_about":"Worth About","pages.galleries.valued_at":"valued at","pages.galleries.from":"From","pages.galleries.most_popular_galleries":"Most Popular Galleries","pages.galleries.newest_galleries":"Newest Galleries","pages.galleries.most_valuable_galleries":"Most Valuable Galleries","pages.galleries.most_popular":"Most Popular","pages.galleries.newest":"Newest","pages.galleries.most_valuable":"Most Valuable","pages.galleries.create.search_by_nfts":"Search by NFTs","pages.galleries.create.input_placeholder":"Enter gallery name","pages.galleries.create.title_too_long":"Gallery name must not exceed {{max}} characters.","pages.galleries.create.already_selected_nft":"NFT already exists in this gallery","pages.galleries.create.nft_missing_image":"Only NFTs with images can be added to galleries","pages.galleries.create.nft_gallery_limit":"You can only add 16 NFTs per gallery","pages.galleries.create.gallery_cover":"Gallery Cover","pages.galleries.create.gallery_cover_description":"The cover is used for the card on the gallery list page. While the cover is not a requirement it will allow you to add personality and stand out from the crowd.","pages.galleries.create.gallery_cover_information":"Image dimensions must be at least 287px x 190px, with a max size of 2 MB (JPG, PNG or GIF)","pages.galleries.create.no_results":"We could not find anything matching your search criteria, please try again!","pages.galleries.create.templates.cover":"Cover","pages.galleries.create.templates.template":"Template","pages.galleries.create.templates.select":"Select Gallery Template","pages.galleries.create.templates.basic":"Basic Gallery","pages.galleries.create.templates.coming_soon":"More Coming Soon","pages.galleries.create.load_more_collections_one":"Load {{count}} More Collection","pages.galleries.create.load_more_collections_other":"Load {{count}} More Collections","pages.galleries.create.load_more_nfts":"Load More NFTs","pages.galleries.create.can_purchase":"You can purchase NFTs with these top NFT Marketplaces:","pages.galleries.create.must_own_one_nft":"You must own at least one (1) NFT in order to create a gallery.","pages.galleries.create.back_to_galleries":"Back to Galleries","pages.galleries.create.draft_saved":"Draft Saved","pages.galleries.create.saving_to_draft":"Saving to draft","pages.galleries.create.drafts_limit_modal_title":"Draft Gallery Limit","pages.galleries.create.drafts_limit_modal_message":"You’ve hit your limit for draft galleries. While you can still make new galleries and publish them, they won’t be saved as drafts. To Free up space, you can either delete existing drafts or publish them.","pages.galleries.create.drafts_limit_modal_cancel":"Go to Drafts","pages.galleries.delete_modal.title":"Delete Gallery","pages.galleries.delete_modal.confirmation_text":"Are you sure you want to delete the gallery? Deleting a Gallery is permanent, all associated views and likes will be lost.","pages.galleries.consists_of_collections":"{0} This gallery consists of {{count}} collections|{1} This gallery consists of {{count}} collection|[2,*] This gallery consists of {{count}} collections","pages.galleries.guest_banner.title":"Craft the ultimate","pages.galleries.guest_banner.subtitle":"Pick your favorites, curate your gallery, & share it with the world.","pages.profile.title":"Profile","pages.token_panel.balance_tooltip":"Total percentage of the portfolio held in this token","pages.token_panel.insufficient_funds":"Insufficient Balance","pages.token_panel.error":"Dashbrd has failed to load token information. Please try again later.","pages.token_panel.failed_to_retrieve_transactions":"We were unable to fetch your transactions.","pages.token_panel.tabs.transaction_history":"Transaction History","pages.token_panel.tabs.history":"History","pages.token_panel.tabs.market_data":"Market Data","pages.token_panel.details.current_price":"Current Price","pages.token_panel.details.title":"Token Details","pages.token_panel.details.market_cap":"Market Cap","pages.token_panel.details.volume":"Daily Volume","pages.token_panel.details.supply":"Minted Supply","pages.token_panel.details.ath":"All-Time High","pages.token_panel.details.atl":"All-Time Low","pages.token_panel.chart.failed":"Dashbrd has failed to load chart information. Please try again later.","pages.transaction_details_panel.title":"Transaction Details","pages.transaction_details_panel.details.blockchain":"Blockchain","pages.transaction_details_panel.details.timestamp":"Timestamp","pages.transaction_details_panel.details.transaction_hash":"Transaction Hash","pages.transaction_details_panel.details.transaction_fee":"Transaction Fee","pages.transaction_details_panel.details.gas_price":"Gas Price","pages.transaction_details_panel.details.gas_used":"Gas Used","pages.transaction_details_panel.details.nonce":"Nonce","pages.send_receive_panel.send.labels.token_and_amount":"Token and Amount","pages.send_receive_panel.send.labels.destination_address":"Destination Address","pages.send_receive_panel.send.labels.projected_fee":"Projected Fee","pages.send_receive_panel.send.placeholders.enter_amount":"Enter Amount","pages.send_receive_panel.send.placeholders.insert_recipient_address":"Insert Recipient Address","pages.send_receive_panel.send.placeholders.projected_fee":"Projected Fee","pages.send_receive_panel.send.errors.amount":"Insufficient Funds: You do not have enough to cover the amount + fee.","pages.send_receive_panel.send.errors.destination":"Destination address is not correct. Check and input again.","pages.send_receive_panel.send.hints.token_price":"Token Price","pages.send_receive_panel.send.fees.Fast":"Fast","pages.send_receive_panel.send.fees.Avg":"Avg","pages.send_receive_panel.send.fees.Slow":"Slow","pages.send_receive_panel.send.search_dropdown.placeholder":"Search token","pages.send_receive_panel.send.search_dropdown.no_results":"No Results","pages.send_receive_panel.send.search_dropdown.error":"Error occurred while searching tokens.","pages.send_receive_panel.send.transaction_time":"Transaction Time: ~{{ time }} minutes","pages.send_receive_panel.send.from":"From","pages.send_receive_panel.send.to":"To","pages.send_receive_panel.send.amount":"Amount","pages.send_receive_panel.send.fee":"Fee","pages.send_receive_panel.send.total_amount":"Total Amount","pages.send_receive_panel.send.waiting_message":"Review and verify the information on your MetaMask. Sign to send the transaction.","pages.send_receive_panel.send.waiting_spinner_text":"Waiting for confirmation...","pages.send_receive_panel.send.failed_message":"It looks like something went wrong while sending your transaction. Press 'Retry' to make another attempt.","pages.send_receive_panel.receive.alert":"Send only Polygon or Ethereum Network compatible tokens to this address or you could permanently lose your funds!","pages.settings.title":"Settings","pages.settings.sidebar.general":"General","pages.settings.sidebar.notifications":"Notifications","pages.settings.sidebar.session_history":"Sessions History","pages.settings.general.title":"Settings","pages.settings.general.subtitle":"Customize your App Experience","pages.settings.general.currency":"Currency","pages.settings.general.currency_subtitle":"Select your default currency which will be used throughout the app.","pages.settings.general.time_date":"Time & Date","pages.settings.general.time_date_subtitle":"Select how you want time and date be shown inside app.","pages.settings.general.date_format":"Date Format","pages.settings.general.time_format":"Time Format","pages.settings.general.timezone":"Timezone","pages.settings.general.set_defaults":"Set Defaults","pages.settings.general.set_defaults_content":"Reverting to the default settings will remove any customizations previously made. Are you sure?","pages.settings.general.save":"Save Settings","pages.settings.general.saved":"Your settings have been successfully saved","pages.wallet.title":"Wallet","pages.privacy_policy.title":"Privacy Policy","pages.terms_of_service.title":"Terms of Service","pagination.previous":"« Previous","pagination.next":"Next »","passwords.reset":"Your password has been reset!","passwords.sent":"We have emailed your password reset link!","passwords.throttled":"Please wait before retrying.","passwords.token":"This password reset token is invalid.","passwords.user":"We can't find a user with that email address.","urls.landing":"https://dashbrd.com","urls.cookie_policy":"https://dashbrd.com/cookie-policy","urls.privacy_policy":"https://dashbrd.com/privacy-policy","urls.terms_of_service":"https://dashbrd.com/terms-of-service","urls.twitter":"https://x.com/DashbrdApp","urls.discord":"https://discord.gg/MJyWKkCJ5k","urls.github":"https://github.com/ArdentHQ/dashbrd","urls.coingecko":"https://www.coingecko.com","urls.etherscan":"https://etherscan.io","urls.polygonscan":"https://polygonscan.com","urls.alchemy":"https://www.alchemy.com","urls.moralis":"https://moralis.io","urls.mnemonic":"https://www.mnemonichq.com","urls.opensea":"https://opensea.io/","urls.explorers.etherscan.token_transactions":"https://etherscan.io/token/{{token}}?a={{address}}","urls.explorers.etherscan.addresses":"https://etherscan.io/address/{{address}}","urls.explorers.etherscan.transactions":"https://etherscan.io/tx/{{id}}","urls.explorers.etherscan.nft":"https://etherscan.io/nft/{{address}}/{{nftId}}","urls.explorers.polygonscan.token_transactions":"https://polygonscan.com/token/{{token}}?a={{address}}","urls.explorers.polygonscan.addresses":"https://polygonscan.com/address/{{address}}","urls.explorers.polygonscan.transactions":"https://polygonscan.com/tx/{{id}}","urls.explorers.polygonscan.nft":"https://polygonscan.com/nft/{{address}}/{{nftId}}","urls.explorers.mumbai.token_transactions":"https://mumbai.polygonscan.com/token/{{token}}?a={{address}}","urls.explorers.mumbai.addresses":"https://mumbai.polygonscan.com/address/{{address}}","urls.explorers.mumbai.transactions":"https://mumbai.polygonscan.com/tx/{{id}}","urls.explorers.mumbai.nft":"https://mumbai.polygonscan.com/nft/{{address}}/{{nftId}}","urls.explorers.goerli.token_transactions":"https://goerli.etherscan.io/token/{{token}}?a={{address}}","urls.explorers.goerli.addresses":"https://goerli.etherscan.io/address/{{address}}","urls.explorers.goerli.transactions":"https://goerli.etherscan.io/tx/{{id}}","urls.explorers.goerli.nft":"https://goerli.etherscan.io/nft/{{address}}/{{nftId}}","urls.marketplaces.opensea.collection":"https://opensea.io/assets/{{network}}/{{address}}","urls.marketplaces.opensea.nft":"https://opensea.io/assets/{{network}}/{{address}}/{{nftId}}","urls.marketplaces.rarible.collection":"https://rarible.com/collection/{{address}}/items","urls.marketplaces.rarible.nft":"https://rarible.com/token/{{address}}:{{nftId}}","urls.marketplaces.blur.collection":"https://blur.io/collection/{{address}}","urls.marketplaces.blur.nft":"https://blur.io/asset/{{address}}/{{nftId}}","urls.marketplaces.looksrare.collection":"https://looksrare.org/collections/{{address}}","urls.marketplaces.looksrare.nft":"https://looksrare.org/collections/{{address}}/{{nftId}}","validation.accepted":"The {{attribute}} must be accepted.","validation.accepted_if":"The {{attribute}} must be accepted when {{other}} is {{value}}.","validation.active_url":"The {{attribute}} is not a valid URL.","validation.after":"The {{attribute}} must be a date after {{date}}.","validation.after_or_equal":"The {{attribute}} must be a date after or equal to {{date}}.","validation.alpha":"The {{attribute}} must only contain letters.","validation.alpha_dash":"The {{attribute}} must only contain letters, numbers, dashes and underscores.","validation.alpha_num":"The {{attribute}} must only contain letters and numbers.","validation.array":"The {{attribute}} must be an array.","validation.ascii":"The {{attribute}} must only contain single-byte alphanumeric characters and symbols.","validation.before":"The {{attribute}} must be a date before {{date}}.","validation.before_or_equal":"The {{attribute}} must be a date before or equal to {{date}}.","validation.between.array":"The {{attribute}} must have between {{min}} and {{max}} items.","validation.between.file":"The {{attribute}} must be between {{min}} and {{max}} kilobytes.","validation.between.numeric":"The {{attribute}} must be between {{min}} and {{max}}.","validation.between.string":"The {{attribute}} must be between {{min}} and {{max}} characters.","validation.boolean":"The {{attribute}} field must be true or false.","validation.confirmed":"The {{attribute}} confirmation does not match.","validation.current_password":"The password is incorrect.","validation.date":"The {{attribute}} is not a valid date.","validation.date_equals":"The {{attribute}} must be a date equal to {{date}}.","validation.date_format":"The {{attribute}} does not match the format {{format}}.","validation.decimal":"The {{attribute}} must have {{decimal}} decimal places.","validation.declined":"The {{attribute}} must be declined.","validation.declined_if":"The {{attribute}} must be declined when {{other}} is {{value}}.","validation.different":"The {{attribute}} and {{other}} must be different.","validation.digits":"The {{attribute}} must be {{digits}} digits.","validation.digits_between":"The {{attribute}} must be between {{min}} and {{max}} digits.","validation.dimensions":"The {{attribute}} has invalid image dimensions.","validation.distinct":"The {{attribute}} field has a duplicate value.","validation.doesnt_end_with":"The {{attribute}} may not end with one of the following: {{values}}.","validation.doesnt_start_with":"The {{attribute}} may not start with one of the following: {{values}}.","validation.email":"The {{attribute}} must be a valid email address.","validation.ends_with":"The {{attribute}} must end with one of the following: {{values}}.","validation.enum":"The selected {{attribute}} is invalid.","validation.exists":"The selected {{attribute}} is invalid.","validation.file":"The {{attribute}} must be a file.","validation.filled":"The {{attribute}} field must have a value.","validation.gt.array":"The {{attribute}} must have more than {{value}} items.","validation.gt.file":"The {{attribute}} must be greater than {{value}} kilobytes.","validation.gt.numeric":"The {{attribute}} must be greater than {{value}}.","validation.gt.string":"The {{attribute}} must be greater than {{value}} characters.","validation.gte.array":"The {{attribute}} must have {{value}} items or more.","validation.gte.file":"The {{attribute}} must be greater than or equal to {{value}} kilobytes.","validation.gte.numeric":"The {{attribute}} must be greater than or equal to {{value}}.","validation.gte.string":"The {{attribute}} must be greater than or equal to {{value}} characters.","validation.image":"The {{attribute}} must be an image.","validation.in":"The selected {{attribute}} is invalid.","validation.in_array":"The {{attribute}} field does not exist in {{other}}.","validation.integer":"The {{attribute}} must be an integer.","validation.ip":"The {{attribute}} must be a valid IP address.","validation.ipv4":"The {{attribute}} must be a valid IPv4 address.","validation.ipv6":"The {{attribute}} must be a valid IPv6 address.","validation.json":"The {{attribute}} must be a valid JSON string.","validation.lowercase":"The {{attribute}} must be lowercase.","validation.lt.array":"The {{attribute}} must have less than {{value}} items.","validation.lt.file":"The {{attribute}} must be less than {{value}} kilobytes.","validation.lt.numeric":"The {{attribute}} must be less than {{value}}.","validation.lt.string":"The {{attribute}} must be less than {{value}} characters.","validation.lte.array":"The {{attribute}} must not have more than {{value}} items.","validation.lte.file":"The {{attribute}} must be less than or equal to {{value}} kilobytes.","validation.lte.numeric":"The {{attribute}} must be less than or equal to {{value}}.","validation.lte.string":"The {{attribute}} must be less than or equal to {{value}} characters.","validation.mac_address":"The {{attribute}} must be a valid MAC address.","validation.max.array":"The {{attribute}} must not have more than {{max}} items.","validation.max.file":"The {{attribute}} must not be greater than {{max}} kilobytes.","validation.max.numeric":"The {{attribute}} must not be greater than {{max}}.","validation.max.string":"The {{attribute}} must not be greater than {{max}} characters.","validation.max_digits":"The {{attribute}} must not have more than {{max}} digits.","validation.mimes":"The {{attribute}} must be a file of type: {{values}}.","validation.mimetypes":"The {{attribute}} must be a file of type: {{values}}.","validation.min.array":"The {{attribute}} must have at least {{min}} items.","validation.min.file":"The {{attribute}} must be at least {{min}} kilobytes.","validation.min.numeric":"The {{attribute}} must be at least {{min}}.","validation.min.string":"The {{attribute}} must be at least {{min}} characters.","validation.min_digits":"The {{attribute}} must have at least {{min}} digits.","validation.missing":"The {{attribute}} field must be missing.","validation.missing_if":"The {{attribute}} field must be missing when {{other}} is {{value}}.","validation.missing_unless":"The {{attribute}} field must be missing unless {{other}} is {{value}}.","validation.missing_with":"The {{attribute}} field must be missing when {{values}} is present.","validation.missing_with_all":"The {{attribute}} field must be missing when {{values}} are present.","validation.multiple_of":"The {{attribute}} must be a multiple of {{value}}.","validation.not_in":"The selected {{attribute}} is invalid.","validation.not_regex":"The {{attribute}} format is invalid.","validation.numeric":"The {{attribute}} must be a number.","validation.password.letters":"The {{attribute}} must contain at least one letter.","validation.password.mixed":"The {{attribute}} must contain at least one uppercase and one lowercase letter.","validation.password.numbers":"The {{attribute}} must contain at least one number.","validation.password.symbols":"The {{attribute}} must contain at least one symbol.","validation.password.uncompromised":"The given {{attribute}} has appeared in a data leak. Please choose a different {{attribute}}.","validation.present":"The {{attribute}} field must be present.","validation.prohibited":"The {{attribute}} field is prohibited.","validation.prohibited_if":"The {{attribute}} field is prohibited when {{other}} is {{value}}.","validation.prohibited_unless":"The {{attribute}} field is prohibited unless {{other}} is in {{values}}.","validation.prohibits":"The {{attribute}} field prohibits {{other}} from being present.","validation.regex":"The {{attribute}} format is invalid.","validation.required":"The {{attribute}} field is required.","validation.required_array_keys":"The {{attribute}} field must contain entries for: {{values}}.","validation.required_if":"The {{attribute}} field is required when {{other}} is {{value}}.","validation.required_if_accepted":"The {{attribute}} field is required when {{other}} is accepted.","validation.required_unless":"The {{attribute}} field is required unless {{other}} is in {{values}}.","validation.required_with":"The {{attribute}} field is required when {{values}} is present.","validation.required_with_all":"The {{attribute}} field is required when {{values}} are present.","validation.required_without":"The {{attribute}} field is required when {{values}} is not present.","validation.required_without_all":"The {{attribute}} field is required when none of {{values}} are present.","validation.same":"The {{attribute}} and {{other}} must match.","validation.size.array":"The {{attribute}} must contain {{size}} items.","validation.size.file":"The {{attribute}} must be {{size}} kilobytes.","validation.size.numeric":"The {{attribute}} must be {{size}}.","validation.size.string":"The {{attribute}} must be {{size}} characters.","validation.starts_with":"The {{attribute}} must start with one of the following: {{values}}.","validation.string":"The {{attribute}} must be a string.","validation.timezone":"The {{attribute}} must be a valid timezone.","validation.unique":"The {{attribute}} has already been taken.","validation.uploaded":"The {{attribute}} failed to upload.","validation.uppercase":"The {{attribute}} must be uppercase.","validation.url":"The {{attribute}} must be a valid URL.","validation.ulid":"The {{attribute}} must be a valid ULID.","validation.uuid":"The {{attribute}} must be a valid UUID.","validation.custom.attribute-name.rule-name":"custom-message","validation.unsupported_currency_code":"The currency code you provided is invalid or not supported.","validation.unsupported_period":"The period you provided is invalid or not supported.","validation.unsupported_token_symbol":"The token symbol you provided is invalid or not supported.","validation.gallery_title_required":"Gallery name is required.","validation.gallery_title_max_characters":"The gallery name should not exceed 50 characters.","validation.gallery_title_invalid":"The gallery name is invalid.","validation.nfts_required":"Please add at least one NFT.","validation.nfts_max_size":"Galleries can contain no more than {{limit}} NFTs","validation.invalid_nfts":"The NFT in position {{position}} is invalid, please select another one.","validation.invalid_cover":"You have selected an invalid cover image, please try another one."} \ No newline at end of file diff --git a/resources/js/Pages/Collections/Components/CollectionOfTheMonth/VoteCollection.tsx b/resources/js/Pages/Collections/Components/CollectionOfTheMonth/VoteCollection.tsx index d61993765..b2de4351e 100644 --- a/resources/js/Pages/Collections/Components/CollectionOfTheMonth/VoteCollection.tsx +++ b/resources/js/Pages/Collections/Components/CollectionOfTheMonth/VoteCollection.tsx @@ -2,6 +2,7 @@ import React from "react"; import { useTranslation } from "react-i18next"; import { VoteCountdown } from "./VoteCountdown"; import { Heading } from "@/Components/Heading"; +import { LinkButton } from "@/Components/Link"; export const VoteCollection = (): JSX.Element => { const { t } = useTranslation(); @@ -10,7 +11,21 @@ export const VoteCollection = (): JSX.Element => {
    {t("pages.collections.vote.vote_for_top_collection")} - +
    + + + { + console.log("TODO: Implement or nominate collection"); + }} + variant="link" + className="font-medium leading-6 dark:hover:decoration-theme-primary-400" + fontSize="!text-base" + textColor="!text-theme-primary-600 dark:!text-theme-primary-400" + > + {t("pages.collections.vote.or_nominate_collection")} + +
    ); }; From cd9fed2cfffb68f8affaf1e5c76c99994737e137 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josip=20Crnkovi=C4=87?= Date: Fri, 1 Dec 2023 10:18:18 +0100 Subject: [PATCH 020/145] fix: whitespace above featured collections (#523) --- resources/js/Pages/Collections/Index.tsx | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/resources/js/Pages/Collections/Index.tsx b/resources/js/Pages/Collections/Index.tsx index 6bac2bdb0..7efc1023e 100644 --- a/resources/js/Pages/Collections/Index.tsx +++ b/resources/js/Pages/Collections/Index.tsx @@ -67,9 +67,14 @@ const CollectionsIndex = ({ }; return ( - + + +
    {t("pages.collections.popular_collections")} From 8b8af6779951c8f4098e298d0d1e2ef6c7fa9f24 Mon Sep 17 00:00:00 2001 From: Alfonso Bribiesca Date: Fri, 1 Dec 2023 03:58:01 -0600 Subject: [PATCH 021/145] feat: winner overview (#524) --- .../Collections/CollectionOfTheMonthData.php | 33 ++++ app/Http/Controllers/CollectionController.php | 3 + lang/en/common.php | 1 + lang/en/pages.php | 2 + resources/css/_collection.css | 4 + .../images/collections/one-bar-chart-dark.svg | 1 + .../images/collections/one-bar-chart.svg | 1 + .../collections/three-bar-chart-dark.svg | 1 + .../images/collections/three-bar-chart.svg | 1 + .../images/collections/two-bar-chart-dark.svg | 1 + .../images/collections/two-bar-chart.svg | 1 + .../CollectionOfTheMonthWinners.test.tsx | 37 +++- .../CollectionOfTheMonthWinners.tsx | 164 +++++++++++++++++- resources/js/I18n/Locales/en.json | 2 +- .../CollectionOfTheMonth.tsx | 12 +- resources/js/Pages/Collections/Index.tsx | 4 +- .../CollectionOfTheMonthFactory.ts | 11 ++ resources/js/Utils/format-number.test.ts | 20 +++ resources/js/Utils/format-number.ts | 13 ++ resources/js/images.ts | 12 ++ resources/types/generated.d.ts | 4 + 21 files changed, 313 insertions(+), 15 deletions(-) create mode 100644 app/Data/Collections/CollectionOfTheMonthData.php create mode 100644 resources/images/collections/one-bar-chart-dark.svg create mode 100644 resources/images/collections/one-bar-chart.svg create mode 100644 resources/images/collections/three-bar-chart-dark.svg create mode 100644 resources/images/collections/three-bar-chart.svg create mode 100644 resources/images/collections/two-bar-chart-dark.svg create mode 100644 resources/images/collections/two-bar-chart.svg create mode 100644 resources/js/Tests/Factories/Collections/CollectionOfTheMonthFactory.ts create mode 100644 resources/js/Utils/format-number.test.ts create mode 100644 resources/js/Utils/format-number.ts diff --git a/app/Data/Collections/CollectionOfTheMonthData.php b/app/Data/Collections/CollectionOfTheMonthData.php new file mode 100644 index 000000000..10992b3ff --- /dev/null +++ b/app/Data/Collections/CollectionOfTheMonthData.php @@ -0,0 +1,33 @@ +extra_attributes->get('image'), + // @TODO: add actual votes + votes: fake()->boolean() ? fake()->numberBetween(1, 999) : fake()->numberBetween(1000, 1000000), + + ); + } +} diff --git a/app/Http/Controllers/CollectionController.php b/app/Http/Controllers/CollectionController.php index d599d6679..f10f0025c 100644 --- a/app/Http/Controllers/CollectionController.php +++ b/app/Http/Controllers/CollectionController.php @@ -8,6 +8,7 @@ use App\Data\Articles\ArticlesData; use App\Data\Collections\CollectionDetailData; use App\Data\Collections\CollectionFeaturedData; +use App\Data\Collections\CollectionOfTheMonthData; use App\Data\Collections\CollectionTraitFilterData; use App\Data\Collections\PopularCollectionData; use App\Data\Gallery\GalleryNftData; @@ -75,6 +76,8 @@ public function index(Request $request): Response|JsonResponse|RedirectResponse 'allowsGuests' => true, 'filters' => fn () => $this->getFilters($request), 'title' => fn () => trans('metatags.collections.title'), + // @TODO: replace with actual top collections and include votes + 'topCollections' => fn () => CollectionOfTheMonthData::collection(Collection::query()->inRandomOrder()->limit(3)->get()), 'collections' => fn () => PopularCollectionData::collection( $collections->through(fn ($collection) => PopularCollectionData::fromModel($collection, $currency)) ), diff --git a/lang/en/common.php b/lang/en/common.php index 5e78e389e..7491a30b1 100644 --- a/lang/en/common.php +++ b/lang/en/common.php @@ -164,4 +164,5 @@ 'share_on' => 'Share on {{platform}}', 'top' => 'Top', 'all_chains' => 'All chains', + 'votes' => 'Votes', ]; diff --git a/lang/en/pages.php b/lang/en/pages.php index 017cd1d04..0424294e5 100644 --- a/lang/en/pages.php +++ b/lang/en/pages.php @@ -76,7 +76,9 @@ ], ], 'collection_of_the_month' => [ + 'winners_month' => 'Winners: :month', 'vote_for_next_months_winners' => 'Vote now for next month\'s winners', + 'view_previous_winners' => 'View Previous Winners', ], 'articles' => [ 'no_articles' => 'No articles have been linked to this collection as of now.', diff --git a/resources/css/_collection.css b/resources/css/_collection.css index 9fa09b87f..4c855a6ed 100644 --- a/resources/css/_collection.css +++ b/resources/css/_collection.css @@ -9,3 +9,7 @@ .shadow-collection-of-the-month { box-shadow: 0px 15px 35px 0px rgba(33, 34, 37, 0.08); } + +.shadow-collection-of-the-month-footer { + box-shadow: 0px 15px 35px 0px rgba(18, 18, 19, 0.4); +} diff --git a/resources/images/collections/one-bar-chart-dark.svg b/resources/images/collections/one-bar-chart-dark.svg new file mode 100644 index 000000000..da0af20a1 --- /dev/null +++ b/resources/images/collections/one-bar-chart-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/images/collections/one-bar-chart.svg b/resources/images/collections/one-bar-chart.svg new file mode 100644 index 000000000..f5528e442 --- /dev/null +++ b/resources/images/collections/one-bar-chart.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/images/collections/three-bar-chart-dark.svg b/resources/images/collections/three-bar-chart-dark.svg new file mode 100644 index 000000000..5e79b07a4 --- /dev/null +++ b/resources/images/collections/three-bar-chart-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/images/collections/three-bar-chart.svg b/resources/images/collections/three-bar-chart.svg new file mode 100644 index 000000000..c69125f9d --- /dev/null +++ b/resources/images/collections/three-bar-chart.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/images/collections/two-bar-chart-dark.svg b/resources/images/collections/two-bar-chart-dark.svg new file mode 100644 index 000000000..fbec0ad97 --- /dev/null +++ b/resources/images/collections/two-bar-chart-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/images/collections/two-bar-chart.svg b/resources/images/collections/two-bar-chart.svg new file mode 100644 index 000000000..61b1eacc2 --- /dev/null +++ b/resources/images/collections/two-bar-chart.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/js/Components/Collections/CollectionOfTheMonthWinners/CollectionOfTheMonthWinners.test.tsx b/resources/js/Components/Collections/CollectionOfTheMonthWinners/CollectionOfTheMonthWinners.test.tsx index 984bfd977..38c545368 100644 --- a/resources/js/Components/Collections/CollectionOfTheMonthWinners/CollectionOfTheMonthWinners.test.tsx +++ b/resources/js/Components/Collections/CollectionOfTheMonthWinners/CollectionOfTheMonthWinners.test.tsx @@ -1,27 +1,56 @@ import React from "react"; import { CollectionOfTheMonthWinners } from "./CollectionOfTheMonthWinners"; import * as useDarkModeContext from "@/Contexts/DarkModeContext"; +import CollectionOfTheMonthFactory from "@/Tests/Factories/Collections/CollectionOfTheMonthFactory"; import { render, screen } from "@/Tests/testing-library"; describe("CollectionOfTheMonthWinners", () => { - it("should render", () => { + it("should render without winners", () => { const useDarkModeContextSpy = vi .spyOn(useDarkModeContext, "useDarkModeContext") .mockReturnValue({ isDark: false, toggleDarkMode: vi.fn() }); - render(); + render(); expect(screen.getByTestId("CollectionOfTheMonthWinners")).toBeInTheDocument(); useDarkModeContextSpy.mockRestore(); }); - it("should render in dark mode", () => { + it("should render without winners in dark mode", () => { const useDarkModeContextSpy = vi .spyOn(useDarkModeContext, "useDarkModeContext") .mockReturnValue({ isDark: true, toggleDarkMode: vi.fn() }); - render(); + render(); + + expect(screen.getByTestId("CollectionOfTheMonthWinners")).toBeInTheDocument(); + + useDarkModeContextSpy.mockRestore(); + }); + + it.each([1, 2, 3])("should render with %s winners", (amount) => { + const collections = new CollectionOfTheMonthFactory().createMany(amount); + + const useDarkModeContextSpy = vi + .spyOn(useDarkModeContext, "useDarkModeContext") + .mockReturnValue({ isDark: false, toggleDarkMode: vi.fn() }); + + render(); + + expect(screen.getByTestId("CollectionOfTheMonthWinners")).toBeInTheDocument(); + + useDarkModeContextSpy.mockRestore(); + }); + + it.each([1, 2, 3])("should render with %s winners in dark mode", (amount) => { + const collections = new CollectionOfTheMonthFactory().createMany(amount); + + const useDarkModeContextSpy = vi + .spyOn(useDarkModeContext, "useDarkModeContext") + .mockReturnValue({ isDark: true, toggleDarkMode: vi.fn() }); + + render(); expect(screen.getByTestId("CollectionOfTheMonthWinners")).toBeInTheDocument(); diff --git a/resources/js/Components/Collections/CollectionOfTheMonthWinners/CollectionOfTheMonthWinners.tsx b/resources/js/Components/Collections/CollectionOfTheMonthWinners/CollectionOfTheMonthWinners.tsx index ded7b35be..3aa807e32 100644 --- a/resources/js/Components/Collections/CollectionOfTheMonthWinners/CollectionOfTheMonthWinners.tsx +++ b/resources/js/Components/Collections/CollectionOfTheMonthWinners/CollectionOfTheMonthWinners.tsx @@ -1,20 +1,151 @@ +/* eslint-disable @typescript-eslint/no-unnecessary-condition */ import cn from "classnames"; import React from "react"; import { useTranslation } from "react-i18next"; import { Heading } from "@/Components/Heading"; +import { Img } from "@/Components/Image"; +import { Link } from "@/Components/Link"; import { useDarkModeContext } from "@/Contexts/DarkModeContext"; -import { VoteNextMonthWinners, VoteNextMonthWinnersDark } from "@/images"; +import { + OneBarChart, + OneBarChartDark, + ThreeBarChart, + ThreeBarChartDark, + TwoBarChart, + TwoBarChartDark, + VoteNextMonthWinners, + VoteNextMonthWinnersDark, +} from "@/images"; +import { formatNumbershort } from "@/Utils/format-number"; -export const CollectionOfTheMonthWinners = ({ className }: { className?: string }): JSX.Element => { - const { t } = useTranslation(); +const WinnersChartWrapper = ({ + children, + chart, + className, +}: { + children: JSX.Element[] | JSX.Element; + chart: JSX.Element; + className?: string; +}): JSX.Element => ( +
    +
    {chart}
    +
    {children}
    +
    +); +const WinnersChart = ({ winners }: { winners: App.Data.Collections.CollectionOfTheMonthData[] }): JSX.Element => { + const { t } = useTranslation(); const { isDark } = useDarkModeContext(); + if (winners.length === 1) { + return ( + : } + > +
    + + + + {formatNumbershort(winners[0].votes)} +
    {t("common.votes")} +
    +
    +
    + ); + } + + if (winners.length === 2) { + return ( + : } + > + {winners.map((winner, index) => ( +
    + + + + {formatNumbershort(winner.votes)} +
    {t("common.votes")} +
    +
    + ))} +
    + ); + } + + if (winners.length === 3) { + return ( + : } + > + {[winners[1], winners[0], winners[2]].map((winner, index) => ( +
    + + + + {formatNumbershort(winner.votes)} +
    {t("common.votes")} +
    +
    + ))} +
    + ); + } + + if (isDark) { + return ; + } + + return ; +}; + +export const CollectionOfTheMonthWinners = ({ + className, + winners, +}: { + className?: string; + winners: App.Data.Collections.CollectionOfTheMonthData[]; +}): JSX.Element => { + const { t } = useTranslation(); + + const showWinners = winners.length > 0; + return (
    @@ -23,12 +154,31 @@ export const CollectionOfTheMonthWinners = ({ className }: { className?: string level={3} className="text-center" > - {t("pages.collections.collection_of_the_month.vote_for_next_months_winners")} + {showWinners + ? t("pages.collections.collection_of_the_month.winners_month", { + // @TODO: Make this dynamic + month: "August 2023", + }) + : t("pages.collections.collection_of_the_month.vote_for_next_months_winners")}
    -
    - {isDark ? : } + +
    +
    + + {showWinners && ( +
    + + {t("pages.collections.collection_of_the_month.view_previous_winners")} + +
    + )}
    ); }; diff --git a/resources/js/I18n/Locales/en.json b/resources/js/I18n/Locales/en.json index 9b68dbd98..9ce29dba9 100644 --- a/resources/js/I18n/Locales/en.json +++ b/resources/js/I18n/Locales/en.json @@ -1 +1 @@ -{"auth.welcome":"Welcome to Dashbrd","auth.logged_in":"You're logged in!","auth.log_out":"Log out","auth.failed":"These credentials do not match our records.","auth.session_timeout":"Your session has timed out. Please refresh the page and try connecting your account again.","auth.session_timeout_modal":"Seems like your session has timed out. Please connnect your wallet again.","auth.password":"The provided password is incorrect.","auth.throttle":"Too many login attempts. Please try again in {{seconds}} seconds.","auth.wallet.connecting":"Connecting …","auth.wallet.waiting_for_signature":"Waiting for Signature …","auth.wallet.switching_wallet":"Switching Wallet …","auth.wallet.connect":"Connect Wallet","auth.wallet.connect_long":"Connect Your Wallet to Get Started","auth.wallet.sign_subtitle":"Connect Your Wallet to Continue","auth.wallet.disconnect":"Disconnect Wallet","auth.wallet.install":"Install MetaMask","auth.wallet.install_long":"Install MetaMask to Get Started","auth.wallet.sign":"Sign Message","auth.wallet.sign_message":"Welcome to Dashbrd. In order to login, sign this message with your wallet. It doesn't cost you anything!\n\nSigning ID (you can ignore this): {{nonce}}","auth.wallet.connect_subtitle":"Click on the MetaMask icon in your browser to confirm the action and connect your wallet.","auth.wallet.requires_signature":"In order to prevent impersonation, we require a signature to perform this action. This signature is only a signed message and does not give any access to your wallet.","auth.errors.metamask.no_account":"No account found. Please connect your wallet and try again.","auth.errors.metamask.generic":"Connection attempt error. Please retry and follow the steps to connect your wallet.","auth.errors.metamask.invalid_network":"Please switch to Polygon or Ethereum Mainnet in your MetaMask plugin to connect to Dashbrd.","auth.errors.metamask.provider_missing":"You don't have MetaMask installed in your browser. Please install and try again.","auth.errors.metamask.user_rejected":"It looks like you cancelled signing of the authentication message. Please try again.","auth.errors.metamask.provider_not_set":"Ethereum provider is not set","auth.validation.wallet_login_failed":"There was a problem trying to verify your signature. Please try again.","auth.validation.invalid_address":"Your wallet address is invalid. Please try again.","auth.validation.invalid_signature":"Signature is invalid. Please try again.","auth.validation.invalid_network":"Please switch to Polygon or Ethereum Mainnet in your MetaMask plugin to connect to Dashbrd.","common.author":"Author","common.add":"Add","common.amount":"Amount","common.balance":"Balance","common.cancel":"Cancel","common.delete":"Delete","common.edit":"Edit","common.confirm":"Confirm","common.connect":"Connect","common.continue":"Continue","common.done":"Done","common.filter":"Filter","common.items":"Items","common.receive":"Receive","common.received":"Received","common.retry":"Retry","common.records":"Records","common.save":"Save","common.send":"Send","common.sent":"Sent","common.show":"Show","common.searching":"Searching...","common.other":"Other","common.owned":"Owned","common.token":"Token","common.tokens":"Tokens","common.wallet":"Wallet","common.pending":"Pending","common.publish":"Publish","common.published":"Published","common.empty":"Empty","common.your_address":"Your Address","common.warning":"Warning","common.my_address":"My Address","common.my_wallet":"My Wallet","common.my_collections":"My Collections","common.my_balance":"My Balance","common.na":"N/A","common.simple_plural_without_data":"One comment|Many comments","common.simple_plural_with_data":"{{count}} comment|{{count}} comments","common.advanced_plural_without_data":"{0} no comments yet|{1} 1 comment|[2,*] Many comments","common.advanced_plural_with_data":"{0} no comments yet|{1} 1 comment|[2,*] {{count}} comments","common.copy_clipboard":"Copy to Clipboard","common.copy":"Copy","common.download":"Download","common.zoom":"Zoom","common.my_collection":"My Collection","common.max":"Max","common.chain":"Chain","common.copied":"Copied!","common.coming_soon":"Coming Soon","common.more_details":"More Details","common.close":"Close","common.close_toast":"Close toast","common.loading":"Loading","common.price":"Price","common.articles":"Articles","common.most_popular":"Most Popular","common.market_cap":"Market Cap","common.volume":"Volume","common.volume_frequency":"Volume {{frequency}}","common.value":"Value","common.last_n_days":"Last {{count}} Days","common.details":"Details","common.view_all":"View All","common.view_more_on_polygonscan":"View More on Polygonscan","common.view_more_on_etherscan":"View More on Etherscan","common.view_nft_on_etherscan":"View NFT on Etherscan","common.view_nft_on_polygonscan":"View NFT on Polygonscan","common.view_nft_on_goerli_tesnet":"View NFT on Goerli Testnet Explorer","common.view_nft_on_mumbai_tesnet":"View NFT on Mumbai Testnet Explorer","common.polygonscan":"Polygonscan","common.etherscan":"Etherscan","common.featured":"Featured","common.floor_price":"Floor Price","common.floor":"Floor","common.supply":"Supply","common.owners":"Owners","common.created":"Created","common.nft":"NFT","common.collection":"Collection","common.collections":"Collections","common.gallery":"Gallery","common.basic_gallery":"Basic Gallery","common.gallery_name":"Gallery Name","common.create_gallery":"Create Gallery","common.external_link":"External Link","common.follow_link":"Follow Link","common.cover":"Cover","common.template":"Template","common.page":"Page","common.polygon":"Polygon","common.ethereum":"Ethereum","common.mumbai":"Mumbai","common.goerli":"Goerli","common.of":"of","common.pagination_input_placeholder":"Enter the page number","common.pagination_input_placeholder_mobile":"Page number","common.nft_count":"{0} {{count}} NFTs|{1} {{count}} NFT|[2,*] {{count}} NFTs","common.nft_gallery":"NFT Gallery","common.unable_to_retrieve_image":"Unable to retrieve your NFT image at this time","common.optional":"Optional","common.selected":"Selected","common.select":"Select","common.preview":"Preview","common.image_size_error":"Image size must not exceed 2MB","common.image_dimensions_error":"Image dimensions must exceed 287px x 190px","common.write_to_confirm":"Write {{word}} to confirm","common.n_hours":"{0} {{count}} hour|{1} {{count}} hour|[2,*] {{count}} hours","common.n_minutes":"{0} {{count}} minute|{1} {{count}} minute|[2,*] {{count}} minutes","common.report":"Report","common.nfts":"NFTs","common.n_nfts":"{0}NFTs|{1}NFT|[2,*]NFTs","common.n_collections":"{0}collections|{1}collection|[2,*]collections","common.back":"Back","common.back_to":"Back to","common.name":"Name","common.type":"Type","common.from":"From","common.to":"To","common.sale_price":"Sale Price","common.recent_activity":"Recent Activity","common.time":"Time","common.datetime.few_seconds_ago":"A few seconds ago","common.datetime.minutes_ago":"{0} Less than a minute ago|{1} A minute ago|[2,*] {{count}} minutes ago","common.datetime.hours_ago":"{0} Less than an hour ago|{1} An hour ago|[2,*] {{count}} hours ago","common.datetime.days_ago":"{0} Less than a day ago|{1} A day ago|[2,*] {{count}} days ago","common.datetime.weeks_ago":"{0} Less than a week ago|{1} A week ago|[2,*] {{count}} weeks ago","common.datetime.months_ago":"{0} Less than a month ago|{1} A month ago|[2,*] {{count}} months ago","common.datetime.years_ago":"{0} Less than a year ago|{1} A year ago|[2,*] {{count}} years ago","common.no_traits_found":"No traits found.","common.empty_transactions":"You don't have any transactions yet. Once transactions have been made, they will show up here.","common.error":"Error","common.refresh":"Refresh","common.refresh_metadata":"Refresh Metadata","common.refreshing_metadata":"Refreshing Metadata... Please check back later.","common.refreshing_activity":"Refreshing Activity... Please check back later.","common.pending_confirmation":"Pending Confirmation","common.confirmed_transaction":"Confirmed Transaction","common.transaction_error":"Transaction Error","common.transaction_error_description_first_part":"Your transaction encountered an error. View this transaction on","common.transaction_error_description_second_part":"for more details.","common.home":"Home","common.contact":"Contact","common.menu":"Menu","common.website":"Website","common.twitter":"Twitter","common.discord":"Discord","common.facebook":"Facebook","common.reddit":"Reddit","common.x":"X","common.sort":"Sort","common.drafts":"Drafts","common.draft":"Draft","common.delete_draft":"Delete Draft","common.share_on":"Share on {{platform}}","common.top":"Top","common.all_chains":"All chains","footer.copyright":"{{year}} © Dashbrd. All rights reserved.","footer.all_rights_reserved":"All rights reserved","footer.privacy_policy":"Privacy Policy","footer.terms_of_service":"Terms of Service","footer.powered_by":"Powered by","format.fiat":"{{ value, currency }}","format.number":"{{ value, number }}","metatags.home.title":"Dashbrd | Web3 Portfolio Management Made Simple","metatags.home.description":"Simplify your Web3 journey with Dashbrd. Manage your portfolio of tokens, NFTs, and other digital collectibles across the Ethereum and Polygon blockchains.","metatags.home.image":"/images/meta/home.png","metatags.error.title":"Error {{code}} | Dashbrd","metatags.wallet.title":"My Wallet | Dashbrd","metatags.galleries.title":"Top NFT Galleries | Dashbrd","metatags.galleries.image":"/images/meta/nft-galleries.png","metatags.galleries.description":"Explore user published NFT galleries to find custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.most_popular.title":"Most Popular Galleries | Dashbrd","metatags.galleries.most_popular.image":"/images/meta/most-popular-nft-galleries.png","metatags.galleries.most_popular.description":"Explore and discover Most Popular NFT Galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.newest.title":"Newest Galleries | Dashbrd","metatags.galleries.newest.image":"/images/meta/newest-nft-galleries.png","metatags.galleries.newest.description":"Explore and discover most recent NFT galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More","metatags.galleries.most_valuable.title":"Most Valuable Galleries | Dashbrd","metatags.galleries.most_valuable.image":"/images/meta/most-valuable-nft-galleries.png","metatags.galleries.most_valuable.description":"Explore and discover Most Valuable NFT Galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.view.title":"{{name}} | Dashbrd","metatags.galleries.view.description":"{{name}} | A Curated NFT Gallery at Dashbrd","metatags.galleries.view.image":"/images/meta/nft-gallery.png","metatags.my_galleries.title":"My Galleries | Dashbrd","metatags.my_galleries.title_draft":"My Draft Galleries | Dashbrd","metatags.my_galleries.create.title":"Create Gallery | Dashbrd","metatags.my_galleries.edit.title":"Edit {{name}} | Dashbrd","metatags.collections.title":"Collections | Dashbrd","metatags.collections.view.title":"{{name}} Collection | Dashbrd","metatags.collections.view.description":"Immerse yourself in the intricate details of {{name}} collection, featuring remarkable digital assets. Start your NFT journey today!","metatags.collections.view.image":"/images/meta/nft-collection.png","metatags.my-collections.title":"My Collections | Dashbrd","metatags.nfts.view.title":"{{nft}} NFT | Dashbrd","metatags.nfts.view.description":"Uncover the complete story of {{nft}} NFT from the {{collection}} collection, delving into its unique attributes and distinctive features.","metatags.nfts.view.image":"/images/meta/nft-details.png","metatags.settings.title":"Settings | Dashbrd","metatags.articles.title":"Articles | Dashbrd","metatags.articles.view.title":"{{title}} | Dashbrd","metatags.login.title":"Login | Dashbrd","metatags.privacy_policy.title":"Privacy Policy | Dashbrd","metatags.privacy_policy.description":"Dashbrd’s privacy policy outlines the information we collect and explains your choices surrounding how we use information about you.","metatags.terms_of_service.title":"Terms of Service | Dashbrd","metatags.terms_of_service.description":"These Terms of Service cover your use and access to services, products or websites of Dashbrd.","metatags.cookie_policy.title":"Cookie Policy | Dashbrd","metatags.cookie_policy.description":"Dashbrd uses cookies to make the website more user-friendly. Find out about the main types of cookies we use, and what we use them for.","metatags.welcome.title":"Welcome to Dashbrd | Web3 Simplified","pages.onboarding.title":"Get Started","pages.onboarding.heading":"Your monkeys were bored and ran off, we are trying to round them up.","pages.onboarding.message":"We are setting up your account. This process usually takes just a few minutes, but can take up to 15 minutes.","pages.error.heading":"Oops, something went wrong ...","pages.error.message":"Please try again or get in touch if the issue persists.","pages.maintenance.title":"Dashbrd is currently down for scheduled maintenance.","pages.maintenance.description":"We expect to be back soon. Thanks for your patience.","pages.dashboard.title":"My Wallet","pages.dashboard.breakdown.title":"Portfolio Breakdown","pages.dashboard.line_chart.data_error":"Could not load chart data","pages.articles.title":"Articles","pages.articles.featured_collections":"Featured Collections","pages.articles.placeholder_more_soon":"More Soon","pages.articles.no_articles":"No articles have been published yet. Please check back later!","pages.articles.header_title":"Explore our collection of","pages.articles.header_suffix_one":"published article","pages.articles.header_suffix_other":"published articles","pages.articles.audio_version":"Audio version","pages.articles.consists_of_collections":"{0} This article highlights {{count}} collections|{1} This article highlights {{count}} collection|[2,*] This article highlights {{count}} collections","pages.collections.title":"Collections","pages.collections.collections":"Collections","pages.collections.popular_collections":"Popular Collections","pages.collections.collection_value":"Collection Value","pages.collections.nfts_owned":"NFTs Owned","pages.collections.header_title":"You own <0>{{nftsCount}} {{nfts}} across <0>{{collectionsCount}} {{collections}}, worth about <0><1>{{worth}}","pages.collections.search_placeholder":"Search by Collection","pages.collections.properties":"Properties","pages.collections.collections_network":"Collections Network","pages.collections.property_search_placeholder":"Feature Search","pages.collections.floor_price":"Floor Price","pages.collections.value":"Value","pages.collections.rarity":"Rarity","pages.collections.report":"Report","pages.collections.hide_collection":"Hide Collection","pages.collections.unhide_collection":"Unhide Collection","pages.collections.no_collections":"You do not own any NFTs yet. Once you do they will be shown here.","pages.collections.all_collections_hidden":"You have hidden all your collections. Unhide and they will appear here.","pages.collections.about_collection":"About Collection","pages.collections.show_hidden":"Show Hidden","pages.collections.show_my_collection":"Show My Collection","pages.collections.owned":"Owned","pages.collections.activities.loading_activities":"We're fetching Activity for this NFT, please hang tight, this can take a while.","pages.collections.activities.loading_activities_collection":"We're fetching Activity for this collection, please hang tight, this can take a while.","pages.collections.activities.ignores_activities":"We don't support activity history for this collection yet.","pages.collections.activities.no_activity":"This collection does not have any activity yet.","pages.collections.activities.types.LABEL_MINT":"Mint","pages.collections.activities.types.LABEL_TRANSFER":"Transfer","pages.collections.activities.types.LABEL_SALE":"Sale","pages.collections.activities.types.LABEL_BURN":"Burn","pages.collections.collection_of_the_month.vote_for_next_months_winners":"Vote now for next month's winners","pages.collections.articles.no_articles":"No articles have been linked to this collection as of now.","pages.collections.articles.no_articles_with_filters":"We could not find any articles matching your search criteria, please try again!","pages.collections.articles.search_placeholder":"Search in Articles","pages.collections.articles.sort_latest":"Latest","pages.collections.articles.sort_popularity":"Most Popular","pages.collections.search.loading_results":"Loading results...","pages.collections.search.no_results":"We could not find anything matching your search criteria, please try again!","pages.collections.search.no_results_with_filters":"We could not find anything matching your filters, please try again!","pages.collections.search.no_results_ownership":"You do not own any NFTs in this collection","pages.collections.search.error":"Could not load search results. Please try again later.","pages.collections.vote.vote_for_top_collection":"Vote for Top Collection of the Month","pages.collections.vote.vote":"Vote","pages.collections.vote.time_left":"Time Left","pages.collections.vote.or_nominate_collection":"Or nominate a collection","pages.collections.sorting.token_number":"Token Number","pages.collections.sorting.recently_received":"Recently Received","pages.collections.sorting.recently_created":"Recently Created","pages.collections.sorting.oldest_collection":"Oldest Collection","pages.collections.traits.description":"List of NFT traits by % of occurrence in the collection","pages.collections.traits.no_traits":"No Properties can be found for this NFT","pages.collections.menu.collection":"Collection","pages.collections.menu.articles":"Articles","pages.collections.menu.activity":"Activity","pages.collections.hidden_modal.collection_hidden":"Collection Hidden","pages.collections.hidden_modal.description":"This collection is currently set to Hidden. Are you sure you want to unhide this collection? You can\n reset the collection to hidden from the collection menu.","pages.collections.hidden_modal.unhide":"Unhide","pages.collections.hidden_modal.error":"Something went wrong. Please try again.","pages.collections.external_modal.you_wish_continue":"You are about to leave Dashbrd to an external website. Dashbrd has no control over the content of\n this site. Are you sure you wish to continue?","pages.collections.external_modal.not_show":"Do not show this message again.","pages.collections.refresh.title":"Refresh your collection","pages.collections.refresh.notice":"You can refresh data every 15 minutes.","pages.collections.refresh.notice_wait":"Please wait. You can refresh data every 15 minutes.","pages.collections.refresh.toast":"We're updating information for your collection.","pages.collections.featured.title":"Featured Collections","pages.collections.featured.button":"Explore Collection","pages.nfts.nft":"nft","pages.nfts.about_nft":"About NFT","pages.nfts.owned_by":"Owned by","pages.nfts.collection_image":"collection image","pages.nfts.menu.properties":"Properties","pages.nfts.menu.activity":"Activity","pages.reports.title":"Submit a Report","pages.reports.description":"Thanks for looking out by reporting things that break the rules. Let us know what's happening and we'll receive the report.","pages.reports.success":"Thank you for your report. We'll review it and see if it breaks our ToS.","pages.reports.failed":"Something went wrong. Please try again.","pages.reports.throttle":"You have made too many requests. Please wait {{time}} before reporting again.","pages.reports.reported":"You have already reported this {{model}}.","pages.reports.reasons.spam":"Spam","pages.reports.reasons.violence":"Promoting Violence","pages.reports.reasons.hate":"Hate","pages.reports.reasons.inappropriate_content":"Inappropriate Content","pages.reports.reasons.impersonation":"Impersonation","pages.reports.reasons.trademark":"Trademark or Copyright","pages.reports.reasons.selfharm":"Self-Harm","pages.reports.reasons.harassment":"Harassment","pages.galleries.title":"Galleries","pages.galleries.empty_title":"No galleries have been published yet. Once they do they will appear here.","pages.galleries.search.loading_results":"Loading results...","pages.galleries.search.no_results":"We could not find anything matching your search criteria, please try again!","pages.galleries.search.placeholder":"Search by name or curator address","pages.galleries.search.placeholder_nfts":"Search by NFTs","pages.galleries.search.error":"Could not load search results. Please try again later.","pages.galleries.my_galleries.title":"My Galleries","pages.galleries.my_galleries.subtitle":"Manage your galleries","pages.galleries.my_galleries.new_gallery":"New Gallery","pages.galleries.my_galleries.no_galleries":"You have not created any galleries yet. To create a gallery, click on the \"Create Gallery\" button.","pages.galleries.my_galleries.no_available_collections":"You have hidden all your collections. If you want to create a gallery, make sure you have at least 1 collection available.","pages.galleries.my_galleries.no_draft_galleries":"You have no draft galleries yet. To create a gallery, click on the \"Create Gallery\" button.","pages.galleries.my_galleries.succesfully_deleted":"Gallery has been successfully removed","pages.galleries.my_galleries.draft_succesfully_deleted":"Draft has been successfully removed","pages.galleries.my_galleries.successfully_created":"Gallery has been successfully created","pages.galleries.my_galleries.successfully_updated":"Gallery has been successfully updated","pages.galleries.my_galleries.new_gallery_no_nfts":"Creating a Gallery requires you to own an NFT.","pages.galleries.my_galleries.new_gallery_all_collections_hidden":"Creating a Gallery requires you to have at least 1 collection available.","pages.galleries.my_galleries.delete_modal.title":"Delete Draft","pages.galleries.my_galleries.delete_modal.text":"Are you sure you want to delete the draft? Everything you've done will be deleted and you won't be able to get it back.","pages.galleries.my_galleries.nfts_no_longer_owned":"NFTs no longer owned by this wallet have been removed from the draft”","pages.galleries.copy_gallery_link":"Copy Gallery Link","pages.galleries.my_nfts":"My NFTs","pages.galleries.show_hidden_collections":"Show hidden collections","pages.galleries.value":"Value","pages.galleries.floor_price":"Floor Price","pages.galleries.nfts":"NFTs","pages.galleries.collections":"Collections","pages.galleries.galleries_count_simple":"{0} galleries|{1} gallery|[2,*] galleries","pages.galleries.galleries_count":"{0} {{count}} Galleries|{1} {{count}} Gallery|[2,*] {{count}} Galleries","pages.galleries.collections_count_simple":"{0} collections|{1} collection|[2,*] collections","pages.galleries.collections_count":"{0} {{count}} Collections|{1} {{count}} Collection|[2,*] {{count}} Collections","pages.galleries.nfts_count_simple":"{0} NFTs|{1} NFT|[2,*] NFTs","pages.galleries.nfts_count":"{0} {{count}} NFTs|{1} {{count}} NFT|[2,*] {{count}} NFTs","pages.galleries.users_count_simple":"{0} users|{1} user|[2,*] users","pages.galleries.users_count":"{0} {{count}} Users|{1} {{count}} User|[2,*] {{count}} Users","pages.galleries.featuring":"Featuring","pages.galleries.curated_by":"Curated by","pages.galleries.worth_about":"Worth About","pages.galleries.valued_at":"valued at","pages.galleries.from":"From","pages.galleries.most_popular_galleries":"Most Popular Galleries","pages.galleries.newest_galleries":"Newest Galleries","pages.galleries.most_valuable_galleries":"Most Valuable Galleries","pages.galleries.most_popular":"Most Popular","pages.galleries.newest":"Newest","pages.galleries.most_valuable":"Most Valuable","pages.galleries.create.search_by_nfts":"Search by NFTs","pages.galleries.create.input_placeholder":"Enter gallery name","pages.galleries.create.title_too_long":"Gallery name must not exceed {{max}} characters.","pages.galleries.create.already_selected_nft":"NFT already exists in this gallery","pages.galleries.create.nft_missing_image":"Only NFTs with images can be added to galleries","pages.galleries.create.nft_gallery_limit":"You can only add 16 NFTs per gallery","pages.galleries.create.gallery_cover":"Gallery Cover","pages.galleries.create.gallery_cover_description":"The cover is used for the card on the gallery list page. While the cover is not a requirement it will allow you to add personality and stand out from the crowd.","pages.galleries.create.gallery_cover_information":"Image dimensions must be at least 287px x 190px, with a max size of 2 MB (JPG, PNG or GIF)","pages.galleries.create.no_results":"We could not find anything matching your search criteria, please try again!","pages.galleries.create.templates.cover":"Cover","pages.galleries.create.templates.template":"Template","pages.galleries.create.templates.select":"Select Gallery Template","pages.galleries.create.templates.basic":"Basic Gallery","pages.galleries.create.templates.coming_soon":"More Coming Soon","pages.galleries.create.load_more_collections_one":"Load {{count}} More Collection","pages.galleries.create.load_more_collections_other":"Load {{count}} More Collections","pages.galleries.create.load_more_nfts":"Load More NFTs","pages.galleries.create.can_purchase":"You can purchase NFTs with these top NFT Marketplaces:","pages.galleries.create.must_own_one_nft":"You must own at least one (1) NFT in order to create a gallery.","pages.galleries.create.back_to_galleries":"Back to Galleries","pages.galleries.create.draft_saved":"Draft Saved","pages.galleries.create.saving_to_draft":"Saving to draft","pages.galleries.create.drafts_limit_modal_title":"Draft Gallery Limit","pages.galleries.create.drafts_limit_modal_message":"You’ve hit your limit for draft galleries. While you can still make new galleries and publish them, they won’t be saved as drafts. To Free up space, you can either delete existing drafts or publish them.","pages.galleries.create.drafts_limit_modal_cancel":"Go to Drafts","pages.galleries.delete_modal.title":"Delete Gallery","pages.galleries.delete_modal.confirmation_text":"Are you sure you want to delete the gallery? Deleting a Gallery is permanent, all associated views and likes will be lost.","pages.galleries.consists_of_collections":"{0} This gallery consists of {{count}} collections|{1} This gallery consists of {{count}} collection|[2,*] This gallery consists of {{count}} collections","pages.galleries.guest_banner.title":"Craft the ultimate","pages.galleries.guest_banner.subtitle":"Pick your favorites, curate your gallery, & share it with the world.","pages.profile.title":"Profile","pages.token_panel.balance_tooltip":"Total percentage of the portfolio held in this token","pages.token_panel.insufficient_funds":"Insufficient Balance","pages.token_panel.error":"Dashbrd has failed to load token information. Please try again later.","pages.token_panel.failed_to_retrieve_transactions":"We were unable to fetch your transactions.","pages.token_panel.tabs.transaction_history":"Transaction History","pages.token_panel.tabs.history":"History","pages.token_panel.tabs.market_data":"Market Data","pages.token_panel.details.current_price":"Current Price","pages.token_panel.details.title":"Token Details","pages.token_panel.details.market_cap":"Market Cap","pages.token_panel.details.volume":"Daily Volume","pages.token_panel.details.supply":"Minted Supply","pages.token_panel.details.ath":"All-Time High","pages.token_panel.details.atl":"All-Time Low","pages.token_panel.chart.failed":"Dashbrd has failed to load chart information. Please try again later.","pages.transaction_details_panel.title":"Transaction Details","pages.transaction_details_panel.details.blockchain":"Blockchain","pages.transaction_details_panel.details.timestamp":"Timestamp","pages.transaction_details_panel.details.transaction_hash":"Transaction Hash","pages.transaction_details_panel.details.transaction_fee":"Transaction Fee","pages.transaction_details_panel.details.gas_price":"Gas Price","pages.transaction_details_panel.details.gas_used":"Gas Used","pages.transaction_details_panel.details.nonce":"Nonce","pages.send_receive_panel.send.labels.token_and_amount":"Token and Amount","pages.send_receive_panel.send.labels.destination_address":"Destination Address","pages.send_receive_panel.send.labels.projected_fee":"Projected Fee","pages.send_receive_panel.send.placeholders.enter_amount":"Enter Amount","pages.send_receive_panel.send.placeholders.insert_recipient_address":"Insert Recipient Address","pages.send_receive_panel.send.placeholders.projected_fee":"Projected Fee","pages.send_receive_panel.send.errors.amount":"Insufficient Funds: You do not have enough to cover the amount + fee.","pages.send_receive_panel.send.errors.destination":"Destination address is not correct. Check and input again.","pages.send_receive_panel.send.hints.token_price":"Token Price","pages.send_receive_panel.send.fees.Fast":"Fast","pages.send_receive_panel.send.fees.Avg":"Avg","pages.send_receive_panel.send.fees.Slow":"Slow","pages.send_receive_panel.send.search_dropdown.placeholder":"Search token","pages.send_receive_panel.send.search_dropdown.no_results":"No Results","pages.send_receive_panel.send.search_dropdown.error":"Error occurred while searching tokens.","pages.send_receive_panel.send.transaction_time":"Transaction Time: ~{{ time }} minutes","pages.send_receive_panel.send.from":"From","pages.send_receive_panel.send.to":"To","pages.send_receive_panel.send.amount":"Amount","pages.send_receive_panel.send.fee":"Fee","pages.send_receive_panel.send.total_amount":"Total Amount","pages.send_receive_panel.send.waiting_message":"Review and verify the information on your MetaMask. Sign to send the transaction.","pages.send_receive_panel.send.waiting_spinner_text":"Waiting for confirmation...","pages.send_receive_panel.send.failed_message":"It looks like something went wrong while sending your transaction. Press 'Retry' to make another attempt.","pages.send_receive_panel.receive.alert":"Send only Polygon or Ethereum Network compatible tokens to this address or you could permanently lose your funds!","pages.settings.title":"Settings","pages.settings.sidebar.general":"General","pages.settings.sidebar.notifications":"Notifications","pages.settings.sidebar.session_history":"Sessions History","pages.settings.general.title":"Settings","pages.settings.general.subtitle":"Customize your App Experience","pages.settings.general.currency":"Currency","pages.settings.general.currency_subtitle":"Select your default currency which will be used throughout the app.","pages.settings.general.time_date":"Time & Date","pages.settings.general.time_date_subtitle":"Select how you want time and date be shown inside app.","pages.settings.general.date_format":"Date Format","pages.settings.general.time_format":"Time Format","pages.settings.general.timezone":"Timezone","pages.settings.general.set_defaults":"Set Defaults","pages.settings.general.set_defaults_content":"Reverting to the default settings will remove any customizations previously made. Are you sure?","pages.settings.general.save":"Save Settings","pages.settings.general.saved":"Your settings have been successfully saved","pages.wallet.title":"Wallet","pages.privacy_policy.title":"Privacy Policy","pages.terms_of_service.title":"Terms of Service","pagination.previous":"« Previous","pagination.next":"Next »","passwords.reset":"Your password has been reset!","passwords.sent":"We have emailed your password reset link!","passwords.throttled":"Please wait before retrying.","passwords.token":"This password reset token is invalid.","passwords.user":"We can't find a user with that email address.","urls.landing":"https://dashbrd.com","urls.cookie_policy":"https://dashbrd.com/cookie-policy","urls.privacy_policy":"https://dashbrd.com/privacy-policy","urls.terms_of_service":"https://dashbrd.com/terms-of-service","urls.twitter":"https://x.com/DashbrdApp","urls.discord":"https://discord.gg/MJyWKkCJ5k","urls.github":"https://github.com/ArdentHQ/dashbrd","urls.coingecko":"https://www.coingecko.com","urls.etherscan":"https://etherscan.io","urls.polygonscan":"https://polygonscan.com","urls.alchemy":"https://www.alchemy.com","urls.moralis":"https://moralis.io","urls.mnemonic":"https://www.mnemonichq.com","urls.opensea":"https://opensea.io/","urls.explorers.etherscan.token_transactions":"https://etherscan.io/token/{{token}}?a={{address}}","urls.explorers.etherscan.addresses":"https://etherscan.io/address/{{address}}","urls.explorers.etherscan.transactions":"https://etherscan.io/tx/{{id}}","urls.explorers.etherscan.nft":"https://etherscan.io/nft/{{address}}/{{nftId}}","urls.explorers.polygonscan.token_transactions":"https://polygonscan.com/token/{{token}}?a={{address}}","urls.explorers.polygonscan.addresses":"https://polygonscan.com/address/{{address}}","urls.explorers.polygonscan.transactions":"https://polygonscan.com/tx/{{id}}","urls.explorers.polygonscan.nft":"https://polygonscan.com/nft/{{address}}/{{nftId}}","urls.explorers.mumbai.token_transactions":"https://mumbai.polygonscan.com/token/{{token}}?a={{address}}","urls.explorers.mumbai.addresses":"https://mumbai.polygonscan.com/address/{{address}}","urls.explorers.mumbai.transactions":"https://mumbai.polygonscan.com/tx/{{id}}","urls.explorers.mumbai.nft":"https://mumbai.polygonscan.com/nft/{{address}}/{{nftId}}","urls.explorers.goerli.token_transactions":"https://goerli.etherscan.io/token/{{token}}?a={{address}}","urls.explorers.goerli.addresses":"https://goerli.etherscan.io/address/{{address}}","urls.explorers.goerli.transactions":"https://goerli.etherscan.io/tx/{{id}}","urls.explorers.goerli.nft":"https://goerli.etherscan.io/nft/{{address}}/{{nftId}}","urls.marketplaces.opensea.collection":"https://opensea.io/assets/{{network}}/{{address}}","urls.marketplaces.opensea.nft":"https://opensea.io/assets/{{network}}/{{address}}/{{nftId}}","urls.marketplaces.rarible.collection":"https://rarible.com/collection/{{address}}/items","urls.marketplaces.rarible.nft":"https://rarible.com/token/{{address}}:{{nftId}}","urls.marketplaces.blur.collection":"https://blur.io/collection/{{address}}","urls.marketplaces.blur.nft":"https://blur.io/asset/{{address}}/{{nftId}}","urls.marketplaces.looksrare.collection":"https://looksrare.org/collections/{{address}}","urls.marketplaces.looksrare.nft":"https://looksrare.org/collections/{{address}}/{{nftId}}","validation.accepted":"The {{attribute}} must be accepted.","validation.accepted_if":"The {{attribute}} must be accepted when {{other}} is {{value}}.","validation.active_url":"The {{attribute}} is not a valid URL.","validation.after":"The {{attribute}} must be a date after {{date}}.","validation.after_or_equal":"The {{attribute}} must be a date after or equal to {{date}}.","validation.alpha":"The {{attribute}} must only contain letters.","validation.alpha_dash":"The {{attribute}} must only contain letters, numbers, dashes and underscores.","validation.alpha_num":"The {{attribute}} must only contain letters and numbers.","validation.array":"The {{attribute}} must be an array.","validation.ascii":"The {{attribute}} must only contain single-byte alphanumeric characters and symbols.","validation.before":"The {{attribute}} must be a date before {{date}}.","validation.before_or_equal":"The {{attribute}} must be a date before or equal to {{date}}.","validation.between.array":"The {{attribute}} must have between {{min}} and {{max}} items.","validation.between.file":"The {{attribute}} must be between {{min}} and {{max}} kilobytes.","validation.between.numeric":"The {{attribute}} must be between {{min}} and {{max}}.","validation.between.string":"The {{attribute}} must be between {{min}} and {{max}} characters.","validation.boolean":"The {{attribute}} field must be true or false.","validation.confirmed":"The {{attribute}} confirmation does not match.","validation.current_password":"The password is incorrect.","validation.date":"The {{attribute}} is not a valid date.","validation.date_equals":"The {{attribute}} must be a date equal to {{date}}.","validation.date_format":"The {{attribute}} does not match the format {{format}}.","validation.decimal":"The {{attribute}} must have {{decimal}} decimal places.","validation.declined":"The {{attribute}} must be declined.","validation.declined_if":"The {{attribute}} must be declined when {{other}} is {{value}}.","validation.different":"The {{attribute}} and {{other}} must be different.","validation.digits":"The {{attribute}} must be {{digits}} digits.","validation.digits_between":"The {{attribute}} must be between {{min}} and {{max}} digits.","validation.dimensions":"The {{attribute}} has invalid image dimensions.","validation.distinct":"The {{attribute}} field has a duplicate value.","validation.doesnt_end_with":"The {{attribute}} may not end with one of the following: {{values}}.","validation.doesnt_start_with":"The {{attribute}} may not start with one of the following: {{values}}.","validation.email":"The {{attribute}} must be a valid email address.","validation.ends_with":"The {{attribute}} must end with one of the following: {{values}}.","validation.enum":"The selected {{attribute}} is invalid.","validation.exists":"The selected {{attribute}} is invalid.","validation.file":"The {{attribute}} must be a file.","validation.filled":"The {{attribute}} field must have a value.","validation.gt.array":"The {{attribute}} must have more than {{value}} items.","validation.gt.file":"The {{attribute}} must be greater than {{value}} kilobytes.","validation.gt.numeric":"The {{attribute}} must be greater than {{value}}.","validation.gt.string":"The {{attribute}} must be greater than {{value}} characters.","validation.gte.array":"The {{attribute}} must have {{value}} items or more.","validation.gte.file":"The {{attribute}} must be greater than or equal to {{value}} kilobytes.","validation.gte.numeric":"The {{attribute}} must be greater than or equal to {{value}}.","validation.gte.string":"The {{attribute}} must be greater than or equal to {{value}} characters.","validation.image":"The {{attribute}} must be an image.","validation.in":"The selected {{attribute}} is invalid.","validation.in_array":"The {{attribute}} field does not exist in {{other}}.","validation.integer":"The {{attribute}} must be an integer.","validation.ip":"The {{attribute}} must be a valid IP address.","validation.ipv4":"The {{attribute}} must be a valid IPv4 address.","validation.ipv6":"The {{attribute}} must be a valid IPv6 address.","validation.json":"The {{attribute}} must be a valid JSON string.","validation.lowercase":"The {{attribute}} must be lowercase.","validation.lt.array":"The {{attribute}} must have less than {{value}} items.","validation.lt.file":"The {{attribute}} must be less than {{value}} kilobytes.","validation.lt.numeric":"The {{attribute}} must be less than {{value}}.","validation.lt.string":"The {{attribute}} must be less than {{value}} characters.","validation.lte.array":"The {{attribute}} must not have more than {{value}} items.","validation.lte.file":"The {{attribute}} must be less than or equal to {{value}} kilobytes.","validation.lte.numeric":"The {{attribute}} must be less than or equal to {{value}}.","validation.lte.string":"The {{attribute}} must be less than or equal to {{value}} characters.","validation.mac_address":"The {{attribute}} must be a valid MAC address.","validation.max.array":"The {{attribute}} must not have more than {{max}} items.","validation.max.file":"The {{attribute}} must not be greater than {{max}} kilobytes.","validation.max.numeric":"The {{attribute}} must not be greater than {{max}}.","validation.max.string":"The {{attribute}} must not be greater than {{max}} characters.","validation.max_digits":"The {{attribute}} must not have more than {{max}} digits.","validation.mimes":"The {{attribute}} must be a file of type: {{values}}.","validation.mimetypes":"The {{attribute}} must be a file of type: {{values}}.","validation.min.array":"The {{attribute}} must have at least {{min}} items.","validation.min.file":"The {{attribute}} must be at least {{min}} kilobytes.","validation.min.numeric":"The {{attribute}} must be at least {{min}}.","validation.min.string":"The {{attribute}} must be at least {{min}} characters.","validation.min_digits":"The {{attribute}} must have at least {{min}} digits.","validation.missing":"The {{attribute}} field must be missing.","validation.missing_if":"The {{attribute}} field must be missing when {{other}} is {{value}}.","validation.missing_unless":"The {{attribute}} field must be missing unless {{other}} is {{value}}.","validation.missing_with":"The {{attribute}} field must be missing when {{values}} is present.","validation.missing_with_all":"The {{attribute}} field must be missing when {{values}} are present.","validation.multiple_of":"The {{attribute}} must be a multiple of {{value}}.","validation.not_in":"The selected {{attribute}} is invalid.","validation.not_regex":"The {{attribute}} format is invalid.","validation.numeric":"The {{attribute}} must be a number.","validation.password.letters":"The {{attribute}} must contain at least one letter.","validation.password.mixed":"The {{attribute}} must contain at least one uppercase and one lowercase letter.","validation.password.numbers":"The {{attribute}} must contain at least one number.","validation.password.symbols":"The {{attribute}} must contain at least one symbol.","validation.password.uncompromised":"The given {{attribute}} has appeared in a data leak. Please choose a different {{attribute}}.","validation.present":"The {{attribute}} field must be present.","validation.prohibited":"The {{attribute}} field is prohibited.","validation.prohibited_if":"The {{attribute}} field is prohibited when {{other}} is {{value}}.","validation.prohibited_unless":"The {{attribute}} field is prohibited unless {{other}} is in {{values}}.","validation.prohibits":"The {{attribute}} field prohibits {{other}} from being present.","validation.regex":"The {{attribute}} format is invalid.","validation.required":"The {{attribute}} field is required.","validation.required_array_keys":"The {{attribute}} field must contain entries for: {{values}}.","validation.required_if":"The {{attribute}} field is required when {{other}} is {{value}}.","validation.required_if_accepted":"The {{attribute}} field is required when {{other}} is accepted.","validation.required_unless":"The {{attribute}} field is required unless {{other}} is in {{values}}.","validation.required_with":"The {{attribute}} field is required when {{values}} is present.","validation.required_with_all":"The {{attribute}} field is required when {{values}} are present.","validation.required_without":"The {{attribute}} field is required when {{values}} is not present.","validation.required_without_all":"The {{attribute}} field is required when none of {{values}} are present.","validation.same":"The {{attribute}} and {{other}} must match.","validation.size.array":"The {{attribute}} must contain {{size}} items.","validation.size.file":"The {{attribute}} must be {{size}} kilobytes.","validation.size.numeric":"The {{attribute}} must be {{size}}.","validation.size.string":"The {{attribute}} must be {{size}} characters.","validation.starts_with":"The {{attribute}} must start with one of the following: {{values}}.","validation.string":"The {{attribute}} must be a string.","validation.timezone":"The {{attribute}} must be a valid timezone.","validation.unique":"The {{attribute}} has already been taken.","validation.uploaded":"The {{attribute}} failed to upload.","validation.uppercase":"The {{attribute}} must be uppercase.","validation.url":"The {{attribute}} must be a valid URL.","validation.ulid":"The {{attribute}} must be a valid ULID.","validation.uuid":"The {{attribute}} must be a valid UUID.","validation.custom.attribute-name.rule-name":"custom-message","validation.unsupported_currency_code":"The currency code you provided is invalid or not supported.","validation.unsupported_period":"The period you provided is invalid or not supported.","validation.unsupported_token_symbol":"The token symbol you provided is invalid or not supported.","validation.gallery_title_required":"Gallery name is required.","validation.gallery_title_max_characters":"The gallery name should not exceed 50 characters.","validation.gallery_title_invalid":"The gallery name is invalid.","validation.nfts_required":"Please add at least one NFT.","validation.nfts_max_size":"Galleries can contain no more than {{limit}} NFTs","validation.invalid_nfts":"The NFT in position {{position}} is invalid, please select another one.","validation.invalid_cover":"You have selected an invalid cover image, please try another one."} \ No newline at end of file +{"auth.welcome":"Welcome to Dashbrd","auth.logged_in":"You're logged in!","auth.log_out":"Log out","auth.failed":"These credentials do not match our records.","auth.session_timeout":"Your session has timed out. Please refresh the page and try connecting your account again.","auth.session_timeout_modal":"Seems like your session has timed out. Please connnect your wallet again.","auth.password":"The provided password is incorrect.","auth.throttle":"Too many login attempts. Please try again in {{seconds}} seconds.","auth.wallet.connecting":"Connecting …","auth.wallet.waiting_for_signature":"Waiting for Signature …","auth.wallet.switching_wallet":"Switching Wallet …","auth.wallet.connect":"Connect Wallet","auth.wallet.connect_long":"Connect Your Wallet to Get Started","auth.wallet.sign_subtitle":"Connect Your Wallet to Continue","auth.wallet.disconnect":"Disconnect Wallet","auth.wallet.install":"Install MetaMask","auth.wallet.install_long":"Install MetaMask to Get Started","auth.wallet.sign":"Sign Message","auth.wallet.sign_message":"Welcome to Dashbrd. In order to login, sign this message with your wallet. It doesn't cost you anything!\n\nSigning ID (you can ignore this): {{nonce}}","auth.wallet.connect_subtitle":"Click on the MetaMask icon in your browser to confirm the action and connect your wallet.","auth.wallet.requires_signature":"In order to prevent impersonation, we require a signature to perform this action. This signature is only a signed message and does not give any access to your wallet.","auth.errors.metamask.no_account":"No account found. Please connect your wallet and try again.","auth.errors.metamask.generic":"Connection attempt error. Please retry and follow the steps to connect your wallet.","auth.errors.metamask.invalid_network":"Please switch to Polygon or Ethereum Mainnet in your MetaMask plugin to connect to Dashbrd.","auth.errors.metamask.provider_missing":"You don't have MetaMask installed in your browser. Please install and try again.","auth.errors.metamask.user_rejected":"It looks like you cancelled signing of the authentication message. Please try again.","auth.errors.metamask.provider_not_set":"Ethereum provider is not set","auth.validation.wallet_login_failed":"There was a problem trying to verify your signature. Please try again.","auth.validation.invalid_address":"Your wallet address is invalid. Please try again.","auth.validation.invalid_signature":"Signature is invalid. Please try again.","auth.validation.invalid_network":"Please switch to Polygon or Ethereum Mainnet in your MetaMask plugin to connect to Dashbrd.","common.author":"Author","common.add":"Add","common.amount":"Amount","common.balance":"Balance","common.cancel":"Cancel","common.delete":"Delete","common.edit":"Edit","common.confirm":"Confirm","common.connect":"Connect","common.continue":"Continue","common.done":"Done","common.filter":"Filter","common.items":"Items","common.receive":"Receive","common.received":"Received","common.retry":"Retry","common.records":"Records","common.save":"Save","common.send":"Send","common.sent":"Sent","common.show":"Show","common.searching":"Searching...","common.other":"Other","common.owned":"Owned","common.token":"Token","common.tokens":"Tokens","common.wallet":"Wallet","common.pending":"Pending","common.publish":"Publish","common.published":"Published","common.empty":"Empty","common.your_address":"Your Address","common.warning":"Warning","common.my_address":"My Address","common.my_wallet":"My Wallet","common.my_collections":"My Collections","common.my_balance":"My Balance","common.na":"N/A","common.simple_plural_without_data":"One comment|Many comments","common.simple_plural_with_data":"{{count}} comment|{{count}} comments","common.advanced_plural_without_data":"{0} no comments yet|{1} 1 comment|[2,*] Many comments","common.advanced_plural_with_data":"{0} no comments yet|{1} 1 comment|[2,*] {{count}} comments","common.copy_clipboard":"Copy to Clipboard","common.copy":"Copy","common.download":"Download","common.zoom":"Zoom","common.my_collection":"My Collection","common.max":"Max","common.chain":"Chain","common.copied":"Copied!","common.coming_soon":"Coming Soon","common.more_details":"More Details","common.close":"Close","common.close_toast":"Close toast","common.loading":"Loading","common.price":"Price","common.articles":"Articles","common.most_popular":"Most Popular","common.market_cap":"Market Cap","common.volume":"Volume","common.volume_frequency":"Volume {{frequency}}","common.value":"Value","common.last_n_days":"Last {{count}} Days","common.details":"Details","common.view_all":"View All","common.view_more_on_polygonscan":"View More on Polygonscan","common.view_more_on_etherscan":"View More on Etherscan","common.view_nft_on_etherscan":"View NFT on Etherscan","common.view_nft_on_polygonscan":"View NFT on Polygonscan","common.view_nft_on_goerli_tesnet":"View NFT on Goerli Testnet Explorer","common.view_nft_on_mumbai_tesnet":"View NFT on Mumbai Testnet Explorer","common.polygonscan":"Polygonscan","common.etherscan":"Etherscan","common.featured":"Featured","common.floor_price":"Floor Price","common.floor":"Floor","common.supply":"Supply","common.owners":"Owners","common.created":"Created","common.nft":"NFT","common.collection":"Collection","common.collections":"Collections","common.gallery":"Gallery","common.basic_gallery":"Basic Gallery","common.gallery_name":"Gallery Name","common.create_gallery":"Create Gallery","common.external_link":"External Link","common.follow_link":"Follow Link","common.cover":"Cover","common.template":"Template","common.page":"Page","common.polygon":"Polygon","common.ethereum":"Ethereum","common.mumbai":"Mumbai","common.goerli":"Goerli","common.of":"of","common.pagination_input_placeholder":"Enter the page number","common.pagination_input_placeholder_mobile":"Page number","common.nft_count":"{0} {{count}} NFTs|{1} {{count}} NFT|[2,*] {{count}} NFTs","common.nft_gallery":"NFT Gallery","common.unable_to_retrieve_image":"Unable to retrieve your NFT image at this time","common.optional":"Optional","common.selected":"Selected","common.select":"Select","common.preview":"Preview","common.image_size_error":"Image size must not exceed 2MB","common.image_dimensions_error":"Image dimensions must exceed 287px x 190px","common.write_to_confirm":"Write {{word}} to confirm","common.n_hours":"{0} {{count}} hour|{1} {{count}} hour|[2,*] {{count}} hours","common.n_minutes":"{0} {{count}} minute|{1} {{count}} minute|[2,*] {{count}} minutes","common.report":"Report","common.nfts":"NFTs","common.n_nfts":"{0}NFTs|{1}NFT|[2,*]NFTs","common.n_collections":"{0}collections|{1}collection|[2,*]collections","common.back":"Back","common.back_to":"Back to","common.name":"Name","common.type":"Type","common.from":"From","common.to":"To","common.sale_price":"Sale Price","common.recent_activity":"Recent Activity","common.time":"Time","common.datetime.few_seconds_ago":"A few seconds ago","common.datetime.minutes_ago":"{0} Less than a minute ago|{1} A minute ago|[2,*] {{count}} minutes ago","common.datetime.hours_ago":"{0} Less than an hour ago|{1} An hour ago|[2,*] {{count}} hours ago","common.datetime.days_ago":"{0} Less than a day ago|{1} A day ago|[2,*] {{count}} days ago","common.datetime.weeks_ago":"{0} Less than a week ago|{1} A week ago|[2,*] {{count}} weeks ago","common.datetime.months_ago":"{0} Less than a month ago|{1} A month ago|[2,*] {{count}} months ago","common.datetime.years_ago":"{0} Less than a year ago|{1} A year ago|[2,*] {{count}} years ago","common.no_traits_found":"No traits found.","common.empty_transactions":"You don't have any transactions yet. Once transactions have been made, they will show up here.","common.error":"Error","common.refresh":"Refresh","common.refresh_metadata":"Refresh Metadata","common.refreshing_metadata":"Refreshing Metadata... Please check back later.","common.refreshing_activity":"Refreshing Activity... Please check back later.","common.pending_confirmation":"Pending Confirmation","common.confirmed_transaction":"Confirmed Transaction","common.transaction_error":"Transaction Error","common.transaction_error_description_first_part":"Your transaction encountered an error. View this transaction on","common.transaction_error_description_second_part":"for more details.","common.home":"Home","common.contact":"Contact","common.menu":"Menu","common.website":"Website","common.twitter":"Twitter","common.discord":"Discord","common.facebook":"Facebook","common.reddit":"Reddit","common.x":"X","common.sort":"Sort","common.drafts":"Drafts","common.draft":"Draft","common.delete_draft":"Delete Draft","common.share_on":"Share on {{platform}}","common.top":"Top","common.all_chains":"All chains","common.votes":"Votes","footer.copyright":"{{year}} © Dashbrd. All rights reserved.","footer.all_rights_reserved":"All rights reserved","footer.privacy_policy":"Privacy Policy","footer.terms_of_service":"Terms of Service","footer.powered_by":"Powered by","format.fiat":"{{ value, currency }}","format.number":"{{ value, number }}","metatags.home.title":"Dashbrd | Web3 Portfolio Management Made Simple","metatags.home.description":"Simplify your Web3 journey with Dashbrd. Manage your portfolio of tokens, NFTs, and other digital collectibles across the Ethereum and Polygon blockchains.","metatags.home.image":"/images/meta/home.png","metatags.error.title":"Error {{code}} | Dashbrd","metatags.wallet.title":"My Wallet | Dashbrd","metatags.galleries.title":"Top NFT Galleries | Dashbrd","metatags.galleries.image":"/images/meta/nft-galleries.png","metatags.galleries.description":"Explore user published NFT galleries to find custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.most_popular.title":"Most Popular Galleries | Dashbrd","metatags.galleries.most_popular.image":"/images/meta/most-popular-nft-galleries.png","metatags.galleries.most_popular.description":"Explore and discover Most Popular NFT Galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.newest.title":"Newest Galleries | Dashbrd","metatags.galleries.newest.image":"/images/meta/newest-nft-galleries.png","metatags.galleries.newest.description":"Explore and discover most recent NFT galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More","metatags.galleries.most_valuable.title":"Most Valuable Galleries | Dashbrd","metatags.galleries.most_valuable.image":"/images/meta/most-valuable-nft-galleries.png","metatags.galleries.most_valuable.description":"Explore and discover Most Valuable NFT Galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.view.title":"{{name}} | Dashbrd","metatags.galleries.view.description":"{{name}} | A Curated NFT Gallery at Dashbrd","metatags.galleries.view.image":"/images/meta/nft-gallery.png","metatags.my_galleries.title":"My Galleries | Dashbrd","metatags.my_galleries.title_draft":"My Draft Galleries | Dashbrd","metatags.my_galleries.create.title":"Create Gallery | Dashbrd","metatags.my_galleries.edit.title":"Edit {{name}} | Dashbrd","metatags.collections.title":"Collections | Dashbrd","metatags.collections.view.title":"{{name}} Collection | Dashbrd","metatags.collections.view.description":"Immerse yourself in the intricate details of {{name}} collection, featuring remarkable digital assets. Start your NFT journey today!","metatags.collections.view.image":"/images/meta/nft-collection.png","metatags.my-collections.title":"My Collections | Dashbrd","metatags.nfts.view.title":"{{nft}} NFT | Dashbrd","metatags.nfts.view.description":"Uncover the complete story of {{nft}} NFT from the {{collection}} collection, delving into its unique attributes and distinctive features.","metatags.nfts.view.image":"/images/meta/nft-details.png","metatags.settings.title":"Settings | Dashbrd","metatags.articles.title":"Articles | Dashbrd","metatags.articles.view.title":"{{title}} | Dashbrd","metatags.login.title":"Login | Dashbrd","metatags.privacy_policy.title":"Privacy Policy | Dashbrd","metatags.privacy_policy.description":"Dashbrd’s privacy policy outlines the information we collect and explains your choices surrounding how we use information about you.","metatags.terms_of_service.title":"Terms of Service | Dashbrd","metatags.terms_of_service.description":"These Terms of Service cover your use and access to services, products or websites of Dashbrd.","metatags.cookie_policy.title":"Cookie Policy | Dashbrd","metatags.cookie_policy.description":"Dashbrd uses cookies to make the website more user-friendly. Find out about the main types of cookies we use, and what we use them for.","metatags.welcome.title":"Welcome to Dashbrd | Web3 Simplified","pages.onboarding.title":"Get Started","pages.onboarding.heading":"Your monkeys were bored and ran off, we are trying to round them up.","pages.onboarding.message":"We are setting up your account. This process usually takes just a few minutes, but can take up to 15 minutes.","pages.error.heading":"Oops, something went wrong ...","pages.error.message":"Please try again or get in touch if the issue persists.","pages.maintenance.title":"Dashbrd is currently down for scheduled maintenance.","pages.maintenance.description":"We expect to be back soon. Thanks for your patience.","pages.dashboard.title":"My Wallet","pages.dashboard.breakdown.title":"Portfolio Breakdown","pages.dashboard.line_chart.data_error":"Could not load chart data","pages.articles.title":"Articles","pages.articles.featured_collections":"Featured Collections","pages.articles.placeholder_more_soon":"More Soon","pages.articles.no_articles":"No articles have been published yet. Please check back later!","pages.articles.header_title":"Explore our collection of","pages.articles.header_suffix_one":"published article","pages.articles.header_suffix_other":"published articles","pages.articles.audio_version":"Audio version","pages.articles.consists_of_collections":"{0} This article highlights {{count}} collections|{1} This article highlights {{count}} collection|[2,*] This article highlights {{count}} collections","pages.collections.title":"Collections","pages.collections.collections":"Collections","pages.collections.popular_collections":"Popular Collections","pages.collections.collection_value":"Collection Value","pages.collections.nfts_owned":"NFTs Owned","pages.collections.header_title":"You own <0>{{nftsCount}} {{nfts}} across <0>{{collectionsCount}} {{collections}}, worth about <0><1>{{worth}}","pages.collections.search_placeholder":"Search by Collection","pages.collections.properties":"Properties","pages.collections.collections_network":"Collections Network","pages.collections.property_search_placeholder":"Feature Search","pages.collections.floor_price":"Floor Price","pages.collections.value":"Value","pages.collections.rarity":"Rarity","pages.collections.report":"Report","pages.collections.hide_collection":"Hide Collection","pages.collections.unhide_collection":"Unhide Collection","pages.collections.no_collections":"You do not own any NFTs yet. Once you do they will be shown here.","pages.collections.all_collections_hidden":"You have hidden all your collections. Unhide and they will appear here.","pages.collections.about_collection":"About Collection","pages.collections.show_hidden":"Show Hidden","pages.collections.show_my_collection":"Show My Collection","pages.collections.owned":"Owned","pages.collections.activities.loading_activities":"We're fetching Activity for this NFT, please hang tight, this can take a while.","pages.collections.activities.loading_activities_collection":"We're fetching Activity for this collection, please hang tight, this can take a while.","pages.collections.activities.ignores_activities":"We don't support activity history for this collection yet.","pages.collections.activities.no_activity":"This collection does not have any activity yet.","pages.collections.activities.types.LABEL_MINT":"Mint","pages.collections.activities.types.LABEL_TRANSFER":"Transfer","pages.collections.activities.types.LABEL_SALE":"Sale","pages.collections.activities.types.LABEL_BURN":"Burn","pages.collections.collection_of_the_month.winners_month":"Winners: {{month}}","pages.collections.collection_of_the_month.vote_for_next_months_winners":"Vote now for next month's winners","pages.collections.collection_of_the_month.view_previous_winners":"View Previous Winners","pages.collections.articles.no_articles":"No articles have been linked to this collection as of now.","pages.collections.articles.no_articles_with_filters":"We could not find any articles matching your search criteria, please try again!","pages.collections.articles.search_placeholder":"Search in Articles","pages.collections.articles.sort_latest":"Latest","pages.collections.articles.sort_popularity":"Most Popular","pages.collections.search.loading_results":"Loading results...","pages.collections.search.no_results":"We could not find anything matching your search criteria, please try again!","pages.collections.search.no_results_with_filters":"We could not find anything matching your filters, please try again!","pages.collections.search.no_results_ownership":"You do not own any NFTs in this collection","pages.collections.search.error":"Could not load search results. Please try again later.","pages.collections.vote.vote_for_top_collection":"Vote for Top Collection of the Month","pages.collections.vote.vote":"Vote","pages.collections.vote.time_left":"Time Left","pages.collections.vote.or_nominate_collection":"Or nominate a collection","pages.collections.sorting.token_number":"Token Number","pages.collections.sorting.recently_received":"Recently Received","pages.collections.sorting.recently_created":"Recently Created","pages.collections.sorting.oldest_collection":"Oldest Collection","pages.collections.traits.description":"List of NFT traits by % of occurrence in the collection","pages.collections.traits.no_traits":"No Properties can be found for this NFT","pages.collections.menu.collection":"Collection","pages.collections.menu.articles":"Articles","pages.collections.menu.activity":"Activity","pages.collections.hidden_modal.collection_hidden":"Collection Hidden","pages.collections.hidden_modal.description":"This collection is currently set to Hidden. Are you sure you want to unhide this collection? You can\n reset the collection to hidden from the collection menu.","pages.collections.hidden_modal.unhide":"Unhide","pages.collections.hidden_modal.error":"Something went wrong. Please try again.","pages.collections.external_modal.you_wish_continue":"You are about to leave Dashbrd to an external website. Dashbrd has no control over the content of\n this site. Are you sure you wish to continue?","pages.collections.external_modal.not_show":"Do not show this message again.","pages.collections.refresh.title":"Refresh your collection","pages.collections.refresh.notice":"You can refresh data every 15 minutes.","pages.collections.refresh.notice_wait":"Please wait. You can refresh data every 15 minutes.","pages.collections.refresh.toast":"We're updating information for your collection.","pages.collections.featured.title":"Featured Collections","pages.collections.featured.button":"Explore Collection","pages.nfts.nft":"nft","pages.nfts.about_nft":"About NFT","pages.nfts.owned_by":"Owned by","pages.nfts.collection_image":"collection image","pages.nfts.menu.properties":"Properties","pages.nfts.menu.activity":"Activity","pages.reports.title":"Submit a Report","pages.reports.description":"Thanks for looking out by reporting things that break the rules. Let us know what's happening and we'll receive the report.","pages.reports.success":"Thank you for your report. We'll review it and see if it breaks our ToS.","pages.reports.failed":"Something went wrong. Please try again.","pages.reports.throttle":"You have made too many requests. Please wait {{time}} before reporting again.","pages.reports.reported":"You have already reported this {{model}}.","pages.reports.reasons.spam":"Spam","pages.reports.reasons.violence":"Promoting Violence","pages.reports.reasons.hate":"Hate","pages.reports.reasons.inappropriate_content":"Inappropriate Content","pages.reports.reasons.impersonation":"Impersonation","pages.reports.reasons.trademark":"Trademark or Copyright","pages.reports.reasons.selfharm":"Self-Harm","pages.reports.reasons.harassment":"Harassment","pages.galleries.title":"Galleries","pages.galleries.empty_title":"No galleries have been published yet. Once they do they will appear here.","pages.galleries.search.loading_results":"Loading results...","pages.galleries.search.no_results":"We could not find anything matching your search criteria, please try again!","pages.galleries.search.placeholder":"Search by name or curator address","pages.galleries.search.placeholder_nfts":"Search by NFTs","pages.galleries.search.error":"Could not load search results. Please try again later.","pages.galleries.my_galleries.title":"My Galleries","pages.galleries.my_galleries.subtitle":"Manage your galleries","pages.galleries.my_galleries.new_gallery":"New Gallery","pages.galleries.my_galleries.no_galleries":"You have not created any galleries yet. To create a gallery, click on the \"Create Gallery\" button.","pages.galleries.my_galleries.no_available_collections":"You have hidden all your collections. If you want to create a gallery, make sure you have at least 1 collection available.","pages.galleries.my_galleries.no_draft_galleries":"You have no draft galleries yet. To create a gallery, click on the \"Create Gallery\" button.","pages.galleries.my_galleries.succesfully_deleted":"Gallery has been successfully removed","pages.galleries.my_galleries.draft_succesfully_deleted":"Draft has been successfully removed","pages.galleries.my_galleries.successfully_created":"Gallery has been successfully created","pages.galleries.my_galleries.successfully_updated":"Gallery has been successfully updated","pages.galleries.my_galleries.new_gallery_no_nfts":"Creating a Gallery requires you to own an NFT.","pages.galleries.my_galleries.new_gallery_all_collections_hidden":"Creating a Gallery requires you to have at least 1 collection available.","pages.galleries.my_galleries.delete_modal.title":"Delete Draft","pages.galleries.my_galleries.delete_modal.text":"Are you sure you want to delete the draft? Everything you've done will be deleted and you won't be able to get it back.","pages.galleries.my_galleries.nfts_no_longer_owned":"NFTs no longer owned by this wallet have been removed from the draft”","pages.galleries.copy_gallery_link":"Copy Gallery Link","pages.galleries.my_nfts":"My NFTs","pages.galleries.show_hidden_collections":"Show hidden collections","pages.galleries.value":"Value","pages.galleries.floor_price":"Floor Price","pages.galleries.nfts":"NFTs","pages.galleries.collections":"Collections","pages.galleries.galleries_count_simple":"{0} galleries|{1} gallery|[2,*] galleries","pages.galleries.galleries_count":"{0} {{count}} Galleries|{1} {{count}} Gallery|[2,*] {{count}} Galleries","pages.galleries.collections_count_simple":"{0} collections|{1} collection|[2,*] collections","pages.galleries.collections_count":"{0} {{count}} Collections|{1} {{count}} Collection|[2,*] {{count}} Collections","pages.galleries.nfts_count_simple":"{0} NFTs|{1} NFT|[2,*] NFTs","pages.galleries.nfts_count":"{0} {{count}} NFTs|{1} {{count}} NFT|[2,*] {{count}} NFTs","pages.galleries.users_count_simple":"{0} users|{1} user|[2,*] users","pages.galleries.users_count":"{0} {{count}} Users|{1} {{count}} User|[2,*] {{count}} Users","pages.galleries.featuring":"Featuring","pages.galleries.curated_by":"Curated by","pages.galleries.worth_about":"Worth About","pages.galleries.valued_at":"valued at","pages.galleries.from":"From","pages.galleries.most_popular_galleries":"Most Popular Galleries","pages.galleries.newest_galleries":"Newest Galleries","pages.galleries.most_valuable_galleries":"Most Valuable Galleries","pages.galleries.most_popular":"Most Popular","pages.galleries.newest":"Newest","pages.galleries.most_valuable":"Most Valuable","pages.galleries.create.search_by_nfts":"Search by NFTs","pages.galleries.create.input_placeholder":"Enter gallery name","pages.galleries.create.title_too_long":"Gallery name must not exceed {{max}} characters.","pages.galleries.create.already_selected_nft":"NFT already exists in this gallery","pages.galleries.create.nft_missing_image":"Only NFTs with images can be added to galleries","pages.galleries.create.nft_gallery_limit":"You can only add 16 NFTs per gallery","pages.galleries.create.gallery_cover":"Gallery Cover","pages.galleries.create.gallery_cover_description":"The cover is used for the card on the gallery list page. While the cover is not a requirement it will allow you to add personality and stand out from the crowd.","pages.galleries.create.gallery_cover_information":"Image dimensions must be at least 287px x 190px, with a max size of 2 MB (JPG, PNG or GIF)","pages.galleries.create.no_results":"We could not find anything matching your search criteria, please try again!","pages.galleries.create.templates.cover":"Cover","pages.galleries.create.templates.template":"Template","pages.galleries.create.templates.select":"Select Gallery Template","pages.galleries.create.templates.basic":"Basic Gallery","pages.galleries.create.templates.coming_soon":"More Coming Soon","pages.galleries.create.load_more_collections_one":"Load {{count}} More Collection","pages.galleries.create.load_more_collections_other":"Load {{count}} More Collections","pages.galleries.create.load_more_nfts":"Load More NFTs","pages.galleries.create.can_purchase":"You can purchase NFTs with these top NFT Marketplaces:","pages.galleries.create.must_own_one_nft":"You must own at least one (1) NFT in order to create a gallery.","pages.galleries.create.back_to_galleries":"Back to Galleries","pages.galleries.create.draft_saved":"Draft Saved","pages.galleries.create.saving_to_draft":"Saving to draft","pages.galleries.create.drafts_limit_modal_title":"Draft Gallery Limit","pages.galleries.create.drafts_limit_modal_message":"You’ve hit your limit for draft galleries. While you can still make new galleries and publish them, they won’t be saved as drafts. To Free up space, you can either delete existing drafts or publish them.","pages.galleries.create.drafts_limit_modal_cancel":"Go to Drafts","pages.galleries.delete_modal.title":"Delete Gallery","pages.galleries.delete_modal.confirmation_text":"Are you sure you want to delete the gallery? Deleting a Gallery is permanent, all associated views and likes will be lost.","pages.galleries.consists_of_collections":"{0} This gallery consists of {{count}} collections|{1} This gallery consists of {{count}} collection|[2,*] This gallery consists of {{count}} collections","pages.galleries.guest_banner.title":"Craft the ultimate","pages.galleries.guest_banner.subtitle":"Pick your favorites, curate your gallery, & share it with the world.","pages.profile.title":"Profile","pages.token_panel.balance_tooltip":"Total percentage of the portfolio held in this token","pages.token_panel.insufficient_funds":"Insufficient Balance","pages.token_panel.error":"Dashbrd has failed to load token information. Please try again later.","pages.token_panel.failed_to_retrieve_transactions":"We were unable to fetch your transactions.","pages.token_panel.tabs.transaction_history":"Transaction History","pages.token_panel.tabs.history":"History","pages.token_panel.tabs.market_data":"Market Data","pages.token_panel.details.current_price":"Current Price","pages.token_panel.details.title":"Token Details","pages.token_panel.details.market_cap":"Market Cap","pages.token_panel.details.volume":"Daily Volume","pages.token_panel.details.supply":"Minted Supply","pages.token_panel.details.ath":"All-Time High","pages.token_panel.details.atl":"All-Time Low","pages.token_panel.chart.failed":"Dashbrd has failed to load chart information. Please try again later.","pages.transaction_details_panel.title":"Transaction Details","pages.transaction_details_panel.details.blockchain":"Blockchain","pages.transaction_details_panel.details.timestamp":"Timestamp","pages.transaction_details_panel.details.transaction_hash":"Transaction Hash","pages.transaction_details_panel.details.transaction_fee":"Transaction Fee","pages.transaction_details_panel.details.gas_price":"Gas Price","pages.transaction_details_panel.details.gas_used":"Gas Used","pages.transaction_details_panel.details.nonce":"Nonce","pages.send_receive_panel.send.labels.token_and_amount":"Token and Amount","pages.send_receive_panel.send.labels.destination_address":"Destination Address","pages.send_receive_panel.send.labels.projected_fee":"Projected Fee","pages.send_receive_panel.send.placeholders.enter_amount":"Enter Amount","pages.send_receive_panel.send.placeholders.insert_recipient_address":"Insert Recipient Address","pages.send_receive_panel.send.placeholders.projected_fee":"Projected Fee","pages.send_receive_panel.send.errors.amount":"Insufficient Funds: You do not have enough to cover the amount + fee.","pages.send_receive_panel.send.errors.destination":"Destination address is not correct. Check and input again.","pages.send_receive_panel.send.hints.token_price":"Token Price","pages.send_receive_panel.send.fees.Fast":"Fast","pages.send_receive_panel.send.fees.Avg":"Avg","pages.send_receive_panel.send.fees.Slow":"Slow","pages.send_receive_panel.send.search_dropdown.placeholder":"Search token","pages.send_receive_panel.send.search_dropdown.no_results":"No Results","pages.send_receive_panel.send.search_dropdown.error":"Error occurred while searching tokens.","pages.send_receive_panel.send.transaction_time":"Transaction Time: ~{{ time }} minutes","pages.send_receive_panel.send.from":"From","pages.send_receive_panel.send.to":"To","pages.send_receive_panel.send.amount":"Amount","pages.send_receive_panel.send.fee":"Fee","pages.send_receive_panel.send.total_amount":"Total Amount","pages.send_receive_panel.send.waiting_message":"Review and verify the information on your MetaMask. Sign to send the transaction.","pages.send_receive_panel.send.waiting_spinner_text":"Waiting for confirmation...","pages.send_receive_panel.send.failed_message":"It looks like something went wrong while sending your transaction. Press 'Retry' to make another attempt.","pages.send_receive_panel.receive.alert":"Send only Polygon or Ethereum Network compatible tokens to this address or you could permanently lose your funds!","pages.settings.title":"Settings","pages.settings.sidebar.general":"General","pages.settings.sidebar.notifications":"Notifications","pages.settings.sidebar.session_history":"Sessions History","pages.settings.general.title":"Settings","pages.settings.general.subtitle":"Customize your App Experience","pages.settings.general.currency":"Currency","pages.settings.general.currency_subtitle":"Select your default currency which will be used throughout the app.","pages.settings.general.time_date":"Time & Date","pages.settings.general.time_date_subtitle":"Select how you want time and date be shown inside app.","pages.settings.general.date_format":"Date Format","pages.settings.general.time_format":"Time Format","pages.settings.general.timezone":"Timezone","pages.settings.general.set_defaults":"Set Defaults","pages.settings.general.set_defaults_content":"Reverting to the default settings will remove any customizations previously made. Are you sure?","pages.settings.general.save":"Save Settings","pages.settings.general.saved":"Your settings have been successfully saved","pages.wallet.title":"Wallet","pages.privacy_policy.title":"Privacy Policy","pages.terms_of_service.title":"Terms of Service","pagination.previous":"« Previous","pagination.next":"Next »","passwords.reset":"Your password has been reset!","passwords.sent":"We have emailed your password reset link!","passwords.throttled":"Please wait before retrying.","passwords.token":"This password reset token is invalid.","passwords.user":"We can't find a user with that email address.","urls.landing":"https://dashbrd.com","urls.cookie_policy":"https://dashbrd.com/cookie-policy","urls.privacy_policy":"https://dashbrd.com/privacy-policy","urls.terms_of_service":"https://dashbrd.com/terms-of-service","urls.twitter":"https://x.com/DashbrdApp","urls.discord":"https://discord.gg/MJyWKkCJ5k","urls.github":"https://github.com/ArdentHQ/dashbrd","urls.coingecko":"https://www.coingecko.com","urls.etherscan":"https://etherscan.io","urls.polygonscan":"https://polygonscan.com","urls.alchemy":"https://www.alchemy.com","urls.moralis":"https://moralis.io","urls.mnemonic":"https://www.mnemonichq.com","urls.opensea":"https://opensea.io/","urls.explorers.etherscan.token_transactions":"https://etherscan.io/token/{{token}}?a={{address}}","urls.explorers.etherscan.addresses":"https://etherscan.io/address/{{address}}","urls.explorers.etherscan.transactions":"https://etherscan.io/tx/{{id}}","urls.explorers.etherscan.nft":"https://etherscan.io/nft/{{address}}/{{nftId}}","urls.explorers.polygonscan.token_transactions":"https://polygonscan.com/token/{{token}}?a={{address}}","urls.explorers.polygonscan.addresses":"https://polygonscan.com/address/{{address}}","urls.explorers.polygonscan.transactions":"https://polygonscan.com/tx/{{id}}","urls.explorers.polygonscan.nft":"https://polygonscan.com/nft/{{address}}/{{nftId}}","urls.explorers.mumbai.token_transactions":"https://mumbai.polygonscan.com/token/{{token}}?a={{address}}","urls.explorers.mumbai.addresses":"https://mumbai.polygonscan.com/address/{{address}}","urls.explorers.mumbai.transactions":"https://mumbai.polygonscan.com/tx/{{id}}","urls.explorers.mumbai.nft":"https://mumbai.polygonscan.com/nft/{{address}}/{{nftId}}","urls.explorers.goerli.token_transactions":"https://goerli.etherscan.io/token/{{token}}?a={{address}}","urls.explorers.goerli.addresses":"https://goerli.etherscan.io/address/{{address}}","urls.explorers.goerli.transactions":"https://goerli.etherscan.io/tx/{{id}}","urls.explorers.goerli.nft":"https://goerli.etherscan.io/nft/{{address}}/{{nftId}}","urls.marketplaces.opensea.collection":"https://opensea.io/assets/{{network}}/{{address}}","urls.marketplaces.opensea.nft":"https://opensea.io/assets/{{network}}/{{address}}/{{nftId}}","urls.marketplaces.rarible.collection":"https://rarible.com/collection/{{address}}/items","urls.marketplaces.rarible.nft":"https://rarible.com/token/{{address}}:{{nftId}}","urls.marketplaces.blur.collection":"https://blur.io/collection/{{address}}","urls.marketplaces.blur.nft":"https://blur.io/asset/{{address}}/{{nftId}}","urls.marketplaces.looksrare.collection":"https://looksrare.org/collections/{{address}}","urls.marketplaces.looksrare.nft":"https://looksrare.org/collections/{{address}}/{{nftId}}","validation.accepted":"The {{attribute}} must be accepted.","validation.accepted_if":"The {{attribute}} must be accepted when {{other}} is {{value}}.","validation.active_url":"The {{attribute}} is not a valid URL.","validation.after":"The {{attribute}} must be a date after {{date}}.","validation.after_or_equal":"The {{attribute}} must be a date after or equal to {{date}}.","validation.alpha":"The {{attribute}} must only contain letters.","validation.alpha_dash":"The {{attribute}} must only contain letters, numbers, dashes and underscores.","validation.alpha_num":"The {{attribute}} must only contain letters and numbers.","validation.array":"The {{attribute}} must be an array.","validation.ascii":"The {{attribute}} must only contain single-byte alphanumeric characters and symbols.","validation.before":"The {{attribute}} must be a date before {{date}}.","validation.before_or_equal":"The {{attribute}} must be a date before or equal to {{date}}.","validation.between.array":"The {{attribute}} must have between {{min}} and {{max}} items.","validation.between.file":"The {{attribute}} must be between {{min}} and {{max}} kilobytes.","validation.between.numeric":"The {{attribute}} must be between {{min}} and {{max}}.","validation.between.string":"The {{attribute}} must be between {{min}} and {{max}} characters.","validation.boolean":"The {{attribute}} field must be true or false.","validation.confirmed":"The {{attribute}} confirmation does not match.","validation.current_password":"The password is incorrect.","validation.date":"The {{attribute}} is not a valid date.","validation.date_equals":"The {{attribute}} must be a date equal to {{date}}.","validation.date_format":"The {{attribute}} does not match the format {{format}}.","validation.decimal":"The {{attribute}} must have {{decimal}} decimal places.","validation.declined":"The {{attribute}} must be declined.","validation.declined_if":"The {{attribute}} must be declined when {{other}} is {{value}}.","validation.different":"The {{attribute}} and {{other}} must be different.","validation.digits":"The {{attribute}} must be {{digits}} digits.","validation.digits_between":"The {{attribute}} must be between {{min}} and {{max}} digits.","validation.dimensions":"The {{attribute}} has invalid image dimensions.","validation.distinct":"The {{attribute}} field has a duplicate value.","validation.doesnt_end_with":"The {{attribute}} may not end with one of the following: {{values}}.","validation.doesnt_start_with":"The {{attribute}} may not start with one of the following: {{values}}.","validation.email":"The {{attribute}} must be a valid email address.","validation.ends_with":"The {{attribute}} must end with one of the following: {{values}}.","validation.enum":"The selected {{attribute}} is invalid.","validation.exists":"The selected {{attribute}} is invalid.","validation.file":"The {{attribute}} must be a file.","validation.filled":"The {{attribute}} field must have a value.","validation.gt.array":"The {{attribute}} must have more than {{value}} items.","validation.gt.file":"The {{attribute}} must be greater than {{value}} kilobytes.","validation.gt.numeric":"The {{attribute}} must be greater than {{value}}.","validation.gt.string":"The {{attribute}} must be greater than {{value}} characters.","validation.gte.array":"The {{attribute}} must have {{value}} items or more.","validation.gte.file":"The {{attribute}} must be greater than or equal to {{value}} kilobytes.","validation.gte.numeric":"The {{attribute}} must be greater than or equal to {{value}}.","validation.gte.string":"The {{attribute}} must be greater than or equal to {{value}} characters.","validation.image":"The {{attribute}} must be an image.","validation.in":"The selected {{attribute}} is invalid.","validation.in_array":"The {{attribute}} field does not exist in {{other}}.","validation.integer":"The {{attribute}} must be an integer.","validation.ip":"The {{attribute}} must be a valid IP address.","validation.ipv4":"The {{attribute}} must be a valid IPv4 address.","validation.ipv6":"The {{attribute}} must be a valid IPv6 address.","validation.json":"The {{attribute}} must be a valid JSON string.","validation.lowercase":"The {{attribute}} must be lowercase.","validation.lt.array":"The {{attribute}} must have less than {{value}} items.","validation.lt.file":"The {{attribute}} must be less than {{value}} kilobytes.","validation.lt.numeric":"The {{attribute}} must be less than {{value}}.","validation.lt.string":"The {{attribute}} must be less than {{value}} characters.","validation.lte.array":"The {{attribute}} must not have more than {{value}} items.","validation.lte.file":"The {{attribute}} must be less than or equal to {{value}} kilobytes.","validation.lte.numeric":"The {{attribute}} must be less than or equal to {{value}}.","validation.lte.string":"The {{attribute}} must be less than or equal to {{value}} characters.","validation.mac_address":"The {{attribute}} must be a valid MAC address.","validation.max.array":"The {{attribute}} must not have more than {{max}} items.","validation.max.file":"The {{attribute}} must not be greater than {{max}} kilobytes.","validation.max.numeric":"The {{attribute}} must not be greater than {{max}}.","validation.max.string":"The {{attribute}} must not be greater than {{max}} characters.","validation.max_digits":"The {{attribute}} must not have more than {{max}} digits.","validation.mimes":"The {{attribute}} must be a file of type: {{values}}.","validation.mimetypes":"The {{attribute}} must be a file of type: {{values}}.","validation.min.array":"The {{attribute}} must have at least {{min}} items.","validation.min.file":"The {{attribute}} must be at least {{min}} kilobytes.","validation.min.numeric":"The {{attribute}} must be at least {{min}}.","validation.min.string":"The {{attribute}} must be at least {{min}} characters.","validation.min_digits":"The {{attribute}} must have at least {{min}} digits.","validation.missing":"The {{attribute}} field must be missing.","validation.missing_if":"The {{attribute}} field must be missing when {{other}} is {{value}}.","validation.missing_unless":"The {{attribute}} field must be missing unless {{other}} is {{value}}.","validation.missing_with":"The {{attribute}} field must be missing when {{values}} is present.","validation.missing_with_all":"The {{attribute}} field must be missing when {{values}} are present.","validation.multiple_of":"The {{attribute}} must be a multiple of {{value}}.","validation.not_in":"The selected {{attribute}} is invalid.","validation.not_regex":"The {{attribute}} format is invalid.","validation.numeric":"The {{attribute}} must be a number.","validation.password.letters":"The {{attribute}} must contain at least one letter.","validation.password.mixed":"The {{attribute}} must contain at least one uppercase and one lowercase letter.","validation.password.numbers":"The {{attribute}} must contain at least one number.","validation.password.symbols":"The {{attribute}} must contain at least one symbol.","validation.password.uncompromised":"The given {{attribute}} has appeared in a data leak. Please choose a different {{attribute}}.","validation.present":"The {{attribute}} field must be present.","validation.prohibited":"The {{attribute}} field is prohibited.","validation.prohibited_if":"The {{attribute}} field is prohibited when {{other}} is {{value}}.","validation.prohibited_unless":"The {{attribute}} field is prohibited unless {{other}} is in {{values}}.","validation.prohibits":"The {{attribute}} field prohibits {{other}} from being present.","validation.regex":"The {{attribute}} format is invalid.","validation.required":"The {{attribute}} field is required.","validation.required_array_keys":"The {{attribute}} field must contain entries for: {{values}}.","validation.required_if":"The {{attribute}} field is required when {{other}} is {{value}}.","validation.required_if_accepted":"The {{attribute}} field is required when {{other}} is accepted.","validation.required_unless":"The {{attribute}} field is required unless {{other}} is in {{values}}.","validation.required_with":"The {{attribute}} field is required when {{values}} is present.","validation.required_with_all":"The {{attribute}} field is required when {{values}} are present.","validation.required_without":"The {{attribute}} field is required when {{values}} is not present.","validation.required_without_all":"The {{attribute}} field is required when none of {{values}} are present.","validation.same":"The {{attribute}} and {{other}} must match.","validation.size.array":"The {{attribute}} must contain {{size}} items.","validation.size.file":"The {{attribute}} must be {{size}} kilobytes.","validation.size.numeric":"The {{attribute}} must be {{size}}.","validation.size.string":"The {{attribute}} must be {{size}} characters.","validation.starts_with":"The {{attribute}} must start with one of the following: {{values}}.","validation.string":"The {{attribute}} must be a string.","validation.timezone":"The {{attribute}} must be a valid timezone.","validation.unique":"The {{attribute}} has already been taken.","validation.uploaded":"The {{attribute}} failed to upload.","validation.uppercase":"The {{attribute}} must be uppercase.","validation.url":"The {{attribute}} must be a valid URL.","validation.ulid":"The {{attribute}} must be a valid ULID.","validation.uuid":"The {{attribute}} must be a valid UUID.","validation.custom.attribute-name.rule-name":"custom-message","validation.unsupported_currency_code":"The currency code you provided is invalid or not supported.","validation.unsupported_period":"The period you provided is invalid or not supported.","validation.unsupported_token_symbol":"The token symbol you provided is invalid or not supported.","validation.gallery_title_required":"Gallery name is required.","validation.gallery_title_max_characters":"The gallery name should not exceed 50 characters.","validation.gallery_title_invalid":"The gallery name is invalid.","validation.nfts_required":"Please add at least one NFT.","validation.nfts_max_size":"Galleries can contain no more than {{limit}} NFTs","validation.invalid_nfts":"The NFT in position {{position}} is invalid, please select another one.","validation.invalid_cover":"You have selected an invalid cover image, please try another one."} \ No newline at end of file diff --git a/resources/js/Pages/Collections/Components/CollectionOfTheMonth/CollectionOfTheMonth.tsx b/resources/js/Pages/Collections/Components/CollectionOfTheMonth/CollectionOfTheMonth.tsx index c1f415359..e4a544bce 100644 --- a/resources/js/Pages/Collections/Components/CollectionOfTheMonth/CollectionOfTheMonth.tsx +++ b/resources/js/Pages/Collections/Components/CollectionOfTheMonth/CollectionOfTheMonth.tsx @@ -2,9 +2,17 @@ import React from "react"; import { VoteCollection } from "./VoteCollection"; import { CollectionOfTheMonthWinners } from "@/Components/Collections/CollectionOfTheMonthWinners"; -export const CollectionOfTheMonth = (): JSX.Element => ( +export const CollectionOfTheMonth = ({ + winners, +}: { + winners: App.Data.Collections.CollectionOfTheMonthData[]; +}): JSX.Element => (
    - + +
    ); diff --git a/resources/js/Pages/Collections/Index.tsx b/resources/js/Pages/Collections/Index.tsx index 7efc1023e..e1c1c981b 100644 --- a/resources/js/Pages/Collections/Index.tsx +++ b/resources/js/Pages/Collections/Index.tsx @@ -24,6 +24,7 @@ interface CollectionsIndexProperties extends PageProps { title: string; collections: PaginationData; featuredCollections: App.Data.Collections.CollectionFeaturedData[]; + topCollections: App.Data.Collections.CollectionOfTheMonthData[]; filters: Filters; } @@ -31,6 +32,7 @@ const CollectionsIndex = ({ title, featuredCollections, collections: { data: collections }, + topCollections, auth, filters, }: CollectionsIndexProperties): JSX.Element => { @@ -132,7 +134,7 @@ const CollectionsIndex = ({
    - +
    ); }; diff --git a/resources/js/Tests/Factories/Collections/CollectionOfTheMonthFactory.ts b/resources/js/Tests/Factories/Collections/CollectionOfTheMonthFactory.ts new file mode 100644 index 000000000..d5406783f --- /dev/null +++ b/resources/js/Tests/Factories/Collections/CollectionOfTheMonthFactory.ts @@ -0,0 +1,11 @@ +import { faker } from "@faker-js/faker"; +import ModelFactory from "@/Tests/Factories/ModelFactory"; + +export default class CollectionOfTheMonthFactory extends ModelFactory { + protected factory(): App.Data.Collections.CollectionOfTheMonthData { + return { + image: this.optional(faker.image.avatar(), 0.9), + votes: faker.datatype.number({ min: 1, max: 100000 }), + }; + } +} diff --git a/resources/js/Utils/format-number.test.ts b/resources/js/Utils/format-number.test.ts new file mode 100644 index 000000000..42d5730fb --- /dev/null +++ b/resources/js/Utils/format-number.test.ts @@ -0,0 +1,20 @@ +import { formatNumbershort } from "./format-number"; + +describe("formatNumbershort", () => { + it("should format numbers correctly", () => { + // Test for numbers less than 1000 + expect(formatNumbershort(500)).toEqual("500"); + expect(formatNumbershort(999)).toEqual("999"); + + // Test for number equal to 1000 + expect(formatNumbershort(1000)).toEqual("1k"); + + // Test for numbers greater than 1000 but less than 1 million + expect(formatNumbershort(1235)).toEqual("1.2k"); + expect(formatNumbershort(999999)).toEqual("1000.0k"); + + // Test for numbers equal to or greater than 1 million + expect(formatNumbershort(1000000)).toEqual("1.0m"); + expect(formatNumbershort(1500000)).toEqual("1.5m"); + }); +}); diff --git a/resources/js/Utils/format-number.ts b/resources/js/Utils/format-number.ts new file mode 100644 index 000000000..a35faed65 --- /dev/null +++ b/resources/js/Utils/format-number.ts @@ -0,0 +1,13 @@ +const formatNumbershort = (number_: number): string => { + if (number_ < 1000) { + return number_.toString(); + } else if (number_ === 1000) { + return "1k"; + } else if (number_ < 1000000) { + return (number_ / 1000).toFixed(1) + "k"; + } else { + return (number_ / 1000000).toFixed(1) + "m"; + } +}; + +export { formatNumbershort }; diff --git a/resources/js/images.ts b/resources/js/images.ts index ef65446f6..b1d7f493c 100644 --- a/resources/js/images.ts +++ b/resources/js/images.ts @@ -2,6 +2,12 @@ import { ReactComponent as AuthConnectWalletDark } from "@images/auth-connect-wa import { ReactComponent as AuthConnectWallet } from "@images/auth-connect-wallet.svg"; import { ReactComponent as AuthInstallWalletDark } from "@images/auth-install-wallet-dark.svg"; import { ReactComponent as AuthInstallWallet } from "@images/auth-install-wallet.svg"; +import { ReactComponent as OneBarChartDark } from "@images/collections/one-bar-chart-dark.svg"; +import { ReactComponent as OneBarChart } from "@images/collections/one-bar-chart.svg"; +import { ReactComponent as ThreeBarChartDark } from "@images/collections/three-bar-chart-dark.svg"; +import { ReactComponent as ThreeBarChart } from "@images/collections/three-bar-chart.svg"; +import { ReactComponent as TwoBarChartDark } from "@images/collections/two-bar-chart-dark.svg"; +import { ReactComponent as TwoBarChart } from "@images/collections/two-bar-chart.svg"; import { ReactComponent as VoteNextMonthWinnersDark } from "@images/collections/vote-next-month-winners-dark.svg"; import { ReactComponent as VoteNextMonthWinners } from "@images/collections/vote-next-month-winners.svg"; import { ReactComponent as DeleteModal } from "@images/delete-modal.svg"; @@ -58,4 +64,10 @@ export { SocialRightGrid, VoteNextMonthWinners, VoteNextMonthWinnersDark, + ThreeBarChart, + ThreeBarChartDark, + TwoBarChart, + TwoBarChartDark, + OneBarChart, + OneBarChartDark, }; diff --git a/resources/types/generated.d.ts b/resources/types/generated.d.ts index 9cdf6bf80..a4657a8f8 100644 --- a/resources/types/generated.d.ts +++ b/resources/types/generated.d.ts @@ -204,6 +204,10 @@ declare namespace App.Data.Collections { images: App.Data.Nfts.NftImagesData; traits: Array; }; + export type CollectionOfTheMonthData = { + image: string | null; + votes: number; + }; export type CollectionStatsData = { nfts: number; collections: number; From 6db9656da48bb0b981ae38f84d2bff62d76456ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josip=20Crnkovi=C4=87?= Date: Mon, 4 Dec 2023 11:08:51 +0100 Subject: [PATCH 022/145] feat: add footer cta (#526) --- lang/en/pages.php | 6 ++ resources/images/collections-dark.png | Bin 0 -> 181600 bytes resources/images/collections-grid.svg | 1 + resources/images/collections-mobile-dark.png | Bin 0 -> 91941 bytes resources/images/collections-mobile.png | Bin 0 -> 96763 bytes resources/images/collections.png | Bin 0 -> 204283 bytes resources/js/I18n/Locales/en.json | 2 +- .../Components/CollectionsCallToAction.tsx | 60 ++++++++++++++++++ resources/js/Pages/Collections/Index.tsx | 5 +- resources/js/images.ts | 2 + 10 files changed, 74 insertions(+), 2 deletions(-) create mode 100644 resources/images/collections-dark.png create mode 100644 resources/images/collections-grid.svg create mode 100644 resources/images/collections-mobile-dark.png create mode 100644 resources/images/collections-mobile.png create mode 100644 resources/images/collections.png create mode 100644 resources/js/Pages/Collections/Components/CollectionsCallToAction.tsx diff --git a/lang/en/pages.php b/lang/en/pages.php index 0424294e5..3b286522e 100644 --- a/lang/en/pages.php +++ b/lang/en/pages.php @@ -40,6 +40,7 @@ 'audio_version' => 'Audio version', 'consists_of_collections' => '{0} This article highlights :count collections|{1} This article highlights :count collection|[2,*] This article highlights :count collections', ], + 'collections' => [ 'title' => 'Collections', 'collections' => 'Collections', @@ -137,6 +138,11 @@ 'title' => 'Featured Collections', 'button' => 'Explore Collection', ], + 'footer' => [ + 'heading_broken' => ['Connect with MetaMask', '& Manage Your Collection'], + 'subtitle' => 'Explore, Filter, & Share your favorite NFTs with Dashbrd.', + 'button' => 'Manage Collections', + ], ], 'nfts' => [ diff --git a/resources/images/collections-dark.png b/resources/images/collections-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..09ae7fe5f66f788844dd68b98595e8a93336060f GIT binary patch literal 181600 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 z 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 literal 0 HcmV?d00001 diff --git a/resources/images/collections-grid.svg b/resources/images/collections-grid.svg new file mode 100644 index 000000000..e8f67ea45 --- /dev/null +++ b/resources/images/collections-grid.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/images/collections-mobile-dark.png b/resources/images/collections-mobile-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..c1f76c694b3762c796edcbb06c40452cb50f2340 GIT binary patch literal 91941 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
    8`!(6?k$-pRi2Dt|HqBq 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 YkE%jGM))kcTp)i4EkjMb`h%$d0rMHJ5C8xG literal 0 HcmV?d00001 diff --git a/resources/images/collections.png b/resources/images/collections.png new file mode 100644 index 0000000000000000000000000000000000000000..9bfb991bc6724d2fac0243f8dae9c06155e6e665 GIT binary patch literal 204283 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 literal 0 HcmV?d00001 diff --git a/resources/js/I18n/Locales/en.json b/resources/js/I18n/Locales/en.json index 9ce29dba9..02e2317df 100644 --- a/resources/js/I18n/Locales/en.json +++ b/resources/js/I18n/Locales/en.json @@ -1 +1 @@ -{"auth.welcome":"Welcome to Dashbrd","auth.logged_in":"You're logged in!","auth.log_out":"Log out","auth.failed":"These credentials do not match our records.","auth.session_timeout":"Your session has timed out. Please refresh the page and try connecting your account again.","auth.session_timeout_modal":"Seems like your session has timed out. Please connnect your wallet again.","auth.password":"The provided password is incorrect.","auth.throttle":"Too many login attempts. Please try again in {{seconds}} seconds.","auth.wallet.connecting":"Connecting …","auth.wallet.waiting_for_signature":"Waiting for Signature …","auth.wallet.switching_wallet":"Switching Wallet …","auth.wallet.connect":"Connect Wallet","auth.wallet.connect_long":"Connect Your Wallet to Get Started","auth.wallet.sign_subtitle":"Connect Your Wallet to Continue","auth.wallet.disconnect":"Disconnect Wallet","auth.wallet.install":"Install MetaMask","auth.wallet.install_long":"Install MetaMask to Get Started","auth.wallet.sign":"Sign Message","auth.wallet.sign_message":"Welcome to Dashbrd. In order to login, sign this message with your wallet. It doesn't cost you anything!\n\nSigning ID (you can ignore this): {{nonce}}","auth.wallet.connect_subtitle":"Click on the MetaMask icon in your browser to confirm the action and connect your wallet.","auth.wallet.requires_signature":"In order to prevent impersonation, we require a signature to perform this action. This signature is only a signed message and does not give any access to your wallet.","auth.errors.metamask.no_account":"No account found. Please connect your wallet and try again.","auth.errors.metamask.generic":"Connection attempt error. Please retry and follow the steps to connect your wallet.","auth.errors.metamask.invalid_network":"Please switch to Polygon or Ethereum Mainnet in your MetaMask plugin to connect to Dashbrd.","auth.errors.metamask.provider_missing":"You don't have MetaMask installed in your browser. Please install and try again.","auth.errors.metamask.user_rejected":"It looks like you cancelled signing of the authentication message. Please try again.","auth.errors.metamask.provider_not_set":"Ethereum provider is not set","auth.validation.wallet_login_failed":"There was a problem trying to verify your signature. Please try again.","auth.validation.invalid_address":"Your wallet address is invalid. Please try again.","auth.validation.invalid_signature":"Signature is invalid. Please try again.","auth.validation.invalid_network":"Please switch to Polygon or Ethereum Mainnet in your MetaMask plugin to connect to Dashbrd.","common.author":"Author","common.add":"Add","common.amount":"Amount","common.balance":"Balance","common.cancel":"Cancel","common.delete":"Delete","common.edit":"Edit","common.confirm":"Confirm","common.connect":"Connect","common.continue":"Continue","common.done":"Done","common.filter":"Filter","common.items":"Items","common.receive":"Receive","common.received":"Received","common.retry":"Retry","common.records":"Records","common.save":"Save","common.send":"Send","common.sent":"Sent","common.show":"Show","common.searching":"Searching...","common.other":"Other","common.owned":"Owned","common.token":"Token","common.tokens":"Tokens","common.wallet":"Wallet","common.pending":"Pending","common.publish":"Publish","common.published":"Published","common.empty":"Empty","common.your_address":"Your Address","common.warning":"Warning","common.my_address":"My Address","common.my_wallet":"My Wallet","common.my_collections":"My Collections","common.my_balance":"My Balance","common.na":"N/A","common.simple_plural_without_data":"One comment|Many comments","common.simple_plural_with_data":"{{count}} comment|{{count}} comments","common.advanced_plural_without_data":"{0} no comments yet|{1} 1 comment|[2,*] Many comments","common.advanced_plural_with_data":"{0} no comments yet|{1} 1 comment|[2,*] {{count}} comments","common.copy_clipboard":"Copy to Clipboard","common.copy":"Copy","common.download":"Download","common.zoom":"Zoom","common.my_collection":"My Collection","common.max":"Max","common.chain":"Chain","common.copied":"Copied!","common.coming_soon":"Coming Soon","common.more_details":"More Details","common.close":"Close","common.close_toast":"Close toast","common.loading":"Loading","common.price":"Price","common.articles":"Articles","common.most_popular":"Most Popular","common.market_cap":"Market Cap","common.volume":"Volume","common.volume_frequency":"Volume {{frequency}}","common.value":"Value","common.last_n_days":"Last {{count}} Days","common.details":"Details","common.view_all":"View All","common.view_more_on_polygonscan":"View More on Polygonscan","common.view_more_on_etherscan":"View More on Etherscan","common.view_nft_on_etherscan":"View NFT on Etherscan","common.view_nft_on_polygonscan":"View NFT on Polygonscan","common.view_nft_on_goerli_tesnet":"View NFT on Goerli Testnet Explorer","common.view_nft_on_mumbai_tesnet":"View NFT on Mumbai Testnet Explorer","common.polygonscan":"Polygonscan","common.etherscan":"Etherscan","common.featured":"Featured","common.floor_price":"Floor Price","common.floor":"Floor","common.supply":"Supply","common.owners":"Owners","common.created":"Created","common.nft":"NFT","common.collection":"Collection","common.collections":"Collections","common.gallery":"Gallery","common.basic_gallery":"Basic Gallery","common.gallery_name":"Gallery Name","common.create_gallery":"Create Gallery","common.external_link":"External Link","common.follow_link":"Follow Link","common.cover":"Cover","common.template":"Template","common.page":"Page","common.polygon":"Polygon","common.ethereum":"Ethereum","common.mumbai":"Mumbai","common.goerli":"Goerli","common.of":"of","common.pagination_input_placeholder":"Enter the page number","common.pagination_input_placeholder_mobile":"Page number","common.nft_count":"{0} {{count}} NFTs|{1} {{count}} NFT|[2,*] {{count}} NFTs","common.nft_gallery":"NFT Gallery","common.unable_to_retrieve_image":"Unable to retrieve your NFT image at this time","common.optional":"Optional","common.selected":"Selected","common.select":"Select","common.preview":"Preview","common.image_size_error":"Image size must not exceed 2MB","common.image_dimensions_error":"Image dimensions must exceed 287px x 190px","common.write_to_confirm":"Write {{word}} to confirm","common.n_hours":"{0} {{count}} hour|{1} {{count}} hour|[2,*] {{count}} hours","common.n_minutes":"{0} {{count}} minute|{1} {{count}} minute|[2,*] {{count}} minutes","common.report":"Report","common.nfts":"NFTs","common.n_nfts":"{0}NFTs|{1}NFT|[2,*]NFTs","common.n_collections":"{0}collections|{1}collection|[2,*]collections","common.back":"Back","common.back_to":"Back to","common.name":"Name","common.type":"Type","common.from":"From","common.to":"To","common.sale_price":"Sale Price","common.recent_activity":"Recent Activity","common.time":"Time","common.datetime.few_seconds_ago":"A few seconds ago","common.datetime.minutes_ago":"{0} Less than a minute ago|{1} A minute ago|[2,*] {{count}} minutes ago","common.datetime.hours_ago":"{0} Less than an hour ago|{1} An hour ago|[2,*] {{count}} hours ago","common.datetime.days_ago":"{0} Less than a day ago|{1} A day ago|[2,*] {{count}} days ago","common.datetime.weeks_ago":"{0} Less than a week ago|{1} A week ago|[2,*] {{count}} weeks ago","common.datetime.months_ago":"{0} Less than a month ago|{1} A month ago|[2,*] {{count}} months ago","common.datetime.years_ago":"{0} Less than a year ago|{1} A year ago|[2,*] {{count}} years ago","common.no_traits_found":"No traits found.","common.empty_transactions":"You don't have any transactions yet. Once transactions have been made, they will show up here.","common.error":"Error","common.refresh":"Refresh","common.refresh_metadata":"Refresh Metadata","common.refreshing_metadata":"Refreshing Metadata... Please check back later.","common.refreshing_activity":"Refreshing Activity... Please check back later.","common.pending_confirmation":"Pending Confirmation","common.confirmed_transaction":"Confirmed Transaction","common.transaction_error":"Transaction Error","common.transaction_error_description_first_part":"Your transaction encountered an error. View this transaction on","common.transaction_error_description_second_part":"for more details.","common.home":"Home","common.contact":"Contact","common.menu":"Menu","common.website":"Website","common.twitter":"Twitter","common.discord":"Discord","common.facebook":"Facebook","common.reddit":"Reddit","common.x":"X","common.sort":"Sort","common.drafts":"Drafts","common.draft":"Draft","common.delete_draft":"Delete Draft","common.share_on":"Share on {{platform}}","common.top":"Top","common.all_chains":"All chains","common.votes":"Votes","footer.copyright":"{{year}} © Dashbrd. All rights reserved.","footer.all_rights_reserved":"All rights reserved","footer.privacy_policy":"Privacy Policy","footer.terms_of_service":"Terms of Service","footer.powered_by":"Powered by","format.fiat":"{{ value, currency }}","format.number":"{{ value, number }}","metatags.home.title":"Dashbrd | Web3 Portfolio Management Made Simple","metatags.home.description":"Simplify your Web3 journey with Dashbrd. Manage your portfolio of tokens, NFTs, and other digital collectibles across the Ethereum and Polygon blockchains.","metatags.home.image":"/images/meta/home.png","metatags.error.title":"Error {{code}} | Dashbrd","metatags.wallet.title":"My Wallet | Dashbrd","metatags.galleries.title":"Top NFT Galleries | Dashbrd","metatags.galleries.image":"/images/meta/nft-galleries.png","metatags.galleries.description":"Explore user published NFT galleries to find custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.most_popular.title":"Most Popular Galleries | Dashbrd","metatags.galleries.most_popular.image":"/images/meta/most-popular-nft-galleries.png","metatags.galleries.most_popular.description":"Explore and discover Most Popular NFT Galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.newest.title":"Newest Galleries | Dashbrd","metatags.galleries.newest.image":"/images/meta/newest-nft-galleries.png","metatags.galleries.newest.description":"Explore and discover most recent NFT galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More","metatags.galleries.most_valuable.title":"Most Valuable Galleries | Dashbrd","metatags.galleries.most_valuable.image":"/images/meta/most-valuable-nft-galleries.png","metatags.galleries.most_valuable.description":"Explore and discover Most Valuable NFT Galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.view.title":"{{name}} | Dashbrd","metatags.galleries.view.description":"{{name}} | A Curated NFT Gallery at Dashbrd","metatags.galleries.view.image":"/images/meta/nft-gallery.png","metatags.my_galleries.title":"My Galleries | Dashbrd","metatags.my_galleries.title_draft":"My Draft Galleries | Dashbrd","metatags.my_galleries.create.title":"Create Gallery | Dashbrd","metatags.my_galleries.edit.title":"Edit {{name}} | Dashbrd","metatags.collections.title":"Collections | Dashbrd","metatags.collections.view.title":"{{name}} Collection | Dashbrd","metatags.collections.view.description":"Immerse yourself in the intricate details of {{name}} collection, featuring remarkable digital assets. Start your NFT journey today!","metatags.collections.view.image":"/images/meta/nft-collection.png","metatags.my-collections.title":"My Collections | Dashbrd","metatags.nfts.view.title":"{{nft}} NFT | Dashbrd","metatags.nfts.view.description":"Uncover the complete story of {{nft}} NFT from the {{collection}} collection, delving into its unique attributes and distinctive features.","metatags.nfts.view.image":"/images/meta/nft-details.png","metatags.settings.title":"Settings | Dashbrd","metatags.articles.title":"Articles | Dashbrd","metatags.articles.view.title":"{{title}} | Dashbrd","metatags.login.title":"Login | Dashbrd","metatags.privacy_policy.title":"Privacy Policy | Dashbrd","metatags.privacy_policy.description":"Dashbrd’s privacy policy outlines the information we collect and explains your choices surrounding how we use information about you.","metatags.terms_of_service.title":"Terms of Service | Dashbrd","metatags.terms_of_service.description":"These Terms of Service cover your use and access to services, products or websites of Dashbrd.","metatags.cookie_policy.title":"Cookie Policy | Dashbrd","metatags.cookie_policy.description":"Dashbrd uses cookies to make the website more user-friendly. Find out about the main types of cookies we use, and what we use them for.","metatags.welcome.title":"Welcome to Dashbrd | Web3 Simplified","pages.onboarding.title":"Get Started","pages.onboarding.heading":"Your monkeys were bored and ran off, we are trying to round them up.","pages.onboarding.message":"We are setting up your account. This process usually takes just a few minutes, but can take up to 15 minutes.","pages.error.heading":"Oops, something went wrong ...","pages.error.message":"Please try again or get in touch if the issue persists.","pages.maintenance.title":"Dashbrd is currently down for scheduled maintenance.","pages.maintenance.description":"We expect to be back soon. Thanks for your patience.","pages.dashboard.title":"My Wallet","pages.dashboard.breakdown.title":"Portfolio Breakdown","pages.dashboard.line_chart.data_error":"Could not load chart data","pages.articles.title":"Articles","pages.articles.featured_collections":"Featured Collections","pages.articles.placeholder_more_soon":"More Soon","pages.articles.no_articles":"No articles have been published yet. Please check back later!","pages.articles.header_title":"Explore our collection of","pages.articles.header_suffix_one":"published article","pages.articles.header_suffix_other":"published articles","pages.articles.audio_version":"Audio version","pages.articles.consists_of_collections":"{0} This article highlights {{count}} collections|{1} This article highlights {{count}} collection|[2,*] This article highlights {{count}} collections","pages.collections.title":"Collections","pages.collections.collections":"Collections","pages.collections.popular_collections":"Popular Collections","pages.collections.collection_value":"Collection Value","pages.collections.nfts_owned":"NFTs Owned","pages.collections.header_title":"You own <0>{{nftsCount}} {{nfts}} across <0>{{collectionsCount}} {{collections}}, worth about <0><1>{{worth}}","pages.collections.search_placeholder":"Search by Collection","pages.collections.properties":"Properties","pages.collections.collections_network":"Collections Network","pages.collections.property_search_placeholder":"Feature Search","pages.collections.floor_price":"Floor Price","pages.collections.value":"Value","pages.collections.rarity":"Rarity","pages.collections.report":"Report","pages.collections.hide_collection":"Hide Collection","pages.collections.unhide_collection":"Unhide Collection","pages.collections.no_collections":"You do not own any NFTs yet. Once you do they will be shown here.","pages.collections.all_collections_hidden":"You have hidden all your collections. Unhide and they will appear here.","pages.collections.about_collection":"About Collection","pages.collections.show_hidden":"Show Hidden","pages.collections.show_my_collection":"Show My Collection","pages.collections.owned":"Owned","pages.collections.activities.loading_activities":"We're fetching Activity for this NFT, please hang tight, this can take a while.","pages.collections.activities.loading_activities_collection":"We're fetching Activity for this collection, please hang tight, this can take a while.","pages.collections.activities.ignores_activities":"We don't support activity history for this collection yet.","pages.collections.activities.no_activity":"This collection does not have any activity yet.","pages.collections.activities.types.LABEL_MINT":"Mint","pages.collections.activities.types.LABEL_TRANSFER":"Transfer","pages.collections.activities.types.LABEL_SALE":"Sale","pages.collections.activities.types.LABEL_BURN":"Burn","pages.collections.collection_of_the_month.winners_month":"Winners: {{month}}","pages.collections.collection_of_the_month.vote_for_next_months_winners":"Vote now for next month's winners","pages.collections.collection_of_the_month.view_previous_winners":"View Previous Winners","pages.collections.articles.no_articles":"No articles have been linked to this collection as of now.","pages.collections.articles.no_articles_with_filters":"We could not find any articles matching your search criteria, please try again!","pages.collections.articles.search_placeholder":"Search in Articles","pages.collections.articles.sort_latest":"Latest","pages.collections.articles.sort_popularity":"Most Popular","pages.collections.search.loading_results":"Loading results...","pages.collections.search.no_results":"We could not find anything matching your search criteria, please try again!","pages.collections.search.no_results_with_filters":"We could not find anything matching your filters, please try again!","pages.collections.search.no_results_ownership":"You do not own any NFTs in this collection","pages.collections.search.error":"Could not load search results. Please try again later.","pages.collections.vote.vote_for_top_collection":"Vote for Top Collection of the Month","pages.collections.vote.vote":"Vote","pages.collections.vote.time_left":"Time Left","pages.collections.vote.or_nominate_collection":"Or nominate a collection","pages.collections.sorting.token_number":"Token Number","pages.collections.sorting.recently_received":"Recently Received","pages.collections.sorting.recently_created":"Recently Created","pages.collections.sorting.oldest_collection":"Oldest Collection","pages.collections.traits.description":"List of NFT traits by % of occurrence in the collection","pages.collections.traits.no_traits":"No Properties can be found for this NFT","pages.collections.menu.collection":"Collection","pages.collections.menu.articles":"Articles","pages.collections.menu.activity":"Activity","pages.collections.hidden_modal.collection_hidden":"Collection Hidden","pages.collections.hidden_modal.description":"This collection is currently set to Hidden. Are you sure you want to unhide this collection? You can\n reset the collection to hidden from the collection menu.","pages.collections.hidden_modal.unhide":"Unhide","pages.collections.hidden_modal.error":"Something went wrong. Please try again.","pages.collections.external_modal.you_wish_continue":"You are about to leave Dashbrd to an external website. Dashbrd has no control over the content of\n this site. Are you sure you wish to continue?","pages.collections.external_modal.not_show":"Do not show this message again.","pages.collections.refresh.title":"Refresh your collection","pages.collections.refresh.notice":"You can refresh data every 15 minutes.","pages.collections.refresh.notice_wait":"Please wait. You can refresh data every 15 minutes.","pages.collections.refresh.toast":"We're updating information for your collection.","pages.collections.featured.title":"Featured Collections","pages.collections.featured.button":"Explore Collection","pages.nfts.nft":"nft","pages.nfts.about_nft":"About NFT","pages.nfts.owned_by":"Owned by","pages.nfts.collection_image":"collection image","pages.nfts.menu.properties":"Properties","pages.nfts.menu.activity":"Activity","pages.reports.title":"Submit a Report","pages.reports.description":"Thanks for looking out by reporting things that break the rules. Let us know what's happening and we'll receive the report.","pages.reports.success":"Thank you for your report. We'll review it and see if it breaks our ToS.","pages.reports.failed":"Something went wrong. Please try again.","pages.reports.throttle":"You have made too many requests. Please wait {{time}} before reporting again.","pages.reports.reported":"You have already reported this {{model}}.","pages.reports.reasons.spam":"Spam","pages.reports.reasons.violence":"Promoting Violence","pages.reports.reasons.hate":"Hate","pages.reports.reasons.inappropriate_content":"Inappropriate Content","pages.reports.reasons.impersonation":"Impersonation","pages.reports.reasons.trademark":"Trademark or Copyright","pages.reports.reasons.selfharm":"Self-Harm","pages.reports.reasons.harassment":"Harassment","pages.galleries.title":"Galleries","pages.galleries.empty_title":"No galleries have been published yet. Once they do they will appear here.","pages.galleries.search.loading_results":"Loading results...","pages.galleries.search.no_results":"We could not find anything matching your search criteria, please try again!","pages.galleries.search.placeholder":"Search by name or curator address","pages.galleries.search.placeholder_nfts":"Search by NFTs","pages.galleries.search.error":"Could not load search results. Please try again later.","pages.galleries.my_galleries.title":"My Galleries","pages.galleries.my_galleries.subtitle":"Manage your galleries","pages.galleries.my_galleries.new_gallery":"New Gallery","pages.galleries.my_galleries.no_galleries":"You have not created any galleries yet. To create a gallery, click on the \"Create Gallery\" button.","pages.galleries.my_galleries.no_available_collections":"You have hidden all your collections. If you want to create a gallery, make sure you have at least 1 collection available.","pages.galleries.my_galleries.no_draft_galleries":"You have no draft galleries yet. To create a gallery, click on the \"Create Gallery\" button.","pages.galleries.my_galleries.succesfully_deleted":"Gallery has been successfully removed","pages.galleries.my_galleries.draft_succesfully_deleted":"Draft has been successfully removed","pages.galleries.my_galleries.successfully_created":"Gallery has been successfully created","pages.galleries.my_galleries.successfully_updated":"Gallery has been successfully updated","pages.galleries.my_galleries.new_gallery_no_nfts":"Creating a Gallery requires you to own an NFT.","pages.galleries.my_galleries.new_gallery_all_collections_hidden":"Creating a Gallery requires you to have at least 1 collection available.","pages.galleries.my_galleries.delete_modal.title":"Delete Draft","pages.galleries.my_galleries.delete_modal.text":"Are you sure you want to delete the draft? Everything you've done will be deleted and you won't be able to get it back.","pages.galleries.my_galleries.nfts_no_longer_owned":"NFTs no longer owned by this wallet have been removed from the draft”","pages.galleries.copy_gallery_link":"Copy Gallery Link","pages.galleries.my_nfts":"My NFTs","pages.galleries.show_hidden_collections":"Show hidden collections","pages.galleries.value":"Value","pages.galleries.floor_price":"Floor Price","pages.galleries.nfts":"NFTs","pages.galleries.collections":"Collections","pages.galleries.galleries_count_simple":"{0} galleries|{1} gallery|[2,*] galleries","pages.galleries.galleries_count":"{0} {{count}} Galleries|{1} {{count}} Gallery|[2,*] {{count}} Galleries","pages.galleries.collections_count_simple":"{0} collections|{1} collection|[2,*] collections","pages.galleries.collections_count":"{0} {{count}} Collections|{1} {{count}} Collection|[2,*] {{count}} Collections","pages.galleries.nfts_count_simple":"{0} NFTs|{1} NFT|[2,*] NFTs","pages.galleries.nfts_count":"{0} {{count}} NFTs|{1} {{count}} NFT|[2,*] {{count}} NFTs","pages.galleries.users_count_simple":"{0} users|{1} user|[2,*] users","pages.galleries.users_count":"{0} {{count}} Users|{1} {{count}} User|[2,*] {{count}} Users","pages.galleries.featuring":"Featuring","pages.galleries.curated_by":"Curated by","pages.galleries.worth_about":"Worth About","pages.galleries.valued_at":"valued at","pages.galleries.from":"From","pages.galleries.most_popular_galleries":"Most Popular Galleries","pages.galleries.newest_galleries":"Newest Galleries","pages.galleries.most_valuable_galleries":"Most Valuable Galleries","pages.galleries.most_popular":"Most Popular","pages.galleries.newest":"Newest","pages.galleries.most_valuable":"Most Valuable","pages.galleries.create.search_by_nfts":"Search by NFTs","pages.galleries.create.input_placeholder":"Enter gallery name","pages.galleries.create.title_too_long":"Gallery name must not exceed {{max}} characters.","pages.galleries.create.already_selected_nft":"NFT already exists in this gallery","pages.galleries.create.nft_missing_image":"Only NFTs with images can be added to galleries","pages.galleries.create.nft_gallery_limit":"You can only add 16 NFTs per gallery","pages.galleries.create.gallery_cover":"Gallery Cover","pages.galleries.create.gallery_cover_description":"The cover is used for the card on the gallery list page. While the cover is not a requirement it will allow you to add personality and stand out from the crowd.","pages.galleries.create.gallery_cover_information":"Image dimensions must be at least 287px x 190px, with a max size of 2 MB (JPG, PNG or GIF)","pages.galleries.create.no_results":"We could not find anything matching your search criteria, please try again!","pages.galleries.create.templates.cover":"Cover","pages.galleries.create.templates.template":"Template","pages.galleries.create.templates.select":"Select Gallery Template","pages.galleries.create.templates.basic":"Basic Gallery","pages.galleries.create.templates.coming_soon":"More Coming Soon","pages.galleries.create.load_more_collections_one":"Load {{count}} More Collection","pages.galleries.create.load_more_collections_other":"Load {{count}} More Collections","pages.galleries.create.load_more_nfts":"Load More NFTs","pages.galleries.create.can_purchase":"You can purchase NFTs with these top NFT Marketplaces:","pages.galleries.create.must_own_one_nft":"You must own at least one (1) NFT in order to create a gallery.","pages.galleries.create.back_to_galleries":"Back to Galleries","pages.galleries.create.draft_saved":"Draft Saved","pages.galleries.create.saving_to_draft":"Saving to draft","pages.galleries.create.drafts_limit_modal_title":"Draft Gallery Limit","pages.galleries.create.drafts_limit_modal_message":"You’ve hit your limit for draft galleries. While you can still make new galleries and publish them, they won’t be saved as drafts. To Free up space, you can either delete existing drafts or publish them.","pages.galleries.create.drafts_limit_modal_cancel":"Go to Drafts","pages.galleries.delete_modal.title":"Delete Gallery","pages.galleries.delete_modal.confirmation_text":"Are you sure you want to delete the gallery? Deleting a Gallery is permanent, all associated views and likes will be lost.","pages.galleries.consists_of_collections":"{0} This gallery consists of {{count}} collections|{1} This gallery consists of {{count}} collection|[2,*] This gallery consists of {{count}} collections","pages.galleries.guest_banner.title":"Craft the ultimate","pages.galleries.guest_banner.subtitle":"Pick your favorites, curate your gallery, & share it with the world.","pages.profile.title":"Profile","pages.token_panel.balance_tooltip":"Total percentage of the portfolio held in this token","pages.token_panel.insufficient_funds":"Insufficient Balance","pages.token_panel.error":"Dashbrd has failed to load token information. Please try again later.","pages.token_panel.failed_to_retrieve_transactions":"We were unable to fetch your transactions.","pages.token_panel.tabs.transaction_history":"Transaction History","pages.token_panel.tabs.history":"History","pages.token_panel.tabs.market_data":"Market Data","pages.token_panel.details.current_price":"Current Price","pages.token_panel.details.title":"Token Details","pages.token_panel.details.market_cap":"Market Cap","pages.token_panel.details.volume":"Daily Volume","pages.token_panel.details.supply":"Minted Supply","pages.token_panel.details.ath":"All-Time High","pages.token_panel.details.atl":"All-Time Low","pages.token_panel.chart.failed":"Dashbrd has failed to load chart information. Please try again later.","pages.transaction_details_panel.title":"Transaction Details","pages.transaction_details_panel.details.blockchain":"Blockchain","pages.transaction_details_panel.details.timestamp":"Timestamp","pages.transaction_details_panel.details.transaction_hash":"Transaction Hash","pages.transaction_details_panel.details.transaction_fee":"Transaction Fee","pages.transaction_details_panel.details.gas_price":"Gas Price","pages.transaction_details_panel.details.gas_used":"Gas Used","pages.transaction_details_panel.details.nonce":"Nonce","pages.send_receive_panel.send.labels.token_and_amount":"Token and Amount","pages.send_receive_panel.send.labels.destination_address":"Destination Address","pages.send_receive_panel.send.labels.projected_fee":"Projected Fee","pages.send_receive_panel.send.placeholders.enter_amount":"Enter Amount","pages.send_receive_panel.send.placeholders.insert_recipient_address":"Insert Recipient Address","pages.send_receive_panel.send.placeholders.projected_fee":"Projected Fee","pages.send_receive_panel.send.errors.amount":"Insufficient Funds: You do not have enough to cover the amount + fee.","pages.send_receive_panel.send.errors.destination":"Destination address is not correct. Check and input again.","pages.send_receive_panel.send.hints.token_price":"Token Price","pages.send_receive_panel.send.fees.Fast":"Fast","pages.send_receive_panel.send.fees.Avg":"Avg","pages.send_receive_panel.send.fees.Slow":"Slow","pages.send_receive_panel.send.search_dropdown.placeholder":"Search token","pages.send_receive_panel.send.search_dropdown.no_results":"No Results","pages.send_receive_panel.send.search_dropdown.error":"Error occurred while searching tokens.","pages.send_receive_panel.send.transaction_time":"Transaction Time: ~{{ time }} minutes","pages.send_receive_panel.send.from":"From","pages.send_receive_panel.send.to":"To","pages.send_receive_panel.send.amount":"Amount","pages.send_receive_panel.send.fee":"Fee","pages.send_receive_panel.send.total_amount":"Total Amount","pages.send_receive_panel.send.waiting_message":"Review and verify the information on your MetaMask. Sign to send the transaction.","pages.send_receive_panel.send.waiting_spinner_text":"Waiting for confirmation...","pages.send_receive_panel.send.failed_message":"It looks like something went wrong while sending your transaction. Press 'Retry' to make another attempt.","pages.send_receive_panel.receive.alert":"Send only Polygon or Ethereum Network compatible tokens to this address or you could permanently lose your funds!","pages.settings.title":"Settings","pages.settings.sidebar.general":"General","pages.settings.sidebar.notifications":"Notifications","pages.settings.sidebar.session_history":"Sessions History","pages.settings.general.title":"Settings","pages.settings.general.subtitle":"Customize your App Experience","pages.settings.general.currency":"Currency","pages.settings.general.currency_subtitle":"Select your default currency which will be used throughout the app.","pages.settings.general.time_date":"Time & Date","pages.settings.general.time_date_subtitle":"Select how you want time and date be shown inside app.","pages.settings.general.date_format":"Date Format","pages.settings.general.time_format":"Time Format","pages.settings.general.timezone":"Timezone","pages.settings.general.set_defaults":"Set Defaults","pages.settings.general.set_defaults_content":"Reverting to the default settings will remove any customizations previously made. Are you sure?","pages.settings.general.save":"Save Settings","pages.settings.general.saved":"Your settings have been successfully saved","pages.wallet.title":"Wallet","pages.privacy_policy.title":"Privacy Policy","pages.terms_of_service.title":"Terms of Service","pagination.previous":"« Previous","pagination.next":"Next »","passwords.reset":"Your password has been reset!","passwords.sent":"We have emailed your password reset link!","passwords.throttled":"Please wait before retrying.","passwords.token":"This password reset token is invalid.","passwords.user":"We can't find a user with that email address.","urls.landing":"https://dashbrd.com","urls.cookie_policy":"https://dashbrd.com/cookie-policy","urls.privacy_policy":"https://dashbrd.com/privacy-policy","urls.terms_of_service":"https://dashbrd.com/terms-of-service","urls.twitter":"https://x.com/DashbrdApp","urls.discord":"https://discord.gg/MJyWKkCJ5k","urls.github":"https://github.com/ArdentHQ/dashbrd","urls.coingecko":"https://www.coingecko.com","urls.etherscan":"https://etherscan.io","urls.polygonscan":"https://polygonscan.com","urls.alchemy":"https://www.alchemy.com","urls.moralis":"https://moralis.io","urls.mnemonic":"https://www.mnemonichq.com","urls.opensea":"https://opensea.io/","urls.explorers.etherscan.token_transactions":"https://etherscan.io/token/{{token}}?a={{address}}","urls.explorers.etherscan.addresses":"https://etherscan.io/address/{{address}}","urls.explorers.etherscan.transactions":"https://etherscan.io/tx/{{id}}","urls.explorers.etherscan.nft":"https://etherscan.io/nft/{{address}}/{{nftId}}","urls.explorers.polygonscan.token_transactions":"https://polygonscan.com/token/{{token}}?a={{address}}","urls.explorers.polygonscan.addresses":"https://polygonscan.com/address/{{address}}","urls.explorers.polygonscan.transactions":"https://polygonscan.com/tx/{{id}}","urls.explorers.polygonscan.nft":"https://polygonscan.com/nft/{{address}}/{{nftId}}","urls.explorers.mumbai.token_transactions":"https://mumbai.polygonscan.com/token/{{token}}?a={{address}}","urls.explorers.mumbai.addresses":"https://mumbai.polygonscan.com/address/{{address}}","urls.explorers.mumbai.transactions":"https://mumbai.polygonscan.com/tx/{{id}}","urls.explorers.mumbai.nft":"https://mumbai.polygonscan.com/nft/{{address}}/{{nftId}}","urls.explorers.goerli.token_transactions":"https://goerli.etherscan.io/token/{{token}}?a={{address}}","urls.explorers.goerli.addresses":"https://goerli.etherscan.io/address/{{address}}","urls.explorers.goerli.transactions":"https://goerli.etherscan.io/tx/{{id}}","urls.explorers.goerli.nft":"https://goerli.etherscan.io/nft/{{address}}/{{nftId}}","urls.marketplaces.opensea.collection":"https://opensea.io/assets/{{network}}/{{address}}","urls.marketplaces.opensea.nft":"https://opensea.io/assets/{{network}}/{{address}}/{{nftId}}","urls.marketplaces.rarible.collection":"https://rarible.com/collection/{{address}}/items","urls.marketplaces.rarible.nft":"https://rarible.com/token/{{address}}:{{nftId}}","urls.marketplaces.blur.collection":"https://blur.io/collection/{{address}}","urls.marketplaces.blur.nft":"https://blur.io/asset/{{address}}/{{nftId}}","urls.marketplaces.looksrare.collection":"https://looksrare.org/collections/{{address}}","urls.marketplaces.looksrare.nft":"https://looksrare.org/collections/{{address}}/{{nftId}}","validation.accepted":"The {{attribute}} must be accepted.","validation.accepted_if":"The {{attribute}} must be accepted when {{other}} is {{value}}.","validation.active_url":"The {{attribute}} is not a valid URL.","validation.after":"The {{attribute}} must be a date after {{date}}.","validation.after_or_equal":"The {{attribute}} must be a date after or equal to {{date}}.","validation.alpha":"The {{attribute}} must only contain letters.","validation.alpha_dash":"The {{attribute}} must only contain letters, numbers, dashes and underscores.","validation.alpha_num":"The {{attribute}} must only contain letters and numbers.","validation.array":"The {{attribute}} must be an array.","validation.ascii":"The {{attribute}} must only contain single-byte alphanumeric characters and symbols.","validation.before":"The {{attribute}} must be a date before {{date}}.","validation.before_or_equal":"The {{attribute}} must be a date before or equal to {{date}}.","validation.between.array":"The {{attribute}} must have between {{min}} and {{max}} items.","validation.between.file":"The {{attribute}} must be between {{min}} and {{max}} kilobytes.","validation.between.numeric":"The {{attribute}} must be between {{min}} and {{max}}.","validation.between.string":"The {{attribute}} must be between {{min}} and {{max}} characters.","validation.boolean":"The {{attribute}} field must be true or false.","validation.confirmed":"The {{attribute}} confirmation does not match.","validation.current_password":"The password is incorrect.","validation.date":"The {{attribute}} is not a valid date.","validation.date_equals":"The {{attribute}} must be a date equal to {{date}}.","validation.date_format":"The {{attribute}} does not match the format {{format}}.","validation.decimal":"The {{attribute}} must have {{decimal}} decimal places.","validation.declined":"The {{attribute}} must be declined.","validation.declined_if":"The {{attribute}} must be declined when {{other}} is {{value}}.","validation.different":"The {{attribute}} and {{other}} must be different.","validation.digits":"The {{attribute}} must be {{digits}} digits.","validation.digits_between":"The {{attribute}} must be between {{min}} and {{max}} digits.","validation.dimensions":"The {{attribute}} has invalid image dimensions.","validation.distinct":"The {{attribute}} field has a duplicate value.","validation.doesnt_end_with":"The {{attribute}} may not end with one of the following: {{values}}.","validation.doesnt_start_with":"The {{attribute}} may not start with one of the following: {{values}}.","validation.email":"The {{attribute}} must be a valid email address.","validation.ends_with":"The {{attribute}} must end with one of the following: {{values}}.","validation.enum":"The selected {{attribute}} is invalid.","validation.exists":"The selected {{attribute}} is invalid.","validation.file":"The {{attribute}} must be a file.","validation.filled":"The {{attribute}} field must have a value.","validation.gt.array":"The {{attribute}} must have more than {{value}} items.","validation.gt.file":"The {{attribute}} must be greater than {{value}} kilobytes.","validation.gt.numeric":"The {{attribute}} must be greater than {{value}}.","validation.gt.string":"The {{attribute}} must be greater than {{value}} characters.","validation.gte.array":"The {{attribute}} must have {{value}} items or more.","validation.gte.file":"The {{attribute}} must be greater than or equal to {{value}} kilobytes.","validation.gte.numeric":"The {{attribute}} must be greater than or equal to {{value}}.","validation.gte.string":"The {{attribute}} must be greater than or equal to {{value}} characters.","validation.image":"The {{attribute}} must be an image.","validation.in":"The selected {{attribute}} is invalid.","validation.in_array":"The {{attribute}} field does not exist in {{other}}.","validation.integer":"The {{attribute}} must be an integer.","validation.ip":"The {{attribute}} must be a valid IP address.","validation.ipv4":"The {{attribute}} must be a valid IPv4 address.","validation.ipv6":"The {{attribute}} must be a valid IPv6 address.","validation.json":"The {{attribute}} must be a valid JSON string.","validation.lowercase":"The {{attribute}} must be lowercase.","validation.lt.array":"The {{attribute}} must have less than {{value}} items.","validation.lt.file":"The {{attribute}} must be less than {{value}} kilobytes.","validation.lt.numeric":"The {{attribute}} must be less than {{value}}.","validation.lt.string":"The {{attribute}} must be less than {{value}} characters.","validation.lte.array":"The {{attribute}} must not have more than {{value}} items.","validation.lte.file":"The {{attribute}} must be less than or equal to {{value}} kilobytes.","validation.lte.numeric":"The {{attribute}} must be less than or equal to {{value}}.","validation.lte.string":"The {{attribute}} must be less than or equal to {{value}} characters.","validation.mac_address":"The {{attribute}} must be a valid MAC address.","validation.max.array":"The {{attribute}} must not have more than {{max}} items.","validation.max.file":"The {{attribute}} must not be greater than {{max}} kilobytes.","validation.max.numeric":"The {{attribute}} must not be greater than {{max}}.","validation.max.string":"The {{attribute}} must not be greater than {{max}} characters.","validation.max_digits":"The {{attribute}} must not have more than {{max}} digits.","validation.mimes":"The {{attribute}} must be a file of type: {{values}}.","validation.mimetypes":"The {{attribute}} must be a file of type: {{values}}.","validation.min.array":"The {{attribute}} must have at least {{min}} items.","validation.min.file":"The {{attribute}} must be at least {{min}} kilobytes.","validation.min.numeric":"The {{attribute}} must be at least {{min}}.","validation.min.string":"The {{attribute}} must be at least {{min}} characters.","validation.min_digits":"The {{attribute}} must have at least {{min}} digits.","validation.missing":"The {{attribute}} field must be missing.","validation.missing_if":"The {{attribute}} field must be missing when {{other}} is {{value}}.","validation.missing_unless":"The {{attribute}} field must be missing unless {{other}} is {{value}}.","validation.missing_with":"The {{attribute}} field must be missing when {{values}} is present.","validation.missing_with_all":"The {{attribute}} field must be missing when {{values}} are present.","validation.multiple_of":"The {{attribute}} must be a multiple of {{value}}.","validation.not_in":"The selected {{attribute}} is invalid.","validation.not_regex":"The {{attribute}} format is invalid.","validation.numeric":"The {{attribute}} must be a number.","validation.password.letters":"The {{attribute}} must contain at least one letter.","validation.password.mixed":"The {{attribute}} must contain at least one uppercase and one lowercase letter.","validation.password.numbers":"The {{attribute}} must contain at least one number.","validation.password.symbols":"The {{attribute}} must contain at least one symbol.","validation.password.uncompromised":"The given {{attribute}} has appeared in a data leak. Please choose a different {{attribute}}.","validation.present":"The {{attribute}} field must be present.","validation.prohibited":"The {{attribute}} field is prohibited.","validation.prohibited_if":"The {{attribute}} field is prohibited when {{other}} is {{value}}.","validation.prohibited_unless":"The {{attribute}} field is prohibited unless {{other}} is in {{values}}.","validation.prohibits":"The {{attribute}} field prohibits {{other}} from being present.","validation.regex":"The {{attribute}} format is invalid.","validation.required":"The {{attribute}} field is required.","validation.required_array_keys":"The {{attribute}} field must contain entries for: {{values}}.","validation.required_if":"The {{attribute}} field is required when {{other}} is {{value}}.","validation.required_if_accepted":"The {{attribute}} field is required when {{other}} is accepted.","validation.required_unless":"The {{attribute}} field is required unless {{other}} is in {{values}}.","validation.required_with":"The {{attribute}} field is required when {{values}} is present.","validation.required_with_all":"The {{attribute}} field is required when {{values}} are present.","validation.required_without":"The {{attribute}} field is required when {{values}} is not present.","validation.required_without_all":"The {{attribute}} field is required when none of {{values}} are present.","validation.same":"The {{attribute}} and {{other}} must match.","validation.size.array":"The {{attribute}} must contain {{size}} items.","validation.size.file":"The {{attribute}} must be {{size}} kilobytes.","validation.size.numeric":"The {{attribute}} must be {{size}}.","validation.size.string":"The {{attribute}} must be {{size}} characters.","validation.starts_with":"The {{attribute}} must start with one of the following: {{values}}.","validation.string":"The {{attribute}} must be a string.","validation.timezone":"The {{attribute}} must be a valid timezone.","validation.unique":"The {{attribute}} has already been taken.","validation.uploaded":"The {{attribute}} failed to upload.","validation.uppercase":"The {{attribute}} must be uppercase.","validation.url":"The {{attribute}} must be a valid URL.","validation.ulid":"The {{attribute}} must be a valid ULID.","validation.uuid":"The {{attribute}} must be a valid UUID.","validation.custom.attribute-name.rule-name":"custom-message","validation.unsupported_currency_code":"The currency code you provided is invalid or not supported.","validation.unsupported_period":"The period you provided is invalid or not supported.","validation.unsupported_token_symbol":"The token symbol you provided is invalid or not supported.","validation.gallery_title_required":"Gallery name is required.","validation.gallery_title_max_characters":"The gallery name should not exceed 50 characters.","validation.gallery_title_invalid":"The gallery name is invalid.","validation.nfts_required":"Please add at least one NFT.","validation.nfts_max_size":"Galleries can contain no more than {{limit}} NFTs","validation.invalid_nfts":"The NFT in position {{position}} is invalid, please select another one.","validation.invalid_cover":"You have selected an invalid cover image, please try another one."} \ No newline at end of file +{"auth.welcome":"Welcome to Dashbrd","auth.logged_in":"You're logged in!","auth.log_out":"Log out","auth.failed":"These credentials do not match our records.","auth.session_timeout":"Your session has timed out. Please refresh the page and try connecting your account again.","auth.session_timeout_modal":"Seems like your session has timed out. Please connnect your wallet again.","auth.password":"The provided password is incorrect.","auth.throttle":"Too many login attempts. Please try again in {{seconds}} seconds.","auth.wallet.connecting":"Connecting …","auth.wallet.waiting_for_signature":"Waiting for Signature …","auth.wallet.switching_wallet":"Switching Wallet …","auth.wallet.connect":"Connect Wallet","auth.wallet.connect_long":"Connect Your Wallet to Get Started","auth.wallet.sign_subtitle":"Connect Your Wallet to Continue","auth.wallet.disconnect":"Disconnect Wallet","auth.wallet.install":"Install MetaMask","auth.wallet.install_long":"Install MetaMask to Get Started","auth.wallet.sign":"Sign Message","auth.wallet.sign_message":"Welcome to Dashbrd. In order to login, sign this message with your wallet. It doesn't cost you anything!\n\nSigning ID (you can ignore this): {{nonce}}","auth.wallet.connect_subtitle":"Click on the MetaMask icon in your browser to confirm the action and connect your wallet.","auth.wallet.requires_signature":"In order to prevent impersonation, we require a signature to perform this action. This signature is only a signed message and does not give any access to your wallet.","auth.errors.metamask.no_account":"No account found. Please connect your wallet and try again.","auth.errors.metamask.generic":"Connection attempt error. Please retry and follow the steps to connect your wallet.","auth.errors.metamask.invalid_network":"Please switch to Polygon or Ethereum Mainnet in your MetaMask plugin to connect to Dashbrd.","auth.errors.metamask.provider_missing":"You don't have MetaMask installed in your browser. Please install and try again.","auth.errors.metamask.user_rejected":"It looks like you cancelled signing of the authentication message. Please try again.","auth.errors.metamask.provider_not_set":"Ethereum provider is not set","auth.validation.wallet_login_failed":"There was a problem trying to verify your signature. Please try again.","auth.validation.invalid_address":"Your wallet address is invalid. Please try again.","auth.validation.invalid_signature":"Signature is invalid. Please try again.","auth.validation.invalid_network":"Please switch to Polygon or Ethereum Mainnet in your MetaMask plugin to connect to Dashbrd.","common.author":"Author","common.add":"Add","common.amount":"Amount","common.balance":"Balance","common.cancel":"Cancel","common.delete":"Delete","common.edit":"Edit","common.confirm":"Confirm","common.connect":"Connect","common.continue":"Continue","common.done":"Done","common.filter":"Filter","common.items":"Items","common.receive":"Receive","common.received":"Received","common.retry":"Retry","common.records":"Records","common.save":"Save","common.send":"Send","common.sent":"Sent","common.show":"Show","common.searching":"Searching...","common.other":"Other","common.owned":"Owned","common.token":"Token","common.tokens":"Tokens","common.wallet":"Wallet","common.pending":"Pending","common.publish":"Publish","common.published":"Published","common.empty":"Empty","common.your_address":"Your Address","common.warning":"Warning","common.my_address":"My Address","common.my_wallet":"My Wallet","common.my_collections":"My Collections","common.my_balance":"My Balance","common.na":"N/A","common.simple_plural_without_data":"One comment|Many comments","common.simple_plural_with_data":"{{count}} comment|{{count}} comments","common.advanced_plural_without_data":"{0} no comments yet|{1} 1 comment|[2,*] Many comments","common.advanced_plural_with_data":"{0} no comments yet|{1} 1 comment|[2,*] {{count}} comments","common.copy_clipboard":"Copy to Clipboard","common.copy":"Copy","common.download":"Download","common.zoom":"Zoom","common.my_collection":"My Collection","common.max":"Max","common.chain":"Chain","common.copied":"Copied!","common.coming_soon":"Coming Soon","common.more_details":"More Details","common.close":"Close","common.close_toast":"Close toast","common.loading":"Loading","common.price":"Price","common.articles":"Articles","common.most_popular":"Most Popular","common.market_cap":"Market Cap","common.volume":"Volume","common.volume_frequency":"Volume {{frequency}}","common.value":"Value","common.last_n_days":"Last {{count}} Days","common.details":"Details","common.view_all":"View All","common.view_more_on_polygonscan":"View More on Polygonscan","common.view_more_on_etherscan":"View More on Etherscan","common.view_nft_on_etherscan":"View NFT on Etherscan","common.view_nft_on_polygonscan":"View NFT on Polygonscan","common.view_nft_on_goerli_tesnet":"View NFT on Goerli Testnet Explorer","common.view_nft_on_mumbai_tesnet":"View NFT on Mumbai Testnet Explorer","common.polygonscan":"Polygonscan","common.etherscan":"Etherscan","common.featured":"Featured","common.floor_price":"Floor Price","common.floor":"Floor","common.supply":"Supply","common.owners":"Owners","common.created":"Created","common.nft":"NFT","common.collection":"Collection","common.collections":"Collections","common.gallery":"Gallery","common.basic_gallery":"Basic Gallery","common.gallery_name":"Gallery Name","common.create_gallery":"Create Gallery","common.external_link":"External Link","common.follow_link":"Follow Link","common.cover":"Cover","common.template":"Template","common.page":"Page","common.polygon":"Polygon","common.ethereum":"Ethereum","common.mumbai":"Mumbai","common.goerli":"Goerli","common.of":"of","common.pagination_input_placeholder":"Enter the page number","common.pagination_input_placeholder_mobile":"Page number","common.nft_count":"{0} {{count}} NFTs|{1} {{count}} NFT|[2,*] {{count}} NFTs","common.nft_gallery":"NFT Gallery","common.unable_to_retrieve_image":"Unable to retrieve your NFT image at this time","common.optional":"Optional","common.selected":"Selected","common.select":"Select","common.preview":"Preview","common.image_size_error":"Image size must not exceed 2MB","common.image_dimensions_error":"Image dimensions must exceed 287px x 190px","common.write_to_confirm":"Write {{word}} to confirm","common.n_hours":"{0} {{count}} hour|{1} {{count}} hour|[2,*] {{count}} hours","common.n_minutes":"{0} {{count}} minute|{1} {{count}} minute|[2,*] {{count}} minutes","common.report":"Report","common.nfts":"NFTs","common.n_nfts":"{0}NFTs|{1}NFT|[2,*]NFTs","common.n_collections":"{0}collections|{1}collection|[2,*]collections","common.back":"Back","common.back_to":"Back to","common.name":"Name","common.type":"Type","common.from":"From","common.to":"To","common.sale_price":"Sale Price","common.recent_activity":"Recent Activity","common.time":"Time","common.datetime.few_seconds_ago":"A few seconds ago","common.datetime.minutes_ago":"{0} Less than a minute ago|{1} A minute ago|[2,*] {{count}} minutes ago","common.datetime.hours_ago":"{0} Less than an hour ago|{1} An hour ago|[2,*] {{count}} hours ago","common.datetime.days_ago":"{0} Less than a day ago|{1} A day ago|[2,*] {{count}} days ago","common.datetime.weeks_ago":"{0} Less than a week ago|{1} A week ago|[2,*] {{count}} weeks ago","common.datetime.months_ago":"{0} Less than a month ago|{1} A month ago|[2,*] {{count}} months ago","common.datetime.years_ago":"{0} Less than a year ago|{1} A year ago|[2,*] {{count}} years ago","common.no_traits_found":"No traits found.","common.empty_transactions":"You don't have any transactions yet. Once transactions have been made, they will show up here.","common.error":"Error","common.refresh":"Refresh","common.refresh_metadata":"Refresh Metadata","common.refreshing_metadata":"Refreshing Metadata... Please check back later.","common.refreshing_activity":"Refreshing Activity... Please check back later.","common.pending_confirmation":"Pending Confirmation","common.confirmed_transaction":"Confirmed Transaction","common.transaction_error":"Transaction Error","common.transaction_error_description_first_part":"Your transaction encountered an error. View this transaction on","common.transaction_error_description_second_part":"for more details.","common.home":"Home","common.contact":"Contact","common.menu":"Menu","common.website":"Website","common.twitter":"Twitter","common.discord":"Discord","common.facebook":"Facebook","common.reddit":"Reddit","common.x":"X","common.sort":"Sort","common.drafts":"Drafts","common.draft":"Draft","common.delete_draft":"Delete Draft","common.share_on":"Share on {{platform}}","common.top":"Top","common.all_chains":"All chains","common.votes":"Votes","footer.copyright":"{{year}} © Dashbrd. All rights reserved.","footer.all_rights_reserved":"All rights reserved","footer.privacy_policy":"Privacy Policy","footer.terms_of_service":"Terms of Service","footer.powered_by":"Powered by","format.fiat":"{{ value, currency }}","format.number":"{{ value, number }}","metatags.home.title":"Dashbrd | Web3 Portfolio Management Made Simple","metatags.home.description":"Simplify your Web3 journey with Dashbrd. Manage your portfolio of tokens, NFTs, and other digital collectibles across the Ethereum and Polygon blockchains.","metatags.home.image":"/images/meta/home.png","metatags.error.title":"Error {{code}} | Dashbrd","metatags.wallet.title":"My Wallet | Dashbrd","metatags.galleries.title":"Top NFT Galleries | Dashbrd","metatags.galleries.image":"/images/meta/nft-galleries.png","metatags.galleries.description":"Explore user published NFT galleries to find custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.most_popular.title":"Most Popular Galleries | Dashbrd","metatags.galleries.most_popular.image":"/images/meta/most-popular-nft-galleries.png","metatags.galleries.most_popular.description":"Explore and discover Most Popular NFT Galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.newest.title":"Newest Galleries | Dashbrd","metatags.galleries.newest.image":"/images/meta/newest-nft-galleries.png","metatags.galleries.newest.description":"Explore and discover most recent NFT galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More","metatags.galleries.most_valuable.title":"Most Valuable Galleries | Dashbrd","metatags.galleries.most_valuable.image":"/images/meta/most-valuable-nft-galleries.png","metatags.galleries.most_valuable.description":"Explore and discover Most Valuable NFT Galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.view.title":"{{name}} | Dashbrd","metatags.galleries.view.description":"{{name}} | A Curated NFT Gallery at Dashbrd","metatags.galleries.view.image":"/images/meta/nft-gallery.png","metatags.my_galleries.title":"My Galleries | Dashbrd","metatags.my_galleries.title_draft":"My Draft Galleries | Dashbrd","metatags.my_galleries.create.title":"Create Gallery | Dashbrd","metatags.my_galleries.edit.title":"Edit {{name}} | Dashbrd","metatags.collections.title":"Collections | Dashbrd","metatags.collections.view.title":"{{name}} Collection | Dashbrd","metatags.collections.view.description":"Immerse yourself in the intricate details of {{name}} collection, featuring remarkable digital assets. Start your NFT journey today!","metatags.collections.view.image":"/images/meta/nft-collection.png","metatags.my-collections.title":"My Collections | Dashbrd","metatags.nfts.view.title":"{{nft}} NFT | Dashbrd","metatags.nfts.view.description":"Uncover the complete story of {{nft}} NFT from the {{collection}} collection, delving into its unique attributes and distinctive features.","metatags.nfts.view.image":"/images/meta/nft-details.png","metatags.settings.title":"Settings | Dashbrd","metatags.articles.title":"Articles | Dashbrd","metatags.articles.view.title":"{{title}} | Dashbrd","metatags.login.title":"Login | Dashbrd","metatags.privacy_policy.title":"Privacy Policy | Dashbrd","metatags.privacy_policy.description":"Dashbrd’s privacy policy outlines the information we collect and explains your choices surrounding how we use information about you.","metatags.terms_of_service.title":"Terms of Service | Dashbrd","metatags.terms_of_service.description":"These Terms of Service cover your use and access to services, products or websites of Dashbrd.","metatags.cookie_policy.title":"Cookie Policy | Dashbrd","metatags.cookie_policy.description":"Dashbrd uses cookies to make the website more user-friendly. Find out about the main types of cookies we use, and what we use them for.","metatags.welcome.title":"Welcome to Dashbrd | Web3 Simplified","pages.onboarding.title":"Get Started","pages.onboarding.heading":"Your monkeys were bored and ran off, we are trying to round them up.","pages.onboarding.message":"We are setting up your account. This process usually takes just a few minutes, but can take up to 15 minutes.","pages.error.heading":"Oops, something went wrong ...","pages.error.message":"Please try again or get in touch if the issue persists.","pages.maintenance.title":"Dashbrd is currently down for scheduled maintenance.","pages.maintenance.description":"We expect to be back soon. Thanks for your patience.","pages.dashboard.title":"My Wallet","pages.dashboard.breakdown.title":"Portfolio Breakdown","pages.dashboard.line_chart.data_error":"Could not load chart data","pages.articles.title":"Articles","pages.articles.featured_collections":"Featured Collections","pages.articles.placeholder_more_soon":"More Soon","pages.articles.no_articles":"No articles have been published yet. Please check back later!","pages.articles.header_title":"Explore our collection of","pages.articles.header_suffix_one":"published article","pages.articles.header_suffix_other":"published articles","pages.articles.audio_version":"Audio version","pages.articles.consists_of_collections":"{0} This article highlights {{count}} collections|{1} This article highlights {{count}} collection|[2,*] This article highlights {{count}} collections","pages.collections.title":"Collections","pages.collections.collections":"Collections","pages.collections.popular_collections":"Popular Collections","pages.collections.collection_value":"Collection Value","pages.collections.nfts_owned":"NFTs Owned","pages.collections.header_title":"You own <0>{{nftsCount}} {{nfts}} across <0>{{collectionsCount}} {{collections}}, worth about <0><1>{{worth}}","pages.collections.search_placeholder":"Search by Collection","pages.collections.properties":"Properties","pages.collections.collections_network":"Collections Network","pages.collections.property_search_placeholder":"Feature Search","pages.collections.floor_price":"Floor Price","pages.collections.value":"Value","pages.collections.rarity":"Rarity","pages.collections.report":"Report","pages.collections.hide_collection":"Hide Collection","pages.collections.unhide_collection":"Unhide Collection","pages.collections.no_collections":"You do not own any NFTs yet. Once you do they will be shown here.","pages.collections.all_collections_hidden":"You have hidden all your collections. Unhide and they will appear here.","pages.collections.about_collection":"About Collection","pages.collections.show_hidden":"Show Hidden","pages.collections.show_my_collection":"Show My Collection","pages.collections.owned":"Owned","pages.collections.activities.loading_activities":"We're fetching Activity for this NFT, please hang tight, this can take a while.","pages.collections.activities.loading_activities_collection":"We're fetching Activity for this collection, please hang tight, this can take a while.","pages.collections.activities.ignores_activities":"We don't support activity history for this collection yet.","pages.collections.activities.no_activity":"This collection does not have any activity yet.","pages.collections.activities.types.LABEL_MINT":"Mint","pages.collections.activities.types.LABEL_TRANSFER":"Transfer","pages.collections.activities.types.LABEL_SALE":"Sale","pages.collections.activities.types.LABEL_BURN":"Burn","pages.collections.collection_of_the_month.winners_month":"Winners: {{month}}","pages.collections.collection_of_the_month.vote_for_next_months_winners":"Vote now for next month's winners","pages.collections.collection_of_the_month.view_previous_winners":"View Previous Winners","pages.collections.articles.no_articles":"No articles have been linked to this collection as of now.","pages.collections.articles.no_articles_with_filters":"We could not find any articles matching your search criteria, please try again!","pages.collections.articles.search_placeholder":"Search in Articles","pages.collections.articles.sort_latest":"Latest","pages.collections.articles.sort_popularity":"Most Popular","pages.collections.search.loading_results":"Loading results...","pages.collections.search.no_results":"We could not find anything matching your search criteria, please try again!","pages.collections.search.no_results_with_filters":"We could not find anything matching your filters, please try again!","pages.collections.search.no_results_ownership":"You do not own any NFTs in this collection","pages.collections.search.error":"Could not load search results. Please try again later.","pages.collections.vote.vote_for_top_collection":"Vote for Top Collection of the Month","pages.collections.vote.vote":"Vote","pages.collections.vote.time_left":"Time Left","pages.collections.vote.or_nominate_collection":"Or nominate a collection","pages.collections.sorting.token_number":"Token Number","pages.collections.sorting.recently_received":"Recently Received","pages.collections.sorting.recently_created":"Recently Created","pages.collections.sorting.oldest_collection":"Oldest Collection","pages.collections.traits.description":"List of NFT traits by % of occurrence in the collection","pages.collections.traits.no_traits":"No Properties can be found for this NFT","pages.collections.menu.collection":"Collection","pages.collections.menu.articles":"Articles","pages.collections.menu.activity":"Activity","pages.collections.hidden_modal.collection_hidden":"Collection Hidden","pages.collections.hidden_modal.description":"This collection is currently set to Hidden. Are you sure you want to unhide this collection? You can\n reset the collection to hidden from the collection menu.","pages.collections.hidden_modal.unhide":"Unhide","pages.collections.hidden_modal.error":"Something went wrong. Please try again.","pages.collections.external_modal.you_wish_continue":"You are about to leave Dashbrd to an external website. Dashbrd has no control over the content of\n this site. Are you sure you wish to continue?","pages.collections.external_modal.not_show":"Do not show this message again.","pages.collections.refresh.title":"Refresh your collection","pages.collections.refresh.notice":"You can refresh data every 15 minutes.","pages.collections.refresh.notice_wait":"Please wait. You can refresh data every 15 minutes.","pages.collections.refresh.toast":"We're updating information for your collection.","pages.collections.featured.title":"Featured Collections","pages.collections.featured.button":"Explore Collection","pages.collections.footer.heading_broken.0":"Connect with MetaMask","pages.collections.footer.heading_broken.1":"& Manage Your Collection","pages.collections.footer.subtitle":"Explore, Filter, & Share your favorite NFTs with Dashbrd.","pages.collections.footer.button":"Manage Collections","pages.nfts.nft":"nft","pages.nfts.about_nft":"About NFT","pages.nfts.owned_by":"Owned by","pages.nfts.collection_image":"collection image","pages.nfts.menu.properties":"Properties","pages.nfts.menu.activity":"Activity","pages.reports.title":"Submit a Report","pages.reports.description":"Thanks for looking out by reporting things that break the rules. Let us know what's happening and we'll receive the report.","pages.reports.success":"Thank you for your report. We'll review it and see if it breaks our ToS.","pages.reports.failed":"Something went wrong. Please try again.","pages.reports.throttle":"You have made too many requests. Please wait {{time}} before reporting again.","pages.reports.reported":"You have already reported this {{model}}.","pages.reports.reasons.spam":"Spam","pages.reports.reasons.violence":"Promoting Violence","pages.reports.reasons.hate":"Hate","pages.reports.reasons.inappropriate_content":"Inappropriate Content","pages.reports.reasons.impersonation":"Impersonation","pages.reports.reasons.trademark":"Trademark or Copyright","pages.reports.reasons.selfharm":"Self-Harm","pages.reports.reasons.harassment":"Harassment","pages.galleries.title":"Galleries","pages.galleries.empty_title":"No galleries have been published yet. Once they do they will appear here.","pages.galleries.search.loading_results":"Loading results...","pages.galleries.search.no_results":"We could not find anything matching your search criteria, please try again!","pages.galleries.search.placeholder":"Search by name or curator address","pages.galleries.search.placeholder_nfts":"Search by NFTs","pages.galleries.search.error":"Could not load search results. Please try again later.","pages.galleries.my_galleries.title":"My Galleries","pages.galleries.my_galleries.subtitle":"Manage your galleries","pages.galleries.my_galleries.new_gallery":"New Gallery","pages.galleries.my_galleries.no_galleries":"You have not created any galleries yet. To create a gallery, click on the \"Create Gallery\" button.","pages.galleries.my_galleries.no_available_collections":"You have hidden all your collections. If you want to create a gallery, make sure you have at least 1 collection available.","pages.galleries.my_galleries.no_draft_galleries":"You have no draft galleries yet. To create a gallery, click on the \"Create Gallery\" button.","pages.galleries.my_galleries.succesfully_deleted":"Gallery has been successfully removed","pages.galleries.my_galleries.draft_succesfully_deleted":"Draft has been successfully removed","pages.galleries.my_galleries.successfully_created":"Gallery has been successfully created","pages.galleries.my_galleries.successfully_updated":"Gallery has been successfully updated","pages.galleries.my_galleries.new_gallery_no_nfts":"Creating a Gallery requires you to own an NFT.","pages.galleries.my_galleries.new_gallery_all_collections_hidden":"Creating a Gallery requires you to have at least 1 collection available.","pages.galleries.my_galleries.delete_modal.title":"Delete Draft","pages.galleries.my_galleries.delete_modal.text":"Are you sure you want to delete the draft? Everything you've done will be deleted and you won't be able to get it back.","pages.galleries.my_galleries.nfts_no_longer_owned":"NFTs no longer owned by this wallet have been removed from the draft”","pages.galleries.copy_gallery_link":"Copy Gallery Link","pages.galleries.my_nfts":"My NFTs","pages.galleries.show_hidden_collections":"Show hidden collections","pages.galleries.value":"Value","pages.galleries.floor_price":"Floor Price","pages.galleries.nfts":"NFTs","pages.galleries.collections":"Collections","pages.galleries.galleries_count_simple":"{0} galleries|{1} gallery|[2,*] galleries","pages.galleries.galleries_count":"{0} {{count}} Galleries|{1} {{count}} Gallery|[2,*] {{count}} Galleries","pages.galleries.collections_count_simple":"{0} collections|{1} collection|[2,*] collections","pages.galleries.collections_count":"{0} {{count}} Collections|{1} {{count}} Collection|[2,*] {{count}} Collections","pages.galleries.nfts_count_simple":"{0} NFTs|{1} NFT|[2,*] NFTs","pages.galleries.nfts_count":"{0} {{count}} NFTs|{1} {{count}} NFT|[2,*] {{count}} NFTs","pages.galleries.users_count_simple":"{0} users|{1} user|[2,*] users","pages.galleries.users_count":"{0} {{count}} Users|{1} {{count}} User|[2,*] {{count}} Users","pages.galleries.featuring":"Featuring","pages.galleries.curated_by":"Curated by","pages.galleries.worth_about":"Worth About","pages.galleries.valued_at":"valued at","pages.galleries.from":"From","pages.galleries.most_popular_galleries":"Most Popular Galleries","pages.galleries.newest_galleries":"Newest Galleries","pages.galleries.most_valuable_galleries":"Most Valuable Galleries","pages.galleries.most_popular":"Most Popular","pages.galleries.newest":"Newest","pages.galleries.most_valuable":"Most Valuable","pages.galleries.create.search_by_nfts":"Search by NFTs","pages.galleries.create.input_placeholder":"Enter gallery name","pages.galleries.create.title_too_long":"Gallery name must not exceed {{max}} characters.","pages.galleries.create.already_selected_nft":"NFT already exists in this gallery","pages.galleries.create.nft_missing_image":"Only NFTs with images can be added to galleries","pages.galleries.create.nft_gallery_limit":"You can only add 16 NFTs per gallery","pages.galleries.create.gallery_cover":"Gallery Cover","pages.galleries.create.gallery_cover_description":"The cover is used for the card on the gallery list page. While the cover is not a requirement it will allow you to add personality and stand out from the crowd.","pages.galleries.create.gallery_cover_information":"Image dimensions must be at least 287px x 190px, with a max size of 2 MB (JPG, PNG or GIF)","pages.galleries.create.no_results":"We could not find anything matching your search criteria, please try again!","pages.galleries.create.templates.cover":"Cover","pages.galleries.create.templates.template":"Template","pages.galleries.create.templates.select":"Select Gallery Template","pages.galleries.create.templates.basic":"Basic Gallery","pages.galleries.create.templates.coming_soon":"More Coming Soon","pages.galleries.create.load_more_collections_one":"Load {{count}} More Collection","pages.galleries.create.load_more_collections_other":"Load {{count}} More Collections","pages.galleries.create.load_more_nfts":"Load More NFTs","pages.galleries.create.can_purchase":"You can purchase NFTs with these top NFT Marketplaces:","pages.galleries.create.must_own_one_nft":"You must own at least one (1) NFT in order to create a gallery.","pages.galleries.create.back_to_galleries":"Back to Galleries","pages.galleries.create.draft_saved":"Draft Saved","pages.galleries.create.saving_to_draft":"Saving to draft","pages.galleries.create.drafts_limit_modal_title":"Draft Gallery Limit","pages.galleries.create.drafts_limit_modal_message":"You’ve hit your limit for draft galleries. While you can still make new galleries and publish them, they won’t be saved as drafts. To Free up space, you can either delete existing drafts or publish them.","pages.galleries.create.drafts_limit_modal_cancel":"Go to Drafts","pages.galleries.delete_modal.title":"Delete Gallery","pages.galleries.delete_modal.confirmation_text":"Are you sure you want to delete the gallery? Deleting a Gallery is permanent, all associated views and likes will be lost.","pages.galleries.consists_of_collections":"{0} This gallery consists of {{count}} collections|{1} This gallery consists of {{count}} collection|[2,*] This gallery consists of {{count}} collections","pages.galleries.guest_banner.title":"Craft the ultimate","pages.galleries.guest_banner.subtitle":"Pick your favorites, curate your gallery, & share it with the world.","pages.profile.title":"Profile","pages.token_panel.balance_tooltip":"Total percentage of the portfolio held in this token","pages.token_panel.insufficient_funds":"Insufficient Balance","pages.token_panel.error":"Dashbrd has failed to load token information. Please try again later.","pages.token_panel.failed_to_retrieve_transactions":"We were unable to fetch your transactions.","pages.token_panel.tabs.transaction_history":"Transaction History","pages.token_panel.tabs.history":"History","pages.token_panel.tabs.market_data":"Market Data","pages.token_panel.details.current_price":"Current Price","pages.token_panel.details.title":"Token Details","pages.token_panel.details.market_cap":"Market Cap","pages.token_panel.details.volume":"Daily Volume","pages.token_panel.details.supply":"Minted Supply","pages.token_panel.details.ath":"All-Time High","pages.token_panel.details.atl":"All-Time Low","pages.token_panel.chart.failed":"Dashbrd has failed to load chart information. Please try again later.","pages.transaction_details_panel.title":"Transaction Details","pages.transaction_details_panel.details.blockchain":"Blockchain","pages.transaction_details_panel.details.timestamp":"Timestamp","pages.transaction_details_panel.details.transaction_hash":"Transaction Hash","pages.transaction_details_panel.details.transaction_fee":"Transaction Fee","pages.transaction_details_panel.details.gas_price":"Gas Price","pages.transaction_details_panel.details.gas_used":"Gas Used","pages.transaction_details_panel.details.nonce":"Nonce","pages.send_receive_panel.send.labels.token_and_amount":"Token and Amount","pages.send_receive_panel.send.labels.destination_address":"Destination Address","pages.send_receive_panel.send.labels.projected_fee":"Projected Fee","pages.send_receive_panel.send.placeholders.enter_amount":"Enter Amount","pages.send_receive_panel.send.placeholders.insert_recipient_address":"Insert Recipient Address","pages.send_receive_panel.send.placeholders.projected_fee":"Projected Fee","pages.send_receive_panel.send.errors.amount":"Insufficient Funds: You do not have enough to cover the amount + fee.","pages.send_receive_panel.send.errors.destination":"Destination address is not correct. Check and input again.","pages.send_receive_panel.send.hints.token_price":"Token Price","pages.send_receive_panel.send.fees.Fast":"Fast","pages.send_receive_panel.send.fees.Avg":"Avg","pages.send_receive_panel.send.fees.Slow":"Slow","pages.send_receive_panel.send.search_dropdown.placeholder":"Search token","pages.send_receive_panel.send.search_dropdown.no_results":"No Results","pages.send_receive_panel.send.search_dropdown.error":"Error occurred while searching tokens.","pages.send_receive_panel.send.transaction_time":"Transaction Time: ~{{ time }} minutes","pages.send_receive_panel.send.from":"From","pages.send_receive_panel.send.to":"To","pages.send_receive_panel.send.amount":"Amount","pages.send_receive_panel.send.fee":"Fee","pages.send_receive_panel.send.total_amount":"Total Amount","pages.send_receive_panel.send.waiting_message":"Review and verify the information on your MetaMask. Sign to send the transaction.","pages.send_receive_panel.send.waiting_spinner_text":"Waiting for confirmation...","pages.send_receive_panel.send.failed_message":"It looks like something went wrong while sending your transaction. Press 'Retry' to make another attempt.","pages.send_receive_panel.receive.alert":"Send only Polygon or Ethereum Network compatible tokens to this address or you could permanently lose your funds!","pages.settings.title":"Settings","pages.settings.sidebar.general":"General","pages.settings.sidebar.notifications":"Notifications","pages.settings.sidebar.session_history":"Sessions History","pages.settings.general.title":"Settings","pages.settings.general.subtitle":"Customize your App Experience","pages.settings.general.currency":"Currency","pages.settings.general.currency_subtitle":"Select your default currency which will be used throughout the app.","pages.settings.general.time_date":"Time & Date","pages.settings.general.time_date_subtitle":"Select how you want time and date be shown inside app.","pages.settings.general.date_format":"Date Format","pages.settings.general.time_format":"Time Format","pages.settings.general.timezone":"Timezone","pages.settings.general.set_defaults":"Set Defaults","pages.settings.general.set_defaults_content":"Reverting to the default settings will remove any customizations previously made. Are you sure?","pages.settings.general.save":"Save Settings","pages.settings.general.saved":"Your settings have been successfully saved","pages.wallet.title":"Wallet","pages.privacy_policy.title":"Privacy Policy","pages.terms_of_service.title":"Terms of Service","pagination.previous":"« Previous","pagination.next":"Next »","passwords.reset":"Your password has been reset!","passwords.sent":"We have emailed your password reset link!","passwords.throttled":"Please wait before retrying.","passwords.token":"This password reset token is invalid.","passwords.user":"We can't find a user with that email address.","urls.landing":"https://dashbrd.com","urls.cookie_policy":"https://dashbrd.com/cookie-policy","urls.privacy_policy":"https://dashbrd.com/privacy-policy","urls.terms_of_service":"https://dashbrd.com/terms-of-service","urls.twitter":"https://x.com/DashbrdApp","urls.discord":"https://discord.gg/MJyWKkCJ5k","urls.github":"https://github.com/ArdentHQ/dashbrd","urls.coingecko":"https://www.coingecko.com","urls.etherscan":"https://etherscan.io","urls.polygonscan":"https://polygonscan.com","urls.alchemy":"https://www.alchemy.com","urls.moralis":"https://moralis.io","urls.mnemonic":"https://www.mnemonichq.com","urls.opensea":"https://opensea.io/","urls.explorers.etherscan.token_transactions":"https://etherscan.io/token/{{token}}?a={{address}}","urls.explorers.etherscan.addresses":"https://etherscan.io/address/{{address}}","urls.explorers.etherscan.transactions":"https://etherscan.io/tx/{{id}}","urls.explorers.etherscan.nft":"https://etherscan.io/nft/{{address}}/{{nftId}}","urls.explorers.polygonscan.token_transactions":"https://polygonscan.com/token/{{token}}?a={{address}}","urls.explorers.polygonscan.addresses":"https://polygonscan.com/address/{{address}}","urls.explorers.polygonscan.transactions":"https://polygonscan.com/tx/{{id}}","urls.explorers.polygonscan.nft":"https://polygonscan.com/nft/{{address}}/{{nftId}}","urls.explorers.mumbai.token_transactions":"https://mumbai.polygonscan.com/token/{{token}}?a={{address}}","urls.explorers.mumbai.addresses":"https://mumbai.polygonscan.com/address/{{address}}","urls.explorers.mumbai.transactions":"https://mumbai.polygonscan.com/tx/{{id}}","urls.explorers.mumbai.nft":"https://mumbai.polygonscan.com/nft/{{address}}/{{nftId}}","urls.explorers.goerli.token_transactions":"https://goerli.etherscan.io/token/{{token}}?a={{address}}","urls.explorers.goerli.addresses":"https://goerli.etherscan.io/address/{{address}}","urls.explorers.goerli.transactions":"https://goerli.etherscan.io/tx/{{id}}","urls.explorers.goerli.nft":"https://goerli.etherscan.io/nft/{{address}}/{{nftId}}","urls.marketplaces.opensea.collection":"https://opensea.io/assets/{{network}}/{{address}}","urls.marketplaces.opensea.nft":"https://opensea.io/assets/{{network}}/{{address}}/{{nftId}}","urls.marketplaces.rarible.collection":"https://rarible.com/collection/{{address}}/items","urls.marketplaces.rarible.nft":"https://rarible.com/token/{{address}}:{{nftId}}","urls.marketplaces.blur.collection":"https://blur.io/collection/{{address}}","urls.marketplaces.blur.nft":"https://blur.io/asset/{{address}}/{{nftId}}","urls.marketplaces.looksrare.collection":"https://looksrare.org/collections/{{address}}","urls.marketplaces.looksrare.nft":"https://looksrare.org/collections/{{address}}/{{nftId}}","validation.accepted":"The {{attribute}} must be accepted.","validation.accepted_if":"The {{attribute}} must be accepted when {{other}} is {{value}}.","validation.active_url":"The {{attribute}} is not a valid URL.","validation.after":"The {{attribute}} must be a date after {{date}}.","validation.after_or_equal":"The {{attribute}} must be a date after or equal to {{date}}.","validation.alpha":"The {{attribute}} must only contain letters.","validation.alpha_dash":"The {{attribute}} must only contain letters, numbers, dashes and underscores.","validation.alpha_num":"The {{attribute}} must only contain letters and numbers.","validation.array":"The {{attribute}} must be an array.","validation.ascii":"The {{attribute}} must only contain single-byte alphanumeric characters and symbols.","validation.before":"The {{attribute}} must be a date before {{date}}.","validation.before_or_equal":"The {{attribute}} must be a date before or equal to {{date}}.","validation.between.array":"The {{attribute}} must have between {{min}} and {{max}} items.","validation.between.file":"The {{attribute}} must be between {{min}} and {{max}} kilobytes.","validation.between.numeric":"The {{attribute}} must be between {{min}} and {{max}}.","validation.between.string":"The {{attribute}} must be between {{min}} and {{max}} characters.","validation.boolean":"The {{attribute}} field must be true or false.","validation.confirmed":"The {{attribute}} confirmation does not match.","validation.current_password":"The password is incorrect.","validation.date":"The {{attribute}} is not a valid date.","validation.date_equals":"The {{attribute}} must be a date equal to {{date}}.","validation.date_format":"The {{attribute}} does not match the format {{format}}.","validation.decimal":"The {{attribute}} must have {{decimal}} decimal places.","validation.declined":"The {{attribute}} must be declined.","validation.declined_if":"The {{attribute}} must be declined when {{other}} is {{value}}.","validation.different":"The {{attribute}} and {{other}} must be different.","validation.digits":"The {{attribute}} must be {{digits}} digits.","validation.digits_between":"The {{attribute}} must be between {{min}} and {{max}} digits.","validation.dimensions":"The {{attribute}} has invalid image dimensions.","validation.distinct":"The {{attribute}} field has a duplicate value.","validation.doesnt_end_with":"The {{attribute}} may not end with one of the following: {{values}}.","validation.doesnt_start_with":"The {{attribute}} may not start with one of the following: {{values}}.","validation.email":"The {{attribute}} must be a valid email address.","validation.ends_with":"The {{attribute}} must end with one of the following: {{values}}.","validation.enum":"The selected {{attribute}} is invalid.","validation.exists":"The selected {{attribute}} is invalid.","validation.file":"The {{attribute}} must be a file.","validation.filled":"The {{attribute}} field must have a value.","validation.gt.array":"The {{attribute}} must have more than {{value}} items.","validation.gt.file":"The {{attribute}} must be greater than {{value}} kilobytes.","validation.gt.numeric":"The {{attribute}} must be greater than {{value}}.","validation.gt.string":"The {{attribute}} must be greater than {{value}} characters.","validation.gte.array":"The {{attribute}} must have {{value}} items or more.","validation.gte.file":"The {{attribute}} must be greater than or equal to {{value}} kilobytes.","validation.gte.numeric":"The {{attribute}} must be greater than or equal to {{value}}.","validation.gte.string":"The {{attribute}} must be greater than or equal to {{value}} characters.","validation.image":"The {{attribute}} must be an image.","validation.in":"The selected {{attribute}} is invalid.","validation.in_array":"The {{attribute}} field does not exist in {{other}}.","validation.integer":"The {{attribute}} must be an integer.","validation.ip":"The {{attribute}} must be a valid IP address.","validation.ipv4":"The {{attribute}} must be a valid IPv4 address.","validation.ipv6":"The {{attribute}} must be a valid IPv6 address.","validation.json":"The {{attribute}} must be a valid JSON string.","validation.lowercase":"The {{attribute}} must be lowercase.","validation.lt.array":"The {{attribute}} must have less than {{value}} items.","validation.lt.file":"The {{attribute}} must be less than {{value}} kilobytes.","validation.lt.numeric":"The {{attribute}} must be less than {{value}}.","validation.lt.string":"The {{attribute}} must be less than {{value}} characters.","validation.lte.array":"The {{attribute}} must not have more than {{value}} items.","validation.lte.file":"The {{attribute}} must be less than or equal to {{value}} kilobytes.","validation.lte.numeric":"The {{attribute}} must be less than or equal to {{value}}.","validation.lte.string":"The {{attribute}} must be less than or equal to {{value}} characters.","validation.mac_address":"The {{attribute}} must be a valid MAC address.","validation.max.array":"The {{attribute}} must not have more than {{max}} items.","validation.max.file":"The {{attribute}} must not be greater than {{max}} kilobytes.","validation.max.numeric":"The {{attribute}} must not be greater than {{max}}.","validation.max.string":"The {{attribute}} must not be greater than {{max}} characters.","validation.max_digits":"The {{attribute}} must not have more than {{max}} digits.","validation.mimes":"The {{attribute}} must be a file of type: {{values}}.","validation.mimetypes":"The {{attribute}} must be a file of type: {{values}}.","validation.min.array":"The {{attribute}} must have at least {{min}} items.","validation.min.file":"The {{attribute}} must be at least {{min}} kilobytes.","validation.min.numeric":"The {{attribute}} must be at least {{min}}.","validation.min.string":"The {{attribute}} must be at least {{min}} characters.","validation.min_digits":"The {{attribute}} must have at least {{min}} digits.","validation.missing":"The {{attribute}} field must be missing.","validation.missing_if":"The {{attribute}} field must be missing when {{other}} is {{value}}.","validation.missing_unless":"The {{attribute}} field must be missing unless {{other}} is {{value}}.","validation.missing_with":"The {{attribute}} field must be missing when {{values}} is present.","validation.missing_with_all":"The {{attribute}} field must be missing when {{values}} are present.","validation.multiple_of":"The {{attribute}} must be a multiple of {{value}}.","validation.not_in":"The selected {{attribute}} is invalid.","validation.not_regex":"The {{attribute}} format is invalid.","validation.numeric":"The {{attribute}} must be a number.","validation.password.letters":"The {{attribute}} must contain at least one letter.","validation.password.mixed":"The {{attribute}} must contain at least one uppercase and one lowercase letter.","validation.password.numbers":"The {{attribute}} must contain at least one number.","validation.password.symbols":"The {{attribute}} must contain at least one symbol.","validation.password.uncompromised":"The given {{attribute}} has appeared in a data leak. Please choose a different {{attribute}}.","validation.present":"The {{attribute}} field must be present.","validation.prohibited":"The {{attribute}} field is prohibited.","validation.prohibited_if":"The {{attribute}} field is prohibited when {{other}} is {{value}}.","validation.prohibited_unless":"The {{attribute}} field is prohibited unless {{other}} is in {{values}}.","validation.prohibits":"The {{attribute}} field prohibits {{other}} from being present.","validation.regex":"The {{attribute}} format is invalid.","validation.required":"The {{attribute}} field is required.","validation.required_array_keys":"The {{attribute}} field must contain entries for: {{values}}.","validation.required_if":"The {{attribute}} field is required when {{other}} is {{value}}.","validation.required_if_accepted":"The {{attribute}} field is required when {{other}} is accepted.","validation.required_unless":"The {{attribute}} field is required unless {{other}} is in {{values}}.","validation.required_with":"The {{attribute}} field is required when {{values}} is present.","validation.required_with_all":"The {{attribute}} field is required when {{values}} are present.","validation.required_without":"The {{attribute}} field is required when {{values}} is not present.","validation.required_without_all":"The {{attribute}} field is required when none of {{values}} are present.","validation.same":"The {{attribute}} and {{other}} must match.","validation.size.array":"The {{attribute}} must contain {{size}} items.","validation.size.file":"The {{attribute}} must be {{size}} kilobytes.","validation.size.numeric":"The {{attribute}} must be {{size}}.","validation.size.string":"The {{attribute}} must be {{size}} characters.","validation.starts_with":"The {{attribute}} must start with one of the following: {{values}}.","validation.string":"The {{attribute}} must be a string.","validation.timezone":"The {{attribute}} must be a valid timezone.","validation.unique":"The {{attribute}} has already been taken.","validation.uploaded":"The {{attribute}} failed to upload.","validation.uppercase":"The {{attribute}} must be uppercase.","validation.url":"The {{attribute}} must be a valid URL.","validation.ulid":"The {{attribute}} must be a valid ULID.","validation.uuid":"The {{attribute}} must be a valid UUID.","validation.custom.attribute-name.rule-name":"custom-message","validation.unsupported_currency_code":"The currency code you provided is invalid or not supported.","validation.unsupported_period":"The period you provided is invalid or not supported.","validation.unsupported_token_symbol":"The token symbol you provided is invalid or not supported.","validation.gallery_title_required":"Gallery name is required.","validation.gallery_title_max_characters":"The gallery name should not exceed 50 characters.","validation.gallery_title_invalid":"The gallery name is invalid.","validation.nfts_required":"Please add at least one NFT.","validation.nfts_max_size":"Galleries can contain no more than {{limit}} NFTs","validation.invalid_nfts":"The NFT in position {{position}} is invalid, please select another one.","validation.invalid_cover":"You have selected an invalid cover image, please try another one."} \ No newline at end of file diff --git a/resources/js/Pages/Collections/Components/CollectionsCallToAction.tsx b/resources/js/Pages/Collections/Components/CollectionsCallToAction.tsx new file mode 100644 index 000000000..93c4319d1 --- /dev/null +++ b/resources/js/Pages/Collections/Components/CollectionsCallToAction.tsx @@ -0,0 +1,60 @@ +import collectionsDark from "@images/collections-dark.png"; +import collectionsMobileDark from "@images/collections-mobile-dark.png"; +import collectionsMobile from "@images/collections-mobile.png"; +import collections from "@images/collections.png"; +import { useTranslation } from "react-i18next"; +import { ButtonLink } from "@/Components/Buttons/ButtonLink"; +import { useDarkModeContext } from "@/Contexts/DarkModeContext"; +import { CollectionsGrid } from "@/images"; + +export const CollectionsCallToAction = (): JSX.Element => { + const { t } = useTranslation(); + const { isDark } = useDarkModeContext(); + + return ( +

    +
    + + +
    +
    +

    + {t("pages.collections.footer.heading_broken.0")}
    + {t("pages.collections.footer.heading_broken.1")} +

    + +

    + {t("pages.collections.footer.subtitle")} +

    + +
    + + {t("pages.collections.footer.button")} + +
    +
    + +
    + {t("common.preview")} +
    + +
    + {t("common.preview")} +
    +
    +
    +
    + ); +}; diff --git a/resources/js/Pages/Collections/Index.tsx b/resources/js/Pages/Collections/Index.tsx index e1c1c981b..0c1f608ff 100644 --- a/resources/js/Pages/Collections/Index.tsx +++ b/resources/js/Pages/Collections/Index.tsx @@ -3,6 +3,7 @@ import { Head, router, usePage } from "@inertiajs/react"; import cn from "classnames"; import { useEffect, useState } from "react"; import { useTranslation } from "react-i18next"; +import { CollectionsCallToAction } from "./Components/CollectionsCallToAction"; import { FeaturedCollectionsCarousel } from "./Components/FeaturedCollections"; import { PopularCollectionsFilterPopover } from "./Components/PopularCollectionsFilterPopover"; import { type PopularCollectionsSortBy, PopularCollectionsSorting } from "./Components/PopularCollectionsSorting"; @@ -70,7 +71,7 @@ const CollectionsIndex = ({ return ( @@ -135,6 +136,8 @@ const CollectionsIndex = ({

    xb;W`6WW*k*EqNShEtxK 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 literal 0 HcmV?d00001 diff --git a/resources/images/collections-mobile.png b/resources/images/collections-mobile.png new file mode 100644 index 0000000000000000000000000000000000000000..57c3b930a2284f37728967d2ad0c1d7a3c54b176 GIT binary patch literal 96763 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 z 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

    + + ); }; diff --git a/resources/js/images.ts b/resources/js/images.ts index b1d7f493c..346234180 100644 --- a/resources/js/images.ts +++ b/resources/js/images.ts @@ -10,6 +10,7 @@ import { ReactComponent as TwoBarChartDark } from "@images/collections/two-bar-c import { ReactComponent as TwoBarChart } from "@images/collections/two-bar-chart.svg"; import { ReactComponent as VoteNextMonthWinnersDark } from "@images/collections/vote-next-month-winners-dark.svg"; import { ReactComponent as VoteNextMonthWinners } from "@images/collections/vote-next-month-winners.svg"; +import { ReactComponent as CollectionsGrid } from "@images/collections-grid.svg"; import { ReactComponent as DeleteModal } from "@images/delete-modal.svg"; import { ReactComponent as Error401 } from "@images/errors/401.svg"; import { ReactComponent as Error403 } from "@images/errors/403.svg"; @@ -70,4 +71,5 @@ export { TwoBarChartDark, OneBarChart, OneBarChartDark, + CollectionsGrid, }; From 0c858d384bf89f50b64c52bbdedc3661d709571e Mon Sep 17 00:00:00 2001 From: Alfonso Bribiesca Date: Mon, 4 Dec 2023 04:27:51 -0600 Subject: [PATCH 023/145] feat: response winner overview (#528) --- resources/css/_collection.css | 26 ++++ .../images/collections/crown-badge-dark.svg | 1 + resources/images/collections/crown-badge.svg | 1 + .../CollectionOfTheMonthWinners.tsx | 130 +++++++++++++----- .../CollectionOfTheMonth.tsx | 7 +- .../CollectionOfTheMonth/VoteCollection.tsx | 2 +- resources/js/images.ts | 4 + 7 files changed, 131 insertions(+), 40 deletions(-) create mode 100644 resources/images/collections/crown-badge-dark.svg create mode 100644 resources/images/collections/crown-badge.svg diff --git a/resources/css/_collection.css b/resources/css/_collection.css index 4c855a6ed..1870ebfb0 100644 --- a/resources/css/_collection.css +++ b/resources/css/_collection.css @@ -13,3 +13,29 @@ .shadow-collection-of-the-month-footer { box-shadow: 0px 15px 35px 0px rgba(18, 18, 19, 0.4); } + +.collection-of-the-month-mobile { + background: linear-gradient(90deg, #eef -17%, #eff1ff 50.56%, #ffeded 113.99%); + backdrop-filter: blur(7px); +} + +.collection-of-the-month-legend { + font-feature-settings: + "clig" off, + "liga" off; + background: linear-gradient(89deg, #26f1f1 -47.66%, #5060ee -1.35%, #744de0 76.67%, #fe6c3e 137.39%); + background-clip: text; + backdrop-filter: blur(7px); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; +} + +.dark .collection-of-the-month-legend { + @apply bg-none text-white; + background-clip: initial; + -webkit-text-fill-color: initial; +} + +.dark .collection-of-the-month-mobile { + @apply bg-theme-dark-800 bg-none; +} diff --git a/resources/images/collections/crown-badge-dark.svg b/resources/images/collections/crown-badge-dark.svg new file mode 100644 index 000000000..958a40e4b --- /dev/null +++ b/resources/images/collections/crown-badge-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/images/collections/crown-badge.svg b/resources/images/collections/crown-badge.svg new file mode 100644 index 000000000..975349b20 --- /dev/null +++ b/resources/images/collections/crown-badge.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/js/Components/Collections/CollectionOfTheMonthWinners/CollectionOfTheMonthWinners.tsx b/resources/js/Components/Collections/CollectionOfTheMonthWinners/CollectionOfTheMonthWinners.tsx index 3aa807e32..cb9f9495c 100644 --- a/resources/js/Components/Collections/CollectionOfTheMonthWinners/CollectionOfTheMonthWinners.tsx +++ b/resources/js/Components/Collections/CollectionOfTheMonthWinners/CollectionOfTheMonthWinners.tsx @@ -7,6 +7,8 @@ import { Img } from "@/Components/Image"; import { Link } from "@/Components/Link"; import { useDarkModeContext } from "@/Contexts/DarkModeContext"; import { + CrownBadge, + CrownBadgeDark, OneBarChart, OneBarChartDark, ThreeBarChart, @@ -130,6 +132,55 @@ const WinnersChart = ({ winners }: { winners: App.Data.Collections.CollectionOfT return ; }; +const WinnersChartMobile = ({ + winner, + currentMonth, +}: { + winner: App.Data.Collections.CollectionOfTheMonthData; + currentMonth?: string; +}): JSX.Element => { + const { isDark } = useDarkModeContext(); + const { t } = useTranslation(); + + return ( +
    +
    +
    +
    +
    + +
    + +
    + {isDark ? : } +
    +
    + + + {t("pages.collections.collection_of_the_month.winners_month", { + month: currentMonth, + })} + +
    + + + {t("pages.collections.collection_of_the_month.view_previous_winners")} + +
    +
    + ); +}; + export const CollectionOfTheMonthWinners = ({ className, winners, @@ -141,44 +192,55 @@ export const CollectionOfTheMonthWinners = ({ const showWinners = winners.length > 0; + const date = new Date(); + const currentMonth = `${date.toLocaleString("default", { month: "long" })} ${date.getFullYear()}`; + return ( -
    + {winners.length > 0 && ( + )} - > -
    - - {showWinners - ? t("pages.collections.collection_of_the_month.winners_month", { - // @TODO: Make this dynamic - month: "August 2023", - }) - : t("pages.collections.collection_of_the_month.vote_for_next_months_winners")} - -
    - -
    - -
    - {showWinners && ( -
    - +
    + - {t("pages.collections.collection_of_the_month.view_previous_winners")} - + {showWinners + ? t("pages.collections.collection_of_the_month.winners_month", { + month: currentMonth, + }) + : t("pages.collections.collection_of_the_month.vote_for_next_months_winners")} +
    - )} -
    + +
    + +
    + + {showWinners && ( +
    + + {t("pages.collections.collection_of_the_month.view_previous_winners")} + +
    + )} +
    + ); }; diff --git a/resources/js/Pages/Collections/Components/CollectionOfTheMonth/CollectionOfTheMonth.tsx b/resources/js/Pages/Collections/Components/CollectionOfTheMonth/CollectionOfTheMonth.tsx index e4a544bce..a401db493 100644 --- a/resources/js/Pages/Collections/Components/CollectionOfTheMonth/CollectionOfTheMonth.tsx +++ b/resources/js/Pages/Collections/Components/CollectionOfTheMonth/CollectionOfTheMonth.tsx @@ -7,12 +7,9 @@ export const CollectionOfTheMonth = ({ }: { winners: App.Data.Collections.CollectionOfTheMonthData[]; }): JSX.Element => ( -
    +
    - +
    ); diff --git a/resources/js/Pages/Collections/Components/CollectionOfTheMonth/VoteCollection.tsx b/resources/js/Pages/Collections/Components/CollectionOfTheMonth/VoteCollection.tsx index b2de4351e..8e5eccbc9 100644 --- a/resources/js/Pages/Collections/Components/CollectionOfTheMonth/VoteCollection.tsx +++ b/resources/js/Pages/Collections/Components/CollectionOfTheMonth/VoteCollection.tsx @@ -8,7 +8,7 @@ export const VoteCollection = (): JSX.Element => { const { t } = useTranslation(); return ( -
    +
    {t("pages.collections.vote.vote_for_top_collection")}
    diff --git a/resources/js/images.ts b/resources/js/images.ts index 346234180..38d16acf3 100644 --- a/resources/js/images.ts +++ b/resources/js/images.ts @@ -2,6 +2,8 @@ import { ReactComponent as AuthConnectWalletDark } from "@images/auth-connect-wa import { ReactComponent as AuthConnectWallet } from "@images/auth-connect-wallet.svg"; import { ReactComponent as AuthInstallWalletDark } from "@images/auth-install-wallet-dark.svg"; import { ReactComponent as AuthInstallWallet } from "@images/auth-install-wallet.svg"; +import { ReactComponent as CrownBadgeDark } from "@images/collections/crown-badge-dark.svg"; +import { ReactComponent as CrownBadge } from "@images/collections/crown-badge.svg"; import { ReactComponent as OneBarChartDark } from "@images/collections/one-bar-chart-dark.svg"; import { ReactComponent as OneBarChart } from "@images/collections/one-bar-chart.svg"; import { ReactComponent as ThreeBarChartDark } from "@images/collections/three-bar-chart-dark.svg"; @@ -41,6 +43,8 @@ export { AuthInstallWallet, AuthInstallWalletDark, WarningExclamation, + CrownBadge, + CrownBadgeDark, WarningExclamationDark, ImageLoadError, ImageLoadErrorPrimary, From dfb8d86bb095676313a8e4900b2af3cd98fa28ba Mon Sep 17 00:00:00 2001 From: Alfonso Bribiesca Date: Mon, 4 Dec 2023 04:56:54 -0600 Subject: [PATCH 024/145] feat: voting logic (#527) --- .../Collections/CollectionOfTheMonthData.php | 4 +- app/Http/Controllers/CollectionController.php | 1 - .../Controllers/CollectionVoteController.php | 19 ++++++ app/Models/Collection.php | 4 +- app/Models/CollectionVote.php | 38 ++++++++++++ app/Models/Traits/HasWalletVotes.php | 29 ++++++++++ database/factories/CollectionVoteFactory.php | 29 ++++++++++ ...1_161507_create_collection_votes_table.php | 22 +++++++ ...17_add_has_won_at_to_collections_table.php | 17 ++++++ lang/en/pages.php | 1 + resources/js/I18n/Locales/en.json | 2 +- routes/web.php | 5 ++ .../CollectionVoteControllerTest.php | 43 ++++++++++++++ tests/App/Models/CollectionVoteTest.php | 58 +++++++++++++++++++ 14 files changed, 266 insertions(+), 6 deletions(-) create mode 100644 app/Http/Controllers/CollectionVoteController.php create mode 100644 app/Models/CollectionVote.php create mode 100644 app/Models/Traits/HasWalletVotes.php create mode 100644 database/factories/CollectionVoteFactory.php create mode 100644 database/migrations/2023_12_01_161507_create_collection_votes_table.php create mode 100644 database/migrations/2023_12_01_194317_add_has_won_at_to_collections_table.php create mode 100644 tests/App/Http/Controllers/CollectionVoteControllerTest.php create mode 100644 tests/App/Models/CollectionVoteTest.php diff --git a/app/Data/Collections/CollectionOfTheMonthData.php b/app/Data/Collections/CollectionOfTheMonthData.php index 10992b3ff..a4664a929 100644 --- a/app/Data/Collections/CollectionOfTheMonthData.php +++ b/app/Data/Collections/CollectionOfTheMonthData.php @@ -25,9 +25,7 @@ public static function fromModel(Collection $collection): self { return new self( image: $collection->extra_attributes->get('image'), - // @TODO: add actual votes - votes: fake()->boolean() ? fake()->numberBetween(1, 999) : fake()->numberBetween(1000, 1000000), - + votes: $collection->votes()->inCurrentMonth()->count(), ); } } diff --git a/app/Http/Controllers/CollectionController.php b/app/Http/Controllers/CollectionController.php index f10f0025c..37830dd41 100644 --- a/app/Http/Controllers/CollectionController.php +++ b/app/Http/Controllers/CollectionController.php @@ -76,7 +76,6 @@ public function index(Request $request): Response|JsonResponse|RedirectResponse 'allowsGuests' => true, 'filters' => fn () => $this->getFilters($request), 'title' => fn () => trans('metatags.collections.title'), - // @TODO: replace with actual top collections and include votes 'topCollections' => fn () => CollectionOfTheMonthData::collection(Collection::query()->inRandomOrder()->limit(3)->get()), 'collections' => fn () => PopularCollectionData::collection( $collections->through(fn ($collection) => PopularCollectionData::fromModel($collection, $currency)) diff --git a/app/Http/Controllers/CollectionVoteController.php b/app/Http/Controllers/CollectionVoteController.php new file mode 100644 index 000000000..661ef1fa8 --- /dev/null +++ b/app/Http/Controllers/CollectionVoteController.php @@ -0,0 +1,19 @@ +addVote($request->wallet()); + + return back()->toast(trans('pages.collections.collection_of_the_month.vote_success'), type: 'success'); + } +} diff --git a/app/Models/Collection.php b/app/Models/Collection.php index 323fc523c..dec540a5a 100644 --- a/app/Models/Collection.php +++ b/app/Models/Collection.php @@ -7,6 +7,7 @@ use App\Casts\StrippedHtml; use App\Enums\CurrencyCode; use App\Models\Traits\BelongsToNetwork; +use App\Models\Traits\HasWalletVotes; use App\Models\Traits\Reportable; use App\Notifications\CollectionReport; use App\Support\BlacklistedCollections; @@ -39,7 +40,7 @@ */ class Collection extends Model { - use BelongsToNetwork, HasEagerLimit, HasFactory, HasSlug, Reportable, SoftDeletes; + use BelongsToNetwork, HasEagerLimit, HasFactory, HasSlug, HasWalletVotes, Reportable, SoftDeletes; const TWITTER_URL = 'https://x.com/'; @@ -72,6 +73,7 @@ class Collection extends Model 'activity_updated_at' => 'datetime', 'activity_update_requested_at' => 'datetime', 'is_featured' => 'bool', + 'has_won_at' => 'datetime', ]; /** diff --git a/app/Models/CollectionVote.php b/app/Models/CollectionVote.php new file mode 100644 index 000000000..31a4c0456 --- /dev/null +++ b/app/Models/CollectionVote.php @@ -0,0 +1,38 @@ + 'datetime', + ]; + + /** + * @param Builder $query + * @return Builder + */ + public function scopeinCurrentMonth(Builder $query): Builder + { + return $query->whereBetween('voted_at', [ + Carbon::now()->startOfMonth(), + Carbon::now()->endOfMonth(), + ]); + } +} diff --git a/app/Models/Traits/HasWalletVotes.php b/app/Models/Traits/HasWalletVotes.php new file mode 100644 index 000000000..140b3a0a3 --- /dev/null +++ b/app/Models/Traits/HasWalletVotes.php @@ -0,0 +1,29 @@ + + */ + public function votes(): HasMany + { + return $this->hasMany(CollectionVote::class); + } + + public function addVote(Wallet $wallet): void + { + $this->votes()->updateOrCreate([ + 'wallet_id' => $wallet->id, + 'voted_at' => Carbon::now(), + ]); + } +} diff --git a/database/factories/CollectionVoteFactory.php b/database/factories/CollectionVoteFactory.php new file mode 100644 index 000000000..8539e0237 --- /dev/null +++ b/database/factories/CollectionVoteFactory.php @@ -0,0 +1,29 @@ + + */ +class CollectionVoteFactory extends Factory +{ + /** + * Define the model's default state. + * + * @return array + */ + public function definition(): array + { + return [ + 'wallet_id' => fn () => Wallet::factory(), + 'collection_id' => fn () => Collection::factory(), + 'voted_at' => fake()->dateTimeBetween('-1 month', 'now'), + ]; + } +} diff --git a/database/migrations/2023_12_01_161507_create_collection_votes_table.php b/database/migrations/2023_12_01_161507_create_collection_votes_table.php new file mode 100644 index 000000000..b7816eeca --- /dev/null +++ b/database/migrations/2023_12_01_161507_create_collection_votes_table.php @@ -0,0 +1,22 @@ +id(); + $table->foreignIdFor(Wallet::class, 'wallet_id')->constrained(); + $table->foreignIdFor(Collection::class, 'collection_id')->constrained(); + $table->timestamp('voted_at')->nullable(); + }); + } +}; diff --git a/database/migrations/2023_12_01_194317_add_has_won_at_to_collections_table.php b/database/migrations/2023_12_01_194317_add_has_won_at_to_collections_table.php new file mode 100644 index 000000000..9cc070452 --- /dev/null +++ b/database/migrations/2023_12_01_194317_add_has_won_at_to_collections_table.php @@ -0,0 +1,17 @@ +timestamp('has_won_at')->nullable(); + }); + } +}; diff --git a/lang/en/pages.php b/lang/en/pages.php index 3b286522e..3ee773d82 100644 --- a/lang/en/pages.php +++ b/lang/en/pages.php @@ -80,6 +80,7 @@ 'winners_month' => 'Winners: :month', 'vote_for_next_months_winners' => 'Vote now for next month\'s winners', 'view_previous_winners' => 'View Previous Winners', + 'vote_success' => 'Your vote has been successfully submitted', ], 'articles' => [ 'no_articles' => 'No articles have been linked to this collection as of now.', diff --git a/resources/js/I18n/Locales/en.json b/resources/js/I18n/Locales/en.json index 02e2317df..88e53f298 100644 --- a/resources/js/I18n/Locales/en.json +++ b/resources/js/I18n/Locales/en.json @@ -1 +1 @@ -{"auth.welcome":"Welcome to Dashbrd","auth.logged_in":"You're logged in!","auth.log_out":"Log out","auth.failed":"These credentials do not match our records.","auth.session_timeout":"Your session has timed out. Please refresh the page and try connecting your account again.","auth.session_timeout_modal":"Seems like your session has timed out. Please connnect your wallet again.","auth.password":"The provided password is incorrect.","auth.throttle":"Too many login attempts. Please try again in {{seconds}} seconds.","auth.wallet.connecting":"Connecting …","auth.wallet.waiting_for_signature":"Waiting for Signature …","auth.wallet.switching_wallet":"Switching Wallet …","auth.wallet.connect":"Connect Wallet","auth.wallet.connect_long":"Connect Your Wallet to Get Started","auth.wallet.sign_subtitle":"Connect Your Wallet to Continue","auth.wallet.disconnect":"Disconnect Wallet","auth.wallet.install":"Install MetaMask","auth.wallet.install_long":"Install MetaMask to Get Started","auth.wallet.sign":"Sign Message","auth.wallet.sign_message":"Welcome to Dashbrd. In order to login, sign this message with your wallet. It doesn't cost you anything!\n\nSigning ID (you can ignore this): {{nonce}}","auth.wallet.connect_subtitle":"Click on the MetaMask icon in your browser to confirm the action and connect your wallet.","auth.wallet.requires_signature":"In order to prevent impersonation, we require a signature to perform this action. This signature is only a signed message and does not give any access to your wallet.","auth.errors.metamask.no_account":"No account found. Please connect your wallet and try again.","auth.errors.metamask.generic":"Connection attempt error. Please retry and follow the steps to connect your wallet.","auth.errors.metamask.invalid_network":"Please switch to Polygon or Ethereum Mainnet in your MetaMask plugin to connect to Dashbrd.","auth.errors.metamask.provider_missing":"You don't have MetaMask installed in your browser. Please install and try again.","auth.errors.metamask.user_rejected":"It looks like you cancelled signing of the authentication message. Please try again.","auth.errors.metamask.provider_not_set":"Ethereum provider is not set","auth.validation.wallet_login_failed":"There was a problem trying to verify your signature. Please try again.","auth.validation.invalid_address":"Your wallet address is invalid. Please try again.","auth.validation.invalid_signature":"Signature is invalid. Please try again.","auth.validation.invalid_network":"Please switch to Polygon or Ethereum Mainnet in your MetaMask plugin to connect to Dashbrd.","common.author":"Author","common.add":"Add","common.amount":"Amount","common.balance":"Balance","common.cancel":"Cancel","common.delete":"Delete","common.edit":"Edit","common.confirm":"Confirm","common.connect":"Connect","common.continue":"Continue","common.done":"Done","common.filter":"Filter","common.items":"Items","common.receive":"Receive","common.received":"Received","common.retry":"Retry","common.records":"Records","common.save":"Save","common.send":"Send","common.sent":"Sent","common.show":"Show","common.searching":"Searching...","common.other":"Other","common.owned":"Owned","common.token":"Token","common.tokens":"Tokens","common.wallet":"Wallet","common.pending":"Pending","common.publish":"Publish","common.published":"Published","common.empty":"Empty","common.your_address":"Your Address","common.warning":"Warning","common.my_address":"My Address","common.my_wallet":"My Wallet","common.my_collections":"My Collections","common.my_balance":"My Balance","common.na":"N/A","common.simple_plural_without_data":"One comment|Many comments","common.simple_plural_with_data":"{{count}} comment|{{count}} comments","common.advanced_plural_without_data":"{0} no comments yet|{1} 1 comment|[2,*] Many comments","common.advanced_plural_with_data":"{0} no comments yet|{1} 1 comment|[2,*] {{count}} comments","common.copy_clipboard":"Copy to Clipboard","common.copy":"Copy","common.download":"Download","common.zoom":"Zoom","common.my_collection":"My Collection","common.max":"Max","common.chain":"Chain","common.copied":"Copied!","common.coming_soon":"Coming Soon","common.more_details":"More Details","common.close":"Close","common.close_toast":"Close toast","common.loading":"Loading","common.price":"Price","common.articles":"Articles","common.most_popular":"Most Popular","common.market_cap":"Market Cap","common.volume":"Volume","common.volume_frequency":"Volume {{frequency}}","common.value":"Value","common.last_n_days":"Last {{count}} Days","common.details":"Details","common.view_all":"View All","common.view_more_on_polygonscan":"View More on Polygonscan","common.view_more_on_etherscan":"View More on Etherscan","common.view_nft_on_etherscan":"View NFT on Etherscan","common.view_nft_on_polygonscan":"View NFT on Polygonscan","common.view_nft_on_goerli_tesnet":"View NFT on Goerli Testnet Explorer","common.view_nft_on_mumbai_tesnet":"View NFT on Mumbai Testnet Explorer","common.polygonscan":"Polygonscan","common.etherscan":"Etherscan","common.featured":"Featured","common.floor_price":"Floor Price","common.floor":"Floor","common.supply":"Supply","common.owners":"Owners","common.created":"Created","common.nft":"NFT","common.collection":"Collection","common.collections":"Collections","common.gallery":"Gallery","common.basic_gallery":"Basic Gallery","common.gallery_name":"Gallery Name","common.create_gallery":"Create Gallery","common.external_link":"External Link","common.follow_link":"Follow Link","common.cover":"Cover","common.template":"Template","common.page":"Page","common.polygon":"Polygon","common.ethereum":"Ethereum","common.mumbai":"Mumbai","common.goerli":"Goerli","common.of":"of","common.pagination_input_placeholder":"Enter the page number","common.pagination_input_placeholder_mobile":"Page number","common.nft_count":"{0} {{count}} NFTs|{1} {{count}} NFT|[2,*] {{count}} NFTs","common.nft_gallery":"NFT Gallery","common.unable_to_retrieve_image":"Unable to retrieve your NFT image at this time","common.optional":"Optional","common.selected":"Selected","common.select":"Select","common.preview":"Preview","common.image_size_error":"Image size must not exceed 2MB","common.image_dimensions_error":"Image dimensions must exceed 287px x 190px","common.write_to_confirm":"Write {{word}} to confirm","common.n_hours":"{0} {{count}} hour|{1} {{count}} hour|[2,*] {{count}} hours","common.n_minutes":"{0} {{count}} minute|{1} {{count}} minute|[2,*] {{count}} minutes","common.report":"Report","common.nfts":"NFTs","common.n_nfts":"{0}NFTs|{1}NFT|[2,*]NFTs","common.n_collections":"{0}collections|{1}collection|[2,*]collections","common.back":"Back","common.back_to":"Back to","common.name":"Name","common.type":"Type","common.from":"From","common.to":"To","common.sale_price":"Sale Price","common.recent_activity":"Recent Activity","common.time":"Time","common.datetime.few_seconds_ago":"A few seconds ago","common.datetime.minutes_ago":"{0} Less than a minute ago|{1} A minute ago|[2,*] {{count}} minutes ago","common.datetime.hours_ago":"{0} Less than an hour ago|{1} An hour ago|[2,*] {{count}} hours ago","common.datetime.days_ago":"{0} Less than a day ago|{1} A day ago|[2,*] {{count}} days ago","common.datetime.weeks_ago":"{0} Less than a week ago|{1} A week ago|[2,*] {{count}} weeks ago","common.datetime.months_ago":"{0} Less than a month ago|{1} A month ago|[2,*] {{count}} months ago","common.datetime.years_ago":"{0} Less than a year ago|{1} A year ago|[2,*] {{count}} years ago","common.no_traits_found":"No traits found.","common.empty_transactions":"You don't have any transactions yet. Once transactions have been made, they will show up here.","common.error":"Error","common.refresh":"Refresh","common.refresh_metadata":"Refresh Metadata","common.refreshing_metadata":"Refreshing Metadata... Please check back later.","common.refreshing_activity":"Refreshing Activity... Please check back later.","common.pending_confirmation":"Pending Confirmation","common.confirmed_transaction":"Confirmed Transaction","common.transaction_error":"Transaction Error","common.transaction_error_description_first_part":"Your transaction encountered an error. View this transaction on","common.transaction_error_description_second_part":"for more details.","common.home":"Home","common.contact":"Contact","common.menu":"Menu","common.website":"Website","common.twitter":"Twitter","common.discord":"Discord","common.facebook":"Facebook","common.reddit":"Reddit","common.x":"X","common.sort":"Sort","common.drafts":"Drafts","common.draft":"Draft","common.delete_draft":"Delete Draft","common.share_on":"Share on {{platform}}","common.top":"Top","common.all_chains":"All chains","common.votes":"Votes","footer.copyright":"{{year}} © Dashbrd. All rights reserved.","footer.all_rights_reserved":"All rights reserved","footer.privacy_policy":"Privacy Policy","footer.terms_of_service":"Terms of Service","footer.powered_by":"Powered by","format.fiat":"{{ value, currency }}","format.number":"{{ value, number }}","metatags.home.title":"Dashbrd | Web3 Portfolio Management Made Simple","metatags.home.description":"Simplify your Web3 journey with Dashbrd. Manage your portfolio of tokens, NFTs, and other digital collectibles across the Ethereum and Polygon blockchains.","metatags.home.image":"/images/meta/home.png","metatags.error.title":"Error {{code}} | Dashbrd","metatags.wallet.title":"My Wallet | Dashbrd","metatags.galleries.title":"Top NFT Galleries | Dashbrd","metatags.galleries.image":"/images/meta/nft-galleries.png","metatags.galleries.description":"Explore user published NFT galleries to find custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.most_popular.title":"Most Popular Galleries | Dashbrd","metatags.galleries.most_popular.image":"/images/meta/most-popular-nft-galleries.png","metatags.galleries.most_popular.description":"Explore and discover Most Popular NFT Galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.newest.title":"Newest Galleries | Dashbrd","metatags.galleries.newest.image":"/images/meta/newest-nft-galleries.png","metatags.galleries.newest.description":"Explore and discover most recent NFT galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More","metatags.galleries.most_valuable.title":"Most Valuable Galleries | Dashbrd","metatags.galleries.most_valuable.image":"/images/meta/most-valuable-nft-galleries.png","metatags.galleries.most_valuable.description":"Explore and discover Most Valuable NFT Galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.view.title":"{{name}} | Dashbrd","metatags.galleries.view.description":"{{name}} | A Curated NFT Gallery at Dashbrd","metatags.galleries.view.image":"/images/meta/nft-gallery.png","metatags.my_galleries.title":"My Galleries | Dashbrd","metatags.my_galleries.title_draft":"My Draft Galleries | Dashbrd","metatags.my_galleries.create.title":"Create Gallery | Dashbrd","metatags.my_galleries.edit.title":"Edit {{name}} | Dashbrd","metatags.collections.title":"Collections | Dashbrd","metatags.collections.view.title":"{{name}} Collection | Dashbrd","metatags.collections.view.description":"Immerse yourself in the intricate details of {{name}} collection, featuring remarkable digital assets. Start your NFT journey today!","metatags.collections.view.image":"/images/meta/nft-collection.png","metatags.my-collections.title":"My Collections | Dashbrd","metatags.nfts.view.title":"{{nft}} NFT | Dashbrd","metatags.nfts.view.description":"Uncover the complete story of {{nft}} NFT from the {{collection}} collection, delving into its unique attributes and distinctive features.","metatags.nfts.view.image":"/images/meta/nft-details.png","metatags.settings.title":"Settings | Dashbrd","metatags.articles.title":"Articles | Dashbrd","metatags.articles.view.title":"{{title}} | Dashbrd","metatags.login.title":"Login | Dashbrd","metatags.privacy_policy.title":"Privacy Policy | Dashbrd","metatags.privacy_policy.description":"Dashbrd’s privacy policy outlines the information we collect and explains your choices surrounding how we use information about you.","metatags.terms_of_service.title":"Terms of Service | Dashbrd","metatags.terms_of_service.description":"These Terms of Service cover your use and access to services, products or websites of Dashbrd.","metatags.cookie_policy.title":"Cookie Policy | Dashbrd","metatags.cookie_policy.description":"Dashbrd uses cookies to make the website more user-friendly. Find out about the main types of cookies we use, and what we use them for.","metatags.welcome.title":"Welcome to Dashbrd | Web3 Simplified","pages.onboarding.title":"Get Started","pages.onboarding.heading":"Your monkeys were bored and ran off, we are trying to round them up.","pages.onboarding.message":"We are setting up your account. This process usually takes just a few minutes, but can take up to 15 minutes.","pages.error.heading":"Oops, something went wrong ...","pages.error.message":"Please try again or get in touch if the issue persists.","pages.maintenance.title":"Dashbrd is currently down for scheduled maintenance.","pages.maintenance.description":"We expect to be back soon. Thanks for your patience.","pages.dashboard.title":"My Wallet","pages.dashboard.breakdown.title":"Portfolio Breakdown","pages.dashboard.line_chart.data_error":"Could not load chart data","pages.articles.title":"Articles","pages.articles.featured_collections":"Featured Collections","pages.articles.placeholder_more_soon":"More Soon","pages.articles.no_articles":"No articles have been published yet. Please check back later!","pages.articles.header_title":"Explore our collection of","pages.articles.header_suffix_one":"published article","pages.articles.header_suffix_other":"published articles","pages.articles.audio_version":"Audio version","pages.articles.consists_of_collections":"{0} This article highlights {{count}} collections|{1} This article highlights {{count}} collection|[2,*] This article highlights {{count}} collections","pages.collections.title":"Collections","pages.collections.collections":"Collections","pages.collections.popular_collections":"Popular Collections","pages.collections.collection_value":"Collection Value","pages.collections.nfts_owned":"NFTs Owned","pages.collections.header_title":"You own <0>{{nftsCount}} {{nfts}} across <0>{{collectionsCount}} {{collections}}, worth about <0><1>{{worth}}","pages.collections.search_placeholder":"Search by Collection","pages.collections.properties":"Properties","pages.collections.collections_network":"Collections Network","pages.collections.property_search_placeholder":"Feature Search","pages.collections.floor_price":"Floor Price","pages.collections.value":"Value","pages.collections.rarity":"Rarity","pages.collections.report":"Report","pages.collections.hide_collection":"Hide Collection","pages.collections.unhide_collection":"Unhide Collection","pages.collections.no_collections":"You do not own any NFTs yet. Once you do they will be shown here.","pages.collections.all_collections_hidden":"You have hidden all your collections. Unhide and they will appear here.","pages.collections.about_collection":"About Collection","pages.collections.show_hidden":"Show Hidden","pages.collections.show_my_collection":"Show My Collection","pages.collections.owned":"Owned","pages.collections.activities.loading_activities":"We're fetching Activity for this NFT, please hang tight, this can take a while.","pages.collections.activities.loading_activities_collection":"We're fetching Activity for this collection, please hang tight, this can take a while.","pages.collections.activities.ignores_activities":"We don't support activity history for this collection yet.","pages.collections.activities.no_activity":"This collection does not have any activity yet.","pages.collections.activities.types.LABEL_MINT":"Mint","pages.collections.activities.types.LABEL_TRANSFER":"Transfer","pages.collections.activities.types.LABEL_SALE":"Sale","pages.collections.activities.types.LABEL_BURN":"Burn","pages.collections.collection_of_the_month.winners_month":"Winners: {{month}}","pages.collections.collection_of_the_month.vote_for_next_months_winners":"Vote now for next month's winners","pages.collections.collection_of_the_month.view_previous_winners":"View Previous Winners","pages.collections.articles.no_articles":"No articles have been linked to this collection as of now.","pages.collections.articles.no_articles_with_filters":"We could not find any articles matching your search criteria, please try again!","pages.collections.articles.search_placeholder":"Search in Articles","pages.collections.articles.sort_latest":"Latest","pages.collections.articles.sort_popularity":"Most Popular","pages.collections.search.loading_results":"Loading results...","pages.collections.search.no_results":"We could not find anything matching your search criteria, please try again!","pages.collections.search.no_results_with_filters":"We could not find anything matching your filters, please try again!","pages.collections.search.no_results_ownership":"You do not own any NFTs in this collection","pages.collections.search.error":"Could not load search results. Please try again later.","pages.collections.vote.vote_for_top_collection":"Vote for Top Collection of the Month","pages.collections.vote.vote":"Vote","pages.collections.vote.time_left":"Time Left","pages.collections.vote.or_nominate_collection":"Or nominate a collection","pages.collections.sorting.token_number":"Token Number","pages.collections.sorting.recently_received":"Recently Received","pages.collections.sorting.recently_created":"Recently Created","pages.collections.sorting.oldest_collection":"Oldest Collection","pages.collections.traits.description":"List of NFT traits by % of occurrence in the collection","pages.collections.traits.no_traits":"No Properties can be found for this NFT","pages.collections.menu.collection":"Collection","pages.collections.menu.articles":"Articles","pages.collections.menu.activity":"Activity","pages.collections.hidden_modal.collection_hidden":"Collection Hidden","pages.collections.hidden_modal.description":"This collection is currently set to Hidden. Are you sure you want to unhide this collection? You can\n reset the collection to hidden from the collection menu.","pages.collections.hidden_modal.unhide":"Unhide","pages.collections.hidden_modal.error":"Something went wrong. Please try again.","pages.collections.external_modal.you_wish_continue":"You are about to leave Dashbrd to an external website. Dashbrd has no control over the content of\n this site. Are you sure you wish to continue?","pages.collections.external_modal.not_show":"Do not show this message again.","pages.collections.refresh.title":"Refresh your collection","pages.collections.refresh.notice":"You can refresh data every 15 minutes.","pages.collections.refresh.notice_wait":"Please wait. You can refresh data every 15 minutes.","pages.collections.refresh.toast":"We're updating information for your collection.","pages.collections.featured.title":"Featured Collections","pages.collections.featured.button":"Explore Collection","pages.collections.footer.heading_broken.0":"Connect with MetaMask","pages.collections.footer.heading_broken.1":"& Manage Your Collection","pages.collections.footer.subtitle":"Explore, Filter, & Share your favorite NFTs with Dashbrd.","pages.collections.footer.button":"Manage Collections","pages.nfts.nft":"nft","pages.nfts.about_nft":"About NFT","pages.nfts.owned_by":"Owned by","pages.nfts.collection_image":"collection image","pages.nfts.menu.properties":"Properties","pages.nfts.menu.activity":"Activity","pages.reports.title":"Submit a Report","pages.reports.description":"Thanks for looking out by reporting things that break the rules. Let us know what's happening and we'll receive the report.","pages.reports.success":"Thank you for your report. We'll review it and see if it breaks our ToS.","pages.reports.failed":"Something went wrong. Please try again.","pages.reports.throttle":"You have made too many requests. Please wait {{time}} before reporting again.","pages.reports.reported":"You have already reported this {{model}}.","pages.reports.reasons.spam":"Spam","pages.reports.reasons.violence":"Promoting Violence","pages.reports.reasons.hate":"Hate","pages.reports.reasons.inappropriate_content":"Inappropriate Content","pages.reports.reasons.impersonation":"Impersonation","pages.reports.reasons.trademark":"Trademark or Copyright","pages.reports.reasons.selfharm":"Self-Harm","pages.reports.reasons.harassment":"Harassment","pages.galleries.title":"Galleries","pages.galleries.empty_title":"No galleries have been published yet. Once they do they will appear here.","pages.galleries.search.loading_results":"Loading results...","pages.galleries.search.no_results":"We could not find anything matching your search criteria, please try again!","pages.galleries.search.placeholder":"Search by name or curator address","pages.galleries.search.placeholder_nfts":"Search by NFTs","pages.galleries.search.error":"Could not load search results. Please try again later.","pages.galleries.my_galleries.title":"My Galleries","pages.galleries.my_galleries.subtitle":"Manage your galleries","pages.galleries.my_galleries.new_gallery":"New Gallery","pages.galleries.my_galleries.no_galleries":"You have not created any galleries yet. To create a gallery, click on the \"Create Gallery\" button.","pages.galleries.my_galleries.no_available_collections":"You have hidden all your collections. If you want to create a gallery, make sure you have at least 1 collection available.","pages.galleries.my_galleries.no_draft_galleries":"You have no draft galleries yet. To create a gallery, click on the \"Create Gallery\" button.","pages.galleries.my_galleries.succesfully_deleted":"Gallery has been successfully removed","pages.galleries.my_galleries.draft_succesfully_deleted":"Draft has been successfully removed","pages.galleries.my_galleries.successfully_created":"Gallery has been successfully created","pages.galleries.my_galleries.successfully_updated":"Gallery has been successfully updated","pages.galleries.my_galleries.new_gallery_no_nfts":"Creating a Gallery requires you to own an NFT.","pages.galleries.my_galleries.new_gallery_all_collections_hidden":"Creating a Gallery requires you to have at least 1 collection available.","pages.galleries.my_galleries.delete_modal.title":"Delete Draft","pages.galleries.my_galleries.delete_modal.text":"Are you sure you want to delete the draft? Everything you've done will be deleted and you won't be able to get it back.","pages.galleries.my_galleries.nfts_no_longer_owned":"NFTs no longer owned by this wallet have been removed from the draft”","pages.galleries.copy_gallery_link":"Copy Gallery Link","pages.galleries.my_nfts":"My NFTs","pages.galleries.show_hidden_collections":"Show hidden collections","pages.galleries.value":"Value","pages.galleries.floor_price":"Floor Price","pages.galleries.nfts":"NFTs","pages.galleries.collections":"Collections","pages.galleries.galleries_count_simple":"{0} galleries|{1} gallery|[2,*] galleries","pages.galleries.galleries_count":"{0} {{count}} Galleries|{1} {{count}} Gallery|[2,*] {{count}} Galleries","pages.galleries.collections_count_simple":"{0} collections|{1} collection|[2,*] collections","pages.galleries.collections_count":"{0} {{count}} Collections|{1} {{count}} Collection|[2,*] {{count}} Collections","pages.galleries.nfts_count_simple":"{0} NFTs|{1} NFT|[2,*] NFTs","pages.galleries.nfts_count":"{0} {{count}} NFTs|{1} {{count}} NFT|[2,*] {{count}} NFTs","pages.galleries.users_count_simple":"{0} users|{1} user|[2,*] users","pages.galleries.users_count":"{0} {{count}} Users|{1} {{count}} User|[2,*] {{count}} Users","pages.galleries.featuring":"Featuring","pages.galleries.curated_by":"Curated by","pages.galleries.worth_about":"Worth About","pages.galleries.valued_at":"valued at","pages.galleries.from":"From","pages.galleries.most_popular_galleries":"Most Popular Galleries","pages.galleries.newest_galleries":"Newest Galleries","pages.galleries.most_valuable_galleries":"Most Valuable Galleries","pages.galleries.most_popular":"Most Popular","pages.galleries.newest":"Newest","pages.galleries.most_valuable":"Most Valuable","pages.galleries.create.search_by_nfts":"Search by NFTs","pages.galleries.create.input_placeholder":"Enter gallery name","pages.galleries.create.title_too_long":"Gallery name must not exceed {{max}} characters.","pages.galleries.create.already_selected_nft":"NFT already exists in this gallery","pages.galleries.create.nft_missing_image":"Only NFTs with images can be added to galleries","pages.galleries.create.nft_gallery_limit":"You can only add 16 NFTs per gallery","pages.galleries.create.gallery_cover":"Gallery Cover","pages.galleries.create.gallery_cover_description":"The cover is used for the card on the gallery list page. While the cover is not a requirement it will allow you to add personality and stand out from the crowd.","pages.galleries.create.gallery_cover_information":"Image dimensions must be at least 287px x 190px, with a max size of 2 MB (JPG, PNG or GIF)","pages.galleries.create.no_results":"We could not find anything matching your search criteria, please try again!","pages.galleries.create.templates.cover":"Cover","pages.galleries.create.templates.template":"Template","pages.galleries.create.templates.select":"Select Gallery Template","pages.galleries.create.templates.basic":"Basic Gallery","pages.galleries.create.templates.coming_soon":"More Coming Soon","pages.galleries.create.load_more_collections_one":"Load {{count}} More Collection","pages.galleries.create.load_more_collections_other":"Load {{count}} More Collections","pages.galleries.create.load_more_nfts":"Load More NFTs","pages.galleries.create.can_purchase":"You can purchase NFTs with these top NFT Marketplaces:","pages.galleries.create.must_own_one_nft":"You must own at least one (1) NFT in order to create a gallery.","pages.galleries.create.back_to_galleries":"Back to Galleries","pages.galleries.create.draft_saved":"Draft Saved","pages.galleries.create.saving_to_draft":"Saving to draft","pages.galleries.create.drafts_limit_modal_title":"Draft Gallery Limit","pages.galleries.create.drafts_limit_modal_message":"You’ve hit your limit for draft galleries. While you can still make new galleries and publish them, they won’t be saved as drafts. To Free up space, you can either delete existing drafts or publish them.","pages.galleries.create.drafts_limit_modal_cancel":"Go to Drafts","pages.galleries.delete_modal.title":"Delete Gallery","pages.galleries.delete_modal.confirmation_text":"Are you sure you want to delete the gallery? Deleting a Gallery is permanent, all associated views and likes will be lost.","pages.galleries.consists_of_collections":"{0} This gallery consists of {{count}} collections|{1} This gallery consists of {{count}} collection|[2,*] This gallery consists of {{count}} collections","pages.galleries.guest_banner.title":"Craft the ultimate","pages.galleries.guest_banner.subtitle":"Pick your favorites, curate your gallery, & share it with the world.","pages.profile.title":"Profile","pages.token_panel.balance_tooltip":"Total percentage of the portfolio held in this token","pages.token_panel.insufficient_funds":"Insufficient Balance","pages.token_panel.error":"Dashbrd has failed to load token information. Please try again later.","pages.token_panel.failed_to_retrieve_transactions":"We were unable to fetch your transactions.","pages.token_panel.tabs.transaction_history":"Transaction History","pages.token_panel.tabs.history":"History","pages.token_panel.tabs.market_data":"Market Data","pages.token_panel.details.current_price":"Current Price","pages.token_panel.details.title":"Token Details","pages.token_panel.details.market_cap":"Market Cap","pages.token_panel.details.volume":"Daily Volume","pages.token_panel.details.supply":"Minted Supply","pages.token_panel.details.ath":"All-Time High","pages.token_panel.details.atl":"All-Time Low","pages.token_panel.chart.failed":"Dashbrd has failed to load chart information. Please try again later.","pages.transaction_details_panel.title":"Transaction Details","pages.transaction_details_panel.details.blockchain":"Blockchain","pages.transaction_details_panel.details.timestamp":"Timestamp","pages.transaction_details_panel.details.transaction_hash":"Transaction Hash","pages.transaction_details_panel.details.transaction_fee":"Transaction Fee","pages.transaction_details_panel.details.gas_price":"Gas Price","pages.transaction_details_panel.details.gas_used":"Gas Used","pages.transaction_details_panel.details.nonce":"Nonce","pages.send_receive_panel.send.labels.token_and_amount":"Token and Amount","pages.send_receive_panel.send.labels.destination_address":"Destination Address","pages.send_receive_panel.send.labels.projected_fee":"Projected Fee","pages.send_receive_panel.send.placeholders.enter_amount":"Enter Amount","pages.send_receive_panel.send.placeholders.insert_recipient_address":"Insert Recipient Address","pages.send_receive_panel.send.placeholders.projected_fee":"Projected Fee","pages.send_receive_panel.send.errors.amount":"Insufficient Funds: You do not have enough to cover the amount + fee.","pages.send_receive_panel.send.errors.destination":"Destination address is not correct. Check and input again.","pages.send_receive_panel.send.hints.token_price":"Token Price","pages.send_receive_panel.send.fees.Fast":"Fast","pages.send_receive_panel.send.fees.Avg":"Avg","pages.send_receive_panel.send.fees.Slow":"Slow","pages.send_receive_panel.send.search_dropdown.placeholder":"Search token","pages.send_receive_panel.send.search_dropdown.no_results":"No Results","pages.send_receive_panel.send.search_dropdown.error":"Error occurred while searching tokens.","pages.send_receive_panel.send.transaction_time":"Transaction Time: ~{{ time }} minutes","pages.send_receive_panel.send.from":"From","pages.send_receive_panel.send.to":"To","pages.send_receive_panel.send.amount":"Amount","pages.send_receive_panel.send.fee":"Fee","pages.send_receive_panel.send.total_amount":"Total Amount","pages.send_receive_panel.send.waiting_message":"Review and verify the information on your MetaMask. Sign to send the transaction.","pages.send_receive_panel.send.waiting_spinner_text":"Waiting for confirmation...","pages.send_receive_panel.send.failed_message":"It looks like something went wrong while sending your transaction. Press 'Retry' to make another attempt.","pages.send_receive_panel.receive.alert":"Send only Polygon or Ethereum Network compatible tokens to this address or you could permanently lose your funds!","pages.settings.title":"Settings","pages.settings.sidebar.general":"General","pages.settings.sidebar.notifications":"Notifications","pages.settings.sidebar.session_history":"Sessions History","pages.settings.general.title":"Settings","pages.settings.general.subtitle":"Customize your App Experience","pages.settings.general.currency":"Currency","pages.settings.general.currency_subtitle":"Select your default currency which will be used throughout the app.","pages.settings.general.time_date":"Time & Date","pages.settings.general.time_date_subtitle":"Select how you want time and date be shown inside app.","pages.settings.general.date_format":"Date Format","pages.settings.general.time_format":"Time Format","pages.settings.general.timezone":"Timezone","pages.settings.general.set_defaults":"Set Defaults","pages.settings.general.set_defaults_content":"Reverting to the default settings will remove any customizations previously made. Are you sure?","pages.settings.general.save":"Save Settings","pages.settings.general.saved":"Your settings have been successfully saved","pages.wallet.title":"Wallet","pages.privacy_policy.title":"Privacy Policy","pages.terms_of_service.title":"Terms of Service","pagination.previous":"« Previous","pagination.next":"Next »","passwords.reset":"Your password has been reset!","passwords.sent":"We have emailed your password reset link!","passwords.throttled":"Please wait before retrying.","passwords.token":"This password reset token is invalid.","passwords.user":"We can't find a user with that email address.","urls.landing":"https://dashbrd.com","urls.cookie_policy":"https://dashbrd.com/cookie-policy","urls.privacy_policy":"https://dashbrd.com/privacy-policy","urls.terms_of_service":"https://dashbrd.com/terms-of-service","urls.twitter":"https://x.com/DashbrdApp","urls.discord":"https://discord.gg/MJyWKkCJ5k","urls.github":"https://github.com/ArdentHQ/dashbrd","urls.coingecko":"https://www.coingecko.com","urls.etherscan":"https://etherscan.io","urls.polygonscan":"https://polygonscan.com","urls.alchemy":"https://www.alchemy.com","urls.moralis":"https://moralis.io","urls.mnemonic":"https://www.mnemonichq.com","urls.opensea":"https://opensea.io/","urls.explorers.etherscan.token_transactions":"https://etherscan.io/token/{{token}}?a={{address}}","urls.explorers.etherscan.addresses":"https://etherscan.io/address/{{address}}","urls.explorers.etherscan.transactions":"https://etherscan.io/tx/{{id}}","urls.explorers.etherscan.nft":"https://etherscan.io/nft/{{address}}/{{nftId}}","urls.explorers.polygonscan.token_transactions":"https://polygonscan.com/token/{{token}}?a={{address}}","urls.explorers.polygonscan.addresses":"https://polygonscan.com/address/{{address}}","urls.explorers.polygonscan.transactions":"https://polygonscan.com/tx/{{id}}","urls.explorers.polygonscan.nft":"https://polygonscan.com/nft/{{address}}/{{nftId}}","urls.explorers.mumbai.token_transactions":"https://mumbai.polygonscan.com/token/{{token}}?a={{address}}","urls.explorers.mumbai.addresses":"https://mumbai.polygonscan.com/address/{{address}}","urls.explorers.mumbai.transactions":"https://mumbai.polygonscan.com/tx/{{id}}","urls.explorers.mumbai.nft":"https://mumbai.polygonscan.com/nft/{{address}}/{{nftId}}","urls.explorers.goerli.token_transactions":"https://goerli.etherscan.io/token/{{token}}?a={{address}}","urls.explorers.goerli.addresses":"https://goerli.etherscan.io/address/{{address}}","urls.explorers.goerli.transactions":"https://goerli.etherscan.io/tx/{{id}}","urls.explorers.goerli.nft":"https://goerli.etherscan.io/nft/{{address}}/{{nftId}}","urls.marketplaces.opensea.collection":"https://opensea.io/assets/{{network}}/{{address}}","urls.marketplaces.opensea.nft":"https://opensea.io/assets/{{network}}/{{address}}/{{nftId}}","urls.marketplaces.rarible.collection":"https://rarible.com/collection/{{address}}/items","urls.marketplaces.rarible.nft":"https://rarible.com/token/{{address}}:{{nftId}}","urls.marketplaces.blur.collection":"https://blur.io/collection/{{address}}","urls.marketplaces.blur.nft":"https://blur.io/asset/{{address}}/{{nftId}}","urls.marketplaces.looksrare.collection":"https://looksrare.org/collections/{{address}}","urls.marketplaces.looksrare.nft":"https://looksrare.org/collections/{{address}}/{{nftId}}","validation.accepted":"The {{attribute}} must be accepted.","validation.accepted_if":"The {{attribute}} must be accepted when {{other}} is {{value}}.","validation.active_url":"The {{attribute}} is not a valid URL.","validation.after":"The {{attribute}} must be a date after {{date}}.","validation.after_or_equal":"The {{attribute}} must be a date after or equal to {{date}}.","validation.alpha":"The {{attribute}} must only contain letters.","validation.alpha_dash":"The {{attribute}} must only contain letters, numbers, dashes and underscores.","validation.alpha_num":"The {{attribute}} must only contain letters and numbers.","validation.array":"The {{attribute}} must be an array.","validation.ascii":"The {{attribute}} must only contain single-byte alphanumeric characters and symbols.","validation.before":"The {{attribute}} must be a date before {{date}}.","validation.before_or_equal":"The {{attribute}} must be a date before or equal to {{date}}.","validation.between.array":"The {{attribute}} must have between {{min}} and {{max}} items.","validation.between.file":"The {{attribute}} must be between {{min}} and {{max}} kilobytes.","validation.between.numeric":"The {{attribute}} must be between {{min}} and {{max}}.","validation.between.string":"The {{attribute}} must be between {{min}} and {{max}} characters.","validation.boolean":"The {{attribute}} field must be true or false.","validation.confirmed":"The {{attribute}} confirmation does not match.","validation.current_password":"The password is incorrect.","validation.date":"The {{attribute}} is not a valid date.","validation.date_equals":"The {{attribute}} must be a date equal to {{date}}.","validation.date_format":"The {{attribute}} does not match the format {{format}}.","validation.decimal":"The {{attribute}} must have {{decimal}} decimal places.","validation.declined":"The {{attribute}} must be declined.","validation.declined_if":"The {{attribute}} must be declined when {{other}} is {{value}}.","validation.different":"The {{attribute}} and {{other}} must be different.","validation.digits":"The {{attribute}} must be {{digits}} digits.","validation.digits_between":"The {{attribute}} must be between {{min}} and {{max}} digits.","validation.dimensions":"The {{attribute}} has invalid image dimensions.","validation.distinct":"The {{attribute}} field has a duplicate value.","validation.doesnt_end_with":"The {{attribute}} may not end with one of the following: {{values}}.","validation.doesnt_start_with":"The {{attribute}} may not start with one of the following: {{values}}.","validation.email":"The {{attribute}} must be a valid email address.","validation.ends_with":"The {{attribute}} must end with one of the following: {{values}}.","validation.enum":"The selected {{attribute}} is invalid.","validation.exists":"The selected {{attribute}} is invalid.","validation.file":"The {{attribute}} must be a file.","validation.filled":"The {{attribute}} field must have a value.","validation.gt.array":"The {{attribute}} must have more than {{value}} items.","validation.gt.file":"The {{attribute}} must be greater than {{value}} kilobytes.","validation.gt.numeric":"The {{attribute}} must be greater than {{value}}.","validation.gt.string":"The {{attribute}} must be greater than {{value}} characters.","validation.gte.array":"The {{attribute}} must have {{value}} items or more.","validation.gte.file":"The {{attribute}} must be greater than or equal to {{value}} kilobytes.","validation.gte.numeric":"The {{attribute}} must be greater than or equal to {{value}}.","validation.gte.string":"The {{attribute}} must be greater than or equal to {{value}} characters.","validation.image":"The {{attribute}} must be an image.","validation.in":"The selected {{attribute}} is invalid.","validation.in_array":"The {{attribute}} field does not exist in {{other}}.","validation.integer":"The {{attribute}} must be an integer.","validation.ip":"The {{attribute}} must be a valid IP address.","validation.ipv4":"The {{attribute}} must be a valid IPv4 address.","validation.ipv6":"The {{attribute}} must be a valid IPv6 address.","validation.json":"The {{attribute}} must be a valid JSON string.","validation.lowercase":"The {{attribute}} must be lowercase.","validation.lt.array":"The {{attribute}} must have less than {{value}} items.","validation.lt.file":"The {{attribute}} must be less than {{value}} kilobytes.","validation.lt.numeric":"The {{attribute}} must be less than {{value}}.","validation.lt.string":"The {{attribute}} must be less than {{value}} characters.","validation.lte.array":"The {{attribute}} must not have more than {{value}} items.","validation.lte.file":"The {{attribute}} must be less than or equal to {{value}} kilobytes.","validation.lte.numeric":"The {{attribute}} must be less than or equal to {{value}}.","validation.lte.string":"The {{attribute}} must be less than or equal to {{value}} characters.","validation.mac_address":"The {{attribute}} must be a valid MAC address.","validation.max.array":"The {{attribute}} must not have more than {{max}} items.","validation.max.file":"The {{attribute}} must not be greater than {{max}} kilobytes.","validation.max.numeric":"The {{attribute}} must not be greater than {{max}}.","validation.max.string":"The {{attribute}} must not be greater than {{max}} characters.","validation.max_digits":"The {{attribute}} must not have more than {{max}} digits.","validation.mimes":"The {{attribute}} must be a file of type: {{values}}.","validation.mimetypes":"The {{attribute}} must be a file of type: {{values}}.","validation.min.array":"The {{attribute}} must have at least {{min}} items.","validation.min.file":"The {{attribute}} must be at least {{min}} kilobytes.","validation.min.numeric":"The {{attribute}} must be at least {{min}}.","validation.min.string":"The {{attribute}} must be at least {{min}} characters.","validation.min_digits":"The {{attribute}} must have at least {{min}} digits.","validation.missing":"The {{attribute}} field must be missing.","validation.missing_if":"The {{attribute}} field must be missing when {{other}} is {{value}}.","validation.missing_unless":"The {{attribute}} field must be missing unless {{other}} is {{value}}.","validation.missing_with":"The {{attribute}} field must be missing when {{values}} is present.","validation.missing_with_all":"The {{attribute}} field must be missing when {{values}} are present.","validation.multiple_of":"The {{attribute}} must be a multiple of {{value}}.","validation.not_in":"The selected {{attribute}} is invalid.","validation.not_regex":"The {{attribute}} format is invalid.","validation.numeric":"The {{attribute}} must be a number.","validation.password.letters":"The {{attribute}} must contain at least one letter.","validation.password.mixed":"The {{attribute}} must contain at least one uppercase and one lowercase letter.","validation.password.numbers":"The {{attribute}} must contain at least one number.","validation.password.symbols":"The {{attribute}} must contain at least one symbol.","validation.password.uncompromised":"The given {{attribute}} has appeared in a data leak. Please choose a different {{attribute}}.","validation.present":"The {{attribute}} field must be present.","validation.prohibited":"The {{attribute}} field is prohibited.","validation.prohibited_if":"The {{attribute}} field is prohibited when {{other}} is {{value}}.","validation.prohibited_unless":"The {{attribute}} field is prohibited unless {{other}} is in {{values}}.","validation.prohibits":"The {{attribute}} field prohibits {{other}} from being present.","validation.regex":"The {{attribute}} format is invalid.","validation.required":"The {{attribute}} field is required.","validation.required_array_keys":"The {{attribute}} field must contain entries for: {{values}}.","validation.required_if":"The {{attribute}} field is required when {{other}} is {{value}}.","validation.required_if_accepted":"The {{attribute}} field is required when {{other}} is accepted.","validation.required_unless":"The {{attribute}} field is required unless {{other}} is in {{values}}.","validation.required_with":"The {{attribute}} field is required when {{values}} is present.","validation.required_with_all":"The {{attribute}} field is required when {{values}} are present.","validation.required_without":"The {{attribute}} field is required when {{values}} is not present.","validation.required_without_all":"The {{attribute}} field is required when none of {{values}} are present.","validation.same":"The {{attribute}} and {{other}} must match.","validation.size.array":"The {{attribute}} must contain {{size}} items.","validation.size.file":"The {{attribute}} must be {{size}} kilobytes.","validation.size.numeric":"The {{attribute}} must be {{size}}.","validation.size.string":"The {{attribute}} must be {{size}} characters.","validation.starts_with":"The {{attribute}} must start with one of the following: {{values}}.","validation.string":"The {{attribute}} must be a string.","validation.timezone":"The {{attribute}} must be a valid timezone.","validation.unique":"The {{attribute}} has already been taken.","validation.uploaded":"The {{attribute}} failed to upload.","validation.uppercase":"The {{attribute}} must be uppercase.","validation.url":"The {{attribute}} must be a valid URL.","validation.ulid":"The {{attribute}} must be a valid ULID.","validation.uuid":"The {{attribute}} must be a valid UUID.","validation.custom.attribute-name.rule-name":"custom-message","validation.unsupported_currency_code":"The currency code you provided is invalid or not supported.","validation.unsupported_period":"The period you provided is invalid or not supported.","validation.unsupported_token_symbol":"The token symbol you provided is invalid or not supported.","validation.gallery_title_required":"Gallery name is required.","validation.gallery_title_max_characters":"The gallery name should not exceed 50 characters.","validation.gallery_title_invalid":"The gallery name is invalid.","validation.nfts_required":"Please add at least one NFT.","validation.nfts_max_size":"Galleries can contain no more than {{limit}} NFTs","validation.invalid_nfts":"The NFT in position {{position}} is invalid, please select another one.","validation.invalid_cover":"You have selected an invalid cover image, please try another one."} \ No newline at end of file +{"auth.welcome":"Welcome to Dashbrd","auth.logged_in":"You're logged in!","auth.log_out":"Log out","auth.failed":"These credentials do not match our records.","auth.session_timeout":"Your session has timed out. Please refresh the page and try connecting your account again.","auth.session_timeout_modal":"Seems like your session has timed out. Please connnect your wallet again.","auth.password":"The provided password is incorrect.","auth.throttle":"Too many login attempts. Please try again in {{seconds}} seconds.","auth.wallet.connecting":"Connecting …","auth.wallet.waiting_for_signature":"Waiting for Signature …","auth.wallet.switching_wallet":"Switching Wallet …","auth.wallet.connect":"Connect Wallet","auth.wallet.connect_long":"Connect Your Wallet to Get Started","auth.wallet.sign_subtitle":"Connect Your Wallet to Continue","auth.wallet.disconnect":"Disconnect Wallet","auth.wallet.install":"Install MetaMask","auth.wallet.install_long":"Install MetaMask to Get Started","auth.wallet.sign":"Sign Message","auth.wallet.sign_message":"Welcome to Dashbrd. In order to login, sign this message with your wallet. It doesn't cost you anything!\n\nSigning ID (you can ignore this): {{nonce}}","auth.wallet.connect_subtitle":"Click on the MetaMask icon in your browser to confirm the action and connect your wallet.","auth.wallet.requires_signature":"In order to prevent impersonation, we require a signature to perform this action. This signature is only a signed message and does not give any access to your wallet.","auth.errors.metamask.no_account":"No account found. Please connect your wallet and try again.","auth.errors.metamask.generic":"Connection attempt error. Please retry and follow the steps to connect your wallet.","auth.errors.metamask.invalid_network":"Please switch to Polygon or Ethereum Mainnet in your MetaMask plugin to connect to Dashbrd.","auth.errors.metamask.provider_missing":"You don't have MetaMask installed in your browser. Please install and try again.","auth.errors.metamask.user_rejected":"It looks like you cancelled signing of the authentication message. Please try again.","auth.errors.metamask.provider_not_set":"Ethereum provider is not set","auth.validation.wallet_login_failed":"There was a problem trying to verify your signature. Please try again.","auth.validation.invalid_address":"Your wallet address is invalid. Please try again.","auth.validation.invalid_signature":"Signature is invalid. Please try again.","auth.validation.invalid_network":"Please switch to Polygon or Ethereum Mainnet in your MetaMask plugin to connect to Dashbrd.","common.author":"Author","common.add":"Add","common.amount":"Amount","common.balance":"Balance","common.cancel":"Cancel","common.delete":"Delete","common.edit":"Edit","common.confirm":"Confirm","common.connect":"Connect","common.continue":"Continue","common.done":"Done","common.filter":"Filter","common.items":"Items","common.receive":"Receive","common.received":"Received","common.retry":"Retry","common.records":"Records","common.save":"Save","common.send":"Send","common.sent":"Sent","common.show":"Show","common.searching":"Searching...","common.other":"Other","common.owned":"Owned","common.token":"Token","common.tokens":"Tokens","common.wallet":"Wallet","common.pending":"Pending","common.publish":"Publish","common.published":"Published","common.empty":"Empty","common.your_address":"Your Address","common.warning":"Warning","common.my_address":"My Address","common.my_wallet":"My Wallet","common.my_collections":"My Collections","common.my_balance":"My Balance","common.na":"N/A","common.simple_plural_without_data":"One comment|Many comments","common.simple_plural_with_data":"{{count}} comment|{{count}} comments","common.advanced_plural_without_data":"{0} no comments yet|{1} 1 comment|[2,*] Many comments","common.advanced_plural_with_data":"{0} no comments yet|{1} 1 comment|[2,*] {{count}} comments","common.copy_clipboard":"Copy to Clipboard","common.copy":"Copy","common.download":"Download","common.zoom":"Zoom","common.my_collection":"My Collection","common.max":"Max","common.chain":"Chain","common.copied":"Copied!","common.coming_soon":"Coming Soon","common.more_details":"More Details","common.close":"Close","common.close_toast":"Close toast","common.loading":"Loading","common.price":"Price","common.articles":"Articles","common.most_popular":"Most Popular","common.market_cap":"Market Cap","common.volume":"Volume","common.volume_frequency":"Volume {{frequency}}","common.value":"Value","common.last_n_days":"Last {{count}} Days","common.details":"Details","common.view_all":"View All","common.view_more_on_polygonscan":"View More on Polygonscan","common.view_more_on_etherscan":"View More on Etherscan","common.view_nft_on_etherscan":"View NFT on Etherscan","common.view_nft_on_polygonscan":"View NFT on Polygonscan","common.view_nft_on_goerli_tesnet":"View NFT on Goerli Testnet Explorer","common.view_nft_on_mumbai_tesnet":"View NFT on Mumbai Testnet Explorer","common.polygonscan":"Polygonscan","common.etherscan":"Etherscan","common.featured":"Featured","common.floor_price":"Floor Price","common.floor":"Floor","common.supply":"Supply","common.owners":"Owners","common.created":"Created","common.nft":"NFT","common.collection":"Collection","common.collections":"Collections","common.gallery":"Gallery","common.basic_gallery":"Basic Gallery","common.gallery_name":"Gallery Name","common.create_gallery":"Create Gallery","common.external_link":"External Link","common.follow_link":"Follow Link","common.cover":"Cover","common.template":"Template","common.page":"Page","common.polygon":"Polygon","common.ethereum":"Ethereum","common.mumbai":"Mumbai","common.goerli":"Goerli","common.of":"of","common.pagination_input_placeholder":"Enter the page number","common.pagination_input_placeholder_mobile":"Page number","common.nft_count":"{0} {{count}} NFTs|{1} {{count}} NFT|[2,*] {{count}} NFTs","common.nft_gallery":"NFT Gallery","common.unable_to_retrieve_image":"Unable to retrieve your NFT image at this time","common.optional":"Optional","common.selected":"Selected","common.select":"Select","common.preview":"Preview","common.image_size_error":"Image size must not exceed 2MB","common.image_dimensions_error":"Image dimensions must exceed 287px x 190px","common.write_to_confirm":"Write {{word}} to confirm","common.n_hours":"{0} {{count}} hour|{1} {{count}} hour|[2,*] {{count}} hours","common.n_minutes":"{0} {{count}} minute|{1} {{count}} minute|[2,*] {{count}} minutes","common.report":"Report","common.nfts":"NFTs","common.n_nfts":"{0}NFTs|{1}NFT|[2,*]NFTs","common.n_collections":"{0}collections|{1}collection|[2,*]collections","common.back":"Back","common.back_to":"Back to","common.name":"Name","common.type":"Type","common.from":"From","common.to":"To","common.sale_price":"Sale Price","common.recent_activity":"Recent Activity","common.time":"Time","common.datetime.few_seconds_ago":"A few seconds ago","common.datetime.minutes_ago":"{0} Less than a minute ago|{1} A minute ago|[2,*] {{count}} minutes ago","common.datetime.hours_ago":"{0} Less than an hour ago|{1} An hour ago|[2,*] {{count}} hours ago","common.datetime.days_ago":"{0} Less than a day ago|{1} A day ago|[2,*] {{count}} days ago","common.datetime.weeks_ago":"{0} Less than a week ago|{1} A week ago|[2,*] {{count}} weeks ago","common.datetime.months_ago":"{0} Less than a month ago|{1} A month ago|[2,*] {{count}} months ago","common.datetime.years_ago":"{0} Less than a year ago|{1} A year ago|[2,*] {{count}} years ago","common.no_traits_found":"No traits found.","common.empty_transactions":"You don't have any transactions yet. Once transactions have been made, they will show up here.","common.error":"Error","common.refresh":"Refresh","common.refresh_metadata":"Refresh Metadata","common.refreshing_metadata":"Refreshing Metadata... Please check back later.","common.refreshing_activity":"Refreshing Activity... Please check back later.","common.pending_confirmation":"Pending Confirmation","common.confirmed_transaction":"Confirmed Transaction","common.transaction_error":"Transaction Error","common.transaction_error_description_first_part":"Your transaction encountered an error. View this transaction on","common.transaction_error_description_second_part":"for more details.","common.home":"Home","common.contact":"Contact","common.menu":"Menu","common.website":"Website","common.twitter":"Twitter","common.discord":"Discord","common.facebook":"Facebook","common.reddit":"Reddit","common.x":"X","common.sort":"Sort","common.drafts":"Drafts","common.draft":"Draft","common.delete_draft":"Delete Draft","common.share_on":"Share on {{platform}}","common.top":"Top","common.all_chains":"All chains","common.votes":"Votes","footer.copyright":"{{year}} © Dashbrd. All rights reserved.","footer.all_rights_reserved":"All rights reserved","footer.privacy_policy":"Privacy Policy","footer.terms_of_service":"Terms of Service","footer.powered_by":"Powered by","format.fiat":"{{ value, currency }}","format.number":"{{ value, number }}","metatags.home.title":"Dashbrd | Web3 Portfolio Management Made Simple","metatags.home.description":"Simplify your Web3 journey with Dashbrd. Manage your portfolio of tokens, NFTs, and other digital collectibles across the Ethereum and Polygon blockchains.","metatags.home.image":"/images/meta/home.png","metatags.error.title":"Error {{code}} | Dashbrd","metatags.wallet.title":"My Wallet | Dashbrd","metatags.galleries.title":"Top NFT Galleries | Dashbrd","metatags.galleries.image":"/images/meta/nft-galleries.png","metatags.galleries.description":"Explore user published NFT galleries to find custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.most_popular.title":"Most Popular Galleries | Dashbrd","metatags.galleries.most_popular.image":"/images/meta/most-popular-nft-galleries.png","metatags.galleries.most_popular.description":"Explore and discover Most Popular NFT Galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.newest.title":"Newest Galleries | Dashbrd","metatags.galleries.newest.image":"/images/meta/newest-nft-galleries.png","metatags.galleries.newest.description":"Explore and discover most recent NFT galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More","metatags.galleries.most_valuable.title":"Most Valuable Galleries | Dashbrd","metatags.galleries.most_valuable.image":"/images/meta/most-valuable-nft-galleries.png","metatags.galleries.most_valuable.description":"Explore and discover Most Valuable NFT Galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.view.title":"{{name}} | Dashbrd","metatags.galleries.view.description":"{{name}} | A Curated NFT Gallery at Dashbrd","metatags.galleries.view.image":"/images/meta/nft-gallery.png","metatags.my_galleries.title":"My Galleries | Dashbrd","metatags.my_galleries.title_draft":"My Draft Galleries | Dashbrd","metatags.my_galleries.create.title":"Create Gallery | Dashbrd","metatags.my_galleries.edit.title":"Edit {{name}} | Dashbrd","metatags.collections.title":"Collections | Dashbrd","metatags.collections.view.title":"{{name}} Collection | Dashbrd","metatags.collections.view.description":"Immerse yourself in the intricate details of {{name}} collection, featuring remarkable digital assets. Start your NFT journey today!","metatags.collections.view.image":"/images/meta/nft-collection.png","metatags.my-collections.title":"My Collections | Dashbrd","metatags.nfts.view.title":"{{nft}} NFT | Dashbrd","metatags.nfts.view.description":"Uncover the complete story of {{nft}} NFT from the {{collection}} collection, delving into its unique attributes and distinctive features.","metatags.nfts.view.image":"/images/meta/nft-details.png","metatags.settings.title":"Settings | Dashbrd","metatags.articles.title":"Articles | Dashbrd","metatags.articles.view.title":"{{title}} | Dashbrd","metatags.login.title":"Login | Dashbrd","metatags.privacy_policy.title":"Privacy Policy | Dashbrd","metatags.privacy_policy.description":"Dashbrd’s privacy policy outlines the information we collect and explains your choices surrounding how we use information about you.","metatags.terms_of_service.title":"Terms of Service | Dashbrd","metatags.terms_of_service.description":"These Terms of Service cover your use and access to services, products or websites of Dashbrd.","metatags.cookie_policy.title":"Cookie Policy | Dashbrd","metatags.cookie_policy.description":"Dashbrd uses cookies to make the website more user-friendly. Find out about the main types of cookies we use, and what we use them for.","metatags.welcome.title":"Welcome to Dashbrd | Web3 Simplified","pages.onboarding.title":"Get Started","pages.onboarding.heading":"Your monkeys were bored and ran off, we are trying to round them up.","pages.onboarding.message":"We are setting up your account. This process usually takes just a few minutes, but can take up to 15 minutes.","pages.error.heading":"Oops, something went wrong ...","pages.error.message":"Please try again or get in touch if the issue persists.","pages.maintenance.title":"Dashbrd is currently down for scheduled maintenance.","pages.maintenance.description":"We expect to be back soon. Thanks for your patience.","pages.dashboard.title":"My Wallet","pages.dashboard.breakdown.title":"Portfolio Breakdown","pages.dashboard.line_chart.data_error":"Could not load chart data","pages.articles.title":"Articles","pages.articles.featured_collections":"Featured Collections","pages.articles.placeholder_more_soon":"More Soon","pages.articles.no_articles":"No articles have been published yet. Please check back later!","pages.articles.header_title":"Explore our collection of","pages.articles.header_suffix_one":"published article","pages.articles.header_suffix_other":"published articles","pages.articles.audio_version":"Audio version","pages.articles.consists_of_collections":"{0} This article highlights {{count}} collections|{1} This article highlights {{count}} collection|[2,*] This article highlights {{count}} collections","pages.collections.title":"Collections","pages.collections.collections":"Collections","pages.collections.popular_collections":"Popular Collections","pages.collections.collection_value":"Collection Value","pages.collections.nfts_owned":"NFTs Owned","pages.collections.header_title":"You own <0>{{nftsCount}} {{nfts}} across <0>{{collectionsCount}} {{collections}}, worth about <0><1>{{worth}}","pages.collections.search_placeholder":"Search by Collection","pages.collections.properties":"Properties","pages.collections.collections_network":"Collections Network","pages.collections.property_search_placeholder":"Feature Search","pages.collections.floor_price":"Floor Price","pages.collections.value":"Value","pages.collections.rarity":"Rarity","pages.collections.report":"Report","pages.collections.hide_collection":"Hide Collection","pages.collections.unhide_collection":"Unhide Collection","pages.collections.no_collections":"You do not own any NFTs yet. Once you do they will be shown here.","pages.collections.all_collections_hidden":"You have hidden all your collections. Unhide and they will appear here.","pages.collections.about_collection":"About Collection","pages.collections.show_hidden":"Show Hidden","pages.collections.show_my_collection":"Show My Collection","pages.collections.owned":"Owned","pages.collections.activities.loading_activities":"We're fetching Activity for this NFT, please hang tight, this can take a while.","pages.collections.activities.loading_activities_collection":"We're fetching Activity for this collection, please hang tight, this can take a while.","pages.collections.activities.ignores_activities":"We don't support activity history for this collection yet.","pages.collections.activities.no_activity":"This collection does not have any activity yet.","pages.collections.activities.types.LABEL_MINT":"Mint","pages.collections.activities.types.LABEL_TRANSFER":"Transfer","pages.collections.activities.types.LABEL_SALE":"Sale","pages.collections.activities.types.LABEL_BURN":"Burn","pages.collections.collection_of_the_month.winners_month":"Winners: {{month}}","pages.collections.collection_of_the_month.vote_for_next_months_winners":"Vote now for next month's winners","pages.collections.collection_of_the_month.view_previous_winners":"View Previous Winners","pages.collections.collection_of_the_month.vote_success":"Your vote has been successfully submitted","pages.collections.articles.no_articles":"No articles have been linked to this collection as of now.","pages.collections.articles.no_articles_with_filters":"We could not find any articles matching your search criteria, please try again!","pages.collections.articles.search_placeholder":"Search in Articles","pages.collections.articles.sort_latest":"Latest","pages.collections.articles.sort_popularity":"Most Popular","pages.collections.search.loading_results":"Loading results...","pages.collections.search.no_results":"We could not find anything matching your search criteria, please try again!","pages.collections.search.no_results_with_filters":"We could not find anything matching your filters, please try again!","pages.collections.search.no_results_ownership":"You do not own any NFTs in this collection","pages.collections.search.error":"Could not load search results. Please try again later.","pages.collections.vote.vote_for_top_collection":"Vote for Top Collection of the Month","pages.collections.vote.vote":"Vote","pages.collections.vote.time_left":"Time Left","pages.collections.vote.or_nominate_collection":"Or nominate a collection","pages.collections.sorting.token_number":"Token Number","pages.collections.sorting.recently_received":"Recently Received","pages.collections.sorting.recently_created":"Recently Created","pages.collections.sorting.oldest_collection":"Oldest Collection","pages.collections.traits.description":"List of NFT traits by % of occurrence in the collection","pages.collections.traits.no_traits":"No Properties can be found for this NFT","pages.collections.menu.collection":"Collection","pages.collections.menu.articles":"Articles","pages.collections.menu.activity":"Activity","pages.collections.hidden_modal.collection_hidden":"Collection Hidden","pages.collections.hidden_modal.description":"This collection is currently set to Hidden. Are you sure you want to unhide this collection? You can\n reset the collection to hidden from the collection menu.","pages.collections.hidden_modal.unhide":"Unhide","pages.collections.hidden_modal.error":"Something went wrong. Please try again.","pages.collections.external_modal.you_wish_continue":"You are about to leave Dashbrd to an external website. Dashbrd has no control over the content of\n this site. Are you sure you wish to continue?","pages.collections.external_modal.not_show":"Do not show this message again.","pages.collections.refresh.title":"Refresh your collection","pages.collections.refresh.notice":"You can refresh data every 15 minutes.","pages.collections.refresh.notice_wait":"Please wait. You can refresh data every 15 minutes.","pages.collections.refresh.toast":"We're updating information for your collection.","pages.collections.featured.title":"Featured Collections","pages.collections.featured.button":"Explore Collection","pages.collections.footer.heading_broken.0":"Connect with MetaMask","pages.collections.footer.heading_broken.1":"& Manage Your Collection","pages.collections.footer.subtitle":"Explore, Filter, & Share your favorite NFTs with Dashbrd.","pages.collections.footer.button":"Manage Collections","pages.nfts.nft":"nft","pages.nfts.about_nft":"About NFT","pages.nfts.owned_by":"Owned by","pages.nfts.collection_image":"collection image","pages.nfts.menu.properties":"Properties","pages.nfts.menu.activity":"Activity","pages.reports.title":"Submit a Report","pages.reports.description":"Thanks for looking out by reporting things that break the rules. Let us know what's happening and we'll receive the report.","pages.reports.success":"Thank you for your report. We'll review it and see if it breaks our ToS.","pages.reports.failed":"Something went wrong. Please try again.","pages.reports.throttle":"You have made too many requests. Please wait {{time}} before reporting again.","pages.reports.reported":"You have already reported this {{model}}.","pages.reports.reasons.spam":"Spam","pages.reports.reasons.violence":"Promoting Violence","pages.reports.reasons.hate":"Hate","pages.reports.reasons.inappropriate_content":"Inappropriate Content","pages.reports.reasons.impersonation":"Impersonation","pages.reports.reasons.trademark":"Trademark or Copyright","pages.reports.reasons.selfharm":"Self-Harm","pages.reports.reasons.harassment":"Harassment","pages.galleries.title":"Galleries","pages.galleries.empty_title":"No galleries have been published yet. Once they do they will appear here.","pages.galleries.search.loading_results":"Loading results...","pages.galleries.search.no_results":"We could not find anything matching your search criteria, please try again!","pages.galleries.search.placeholder":"Search by name or curator address","pages.galleries.search.placeholder_nfts":"Search by NFTs","pages.galleries.search.error":"Could not load search results. Please try again later.","pages.galleries.my_galleries.title":"My Galleries","pages.galleries.my_galleries.subtitle":"Manage your galleries","pages.galleries.my_galleries.new_gallery":"New Gallery","pages.galleries.my_galleries.no_galleries":"You have not created any galleries yet. To create a gallery, click on the \"Create Gallery\" button.","pages.galleries.my_galleries.no_available_collections":"You have hidden all your collections. If you want to create a gallery, make sure you have at least 1 collection available.","pages.galleries.my_galleries.no_draft_galleries":"You have no draft galleries yet. To create a gallery, click on the \"Create Gallery\" button.","pages.galleries.my_galleries.succesfully_deleted":"Gallery has been successfully removed","pages.galleries.my_galleries.draft_succesfully_deleted":"Draft has been successfully removed","pages.galleries.my_galleries.successfully_created":"Gallery has been successfully created","pages.galleries.my_galleries.successfully_updated":"Gallery has been successfully updated","pages.galleries.my_galleries.new_gallery_no_nfts":"Creating a Gallery requires you to own an NFT.","pages.galleries.my_galleries.new_gallery_all_collections_hidden":"Creating a Gallery requires you to have at least 1 collection available.","pages.galleries.my_galleries.delete_modal.title":"Delete Draft","pages.galleries.my_galleries.delete_modal.text":"Are you sure you want to delete the draft? Everything you've done will be deleted and you won't be able to get it back.","pages.galleries.my_galleries.nfts_no_longer_owned":"NFTs no longer owned by this wallet have been removed from the draft”","pages.galleries.copy_gallery_link":"Copy Gallery Link","pages.galleries.my_nfts":"My NFTs","pages.galleries.show_hidden_collections":"Show hidden collections","pages.galleries.value":"Value","pages.galleries.floor_price":"Floor Price","pages.galleries.nfts":"NFTs","pages.galleries.collections":"Collections","pages.galleries.galleries_count_simple":"{0} galleries|{1} gallery|[2,*] galleries","pages.galleries.galleries_count":"{0} {{count}} Galleries|{1} {{count}} Gallery|[2,*] {{count}} Galleries","pages.galleries.collections_count_simple":"{0} collections|{1} collection|[2,*] collections","pages.galleries.collections_count":"{0} {{count}} Collections|{1} {{count}} Collection|[2,*] {{count}} Collections","pages.galleries.nfts_count_simple":"{0} NFTs|{1} NFT|[2,*] NFTs","pages.galleries.nfts_count":"{0} {{count}} NFTs|{1} {{count}} NFT|[2,*] {{count}} NFTs","pages.galleries.users_count_simple":"{0} users|{1} user|[2,*] users","pages.galleries.users_count":"{0} {{count}} Users|{1} {{count}} User|[2,*] {{count}} Users","pages.galleries.featuring":"Featuring","pages.galleries.curated_by":"Curated by","pages.galleries.worth_about":"Worth About","pages.galleries.valued_at":"valued at","pages.galleries.from":"From","pages.galleries.most_popular_galleries":"Most Popular Galleries","pages.galleries.newest_galleries":"Newest Galleries","pages.galleries.most_valuable_galleries":"Most Valuable Galleries","pages.galleries.most_popular":"Most Popular","pages.galleries.newest":"Newest","pages.galleries.most_valuable":"Most Valuable","pages.galleries.create.search_by_nfts":"Search by NFTs","pages.galleries.create.input_placeholder":"Enter gallery name","pages.galleries.create.title_too_long":"Gallery name must not exceed {{max}} characters.","pages.galleries.create.already_selected_nft":"NFT already exists in this gallery","pages.galleries.create.nft_missing_image":"Only NFTs with images can be added to galleries","pages.galleries.create.nft_gallery_limit":"You can only add 16 NFTs per gallery","pages.galleries.create.gallery_cover":"Gallery Cover","pages.galleries.create.gallery_cover_description":"The cover is used for the card on the gallery list page. While the cover is not a requirement it will allow you to add personality and stand out from the crowd.","pages.galleries.create.gallery_cover_information":"Image dimensions must be at least 287px x 190px, with a max size of 2 MB (JPG, PNG or GIF)","pages.galleries.create.no_results":"We could not find anything matching your search criteria, please try again!","pages.galleries.create.templates.cover":"Cover","pages.galleries.create.templates.template":"Template","pages.galleries.create.templates.select":"Select Gallery Template","pages.galleries.create.templates.basic":"Basic Gallery","pages.galleries.create.templates.coming_soon":"More Coming Soon","pages.galleries.create.load_more_collections_one":"Load {{count}} More Collection","pages.galleries.create.load_more_collections_other":"Load {{count}} More Collections","pages.galleries.create.load_more_nfts":"Load More NFTs","pages.galleries.create.can_purchase":"You can purchase NFTs with these top NFT Marketplaces:","pages.galleries.create.must_own_one_nft":"You must own at least one (1) NFT in order to create a gallery.","pages.galleries.create.back_to_galleries":"Back to Galleries","pages.galleries.create.draft_saved":"Draft Saved","pages.galleries.create.saving_to_draft":"Saving to draft","pages.galleries.create.drafts_limit_modal_title":"Draft Gallery Limit","pages.galleries.create.drafts_limit_modal_message":"You’ve hit your limit for draft galleries. While you can still make new galleries and publish them, they won’t be saved as drafts. To Free up space, you can either delete existing drafts or publish them.","pages.galleries.create.drafts_limit_modal_cancel":"Go to Drafts","pages.galleries.delete_modal.title":"Delete Gallery","pages.galleries.delete_modal.confirmation_text":"Are you sure you want to delete the gallery? Deleting a Gallery is permanent, all associated views and likes will be lost.","pages.galleries.consists_of_collections":"{0} This gallery consists of {{count}} collections|{1} This gallery consists of {{count}} collection|[2,*] This gallery consists of {{count}} collections","pages.galleries.guest_banner.title":"Craft the ultimate","pages.galleries.guest_banner.subtitle":"Pick your favorites, curate your gallery, & share it with the world.","pages.profile.title":"Profile","pages.token_panel.balance_tooltip":"Total percentage of the portfolio held in this token","pages.token_panel.insufficient_funds":"Insufficient Balance","pages.token_panel.error":"Dashbrd has failed to load token information. Please try again later.","pages.token_panel.failed_to_retrieve_transactions":"We were unable to fetch your transactions.","pages.token_panel.tabs.transaction_history":"Transaction History","pages.token_panel.tabs.history":"History","pages.token_panel.tabs.market_data":"Market Data","pages.token_panel.details.current_price":"Current Price","pages.token_panel.details.title":"Token Details","pages.token_panel.details.market_cap":"Market Cap","pages.token_panel.details.volume":"Daily Volume","pages.token_panel.details.supply":"Minted Supply","pages.token_panel.details.ath":"All-Time High","pages.token_panel.details.atl":"All-Time Low","pages.token_panel.chart.failed":"Dashbrd has failed to load chart information. Please try again later.","pages.transaction_details_panel.title":"Transaction Details","pages.transaction_details_panel.details.blockchain":"Blockchain","pages.transaction_details_panel.details.timestamp":"Timestamp","pages.transaction_details_panel.details.transaction_hash":"Transaction Hash","pages.transaction_details_panel.details.transaction_fee":"Transaction Fee","pages.transaction_details_panel.details.gas_price":"Gas Price","pages.transaction_details_panel.details.gas_used":"Gas Used","pages.transaction_details_panel.details.nonce":"Nonce","pages.send_receive_panel.send.labels.token_and_amount":"Token and Amount","pages.send_receive_panel.send.labels.destination_address":"Destination Address","pages.send_receive_panel.send.labels.projected_fee":"Projected Fee","pages.send_receive_panel.send.placeholders.enter_amount":"Enter Amount","pages.send_receive_panel.send.placeholders.insert_recipient_address":"Insert Recipient Address","pages.send_receive_panel.send.placeholders.projected_fee":"Projected Fee","pages.send_receive_panel.send.errors.amount":"Insufficient Funds: You do not have enough to cover the amount + fee.","pages.send_receive_panel.send.errors.destination":"Destination address is not correct. Check and input again.","pages.send_receive_panel.send.hints.token_price":"Token Price","pages.send_receive_panel.send.fees.Fast":"Fast","pages.send_receive_panel.send.fees.Avg":"Avg","pages.send_receive_panel.send.fees.Slow":"Slow","pages.send_receive_panel.send.search_dropdown.placeholder":"Search token","pages.send_receive_panel.send.search_dropdown.no_results":"No Results","pages.send_receive_panel.send.search_dropdown.error":"Error occurred while searching tokens.","pages.send_receive_panel.send.transaction_time":"Transaction Time: ~{{ time }} minutes","pages.send_receive_panel.send.from":"From","pages.send_receive_panel.send.to":"To","pages.send_receive_panel.send.amount":"Amount","pages.send_receive_panel.send.fee":"Fee","pages.send_receive_panel.send.total_amount":"Total Amount","pages.send_receive_panel.send.waiting_message":"Review and verify the information on your MetaMask. Sign to send the transaction.","pages.send_receive_panel.send.waiting_spinner_text":"Waiting for confirmation...","pages.send_receive_panel.send.failed_message":"It looks like something went wrong while sending your transaction. Press 'Retry' to make another attempt.","pages.send_receive_panel.receive.alert":"Send only Polygon or Ethereum Network compatible tokens to this address or you could permanently lose your funds!","pages.settings.title":"Settings","pages.settings.sidebar.general":"General","pages.settings.sidebar.notifications":"Notifications","pages.settings.sidebar.session_history":"Sessions History","pages.settings.general.title":"Settings","pages.settings.general.subtitle":"Customize your App Experience","pages.settings.general.currency":"Currency","pages.settings.general.currency_subtitle":"Select your default currency which will be used throughout the app.","pages.settings.general.time_date":"Time & Date","pages.settings.general.time_date_subtitle":"Select how you want time and date be shown inside app.","pages.settings.general.date_format":"Date Format","pages.settings.general.time_format":"Time Format","pages.settings.general.timezone":"Timezone","pages.settings.general.set_defaults":"Set Defaults","pages.settings.general.set_defaults_content":"Reverting to the default settings will remove any customizations previously made. Are you sure?","pages.settings.general.save":"Save Settings","pages.settings.general.saved":"Your settings have been successfully saved","pages.wallet.title":"Wallet","pages.privacy_policy.title":"Privacy Policy","pages.terms_of_service.title":"Terms of Service","pagination.previous":"« Previous","pagination.next":"Next »","passwords.reset":"Your password has been reset!","passwords.sent":"We have emailed your password reset link!","passwords.throttled":"Please wait before retrying.","passwords.token":"This password reset token is invalid.","passwords.user":"We can't find a user with that email address.","urls.landing":"https://dashbrd.com","urls.cookie_policy":"https://dashbrd.com/cookie-policy","urls.privacy_policy":"https://dashbrd.com/privacy-policy","urls.terms_of_service":"https://dashbrd.com/terms-of-service","urls.twitter":"https://x.com/DashbrdApp","urls.discord":"https://discord.gg/MJyWKkCJ5k","urls.github":"https://github.com/ArdentHQ/dashbrd","urls.coingecko":"https://www.coingecko.com","urls.etherscan":"https://etherscan.io","urls.polygonscan":"https://polygonscan.com","urls.alchemy":"https://www.alchemy.com","urls.moralis":"https://moralis.io","urls.mnemonic":"https://www.mnemonichq.com","urls.opensea":"https://opensea.io/","urls.explorers.etherscan.token_transactions":"https://etherscan.io/token/{{token}}?a={{address}}","urls.explorers.etherscan.addresses":"https://etherscan.io/address/{{address}}","urls.explorers.etherscan.transactions":"https://etherscan.io/tx/{{id}}","urls.explorers.etherscan.nft":"https://etherscan.io/nft/{{address}}/{{nftId}}","urls.explorers.polygonscan.token_transactions":"https://polygonscan.com/token/{{token}}?a={{address}}","urls.explorers.polygonscan.addresses":"https://polygonscan.com/address/{{address}}","urls.explorers.polygonscan.transactions":"https://polygonscan.com/tx/{{id}}","urls.explorers.polygonscan.nft":"https://polygonscan.com/nft/{{address}}/{{nftId}}","urls.explorers.mumbai.token_transactions":"https://mumbai.polygonscan.com/token/{{token}}?a={{address}}","urls.explorers.mumbai.addresses":"https://mumbai.polygonscan.com/address/{{address}}","urls.explorers.mumbai.transactions":"https://mumbai.polygonscan.com/tx/{{id}}","urls.explorers.mumbai.nft":"https://mumbai.polygonscan.com/nft/{{address}}/{{nftId}}","urls.explorers.goerli.token_transactions":"https://goerli.etherscan.io/token/{{token}}?a={{address}}","urls.explorers.goerli.addresses":"https://goerli.etherscan.io/address/{{address}}","urls.explorers.goerli.transactions":"https://goerli.etherscan.io/tx/{{id}}","urls.explorers.goerli.nft":"https://goerli.etherscan.io/nft/{{address}}/{{nftId}}","urls.marketplaces.opensea.collection":"https://opensea.io/assets/{{network}}/{{address}}","urls.marketplaces.opensea.nft":"https://opensea.io/assets/{{network}}/{{address}}/{{nftId}}","urls.marketplaces.rarible.collection":"https://rarible.com/collection/{{address}}/items","urls.marketplaces.rarible.nft":"https://rarible.com/token/{{address}}:{{nftId}}","urls.marketplaces.blur.collection":"https://blur.io/collection/{{address}}","urls.marketplaces.blur.nft":"https://blur.io/asset/{{address}}/{{nftId}}","urls.marketplaces.looksrare.collection":"https://looksrare.org/collections/{{address}}","urls.marketplaces.looksrare.nft":"https://looksrare.org/collections/{{address}}/{{nftId}}","validation.accepted":"The {{attribute}} must be accepted.","validation.accepted_if":"The {{attribute}} must be accepted when {{other}} is {{value}}.","validation.active_url":"The {{attribute}} is not a valid URL.","validation.after":"The {{attribute}} must be a date after {{date}}.","validation.after_or_equal":"The {{attribute}} must be a date after or equal to {{date}}.","validation.alpha":"The {{attribute}} must only contain letters.","validation.alpha_dash":"The {{attribute}} must only contain letters, numbers, dashes and underscores.","validation.alpha_num":"The {{attribute}} must only contain letters and numbers.","validation.array":"The {{attribute}} must be an array.","validation.ascii":"The {{attribute}} must only contain single-byte alphanumeric characters and symbols.","validation.before":"The {{attribute}} must be a date before {{date}}.","validation.before_or_equal":"The {{attribute}} must be a date before or equal to {{date}}.","validation.between.array":"The {{attribute}} must have between {{min}} and {{max}} items.","validation.between.file":"The {{attribute}} must be between {{min}} and {{max}} kilobytes.","validation.between.numeric":"The {{attribute}} must be between {{min}} and {{max}}.","validation.between.string":"The {{attribute}} must be between {{min}} and {{max}} characters.","validation.boolean":"The {{attribute}} field must be true or false.","validation.confirmed":"The {{attribute}} confirmation does not match.","validation.current_password":"The password is incorrect.","validation.date":"The {{attribute}} is not a valid date.","validation.date_equals":"The {{attribute}} must be a date equal to {{date}}.","validation.date_format":"The {{attribute}} does not match the format {{format}}.","validation.decimal":"The {{attribute}} must have {{decimal}} decimal places.","validation.declined":"The {{attribute}} must be declined.","validation.declined_if":"The {{attribute}} must be declined when {{other}} is {{value}}.","validation.different":"The {{attribute}} and {{other}} must be different.","validation.digits":"The {{attribute}} must be {{digits}} digits.","validation.digits_between":"The {{attribute}} must be between {{min}} and {{max}} digits.","validation.dimensions":"The {{attribute}} has invalid image dimensions.","validation.distinct":"The {{attribute}} field has a duplicate value.","validation.doesnt_end_with":"The {{attribute}} may not end with one of the following: {{values}}.","validation.doesnt_start_with":"The {{attribute}} may not start with one of the following: {{values}}.","validation.email":"The {{attribute}} must be a valid email address.","validation.ends_with":"The {{attribute}} must end with one of the following: {{values}}.","validation.enum":"The selected {{attribute}} is invalid.","validation.exists":"The selected {{attribute}} is invalid.","validation.file":"The {{attribute}} must be a file.","validation.filled":"The {{attribute}} field must have a value.","validation.gt.array":"The {{attribute}} must have more than {{value}} items.","validation.gt.file":"The {{attribute}} must be greater than {{value}} kilobytes.","validation.gt.numeric":"The {{attribute}} must be greater than {{value}}.","validation.gt.string":"The {{attribute}} must be greater than {{value}} characters.","validation.gte.array":"The {{attribute}} must have {{value}} items or more.","validation.gte.file":"The {{attribute}} must be greater than or equal to {{value}} kilobytes.","validation.gte.numeric":"The {{attribute}} must be greater than or equal to {{value}}.","validation.gte.string":"The {{attribute}} must be greater than or equal to {{value}} characters.","validation.image":"The {{attribute}} must be an image.","validation.in":"The selected {{attribute}} is invalid.","validation.in_array":"The {{attribute}} field does not exist in {{other}}.","validation.integer":"The {{attribute}} must be an integer.","validation.ip":"The {{attribute}} must be a valid IP address.","validation.ipv4":"The {{attribute}} must be a valid IPv4 address.","validation.ipv6":"The {{attribute}} must be a valid IPv6 address.","validation.json":"The {{attribute}} must be a valid JSON string.","validation.lowercase":"The {{attribute}} must be lowercase.","validation.lt.array":"The {{attribute}} must have less than {{value}} items.","validation.lt.file":"The {{attribute}} must be less than {{value}} kilobytes.","validation.lt.numeric":"The {{attribute}} must be less than {{value}}.","validation.lt.string":"The {{attribute}} must be less than {{value}} characters.","validation.lte.array":"The {{attribute}} must not have more than {{value}} items.","validation.lte.file":"The {{attribute}} must be less than or equal to {{value}} kilobytes.","validation.lte.numeric":"The {{attribute}} must be less than or equal to {{value}}.","validation.lte.string":"The {{attribute}} must be less than or equal to {{value}} characters.","validation.mac_address":"The {{attribute}} must be a valid MAC address.","validation.max.array":"The {{attribute}} must not have more than {{max}} items.","validation.max.file":"The {{attribute}} must not be greater than {{max}} kilobytes.","validation.max.numeric":"The {{attribute}} must not be greater than {{max}}.","validation.max.string":"The {{attribute}} must not be greater than {{max}} characters.","validation.max_digits":"The {{attribute}} must not have more than {{max}} digits.","validation.mimes":"The {{attribute}} must be a file of type: {{values}}.","validation.mimetypes":"The {{attribute}} must be a file of type: {{values}}.","validation.min.array":"The {{attribute}} must have at least {{min}} items.","validation.min.file":"The {{attribute}} must be at least {{min}} kilobytes.","validation.min.numeric":"The {{attribute}} must be at least {{min}}.","validation.min.string":"The {{attribute}} must be at least {{min}} characters.","validation.min_digits":"The {{attribute}} must have at least {{min}} digits.","validation.missing":"The {{attribute}} field must be missing.","validation.missing_if":"The {{attribute}} field must be missing when {{other}} is {{value}}.","validation.missing_unless":"The {{attribute}} field must be missing unless {{other}} is {{value}}.","validation.missing_with":"The {{attribute}} field must be missing when {{values}} is present.","validation.missing_with_all":"The {{attribute}} field must be missing when {{values}} are present.","validation.multiple_of":"The {{attribute}} must be a multiple of {{value}}.","validation.not_in":"The selected {{attribute}} is invalid.","validation.not_regex":"The {{attribute}} format is invalid.","validation.numeric":"The {{attribute}} must be a number.","validation.password.letters":"The {{attribute}} must contain at least one letter.","validation.password.mixed":"The {{attribute}} must contain at least one uppercase and one lowercase letter.","validation.password.numbers":"The {{attribute}} must contain at least one number.","validation.password.symbols":"The {{attribute}} must contain at least one symbol.","validation.password.uncompromised":"The given {{attribute}} has appeared in a data leak. Please choose a different {{attribute}}.","validation.present":"The {{attribute}} field must be present.","validation.prohibited":"The {{attribute}} field is prohibited.","validation.prohibited_if":"The {{attribute}} field is prohibited when {{other}} is {{value}}.","validation.prohibited_unless":"The {{attribute}} field is prohibited unless {{other}} is in {{values}}.","validation.prohibits":"The {{attribute}} field prohibits {{other}} from being present.","validation.regex":"The {{attribute}} format is invalid.","validation.required":"The {{attribute}} field is required.","validation.required_array_keys":"The {{attribute}} field must contain entries for: {{values}}.","validation.required_if":"The {{attribute}} field is required when {{other}} is {{value}}.","validation.required_if_accepted":"The {{attribute}} field is required when {{other}} is accepted.","validation.required_unless":"The {{attribute}} field is required unless {{other}} is in {{values}}.","validation.required_with":"The {{attribute}} field is required when {{values}} is present.","validation.required_with_all":"The {{attribute}} field is required when {{values}} are present.","validation.required_without":"The {{attribute}} field is required when {{values}} is not present.","validation.required_without_all":"The {{attribute}} field is required when none of {{values}} are present.","validation.same":"The {{attribute}} and {{other}} must match.","validation.size.array":"The {{attribute}} must contain {{size}} items.","validation.size.file":"The {{attribute}} must be {{size}} kilobytes.","validation.size.numeric":"The {{attribute}} must be {{size}}.","validation.size.string":"The {{attribute}} must be {{size}} characters.","validation.starts_with":"The {{attribute}} must start with one of the following: {{values}}.","validation.string":"The {{attribute}} must be a string.","validation.timezone":"The {{attribute}} must be a valid timezone.","validation.unique":"The {{attribute}} has already been taken.","validation.uploaded":"The {{attribute}} failed to upload.","validation.uppercase":"The {{attribute}} must be uppercase.","validation.url":"The {{attribute}} must be a valid URL.","validation.ulid":"The {{attribute}} must be a valid ULID.","validation.uuid":"The {{attribute}} must be a valid UUID.","validation.custom.attribute-name.rule-name":"custom-message","validation.unsupported_currency_code":"The currency code you provided is invalid or not supported.","validation.unsupported_period":"The period you provided is invalid or not supported.","validation.unsupported_token_symbol":"The token symbol you provided is invalid or not supported.","validation.gallery_title_required":"Gallery name is required.","validation.gallery_title_max_characters":"The gallery name should not exceed 50 characters.","validation.gallery_title_invalid":"The gallery name is invalid.","validation.nfts_required":"Please add at least one NFT.","validation.nfts_max_size":"Galleries can contain no more than {{limit}} NFTs","validation.invalid_nfts":"The NFT in position {{position}} is invalid, please select another one.","validation.invalid_cover":"You have selected an invalid cover image, please try another one."} \ No newline at end of file diff --git a/routes/web.php b/routes/web.php index 78f6e19fb..b9d0fdc81 100644 --- a/routes/web.php +++ b/routes/web.php @@ -5,6 +5,7 @@ use App\Http\Controllers\ArticleController; use App\Http\Controllers\CollectionController; use App\Http\Controllers\CollectionReportController; +use App\Http\Controllers\CollectionVoteController; use App\Http\Controllers\DashboardController; use App\Http\Controllers\Filament\LogoutController; use App\Http\Controllers\FilteredGalleryController; @@ -67,6 +68,10 @@ Route::post('{collection:address}/reports', [ CollectionReportController::class, 'store', ])->name('collection-reports.create')->middleware('throttle:collection:reports'); + + Route::post('{collection:address}/vote', [ + CollectionVoteController::class, 'store', + ])->name('collection-votes.create'); }); Route::group(['prefix' => 'nfts', 'middleware' => 'signed_wallet'], function () { diff --git a/tests/App/Http/Controllers/CollectionVoteControllerTest.php b/tests/App/Http/Controllers/CollectionVoteControllerTest.php new file mode 100644 index 000000000..2145f9bae --- /dev/null +++ b/tests/App/Http/Controllers/CollectionVoteControllerTest.php @@ -0,0 +1,43 @@ +andReturn(false); + }); + + it('cannot vote', function () { + $user = createUser(); + $collection = Collection::factory()->create(); + + expect($collection->votes()->count())->toBe(0); + + $this->actingAs($user)->post(route('collection-votes.create', $collection))->assertRedirect(); + + expect($collection->votes()->count())->toBe(0); + }); +}); + +describe('user with a signed wallet', function () { + beforeEach(function () { + Signature::shouldReceive('walletIsSigned') + ->andReturn(true); + }); + + it('can vote for a collection', function () { + $user = createUser(); + $collection = Collection::factory()->create(); + + expect($collection->votes()->count())->toBe(0); + + $this->actingAs($user)->post(route('collection-votes.create', $collection)); + + expect($collection->votes()->count())->toBe(1); + }); + +}); diff --git a/tests/App/Models/CollectionVoteTest.php b/tests/App/Models/CollectionVoteTest.php new file mode 100644 index 000000000..f462d3621 --- /dev/null +++ b/tests/App/Models/CollectionVoteTest.php @@ -0,0 +1,58 @@ +create(); + + $wallet = Wallet::factory()->create(); + + expect($collection->votes()->count())->toBe(0); + + $collection->addVote($wallet); + + expect($collection->votes()->count())->toBe(1); + + $collection->addVote($wallet); + + // Still one vote since the wallet already voted + expect($collection->votes()->count())->toBe(1); + + $collection->addVote(Wallet::factory()->create()); + + expect($collection->votes()->count())->toBe(2); +}); + +it('filters votes from the current month', function () { + + $collection = Collection::factory()->create(); + + CollectionVote::factory()->create([ + 'collection_id' => $collection->id, + 'voted_at' => Carbon::now()->startOfMonth(), + ]); + + $other[] = CollectionVote::factory()->create([ + 'collection_id' => $collection->id, + 'voted_at' => Carbon::now()->endOfMonth()->addDay(), + ])->id; + + CollectionVote::factory()->create([ + 'collection_id' => $collection->id, + 'voted_at' => Carbon::now()->startOfMonth()->addDays(15), + ]); + + $other[] = CollectionVote::factory()->create([ + 'collection_id' => $collection->id, + 'voted_at' => Carbon::now()->startOfMonth()->subDay(), + ])->id; + + expect($collection->votes()->inCurrentMonth()->count())->toBe(2); + + expect($collection->votes()->inCurrentMonth()->whereIn('id', $other)->count())->toBe(0); +}); From 35da574b93c75f19f3df2733845a7830a3517965 Mon Sep 17 00:00:00 2001 From: shahin-hq <132887516+shahin-hq@users.noreply.github.com> Date: Tue, 5 Dec 2023 13:04:53 +0400 Subject: [PATCH 025/145] feat: add collection vote table (#525) --- lang/en/common.php | 1 + lang/en/pages.php | 1 + resources/css/app.css | 16 ++ resources/icons/hidden-vote.svg | 1 + resources/js/I18n/Locales/en.json | 2 +- .../CollectionOfTheMonth.tsx | 15 -- .../CollectionOfTheMonth/VoteCollection.tsx | 31 ---- .../Components/CollectionOfTheMonth/index.tsx | 3 - .../CollectionVoting/VoteCollections.test.tsx | 60 ++++++ .../CollectionVoting/VoteCollections.tsx | 172 ++++++++++++++++++ .../VoteCountdown.tsx | 0 .../Components/CollectionVoting/index.tsx | 2 + resources/js/Pages/Collections/Index.tsx | 23 ++- resources/js/icons.tsx | 2 + 14 files changed, 276 insertions(+), 53 deletions(-) create mode 100644 resources/icons/hidden-vote.svg delete mode 100644 resources/js/Pages/Collections/Components/CollectionOfTheMonth/CollectionOfTheMonth.tsx delete mode 100644 resources/js/Pages/Collections/Components/CollectionOfTheMonth/VoteCollection.tsx delete mode 100644 resources/js/Pages/Collections/Components/CollectionOfTheMonth/index.tsx create mode 100644 resources/js/Pages/Collections/Components/CollectionVoting/VoteCollections.test.tsx create mode 100644 resources/js/Pages/Collections/Components/CollectionVoting/VoteCollections.tsx rename resources/js/Pages/Collections/Components/{CollectionOfTheMonth => CollectionVoting}/VoteCountdown.tsx (100%) create mode 100644 resources/js/Pages/Collections/Components/CollectionVoting/index.tsx diff --git a/lang/en/common.php b/lang/en/common.php index 7491a30b1..c0154346c 100644 --- a/lang/en/common.php +++ b/lang/en/common.php @@ -165,4 +165,5 @@ 'top' => 'Top', 'all_chains' => 'All chains', 'votes' => 'Votes', + 'vol' => 'Vol', ]; diff --git a/lang/en/pages.php b/lang/en/pages.php index 3ee773d82..bd24370b7 100644 --- a/lang/en/pages.php +++ b/lang/en/pages.php @@ -101,6 +101,7 @@ 'vote' => 'Vote', 'time_left' => 'Time Left', 'or_nominate_collection' => 'Or nominate a collection', + 'vote_to_reveal' => 'Vote to reveal data', ], 'sorting' => [ 'token_number' => 'Token Number', diff --git a/resources/css/app.css b/resources/css/app.css index 4c9ce01d5..085beb42e 100644 --- a/resources/css/app.css +++ b/resources/css/app.css @@ -67,3 +67,19 @@ background-image: linear-gradient(90deg, rgb(var(--theme-color-dark-800)) 55.67%, transparent 151.85%); } } + +.hidden-votes-svg-line { + @apply fill-theme-primary-600; +} + +.dark .hidden-votes-svg-line { + @apply fill-theme-primary-400; +} + +.hidden-votes-svg-shape { + @apply fill-none stroke-[#C2C2FF]; +} + +.dark .hidden-votes-svg-shape { + @apply fill-none stroke-[#47509F]; +} diff --git a/resources/icons/hidden-vote.svg b/resources/icons/hidden-vote.svg new file mode 100644 index 000000000..e344c354e --- /dev/null +++ b/resources/icons/hidden-vote.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/js/I18n/Locales/en.json b/resources/js/I18n/Locales/en.json index 88e53f298..3f953d2f4 100644 --- a/resources/js/I18n/Locales/en.json +++ b/resources/js/I18n/Locales/en.json @@ -1 +1 @@ -{"auth.welcome":"Welcome to Dashbrd","auth.logged_in":"You're logged in!","auth.log_out":"Log out","auth.failed":"These credentials do not match our records.","auth.session_timeout":"Your session has timed out. Please refresh the page and try connecting your account again.","auth.session_timeout_modal":"Seems like your session has timed out. Please connnect your wallet again.","auth.password":"The provided password is incorrect.","auth.throttle":"Too many login attempts. Please try again in {{seconds}} seconds.","auth.wallet.connecting":"Connecting …","auth.wallet.waiting_for_signature":"Waiting for Signature …","auth.wallet.switching_wallet":"Switching Wallet …","auth.wallet.connect":"Connect Wallet","auth.wallet.connect_long":"Connect Your Wallet to Get Started","auth.wallet.sign_subtitle":"Connect Your Wallet to Continue","auth.wallet.disconnect":"Disconnect Wallet","auth.wallet.install":"Install MetaMask","auth.wallet.install_long":"Install MetaMask to Get Started","auth.wallet.sign":"Sign Message","auth.wallet.sign_message":"Welcome to Dashbrd. In order to login, sign this message with your wallet. It doesn't cost you anything!\n\nSigning ID (you can ignore this): {{nonce}}","auth.wallet.connect_subtitle":"Click on the MetaMask icon in your browser to confirm the action and connect your wallet.","auth.wallet.requires_signature":"In order to prevent impersonation, we require a signature to perform this action. This signature is only a signed message and does not give any access to your wallet.","auth.errors.metamask.no_account":"No account found. Please connect your wallet and try again.","auth.errors.metamask.generic":"Connection attempt error. Please retry and follow the steps to connect your wallet.","auth.errors.metamask.invalid_network":"Please switch to Polygon or Ethereum Mainnet in your MetaMask plugin to connect to Dashbrd.","auth.errors.metamask.provider_missing":"You don't have MetaMask installed in your browser. Please install and try again.","auth.errors.metamask.user_rejected":"It looks like you cancelled signing of the authentication message. Please try again.","auth.errors.metamask.provider_not_set":"Ethereum provider is not set","auth.validation.wallet_login_failed":"There was a problem trying to verify your signature. Please try again.","auth.validation.invalid_address":"Your wallet address is invalid. Please try again.","auth.validation.invalid_signature":"Signature is invalid. Please try again.","auth.validation.invalid_network":"Please switch to Polygon or Ethereum Mainnet in your MetaMask plugin to connect to Dashbrd.","common.author":"Author","common.add":"Add","common.amount":"Amount","common.balance":"Balance","common.cancel":"Cancel","common.delete":"Delete","common.edit":"Edit","common.confirm":"Confirm","common.connect":"Connect","common.continue":"Continue","common.done":"Done","common.filter":"Filter","common.items":"Items","common.receive":"Receive","common.received":"Received","common.retry":"Retry","common.records":"Records","common.save":"Save","common.send":"Send","common.sent":"Sent","common.show":"Show","common.searching":"Searching...","common.other":"Other","common.owned":"Owned","common.token":"Token","common.tokens":"Tokens","common.wallet":"Wallet","common.pending":"Pending","common.publish":"Publish","common.published":"Published","common.empty":"Empty","common.your_address":"Your Address","common.warning":"Warning","common.my_address":"My Address","common.my_wallet":"My Wallet","common.my_collections":"My Collections","common.my_balance":"My Balance","common.na":"N/A","common.simple_plural_without_data":"One comment|Many comments","common.simple_plural_with_data":"{{count}} comment|{{count}} comments","common.advanced_plural_without_data":"{0} no comments yet|{1} 1 comment|[2,*] Many comments","common.advanced_plural_with_data":"{0} no comments yet|{1} 1 comment|[2,*] {{count}} comments","common.copy_clipboard":"Copy to Clipboard","common.copy":"Copy","common.download":"Download","common.zoom":"Zoom","common.my_collection":"My Collection","common.max":"Max","common.chain":"Chain","common.copied":"Copied!","common.coming_soon":"Coming Soon","common.more_details":"More Details","common.close":"Close","common.close_toast":"Close toast","common.loading":"Loading","common.price":"Price","common.articles":"Articles","common.most_popular":"Most Popular","common.market_cap":"Market Cap","common.volume":"Volume","common.volume_frequency":"Volume {{frequency}}","common.value":"Value","common.last_n_days":"Last {{count}} Days","common.details":"Details","common.view_all":"View All","common.view_more_on_polygonscan":"View More on Polygonscan","common.view_more_on_etherscan":"View More on Etherscan","common.view_nft_on_etherscan":"View NFT on Etherscan","common.view_nft_on_polygonscan":"View NFT on Polygonscan","common.view_nft_on_goerli_tesnet":"View NFT on Goerli Testnet Explorer","common.view_nft_on_mumbai_tesnet":"View NFT on Mumbai Testnet Explorer","common.polygonscan":"Polygonscan","common.etherscan":"Etherscan","common.featured":"Featured","common.floor_price":"Floor Price","common.floor":"Floor","common.supply":"Supply","common.owners":"Owners","common.created":"Created","common.nft":"NFT","common.collection":"Collection","common.collections":"Collections","common.gallery":"Gallery","common.basic_gallery":"Basic Gallery","common.gallery_name":"Gallery Name","common.create_gallery":"Create Gallery","common.external_link":"External Link","common.follow_link":"Follow Link","common.cover":"Cover","common.template":"Template","common.page":"Page","common.polygon":"Polygon","common.ethereum":"Ethereum","common.mumbai":"Mumbai","common.goerli":"Goerli","common.of":"of","common.pagination_input_placeholder":"Enter the page number","common.pagination_input_placeholder_mobile":"Page number","common.nft_count":"{0} {{count}} NFTs|{1} {{count}} NFT|[2,*] {{count}} NFTs","common.nft_gallery":"NFT Gallery","common.unable_to_retrieve_image":"Unable to retrieve your NFT image at this time","common.optional":"Optional","common.selected":"Selected","common.select":"Select","common.preview":"Preview","common.image_size_error":"Image size must not exceed 2MB","common.image_dimensions_error":"Image dimensions must exceed 287px x 190px","common.write_to_confirm":"Write {{word}} to confirm","common.n_hours":"{0} {{count}} hour|{1} {{count}} hour|[2,*] {{count}} hours","common.n_minutes":"{0} {{count}} minute|{1} {{count}} minute|[2,*] {{count}} minutes","common.report":"Report","common.nfts":"NFTs","common.n_nfts":"{0}NFTs|{1}NFT|[2,*]NFTs","common.n_collections":"{0}collections|{1}collection|[2,*]collections","common.back":"Back","common.back_to":"Back to","common.name":"Name","common.type":"Type","common.from":"From","common.to":"To","common.sale_price":"Sale Price","common.recent_activity":"Recent Activity","common.time":"Time","common.datetime.few_seconds_ago":"A few seconds ago","common.datetime.minutes_ago":"{0} Less than a minute ago|{1} A minute ago|[2,*] {{count}} minutes ago","common.datetime.hours_ago":"{0} Less than an hour ago|{1} An hour ago|[2,*] {{count}} hours ago","common.datetime.days_ago":"{0} Less than a day ago|{1} A day ago|[2,*] {{count}} days ago","common.datetime.weeks_ago":"{0} Less than a week ago|{1} A week ago|[2,*] {{count}} weeks ago","common.datetime.months_ago":"{0} Less than a month ago|{1} A month ago|[2,*] {{count}} months ago","common.datetime.years_ago":"{0} Less than a year ago|{1} A year ago|[2,*] {{count}} years ago","common.no_traits_found":"No traits found.","common.empty_transactions":"You don't have any transactions yet. Once transactions have been made, they will show up here.","common.error":"Error","common.refresh":"Refresh","common.refresh_metadata":"Refresh Metadata","common.refreshing_metadata":"Refreshing Metadata... Please check back later.","common.refreshing_activity":"Refreshing Activity... Please check back later.","common.pending_confirmation":"Pending Confirmation","common.confirmed_transaction":"Confirmed Transaction","common.transaction_error":"Transaction Error","common.transaction_error_description_first_part":"Your transaction encountered an error. View this transaction on","common.transaction_error_description_second_part":"for more details.","common.home":"Home","common.contact":"Contact","common.menu":"Menu","common.website":"Website","common.twitter":"Twitter","common.discord":"Discord","common.facebook":"Facebook","common.reddit":"Reddit","common.x":"X","common.sort":"Sort","common.drafts":"Drafts","common.draft":"Draft","common.delete_draft":"Delete Draft","common.share_on":"Share on {{platform}}","common.top":"Top","common.all_chains":"All chains","common.votes":"Votes","footer.copyright":"{{year}} © Dashbrd. All rights reserved.","footer.all_rights_reserved":"All rights reserved","footer.privacy_policy":"Privacy Policy","footer.terms_of_service":"Terms of Service","footer.powered_by":"Powered by","format.fiat":"{{ value, currency }}","format.number":"{{ value, number }}","metatags.home.title":"Dashbrd | Web3 Portfolio Management Made Simple","metatags.home.description":"Simplify your Web3 journey with Dashbrd. Manage your portfolio of tokens, NFTs, and other digital collectibles across the Ethereum and Polygon blockchains.","metatags.home.image":"/images/meta/home.png","metatags.error.title":"Error {{code}} | Dashbrd","metatags.wallet.title":"My Wallet | Dashbrd","metatags.galleries.title":"Top NFT Galleries | Dashbrd","metatags.galleries.image":"/images/meta/nft-galleries.png","metatags.galleries.description":"Explore user published NFT galleries to find custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.most_popular.title":"Most Popular Galleries | Dashbrd","metatags.galleries.most_popular.image":"/images/meta/most-popular-nft-galleries.png","metatags.galleries.most_popular.description":"Explore and discover Most Popular NFT Galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.newest.title":"Newest Galleries | Dashbrd","metatags.galleries.newest.image":"/images/meta/newest-nft-galleries.png","metatags.galleries.newest.description":"Explore and discover most recent NFT galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More","metatags.galleries.most_valuable.title":"Most Valuable Galleries | Dashbrd","metatags.galleries.most_valuable.image":"/images/meta/most-valuable-nft-galleries.png","metatags.galleries.most_valuable.description":"Explore and discover Most Valuable NFT Galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.view.title":"{{name}} | Dashbrd","metatags.galleries.view.description":"{{name}} | A Curated NFT Gallery at Dashbrd","metatags.galleries.view.image":"/images/meta/nft-gallery.png","metatags.my_galleries.title":"My Galleries | Dashbrd","metatags.my_galleries.title_draft":"My Draft Galleries | Dashbrd","metatags.my_galleries.create.title":"Create Gallery | Dashbrd","metatags.my_galleries.edit.title":"Edit {{name}} | Dashbrd","metatags.collections.title":"Collections | Dashbrd","metatags.collections.view.title":"{{name}} Collection | Dashbrd","metatags.collections.view.description":"Immerse yourself in the intricate details of {{name}} collection, featuring remarkable digital assets. Start your NFT journey today!","metatags.collections.view.image":"/images/meta/nft-collection.png","metatags.my-collections.title":"My Collections | Dashbrd","metatags.nfts.view.title":"{{nft}} NFT | Dashbrd","metatags.nfts.view.description":"Uncover the complete story of {{nft}} NFT from the {{collection}} collection, delving into its unique attributes and distinctive features.","metatags.nfts.view.image":"/images/meta/nft-details.png","metatags.settings.title":"Settings | Dashbrd","metatags.articles.title":"Articles | Dashbrd","metatags.articles.view.title":"{{title}} | Dashbrd","metatags.login.title":"Login | Dashbrd","metatags.privacy_policy.title":"Privacy Policy | Dashbrd","metatags.privacy_policy.description":"Dashbrd’s privacy policy outlines the information we collect and explains your choices surrounding how we use information about you.","metatags.terms_of_service.title":"Terms of Service | Dashbrd","metatags.terms_of_service.description":"These Terms of Service cover your use and access to services, products or websites of Dashbrd.","metatags.cookie_policy.title":"Cookie Policy | Dashbrd","metatags.cookie_policy.description":"Dashbrd uses cookies to make the website more user-friendly. Find out about the main types of cookies we use, and what we use them for.","metatags.welcome.title":"Welcome to Dashbrd | Web3 Simplified","pages.onboarding.title":"Get Started","pages.onboarding.heading":"Your monkeys were bored and ran off, we are trying to round them up.","pages.onboarding.message":"We are setting up your account. This process usually takes just a few minutes, but can take up to 15 minutes.","pages.error.heading":"Oops, something went wrong ...","pages.error.message":"Please try again or get in touch if the issue persists.","pages.maintenance.title":"Dashbrd is currently down for scheduled maintenance.","pages.maintenance.description":"We expect to be back soon. Thanks for your patience.","pages.dashboard.title":"My Wallet","pages.dashboard.breakdown.title":"Portfolio Breakdown","pages.dashboard.line_chart.data_error":"Could not load chart data","pages.articles.title":"Articles","pages.articles.featured_collections":"Featured Collections","pages.articles.placeholder_more_soon":"More Soon","pages.articles.no_articles":"No articles have been published yet. Please check back later!","pages.articles.header_title":"Explore our collection of","pages.articles.header_suffix_one":"published article","pages.articles.header_suffix_other":"published articles","pages.articles.audio_version":"Audio version","pages.articles.consists_of_collections":"{0} This article highlights {{count}} collections|{1} This article highlights {{count}} collection|[2,*] This article highlights {{count}} collections","pages.collections.title":"Collections","pages.collections.collections":"Collections","pages.collections.popular_collections":"Popular Collections","pages.collections.collection_value":"Collection Value","pages.collections.nfts_owned":"NFTs Owned","pages.collections.header_title":"You own <0>{{nftsCount}} {{nfts}} across <0>{{collectionsCount}} {{collections}}, worth about <0><1>{{worth}}","pages.collections.search_placeholder":"Search by Collection","pages.collections.properties":"Properties","pages.collections.collections_network":"Collections Network","pages.collections.property_search_placeholder":"Feature Search","pages.collections.floor_price":"Floor Price","pages.collections.value":"Value","pages.collections.rarity":"Rarity","pages.collections.report":"Report","pages.collections.hide_collection":"Hide Collection","pages.collections.unhide_collection":"Unhide Collection","pages.collections.no_collections":"You do not own any NFTs yet. Once you do they will be shown here.","pages.collections.all_collections_hidden":"You have hidden all your collections. Unhide and they will appear here.","pages.collections.about_collection":"About Collection","pages.collections.show_hidden":"Show Hidden","pages.collections.show_my_collection":"Show My Collection","pages.collections.owned":"Owned","pages.collections.activities.loading_activities":"We're fetching Activity for this NFT, please hang tight, this can take a while.","pages.collections.activities.loading_activities_collection":"We're fetching Activity for this collection, please hang tight, this can take a while.","pages.collections.activities.ignores_activities":"We don't support activity history for this collection yet.","pages.collections.activities.no_activity":"This collection does not have any activity yet.","pages.collections.activities.types.LABEL_MINT":"Mint","pages.collections.activities.types.LABEL_TRANSFER":"Transfer","pages.collections.activities.types.LABEL_SALE":"Sale","pages.collections.activities.types.LABEL_BURN":"Burn","pages.collections.collection_of_the_month.winners_month":"Winners: {{month}}","pages.collections.collection_of_the_month.vote_for_next_months_winners":"Vote now for next month's winners","pages.collections.collection_of_the_month.view_previous_winners":"View Previous Winners","pages.collections.collection_of_the_month.vote_success":"Your vote has been successfully submitted","pages.collections.articles.no_articles":"No articles have been linked to this collection as of now.","pages.collections.articles.no_articles_with_filters":"We could not find any articles matching your search criteria, please try again!","pages.collections.articles.search_placeholder":"Search in Articles","pages.collections.articles.sort_latest":"Latest","pages.collections.articles.sort_popularity":"Most Popular","pages.collections.search.loading_results":"Loading results...","pages.collections.search.no_results":"We could not find anything matching your search criteria, please try again!","pages.collections.search.no_results_with_filters":"We could not find anything matching your filters, please try again!","pages.collections.search.no_results_ownership":"You do not own any NFTs in this collection","pages.collections.search.error":"Could not load search results. Please try again later.","pages.collections.vote.vote_for_top_collection":"Vote for Top Collection of the Month","pages.collections.vote.vote":"Vote","pages.collections.vote.time_left":"Time Left","pages.collections.vote.or_nominate_collection":"Or nominate a collection","pages.collections.sorting.token_number":"Token Number","pages.collections.sorting.recently_received":"Recently Received","pages.collections.sorting.recently_created":"Recently Created","pages.collections.sorting.oldest_collection":"Oldest Collection","pages.collections.traits.description":"List of NFT traits by % of occurrence in the collection","pages.collections.traits.no_traits":"No Properties can be found for this NFT","pages.collections.menu.collection":"Collection","pages.collections.menu.articles":"Articles","pages.collections.menu.activity":"Activity","pages.collections.hidden_modal.collection_hidden":"Collection Hidden","pages.collections.hidden_modal.description":"This collection is currently set to Hidden. Are you sure you want to unhide this collection? You can\n reset the collection to hidden from the collection menu.","pages.collections.hidden_modal.unhide":"Unhide","pages.collections.hidden_modal.error":"Something went wrong. Please try again.","pages.collections.external_modal.you_wish_continue":"You are about to leave Dashbrd to an external website. Dashbrd has no control over the content of\n this site. Are you sure you wish to continue?","pages.collections.external_modal.not_show":"Do not show this message again.","pages.collections.refresh.title":"Refresh your collection","pages.collections.refresh.notice":"You can refresh data every 15 minutes.","pages.collections.refresh.notice_wait":"Please wait. You can refresh data every 15 minutes.","pages.collections.refresh.toast":"We're updating information for your collection.","pages.collections.featured.title":"Featured Collections","pages.collections.featured.button":"Explore Collection","pages.collections.footer.heading_broken.0":"Connect with MetaMask","pages.collections.footer.heading_broken.1":"& Manage Your Collection","pages.collections.footer.subtitle":"Explore, Filter, & Share your favorite NFTs with Dashbrd.","pages.collections.footer.button":"Manage Collections","pages.nfts.nft":"nft","pages.nfts.about_nft":"About NFT","pages.nfts.owned_by":"Owned by","pages.nfts.collection_image":"collection image","pages.nfts.menu.properties":"Properties","pages.nfts.menu.activity":"Activity","pages.reports.title":"Submit a Report","pages.reports.description":"Thanks for looking out by reporting things that break the rules. Let us know what's happening and we'll receive the report.","pages.reports.success":"Thank you for your report. We'll review it and see if it breaks our ToS.","pages.reports.failed":"Something went wrong. Please try again.","pages.reports.throttle":"You have made too many requests. Please wait {{time}} before reporting again.","pages.reports.reported":"You have already reported this {{model}}.","pages.reports.reasons.spam":"Spam","pages.reports.reasons.violence":"Promoting Violence","pages.reports.reasons.hate":"Hate","pages.reports.reasons.inappropriate_content":"Inappropriate Content","pages.reports.reasons.impersonation":"Impersonation","pages.reports.reasons.trademark":"Trademark or Copyright","pages.reports.reasons.selfharm":"Self-Harm","pages.reports.reasons.harassment":"Harassment","pages.galleries.title":"Galleries","pages.galleries.empty_title":"No galleries have been published yet. Once they do they will appear here.","pages.galleries.search.loading_results":"Loading results...","pages.galleries.search.no_results":"We could not find anything matching your search criteria, please try again!","pages.galleries.search.placeholder":"Search by name or curator address","pages.galleries.search.placeholder_nfts":"Search by NFTs","pages.galleries.search.error":"Could not load search results. Please try again later.","pages.galleries.my_galleries.title":"My Galleries","pages.galleries.my_galleries.subtitle":"Manage your galleries","pages.galleries.my_galleries.new_gallery":"New Gallery","pages.galleries.my_galleries.no_galleries":"You have not created any galleries yet. To create a gallery, click on the \"Create Gallery\" button.","pages.galleries.my_galleries.no_available_collections":"You have hidden all your collections. If you want to create a gallery, make sure you have at least 1 collection available.","pages.galleries.my_galleries.no_draft_galleries":"You have no draft galleries yet. To create a gallery, click on the \"Create Gallery\" button.","pages.galleries.my_galleries.succesfully_deleted":"Gallery has been successfully removed","pages.galleries.my_galleries.draft_succesfully_deleted":"Draft has been successfully removed","pages.galleries.my_galleries.successfully_created":"Gallery has been successfully created","pages.galleries.my_galleries.successfully_updated":"Gallery has been successfully updated","pages.galleries.my_galleries.new_gallery_no_nfts":"Creating a Gallery requires you to own an NFT.","pages.galleries.my_galleries.new_gallery_all_collections_hidden":"Creating a Gallery requires you to have at least 1 collection available.","pages.galleries.my_galleries.delete_modal.title":"Delete Draft","pages.galleries.my_galleries.delete_modal.text":"Are you sure you want to delete the draft? Everything you've done will be deleted and you won't be able to get it back.","pages.galleries.my_galleries.nfts_no_longer_owned":"NFTs no longer owned by this wallet have been removed from the draft”","pages.galleries.copy_gallery_link":"Copy Gallery Link","pages.galleries.my_nfts":"My NFTs","pages.galleries.show_hidden_collections":"Show hidden collections","pages.galleries.value":"Value","pages.galleries.floor_price":"Floor Price","pages.galleries.nfts":"NFTs","pages.galleries.collections":"Collections","pages.galleries.galleries_count_simple":"{0} galleries|{1} gallery|[2,*] galleries","pages.galleries.galleries_count":"{0} {{count}} Galleries|{1} {{count}} Gallery|[2,*] {{count}} Galleries","pages.galleries.collections_count_simple":"{0} collections|{1} collection|[2,*] collections","pages.galleries.collections_count":"{0} {{count}} Collections|{1} {{count}} Collection|[2,*] {{count}} Collections","pages.galleries.nfts_count_simple":"{0} NFTs|{1} NFT|[2,*] NFTs","pages.galleries.nfts_count":"{0} {{count}} NFTs|{1} {{count}} NFT|[2,*] {{count}} NFTs","pages.galleries.users_count_simple":"{0} users|{1} user|[2,*] users","pages.galleries.users_count":"{0} {{count}} Users|{1} {{count}} User|[2,*] {{count}} Users","pages.galleries.featuring":"Featuring","pages.galleries.curated_by":"Curated by","pages.galleries.worth_about":"Worth About","pages.galleries.valued_at":"valued at","pages.galleries.from":"From","pages.galleries.most_popular_galleries":"Most Popular Galleries","pages.galleries.newest_galleries":"Newest Galleries","pages.galleries.most_valuable_galleries":"Most Valuable Galleries","pages.galleries.most_popular":"Most Popular","pages.galleries.newest":"Newest","pages.galleries.most_valuable":"Most Valuable","pages.galleries.create.search_by_nfts":"Search by NFTs","pages.galleries.create.input_placeholder":"Enter gallery name","pages.galleries.create.title_too_long":"Gallery name must not exceed {{max}} characters.","pages.galleries.create.already_selected_nft":"NFT already exists in this gallery","pages.galleries.create.nft_missing_image":"Only NFTs with images can be added to galleries","pages.galleries.create.nft_gallery_limit":"You can only add 16 NFTs per gallery","pages.galleries.create.gallery_cover":"Gallery Cover","pages.galleries.create.gallery_cover_description":"The cover is used for the card on the gallery list page. While the cover is not a requirement it will allow you to add personality and stand out from the crowd.","pages.galleries.create.gallery_cover_information":"Image dimensions must be at least 287px x 190px, with a max size of 2 MB (JPG, PNG or GIF)","pages.galleries.create.no_results":"We could not find anything matching your search criteria, please try again!","pages.galleries.create.templates.cover":"Cover","pages.galleries.create.templates.template":"Template","pages.galleries.create.templates.select":"Select Gallery Template","pages.galleries.create.templates.basic":"Basic Gallery","pages.galleries.create.templates.coming_soon":"More Coming Soon","pages.galleries.create.load_more_collections_one":"Load {{count}} More Collection","pages.galleries.create.load_more_collections_other":"Load {{count}} More Collections","pages.galleries.create.load_more_nfts":"Load More NFTs","pages.galleries.create.can_purchase":"You can purchase NFTs with these top NFT Marketplaces:","pages.galleries.create.must_own_one_nft":"You must own at least one (1) NFT in order to create a gallery.","pages.galleries.create.back_to_galleries":"Back to Galleries","pages.galleries.create.draft_saved":"Draft Saved","pages.galleries.create.saving_to_draft":"Saving to draft","pages.galleries.create.drafts_limit_modal_title":"Draft Gallery Limit","pages.galleries.create.drafts_limit_modal_message":"You’ve hit your limit for draft galleries. While you can still make new galleries and publish them, they won’t be saved as drafts. To Free up space, you can either delete existing drafts or publish them.","pages.galleries.create.drafts_limit_modal_cancel":"Go to Drafts","pages.galleries.delete_modal.title":"Delete Gallery","pages.galleries.delete_modal.confirmation_text":"Are you sure you want to delete the gallery? Deleting a Gallery is permanent, all associated views and likes will be lost.","pages.galleries.consists_of_collections":"{0} This gallery consists of {{count}} collections|{1} This gallery consists of {{count}} collection|[2,*] This gallery consists of {{count}} collections","pages.galleries.guest_banner.title":"Craft the ultimate","pages.galleries.guest_banner.subtitle":"Pick your favorites, curate your gallery, & share it with the world.","pages.profile.title":"Profile","pages.token_panel.balance_tooltip":"Total percentage of the portfolio held in this token","pages.token_panel.insufficient_funds":"Insufficient Balance","pages.token_panel.error":"Dashbrd has failed to load token information. Please try again later.","pages.token_panel.failed_to_retrieve_transactions":"We were unable to fetch your transactions.","pages.token_panel.tabs.transaction_history":"Transaction History","pages.token_panel.tabs.history":"History","pages.token_panel.tabs.market_data":"Market Data","pages.token_panel.details.current_price":"Current Price","pages.token_panel.details.title":"Token Details","pages.token_panel.details.market_cap":"Market Cap","pages.token_panel.details.volume":"Daily Volume","pages.token_panel.details.supply":"Minted Supply","pages.token_panel.details.ath":"All-Time High","pages.token_panel.details.atl":"All-Time Low","pages.token_panel.chart.failed":"Dashbrd has failed to load chart information. Please try again later.","pages.transaction_details_panel.title":"Transaction Details","pages.transaction_details_panel.details.blockchain":"Blockchain","pages.transaction_details_panel.details.timestamp":"Timestamp","pages.transaction_details_panel.details.transaction_hash":"Transaction Hash","pages.transaction_details_panel.details.transaction_fee":"Transaction Fee","pages.transaction_details_panel.details.gas_price":"Gas Price","pages.transaction_details_panel.details.gas_used":"Gas Used","pages.transaction_details_panel.details.nonce":"Nonce","pages.send_receive_panel.send.labels.token_and_amount":"Token and Amount","pages.send_receive_panel.send.labels.destination_address":"Destination Address","pages.send_receive_panel.send.labels.projected_fee":"Projected Fee","pages.send_receive_panel.send.placeholders.enter_amount":"Enter Amount","pages.send_receive_panel.send.placeholders.insert_recipient_address":"Insert Recipient Address","pages.send_receive_panel.send.placeholders.projected_fee":"Projected Fee","pages.send_receive_panel.send.errors.amount":"Insufficient Funds: You do not have enough to cover the amount + fee.","pages.send_receive_panel.send.errors.destination":"Destination address is not correct. Check and input again.","pages.send_receive_panel.send.hints.token_price":"Token Price","pages.send_receive_panel.send.fees.Fast":"Fast","pages.send_receive_panel.send.fees.Avg":"Avg","pages.send_receive_panel.send.fees.Slow":"Slow","pages.send_receive_panel.send.search_dropdown.placeholder":"Search token","pages.send_receive_panel.send.search_dropdown.no_results":"No Results","pages.send_receive_panel.send.search_dropdown.error":"Error occurred while searching tokens.","pages.send_receive_panel.send.transaction_time":"Transaction Time: ~{{ time }} minutes","pages.send_receive_panel.send.from":"From","pages.send_receive_panel.send.to":"To","pages.send_receive_panel.send.amount":"Amount","pages.send_receive_panel.send.fee":"Fee","pages.send_receive_panel.send.total_amount":"Total Amount","pages.send_receive_panel.send.waiting_message":"Review and verify the information on your MetaMask. Sign to send the transaction.","pages.send_receive_panel.send.waiting_spinner_text":"Waiting for confirmation...","pages.send_receive_panel.send.failed_message":"It looks like something went wrong while sending your transaction. Press 'Retry' to make another attempt.","pages.send_receive_panel.receive.alert":"Send only Polygon or Ethereum Network compatible tokens to this address or you could permanently lose your funds!","pages.settings.title":"Settings","pages.settings.sidebar.general":"General","pages.settings.sidebar.notifications":"Notifications","pages.settings.sidebar.session_history":"Sessions History","pages.settings.general.title":"Settings","pages.settings.general.subtitle":"Customize your App Experience","pages.settings.general.currency":"Currency","pages.settings.general.currency_subtitle":"Select your default currency which will be used throughout the app.","pages.settings.general.time_date":"Time & Date","pages.settings.general.time_date_subtitle":"Select how you want time and date be shown inside app.","pages.settings.general.date_format":"Date Format","pages.settings.general.time_format":"Time Format","pages.settings.general.timezone":"Timezone","pages.settings.general.set_defaults":"Set Defaults","pages.settings.general.set_defaults_content":"Reverting to the default settings will remove any customizations previously made. Are you sure?","pages.settings.general.save":"Save Settings","pages.settings.general.saved":"Your settings have been successfully saved","pages.wallet.title":"Wallet","pages.privacy_policy.title":"Privacy Policy","pages.terms_of_service.title":"Terms of Service","pagination.previous":"« Previous","pagination.next":"Next »","passwords.reset":"Your password has been reset!","passwords.sent":"We have emailed your password reset link!","passwords.throttled":"Please wait before retrying.","passwords.token":"This password reset token is invalid.","passwords.user":"We can't find a user with that email address.","urls.landing":"https://dashbrd.com","urls.cookie_policy":"https://dashbrd.com/cookie-policy","urls.privacy_policy":"https://dashbrd.com/privacy-policy","urls.terms_of_service":"https://dashbrd.com/terms-of-service","urls.twitter":"https://x.com/DashbrdApp","urls.discord":"https://discord.gg/MJyWKkCJ5k","urls.github":"https://github.com/ArdentHQ/dashbrd","urls.coingecko":"https://www.coingecko.com","urls.etherscan":"https://etherscan.io","urls.polygonscan":"https://polygonscan.com","urls.alchemy":"https://www.alchemy.com","urls.moralis":"https://moralis.io","urls.mnemonic":"https://www.mnemonichq.com","urls.opensea":"https://opensea.io/","urls.explorers.etherscan.token_transactions":"https://etherscan.io/token/{{token}}?a={{address}}","urls.explorers.etherscan.addresses":"https://etherscan.io/address/{{address}}","urls.explorers.etherscan.transactions":"https://etherscan.io/tx/{{id}}","urls.explorers.etherscan.nft":"https://etherscan.io/nft/{{address}}/{{nftId}}","urls.explorers.polygonscan.token_transactions":"https://polygonscan.com/token/{{token}}?a={{address}}","urls.explorers.polygonscan.addresses":"https://polygonscan.com/address/{{address}}","urls.explorers.polygonscan.transactions":"https://polygonscan.com/tx/{{id}}","urls.explorers.polygonscan.nft":"https://polygonscan.com/nft/{{address}}/{{nftId}}","urls.explorers.mumbai.token_transactions":"https://mumbai.polygonscan.com/token/{{token}}?a={{address}}","urls.explorers.mumbai.addresses":"https://mumbai.polygonscan.com/address/{{address}}","urls.explorers.mumbai.transactions":"https://mumbai.polygonscan.com/tx/{{id}}","urls.explorers.mumbai.nft":"https://mumbai.polygonscan.com/nft/{{address}}/{{nftId}}","urls.explorers.goerli.token_transactions":"https://goerli.etherscan.io/token/{{token}}?a={{address}}","urls.explorers.goerli.addresses":"https://goerli.etherscan.io/address/{{address}}","urls.explorers.goerli.transactions":"https://goerli.etherscan.io/tx/{{id}}","urls.explorers.goerli.nft":"https://goerli.etherscan.io/nft/{{address}}/{{nftId}}","urls.marketplaces.opensea.collection":"https://opensea.io/assets/{{network}}/{{address}}","urls.marketplaces.opensea.nft":"https://opensea.io/assets/{{network}}/{{address}}/{{nftId}}","urls.marketplaces.rarible.collection":"https://rarible.com/collection/{{address}}/items","urls.marketplaces.rarible.nft":"https://rarible.com/token/{{address}}:{{nftId}}","urls.marketplaces.blur.collection":"https://blur.io/collection/{{address}}","urls.marketplaces.blur.nft":"https://blur.io/asset/{{address}}/{{nftId}}","urls.marketplaces.looksrare.collection":"https://looksrare.org/collections/{{address}}","urls.marketplaces.looksrare.nft":"https://looksrare.org/collections/{{address}}/{{nftId}}","validation.accepted":"The {{attribute}} must be accepted.","validation.accepted_if":"The {{attribute}} must be accepted when {{other}} is {{value}}.","validation.active_url":"The {{attribute}} is not a valid URL.","validation.after":"The {{attribute}} must be a date after {{date}}.","validation.after_or_equal":"The {{attribute}} must be a date after or equal to {{date}}.","validation.alpha":"The {{attribute}} must only contain letters.","validation.alpha_dash":"The {{attribute}} must only contain letters, numbers, dashes and underscores.","validation.alpha_num":"The {{attribute}} must only contain letters and numbers.","validation.array":"The {{attribute}} must be an array.","validation.ascii":"The {{attribute}} must only contain single-byte alphanumeric characters and symbols.","validation.before":"The {{attribute}} must be a date before {{date}}.","validation.before_or_equal":"The {{attribute}} must be a date before or equal to {{date}}.","validation.between.array":"The {{attribute}} must have between {{min}} and {{max}} items.","validation.between.file":"The {{attribute}} must be between {{min}} and {{max}} kilobytes.","validation.between.numeric":"The {{attribute}} must be between {{min}} and {{max}}.","validation.between.string":"The {{attribute}} must be between {{min}} and {{max}} characters.","validation.boolean":"The {{attribute}} field must be true or false.","validation.confirmed":"The {{attribute}} confirmation does not match.","validation.current_password":"The password is incorrect.","validation.date":"The {{attribute}} is not a valid date.","validation.date_equals":"The {{attribute}} must be a date equal to {{date}}.","validation.date_format":"The {{attribute}} does not match the format {{format}}.","validation.decimal":"The {{attribute}} must have {{decimal}} decimal places.","validation.declined":"The {{attribute}} must be declined.","validation.declined_if":"The {{attribute}} must be declined when {{other}} is {{value}}.","validation.different":"The {{attribute}} and {{other}} must be different.","validation.digits":"The {{attribute}} must be {{digits}} digits.","validation.digits_between":"The {{attribute}} must be between {{min}} and {{max}} digits.","validation.dimensions":"The {{attribute}} has invalid image dimensions.","validation.distinct":"The {{attribute}} field has a duplicate value.","validation.doesnt_end_with":"The {{attribute}} may not end with one of the following: {{values}}.","validation.doesnt_start_with":"The {{attribute}} may not start with one of the following: {{values}}.","validation.email":"The {{attribute}} must be a valid email address.","validation.ends_with":"The {{attribute}} must end with one of the following: {{values}}.","validation.enum":"The selected {{attribute}} is invalid.","validation.exists":"The selected {{attribute}} is invalid.","validation.file":"The {{attribute}} must be a file.","validation.filled":"The {{attribute}} field must have a value.","validation.gt.array":"The {{attribute}} must have more than {{value}} items.","validation.gt.file":"The {{attribute}} must be greater than {{value}} kilobytes.","validation.gt.numeric":"The {{attribute}} must be greater than {{value}}.","validation.gt.string":"The {{attribute}} must be greater than {{value}} characters.","validation.gte.array":"The {{attribute}} must have {{value}} items or more.","validation.gte.file":"The {{attribute}} must be greater than or equal to {{value}} kilobytes.","validation.gte.numeric":"The {{attribute}} must be greater than or equal to {{value}}.","validation.gte.string":"The {{attribute}} must be greater than or equal to {{value}} characters.","validation.image":"The {{attribute}} must be an image.","validation.in":"The selected {{attribute}} is invalid.","validation.in_array":"The {{attribute}} field does not exist in {{other}}.","validation.integer":"The {{attribute}} must be an integer.","validation.ip":"The {{attribute}} must be a valid IP address.","validation.ipv4":"The {{attribute}} must be a valid IPv4 address.","validation.ipv6":"The {{attribute}} must be a valid IPv6 address.","validation.json":"The {{attribute}} must be a valid JSON string.","validation.lowercase":"The {{attribute}} must be lowercase.","validation.lt.array":"The {{attribute}} must have less than {{value}} items.","validation.lt.file":"The {{attribute}} must be less than {{value}} kilobytes.","validation.lt.numeric":"The {{attribute}} must be less than {{value}}.","validation.lt.string":"The {{attribute}} must be less than {{value}} characters.","validation.lte.array":"The {{attribute}} must not have more than {{value}} items.","validation.lte.file":"The {{attribute}} must be less than or equal to {{value}} kilobytes.","validation.lte.numeric":"The {{attribute}} must be less than or equal to {{value}}.","validation.lte.string":"The {{attribute}} must be less than or equal to {{value}} characters.","validation.mac_address":"The {{attribute}} must be a valid MAC address.","validation.max.array":"The {{attribute}} must not have more than {{max}} items.","validation.max.file":"The {{attribute}} must not be greater than {{max}} kilobytes.","validation.max.numeric":"The {{attribute}} must not be greater than {{max}}.","validation.max.string":"The {{attribute}} must not be greater than {{max}} characters.","validation.max_digits":"The {{attribute}} must not have more than {{max}} digits.","validation.mimes":"The {{attribute}} must be a file of type: {{values}}.","validation.mimetypes":"The {{attribute}} must be a file of type: {{values}}.","validation.min.array":"The {{attribute}} must have at least {{min}} items.","validation.min.file":"The {{attribute}} must be at least {{min}} kilobytes.","validation.min.numeric":"The {{attribute}} must be at least {{min}}.","validation.min.string":"The {{attribute}} must be at least {{min}} characters.","validation.min_digits":"The {{attribute}} must have at least {{min}} digits.","validation.missing":"The {{attribute}} field must be missing.","validation.missing_if":"The {{attribute}} field must be missing when {{other}} is {{value}}.","validation.missing_unless":"The {{attribute}} field must be missing unless {{other}} is {{value}}.","validation.missing_with":"The {{attribute}} field must be missing when {{values}} is present.","validation.missing_with_all":"The {{attribute}} field must be missing when {{values}} are present.","validation.multiple_of":"The {{attribute}} must be a multiple of {{value}}.","validation.not_in":"The selected {{attribute}} is invalid.","validation.not_regex":"The {{attribute}} format is invalid.","validation.numeric":"The {{attribute}} must be a number.","validation.password.letters":"The {{attribute}} must contain at least one letter.","validation.password.mixed":"The {{attribute}} must contain at least one uppercase and one lowercase letter.","validation.password.numbers":"The {{attribute}} must contain at least one number.","validation.password.symbols":"The {{attribute}} must contain at least one symbol.","validation.password.uncompromised":"The given {{attribute}} has appeared in a data leak. Please choose a different {{attribute}}.","validation.present":"The {{attribute}} field must be present.","validation.prohibited":"The {{attribute}} field is prohibited.","validation.prohibited_if":"The {{attribute}} field is prohibited when {{other}} is {{value}}.","validation.prohibited_unless":"The {{attribute}} field is prohibited unless {{other}} is in {{values}}.","validation.prohibits":"The {{attribute}} field prohibits {{other}} from being present.","validation.regex":"The {{attribute}} format is invalid.","validation.required":"The {{attribute}} field is required.","validation.required_array_keys":"The {{attribute}} field must contain entries for: {{values}}.","validation.required_if":"The {{attribute}} field is required when {{other}} is {{value}}.","validation.required_if_accepted":"The {{attribute}} field is required when {{other}} is accepted.","validation.required_unless":"The {{attribute}} field is required unless {{other}} is in {{values}}.","validation.required_with":"The {{attribute}} field is required when {{values}} is present.","validation.required_with_all":"The {{attribute}} field is required when {{values}} are present.","validation.required_without":"The {{attribute}} field is required when {{values}} is not present.","validation.required_without_all":"The {{attribute}} field is required when none of {{values}} are present.","validation.same":"The {{attribute}} and {{other}} must match.","validation.size.array":"The {{attribute}} must contain {{size}} items.","validation.size.file":"The {{attribute}} must be {{size}} kilobytes.","validation.size.numeric":"The {{attribute}} must be {{size}}.","validation.size.string":"The {{attribute}} must be {{size}} characters.","validation.starts_with":"The {{attribute}} must start with one of the following: {{values}}.","validation.string":"The {{attribute}} must be a string.","validation.timezone":"The {{attribute}} must be a valid timezone.","validation.unique":"The {{attribute}} has already been taken.","validation.uploaded":"The {{attribute}} failed to upload.","validation.uppercase":"The {{attribute}} must be uppercase.","validation.url":"The {{attribute}} must be a valid URL.","validation.ulid":"The {{attribute}} must be a valid ULID.","validation.uuid":"The {{attribute}} must be a valid UUID.","validation.custom.attribute-name.rule-name":"custom-message","validation.unsupported_currency_code":"The currency code you provided is invalid or not supported.","validation.unsupported_period":"The period you provided is invalid or not supported.","validation.unsupported_token_symbol":"The token symbol you provided is invalid or not supported.","validation.gallery_title_required":"Gallery name is required.","validation.gallery_title_max_characters":"The gallery name should not exceed 50 characters.","validation.gallery_title_invalid":"The gallery name is invalid.","validation.nfts_required":"Please add at least one NFT.","validation.nfts_max_size":"Galleries can contain no more than {{limit}} NFTs","validation.invalid_nfts":"The NFT in position {{position}} is invalid, please select another one.","validation.invalid_cover":"You have selected an invalid cover image, please try another one."} \ No newline at end of file +{"auth.welcome":"Welcome to Dashbrd","auth.logged_in":"You're logged in!","auth.log_out":"Log out","auth.failed":"These credentials do not match our records.","auth.session_timeout":"Your session has timed out. Please refresh the page and try connecting your account again.","auth.session_timeout_modal":"Seems like your session has timed out. Please connnect your wallet again.","auth.password":"The provided password is incorrect.","auth.throttle":"Too many login attempts. Please try again in {{seconds}} seconds.","auth.wallet.connecting":"Connecting …","auth.wallet.waiting_for_signature":"Waiting for Signature …","auth.wallet.switching_wallet":"Switching Wallet …","auth.wallet.connect":"Connect Wallet","auth.wallet.connect_long":"Connect Your Wallet to Get Started","auth.wallet.sign_subtitle":"Connect Your Wallet to Continue","auth.wallet.disconnect":"Disconnect Wallet","auth.wallet.install":"Install MetaMask","auth.wallet.install_long":"Install MetaMask to Get Started","auth.wallet.sign":"Sign Message","auth.wallet.sign_message":"Welcome to Dashbrd. In order to login, sign this message with your wallet. It doesn't cost you anything!\n\nSigning ID (you can ignore this): {{nonce}}","auth.wallet.connect_subtitle":"Click on the MetaMask icon in your browser to confirm the action and connect your wallet.","auth.wallet.requires_signature":"In order to prevent impersonation, we require a signature to perform this action. This signature is only a signed message and does not give any access to your wallet.","auth.errors.metamask.no_account":"No account found. Please connect your wallet and try again.","auth.errors.metamask.generic":"Connection attempt error. Please retry and follow the steps to connect your wallet.","auth.errors.metamask.invalid_network":"Please switch to Polygon or Ethereum Mainnet in your MetaMask plugin to connect to Dashbrd.","auth.errors.metamask.provider_missing":"You don't have MetaMask installed in your browser. Please install and try again.","auth.errors.metamask.user_rejected":"It looks like you cancelled signing of the authentication message. Please try again.","auth.errors.metamask.provider_not_set":"Ethereum provider is not set","auth.validation.wallet_login_failed":"There was a problem trying to verify your signature. Please try again.","auth.validation.invalid_address":"Your wallet address is invalid. Please try again.","auth.validation.invalid_signature":"Signature is invalid. Please try again.","auth.validation.invalid_network":"Please switch to Polygon or Ethereum Mainnet in your MetaMask plugin to connect to Dashbrd.","common.author":"Author","common.add":"Add","common.amount":"Amount","common.balance":"Balance","common.cancel":"Cancel","common.delete":"Delete","common.edit":"Edit","common.confirm":"Confirm","common.connect":"Connect","common.continue":"Continue","common.done":"Done","common.filter":"Filter","common.items":"Items","common.receive":"Receive","common.received":"Received","common.retry":"Retry","common.records":"Records","common.save":"Save","common.send":"Send","common.sent":"Sent","common.show":"Show","common.searching":"Searching...","common.other":"Other","common.owned":"Owned","common.token":"Token","common.tokens":"Tokens","common.wallet":"Wallet","common.pending":"Pending","common.publish":"Publish","common.published":"Published","common.empty":"Empty","common.your_address":"Your Address","common.warning":"Warning","common.my_address":"My Address","common.my_wallet":"My Wallet","common.my_collections":"My Collections","common.my_balance":"My Balance","common.na":"N/A","common.simple_plural_without_data":"One comment|Many comments","common.simple_plural_with_data":"{{count}} comment|{{count}} comments","common.advanced_plural_without_data":"{0} no comments yet|{1} 1 comment|[2,*] Many comments","common.advanced_plural_with_data":"{0} no comments yet|{1} 1 comment|[2,*] {{count}} comments","common.copy_clipboard":"Copy to Clipboard","common.copy":"Copy","common.download":"Download","common.zoom":"Zoom","common.my_collection":"My Collection","common.max":"Max","common.chain":"Chain","common.copied":"Copied!","common.coming_soon":"Coming Soon","common.more_details":"More Details","common.close":"Close","common.close_toast":"Close toast","common.loading":"Loading","common.price":"Price","common.articles":"Articles","common.most_popular":"Most Popular","common.market_cap":"Market Cap","common.volume":"Volume","common.volume_frequency":"Volume {{frequency}}","common.value":"Value","common.last_n_days":"Last {{count}} Days","common.details":"Details","common.view_all":"View All","common.view_more_on_polygonscan":"View More on Polygonscan","common.view_more_on_etherscan":"View More on Etherscan","common.view_nft_on_etherscan":"View NFT on Etherscan","common.view_nft_on_polygonscan":"View NFT on Polygonscan","common.view_nft_on_goerli_tesnet":"View NFT on Goerli Testnet Explorer","common.view_nft_on_mumbai_tesnet":"View NFT on Mumbai Testnet Explorer","common.polygonscan":"Polygonscan","common.etherscan":"Etherscan","common.featured":"Featured","common.floor_price":"Floor Price","common.floor":"Floor","common.supply":"Supply","common.owners":"Owners","common.created":"Created","common.nft":"NFT","common.collection":"Collection","common.collections":"Collections","common.gallery":"Gallery","common.basic_gallery":"Basic Gallery","common.gallery_name":"Gallery Name","common.create_gallery":"Create Gallery","common.external_link":"External Link","common.follow_link":"Follow Link","common.cover":"Cover","common.template":"Template","common.page":"Page","common.polygon":"Polygon","common.ethereum":"Ethereum","common.mumbai":"Mumbai","common.goerli":"Goerli","common.of":"of","common.pagination_input_placeholder":"Enter the page number","common.pagination_input_placeholder_mobile":"Page number","common.nft_count":"{0} {{count}} NFTs|{1} {{count}} NFT|[2,*] {{count}} NFTs","common.nft_gallery":"NFT Gallery","common.unable_to_retrieve_image":"Unable to retrieve your NFT image at this time","common.optional":"Optional","common.selected":"Selected","common.select":"Select","common.preview":"Preview","common.image_size_error":"Image size must not exceed 2MB","common.image_dimensions_error":"Image dimensions must exceed 287px x 190px","common.write_to_confirm":"Write {{word}} to confirm","common.n_hours":"{0} {{count}} hour|{1} {{count}} hour|[2,*] {{count}} hours","common.n_minutes":"{0} {{count}} minute|{1} {{count}} minute|[2,*] {{count}} minutes","common.report":"Report","common.nfts":"NFTs","common.n_nfts":"{0}NFTs|{1}NFT|[2,*]NFTs","common.n_collections":"{0}collections|{1}collection|[2,*]collections","common.back":"Back","common.back_to":"Back to","common.name":"Name","common.type":"Type","common.from":"From","common.to":"To","common.sale_price":"Sale Price","common.recent_activity":"Recent Activity","common.time":"Time","common.datetime.few_seconds_ago":"A few seconds ago","common.datetime.minutes_ago":"{0} Less than a minute ago|{1} A minute ago|[2,*] {{count}} minutes ago","common.datetime.hours_ago":"{0} Less than an hour ago|{1} An hour ago|[2,*] {{count}} hours ago","common.datetime.days_ago":"{0} Less than a day ago|{1} A day ago|[2,*] {{count}} days ago","common.datetime.weeks_ago":"{0} Less than a week ago|{1} A week ago|[2,*] {{count}} weeks ago","common.datetime.months_ago":"{0} Less than a month ago|{1} A month ago|[2,*] {{count}} months ago","common.datetime.years_ago":"{0} Less than a year ago|{1} A year ago|[2,*] {{count}} years ago","common.no_traits_found":"No traits found.","common.empty_transactions":"You don't have any transactions yet. Once transactions have been made, they will show up here.","common.error":"Error","common.refresh":"Refresh","common.refresh_metadata":"Refresh Metadata","common.refreshing_metadata":"Refreshing Metadata... Please check back later.","common.refreshing_activity":"Refreshing Activity... Please check back later.","common.pending_confirmation":"Pending Confirmation","common.confirmed_transaction":"Confirmed Transaction","common.transaction_error":"Transaction Error","common.transaction_error_description_first_part":"Your transaction encountered an error. View this transaction on","common.transaction_error_description_second_part":"for more details.","common.home":"Home","common.contact":"Contact","common.menu":"Menu","common.website":"Website","common.twitter":"Twitter","common.discord":"Discord","common.facebook":"Facebook","common.reddit":"Reddit","common.x":"X","common.sort":"Sort","common.drafts":"Drafts","common.draft":"Draft","common.delete_draft":"Delete Draft","common.share_on":"Share on {{platform}}","common.top":"Top","common.all_chains":"All chains","common.votes":"Votes","common.vol":"Vol","footer.copyright":"{{year}} © Dashbrd. All rights reserved.","footer.all_rights_reserved":"All rights reserved","footer.privacy_policy":"Privacy Policy","footer.terms_of_service":"Terms of Service","footer.powered_by":"Powered by","format.fiat":"{{ value, currency }}","format.number":"{{ value, number }}","metatags.home.title":"Dashbrd | Web3 Portfolio Management Made Simple","metatags.home.description":"Simplify your Web3 journey with Dashbrd. Manage your portfolio of tokens, NFTs, and other digital collectibles across the Ethereum and Polygon blockchains.","metatags.home.image":"/images/meta/home.png","metatags.error.title":"Error {{code}} | Dashbrd","metatags.wallet.title":"My Wallet | Dashbrd","metatags.galleries.title":"Top NFT Galleries | Dashbrd","metatags.galleries.image":"/images/meta/nft-galleries.png","metatags.galleries.description":"Explore user published NFT galleries to find custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.most_popular.title":"Most Popular Galleries | Dashbrd","metatags.galleries.most_popular.image":"/images/meta/most-popular-nft-galleries.png","metatags.galleries.most_popular.description":"Explore and discover Most Popular NFT Galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.newest.title":"Newest Galleries | Dashbrd","metatags.galleries.newest.image":"/images/meta/newest-nft-galleries.png","metatags.galleries.newest.description":"Explore and discover most recent NFT galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More","metatags.galleries.most_valuable.title":"Most Valuable Galleries | Dashbrd","metatags.galleries.most_valuable.image":"/images/meta/most-valuable-nft-galleries.png","metatags.galleries.most_valuable.description":"Explore and discover Most Valuable NFT Galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.view.title":"{{name}} | Dashbrd","metatags.galleries.view.description":"{{name}} | A Curated NFT Gallery at Dashbrd","metatags.galleries.view.image":"/images/meta/nft-gallery.png","metatags.my_galleries.title":"My Galleries | Dashbrd","metatags.my_galleries.title_draft":"My Draft Galleries | Dashbrd","metatags.my_galleries.create.title":"Create Gallery | Dashbrd","metatags.my_galleries.edit.title":"Edit {{name}} | Dashbrd","metatags.collections.title":"Collections | Dashbrd","metatags.collections.view.title":"{{name}} Collection | Dashbrd","metatags.collections.view.description":"Immerse yourself in the intricate details of {{name}} collection, featuring remarkable digital assets. Start your NFT journey today!","metatags.collections.view.image":"/images/meta/nft-collection.png","metatags.my-collections.title":"My Collections | Dashbrd","metatags.nfts.view.title":"{{nft}} NFT | Dashbrd","metatags.nfts.view.description":"Uncover the complete story of {{nft}} NFT from the {{collection}} collection, delving into its unique attributes and distinctive features.","metatags.nfts.view.image":"/images/meta/nft-details.png","metatags.settings.title":"Settings | Dashbrd","metatags.articles.title":"Articles | Dashbrd","metatags.articles.view.title":"{{title}} | Dashbrd","metatags.login.title":"Login | Dashbrd","metatags.privacy_policy.title":"Privacy Policy | Dashbrd","metatags.privacy_policy.description":"Dashbrd’s privacy policy outlines the information we collect and explains your choices surrounding how we use information about you.","metatags.terms_of_service.title":"Terms of Service | Dashbrd","metatags.terms_of_service.description":"These Terms of Service cover your use and access to services, products or websites of Dashbrd.","metatags.cookie_policy.title":"Cookie Policy | Dashbrd","metatags.cookie_policy.description":"Dashbrd uses cookies to make the website more user-friendly. Find out about the main types of cookies we use, and what we use them for.","metatags.welcome.title":"Welcome to Dashbrd | Web3 Simplified","pages.onboarding.title":"Get Started","pages.onboarding.heading":"Your monkeys were bored and ran off, we are trying to round them up.","pages.onboarding.message":"We are setting up your account. This process usually takes just a few minutes, but can take up to 15 minutes.","pages.error.heading":"Oops, something went wrong ...","pages.error.message":"Please try again or get in touch if the issue persists.","pages.maintenance.title":"Dashbrd is currently down for scheduled maintenance.","pages.maintenance.description":"We expect to be back soon. Thanks for your patience.","pages.dashboard.title":"My Wallet","pages.dashboard.breakdown.title":"Portfolio Breakdown","pages.dashboard.line_chart.data_error":"Could not load chart data","pages.articles.title":"Articles","pages.articles.featured_collections":"Featured Collections","pages.articles.placeholder_more_soon":"More Soon","pages.articles.no_articles":"No articles have been published yet. Please check back later!","pages.articles.header_title":"Explore our collection of","pages.articles.header_suffix_one":"published article","pages.articles.header_suffix_other":"published articles","pages.articles.audio_version":"Audio version","pages.articles.consists_of_collections":"{0} This article highlights {{count}} collections|{1} This article highlights {{count}} collection|[2,*] This article highlights {{count}} collections","pages.collections.title":"Collections","pages.collections.collections":"Collections","pages.collections.popular_collections":"Popular Collections","pages.collections.collection_value":"Collection Value","pages.collections.nfts_owned":"NFTs Owned","pages.collections.header_title":"You own <0>{{nftsCount}} {{nfts}} across <0>{{collectionsCount}} {{collections}}, worth about <0><1>{{worth}}","pages.collections.search_placeholder":"Search by Collection","pages.collections.properties":"Properties","pages.collections.collections_network":"Collections Network","pages.collections.property_search_placeholder":"Feature Search","pages.collections.floor_price":"Floor Price","pages.collections.value":"Value","pages.collections.rarity":"Rarity","pages.collections.report":"Report","pages.collections.hide_collection":"Hide Collection","pages.collections.unhide_collection":"Unhide Collection","pages.collections.no_collections":"You do not own any NFTs yet. Once you do they will be shown here.","pages.collections.all_collections_hidden":"You have hidden all your collections. Unhide and they will appear here.","pages.collections.about_collection":"About Collection","pages.collections.show_hidden":"Show Hidden","pages.collections.show_my_collection":"Show My Collection","pages.collections.owned":"Owned","pages.collections.activities.loading_activities":"We're fetching Activity for this NFT, please hang tight, this can take a while.","pages.collections.activities.loading_activities_collection":"We're fetching Activity for this collection, please hang tight, this can take a while.","pages.collections.activities.ignores_activities":"We don't support activity history for this collection yet.","pages.collections.activities.no_activity":"This collection does not have any activity yet.","pages.collections.activities.types.LABEL_MINT":"Mint","pages.collections.activities.types.LABEL_TRANSFER":"Transfer","pages.collections.activities.types.LABEL_SALE":"Sale","pages.collections.activities.types.LABEL_BURN":"Burn","pages.collections.collection_of_the_month.winners_month":"Winners: {{month}}","pages.collections.collection_of_the_month.vote_for_next_months_winners":"Vote now for next month's winners","pages.collections.collection_of_the_month.view_previous_winners":"View Previous Winners","pages.collections.collection_of_the_month.vote_success":"Your vote has been successfully submitted","pages.collections.articles.no_articles":"No articles have been linked to this collection as of now.","pages.collections.articles.no_articles_with_filters":"We could not find any articles matching your search criteria, please try again!","pages.collections.articles.search_placeholder":"Search in Articles","pages.collections.articles.sort_latest":"Latest","pages.collections.articles.sort_popularity":"Most Popular","pages.collections.search.loading_results":"Loading results...","pages.collections.search.no_results":"We could not find anything matching your search criteria, please try again!","pages.collections.search.no_results_with_filters":"We could not find anything matching your filters, please try again!","pages.collections.search.no_results_ownership":"You do not own any NFTs in this collection","pages.collections.search.error":"Could not load search results. Please try again later.","pages.collections.vote.vote_for_top_collection":"Vote for Top Collection of the Month","pages.collections.vote.vote":"Vote","pages.collections.vote.time_left":"Time Left","pages.collections.vote.or_nominate_collection":"Or nominate a collection","pages.collections.vote.vote_to_reveal":"Vote to reveal data","pages.collections.sorting.token_number":"Token Number","pages.collections.sorting.recently_received":"Recently Received","pages.collections.sorting.recently_created":"Recently Created","pages.collections.sorting.oldest_collection":"Oldest Collection","pages.collections.traits.description":"List of NFT traits by % of occurrence in the collection","pages.collections.traits.no_traits":"No Properties can be found for this NFT","pages.collections.menu.collection":"Collection","pages.collections.menu.articles":"Articles","pages.collections.menu.activity":"Activity","pages.collections.hidden_modal.collection_hidden":"Collection Hidden","pages.collections.hidden_modal.description":"This collection is currently set to Hidden. Are you sure you want to unhide this collection? You can\n reset the collection to hidden from the collection menu.","pages.collections.hidden_modal.unhide":"Unhide","pages.collections.hidden_modal.error":"Something went wrong. Please try again.","pages.collections.external_modal.you_wish_continue":"You are about to leave Dashbrd to an external website. Dashbrd has no control over the content of\n this site. Are you sure you wish to continue?","pages.collections.external_modal.not_show":"Do not show this message again.","pages.collections.refresh.title":"Refresh your collection","pages.collections.refresh.notice":"You can refresh data every 15 minutes.","pages.collections.refresh.notice_wait":"Please wait. You can refresh data every 15 minutes.","pages.collections.refresh.toast":"We're updating information for your collection.","pages.collections.featured.title":"Featured Collections","pages.collections.featured.button":"Explore Collection","pages.collections.footer.heading_broken.0":"Connect with MetaMask","pages.collections.footer.heading_broken.1":"& Manage Your Collection","pages.collections.footer.subtitle":"Explore, Filter, & Share your favorite NFTs with Dashbrd.","pages.collections.footer.button":"Manage Collections","pages.nfts.nft":"nft","pages.nfts.about_nft":"About NFT","pages.nfts.owned_by":"Owned by","pages.nfts.collection_image":"collection image","pages.nfts.menu.properties":"Properties","pages.nfts.menu.activity":"Activity","pages.reports.title":"Submit a Report","pages.reports.description":"Thanks for looking out by reporting things that break the rules. Let us know what's happening and we'll receive the report.","pages.reports.success":"Thank you for your report. We'll review it and see if it breaks our ToS.","pages.reports.failed":"Something went wrong. Please try again.","pages.reports.throttle":"You have made too many requests. Please wait {{time}} before reporting again.","pages.reports.reported":"You have already reported this {{model}}.","pages.reports.reasons.spam":"Spam","pages.reports.reasons.violence":"Promoting Violence","pages.reports.reasons.hate":"Hate","pages.reports.reasons.inappropriate_content":"Inappropriate Content","pages.reports.reasons.impersonation":"Impersonation","pages.reports.reasons.trademark":"Trademark or Copyright","pages.reports.reasons.selfharm":"Self-Harm","pages.reports.reasons.harassment":"Harassment","pages.galleries.title":"Galleries","pages.galleries.empty_title":"No galleries have been published yet. Once they do they will appear here.","pages.galleries.search.loading_results":"Loading results...","pages.galleries.search.no_results":"We could not find anything matching your search criteria, please try again!","pages.galleries.search.placeholder":"Search by name or curator address","pages.galleries.search.placeholder_nfts":"Search by NFTs","pages.galleries.search.error":"Could not load search results. Please try again later.","pages.galleries.my_galleries.title":"My Galleries","pages.galleries.my_galleries.subtitle":"Manage your galleries","pages.galleries.my_galleries.new_gallery":"New Gallery","pages.galleries.my_galleries.no_galleries":"You have not created any galleries yet. To create a gallery, click on the \"Create Gallery\" button.","pages.galleries.my_galleries.no_available_collections":"You have hidden all your collections. If you want to create a gallery, make sure you have at least 1 collection available.","pages.galleries.my_galleries.no_draft_galleries":"You have no draft galleries yet. To create a gallery, click on the \"Create Gallery\" button.","pages.galleries.my_galleries.succesfully_deleted":"Gallery has been successfully removed","pages.galleries.my_galleries.draft_succesfully_deleted":"Draft has been successfully removed","pages.galleries.my_galleries.successfully_created":"Gallery has been successfully created","pages.galleries.my_galleries.successfully_updated":"Gallery has been successfully updated","pages.galleries.my_galleries.new_gallery_no_nfts":"Creating a Gallery requires you to own an NFT.","pages.galleries.my_galleries.new_gallery_all_collections_hidden":"Creating a Gallery requires you to have at least 1 collection available.","pages.galleries.my_galleries.delete_modal.title":"Delete Draft","pages.galleries.my_galleries.delete_modal.text":"Are you sure you want to delete the draft? Everything you've done will be deleted and you won't be able to get it back.","pages.galleries.my_galleries.nfts_no_longer_owned":"NFTs no longer owned by this wallet have been removed from the draft”","pages.galleries.copy_gallery_link":"Copy Gallery Link","pages.galleries.my_nfts":"My NFTs","pages.galleries.show_hidden_collections":"Show hidden collections","pages.galleries.value":"Value","pages.galleries.floor_price":"Floor Price","pages.galleries.nfts":"NFTs","pages.galleries.collections":"Collections","pages.galleries.galleries_count_simple":"{0} galleries|{1} gallery|[2,*] galleries","pages.galleries.galleries_count":"{0} {{count}} Galleries|{1} {{count}} Gallery|[2,*] {{count}} Galleries","pages.galleries.collections_count_simple":"{0} collections|{1} collection|[2,*] collections","pages.galleries.collections_count":"{0} {{count}} Collections|{1} {{count}} Collection|[2,*] {{count}} Collections","pages.galleries.nfts_count_simple":"{0} NFTs|{1} NFT|[2,*] NFTs","pages.galleries.nfts_count":"{0} {{count}} NFTs|{1} {{count}} NFT|[2,*] {{count}} NFTs","pages.galleries.users_count_simple":"{0} users|{1} user|[2,*] users","pages.galleries.users_count":"{0} {{count}} Users|{1} {{count}} User|[2,*] {{count}} Users","pages.galleries.featuring":"Featuring","pages.galleries.curated_by":"Curated by","pages.galleries.worth_about":"Worth About","pages.galleries.valued_at":"valued at","pages.galleries.from":"From","pages.galleries.most_popular_galleries":"Most Popular Galleries","pages.galleries.newest_galleries":"Newest Galleries","pages.galleries.most_valuable_galleries":"Most Valuable Galleries","pages.galleries.most_popular":"Most Popular","pages.galleries.newest":"Newest","pages.galleries.most_valuable":"Most Valuable","pages.galleries.create.search_by_nfts":"Search by NFTs","pages.galleries.create.input_placeholder":"Enter gallery name","pages.galleries.create.title_too_long":"Gallery name must not exceed {{max}} characters.","pages.galleries.create.already_selected_nft":"NFT already exists in this gallery","pages.galleries.create.nft_missing_image":"Only NFTs with images can be added to galleries","pages.galleries.create.nft_gallery_limit":"You can only add 16 NFTs per gallery","pages.galleries.create.gallery_cover":"Gallery Cover","pages.galleries.create.gallery_cover_description":"The cover is used for the card on the gallery list page. While the cover is not a requirement it will allow you to add personality and stand out from the crowd.","pages.galleries.create.gallery_cover_information":"Image dimensions must be at least 287px x 190px, with a max size of 2 MB (JPG, PNG or GIF)","pages.galleries.create.no_results":"We could not find anything matching your search criteria, please try again!","pages.galleries.create.templates.cover":"Cover","pages.galleries.create.templates.template":"Template","pages.galleries.create.templates.select":"Select Gallery Template","pages.galleries.create.templates.basic":"Basic Gallery","pages.galleries.create.templates.coming_soon":"More Coming Soon","pages.galleries.create.load_more_collections_one":"Load {{count}} More Collection","pages.galleries.create.load_more_collections_other":"Load {{count}} More Collections","pages.galleries.create.load_more_nfts":"Load More NFTs","pages.galleries.create.can_purchase":"You can purchase NFTs with these top NFT Marketplaces:","pages.galleries.create.must_own_one_nft":"You must own at least one (1) NFT in order to create a gallery.","pages.galleries.create.back_to_galleries":"Back to Galleries","pages.galleries.create.draft_saved":"Draft Saved","pages.galleries.create.saving_to_draft":"Saving to draft","pages.galleries.create.drafts_limit_modal_title":"Draft Gallery Limit","pages.galleries.create.drafts_limit_modal_message":"You’ve hit your limit for draft galleries. While you can still make new galleries and publish them, they won’t be saved as drafts. To Free up space, you can either delete existing drafts or publish them.","pages.galleries.create.drafts_limit_modal_cancel":"Go to Drafts","pages.galleries.delete_modal.title":"Delete Gallery","pages.galleries.delete_modal.confirmation_text":"Are you sure you want to delete the gallery? Deleting a Gallery is permanent, all associated views and likes will be lost.","pages.galleries.consists_of_collections":"{0} This gallery consists of {{count}} collections|{1} This gallery consists of {{count}} collection|[2,*] This gallery consists of {{count}} collections","pages.galleries.guest_banner.title":"Craft the ultimate","pages.galleries.guest_banner.subtitle":"Pick your favorites, curate your gallery, & share it with the world.","pages.profile.title":"Profile","pages.token_panel.balance_tooltip":"Total percentage of the portfolio held in this token","pages.token_panel.insufficient_funds":"Insufficient Balance","pages.token_panel.error":"Dashbrd has failed to load token information. Please try again later.","pages.token_panel.failed_to_retrieve_transactions":"We were unable to fetch your transactions.","pages.token_panel.tabs.transaction_history":"Transaction History","pages.token_panel.tabs.history":"History","pages.token_panel.tabs.market_data":"Market Data","pages.token_panel.details.current_price":"Current Price","pages.token_panel.details.title":"Token Details","pages.token_panel.details.market_cap":"Market Cap","pages.token_panel.details.volume":"Daily Volume","pages.token_panel.details.supply":"Minted Supply","pages.token_panel.details.ath":"All-Time High","pages.token_panel.details.atl":"All-Time Low","pages.token_panel.chart.failed":"Dashbrd has failed to load chart information. Please try again later.","pages.transaction_details_panel.title":"Transaction Details","pages.transaction_details_panel.details.blockchain":"Blockchain","pages.transaction_details_panel.details.timestamp":"Timestamp","pages.transaction_details_panel.details.transaction_hash":"Transaction Hash","pages.transaction_details_panel.details.transaction_fee":"Transaction Fee","pages.transaction_details_panel.details.gas_price":"Gas Price","pages.transaction_details_panel.details.gas_used":"Gas Used","pages.transaction_details_panel.details.nonce":"Nonce","pages.send_receive_panel.send.labels.token_and_amount":"Token and Amount","pages.send_receive_panel.send.labels.destination_address":"Destination Address","pages.send_receive_panel.send.labels.projected_fee":"Projected Fee","pages.send_receive_panel.send.placeholders.enter_amount":"Enter Amount","pages.send_receive_panel.send.placeholders.insert_recipient_address":"Insert Recipient Address","pages.send_receive_panel.send.placeholders.projected_fee":"Projected Fee","pages.send_receive_panel.send.errors.amount":"Insufficient Funds: You do not have enough to cover the amount + fee.","pages.send_receive_panel.send.errors.destination":"Destination address is not correct. Check and input again.","pages.send_receive_panel.send.hints.token_price":"Token Price","pages.send_receive_panel.send.fees.Fast":"Fast","pages.send_receive_panel.send.fees.Avg":"Avg","pages.send_receive_panel.send.fees.Slow":"Slow","pages.send_receive_panel.send.search_dropdown.placeholder":"Search token","pages.send_receive_panel.send.search_dropdown.no_results":"No Results","pages.send_receive_panel.send.search_dropdown.error":"Error occurred while searching tokens.","pages.send_receive_panel.send.transaction_time":"Transaction Time: ~{{ time }} minutes","pages.send_receive_panel.send.from":"From","pages.send_receive_panel.send.to":"To","pages.send_receive_panel.send.amount":"Amount","pages.send_receive_panel.send.fee":"Fee","pages.send_receive_panel.send.total_amount":"Total Amount","pages.send_receive_panel.send.waiting_message":"Review and verify the information on your MetaMask. Sign to send the transaction.","pages.send_receive_panel.send.waiting_spinner_text":"Waiting for confirmation...","pages.send_receive_panel.send.failed_message":"It looks like something went wrong while sending your transaction. Press 'Retry' to make another attempt.","pages.send_receive_panel.receive.alert":"Send only Polygon or Ethereum Network compatible tokens to this address or you could permanently lose your funds!","pages.settings.title":"Settings","pages.settings.sidebar.general":"General","pages.settings.sidebar.notifications":"Notifications","pages.settings.sidebar.session_history":"Sessions History","pages.settings.general.title":"Settings","pages.settings.general.subtitle":"Customize your App Experience","pages.settings.general.currency":"Currency","pages.settings.general.currency_subtitle":"Select your default currency which will be used throughout the app.","pages.settings.general.time_date":"Time & Date","pages.settings.general.time_date_subtitle":"Select how you want time and date be shown inside app.","pages.settings.general.date_format":"Date Format","pages.settings.general.time_format":"Time Format","pages.settings.general.timezone":"Timezone","pages.settings.general.set_defaults":"Set Defaults","pages.settings.general.set_defaults_content":"Reverting to the default settings will remove any customizations previously made. Are you sure?","pages.settings.general.save":"Save Settings","pages.settings.general.saved":"Your settings have been successfully saved","pages.wallet.title":"Wallet","pages.privacy_policy.title":"Privacy Policy","pages.terms_of_service.title":"Terms of Service","pagination.previous":"« Previous","pagination.next":"Next »","passwords.reset":"Your password has been reset!","passwords.sent":"We have emailed your password reset link!","passwords.throttled":"Please wait before retrying.","passwords.token":"This password reset token is invalid.","passwords.user":"We can't find a user with that email address.","urls.landing":"https://dashbrd.com","urls.cookie_policy":"https://dashbrd.com/cookie-policy","urls.privacy_policy":"https://dashbrd.com/privacy-policy","urls.terms_of_service":"https://dashbrd.com/terms-of-service","urls.twitter":"https://x.com/DashbrdApp","urls.discord":"https://discord.gg/MJyWKkCJ5k","urls.github":"https://github.com/ArdentHQ/dashbrd","urls.coingecko":"https://www.coingecko.com","urls.etherscan":"https://etherscan.io","urls.polygonscan":"https://polygonscan.com","urls.alchemy":"https://www.alchemy.com","urls.moralis":"https://moralis.io","urls.mnemonic":"https://www.mnemonichq.com","urls.opensea":"https://opensea.io/","urls.explorers.etherscan.token_transactions":"https://etherscan.io/token/{{token}}?a={{address}}","urls.explorers.etherscan.addresses":"https://etherscan.io/address/{{address}}","urls.explorers.etherscan.transactions":"https://etherscan.io/tx/{{id}}","urls.explorers.etherscan.nft":"https://etherscan.io/nft/{{address}}/{{nftId}}","urls.explorers.polygonscan.token_transactions":"https://polygonscan.com/token/{{token}}?a={{address}}","urls.explorers.polygonscan.addresses":"https://polygonscan.com/address/{{address}}","urls.explorers.polygonscan.transactions":"https://polygonscan.com/tx/{{id}}","urls.explorers.polygonscan.nft":"https://polygonscan.com/nft/{{address}}/{{nftId}}","urls.explorers.mumbai.token_transactions":"https://mumbai.polygonscan.com/token/{{token}}?a={{address}}","urls.explorers.mumbai.addresses":"https://mumbai.polygonscan.com/address/{{address}}","urls.explorers.mumbai.transactions":"https://mumbai.polygonscan.com/tx/{{id}}","urls.explorers.mumbai.nft":"https://mumbai.polygonscan.com/nft/{{address}}/{{nftId}}","urls.explorers.goerli.token_transactions":"https://goerli.etherscan.io/token/{{token}}?a={{address}}","urls.explorers.goerli.addresses":"https://goerli.etherscan.io/address/{{address}}","urls.explorers.goerli.transactions":"https://goerli.etherscan.io/tx/{{id}}","urls.explorers.goerli.nft":"https://goerli.etherscan.io/nft/{{address}}/{{nftId}}","urls.marketplaces.opensea.collection":"https://opensea.io/assets/{{network}}/{{address}}","urls.marketplaces.opensea.nft":"https://opensea.io/assets/{{network}}/{{address}}/{{nftId}}","urls.marketplaces.rarible.collection":"https://rarible.com/collection/{{address}}/items","urls.marketplaces.rarible.nft":"https://rarible.com/token/{{address}}:{{nftId}}","urls.marketplaces.blur.collection":"https://blur.io/collection/{{address}}","urls.marketplaces.blur.nft":"https://blur.io/asset/{{address}}/{{nftId}}","urls.marketplaces.looksrare.collection":"https://looksrare.org/collections/{{address}}","urls.marketplaces.looksrare.nft":"https://looksrare.org/collections/{{address}}/{{nftId}}","validation.accepted":"The {{attribute}} must be accepted.","validation.accepted_if":"The {{attribute}} must be accepted when {{other}} is {{value}}.","validation.active_url":"The {{attribute}} is not a valid URL.","validation.after":"The {{attribute}} must be a date after {{date}}.","validation.after_or_equal":"The {{attribute}} must be a date after or equal to {{date}}.","validation.alpha":"The {{attribute}} must only contain letters.","validation.alpha_dash":"The {{attribute}} must only contain letters, numbers, dashes and underscores.","validation.alpha_num":"The {{attribute}} must only contain letters and numbers.","validation.array":"The {{attribute}} must be an array.","validation.ascii":"The {{attribute}} must only contain single-byte alphanumeric characters and symbols.","validation.before":"The {{attribute}} must be a date before {{date}}.","validation.before_or_equal":"The {{attribute}} must be a date before or equal to {{date}}.","validation.between.array":"The {{attribute}} must have between {{min}} and {{max}} items.","validation.between.file":"The {{attribute}} must be between {{min}} and {{max}} kilobytes.","validation.between.numeric":"The {{attribute}} must be between {{min}} and {{max}}.","validation.between.string":"The {{attribute}} must be between {{min}} and {{max}} characters.","validation.boolean":"The {{attribute}} field must be true or false.","validation.confirmed":"The {{attribute}} confirmation does not match.","validation.current_password":"The password is incorrect.","validation.date":"The {{attribute}} is not a valid date.","validation.date_equals":"The {{attribute}} must be a date equal to {{date}}.","validation.date_format":"The {{attribute}} does not match the format {{format}}.","validation.decimal":"The {{attribute}} must have {{decimal}} decimal places.","validation.declined":"The {{attribute}} must be declined.","validation.declined_if":"The {{attribute}} must be declined when {{other}} is {{value}}.","validation.different":"The {{attribute}} and {{other}} must be different.","validation.digits":"The {{attribute}} must be {{digits}} digits.","validation.digits_between":"The {{attribute}} must be between {{min}} and {{max}} digits.","validation.dimensions":"The {{attribute}} has invalid image dimensions.","validation.distinct":"The {{attribute}} field has a duplicate value.","validation.doesnt_end_with":"The {{attribute}} may not end with one of the following: {{values}}.","validation.doesnt_start_with":"The {{attribute}} may not start with one of the following: {{values}}.","validation.email":"The {{attribute}} must be a valid email address.","validation.ends_with":"The {{attribute}} must end with one of the following: {{values}}.","validation.enum":"The selected {{attribute}} is invalid.","validation.exists":"The selected {{attribute}} is invalid.","validation.file":"The {{attribute}} must be a file.","validation.filled":"The {{attribute}} field must have a value.","validation.gt.array":"The {{attribute}} must have more than {{value}} items.","validation.gt.file":"The {{attribute}} must be greater than {{value}} kilobytes.","validation.gt.numeric":"The {{attribute}} must be greater than {{value}}.","validation.gt.string":"The {{attribute}} must be greater than {{value}} characters.","validation.gte.array":"The {{attribute}} must have {{value}} items or more.","validation.gte.file":"The {{attribute}} must be greater than or equal to {{value}} kilobytes.","validation.gte.numeric":"The {{attribute}} must be greater than or equal to {{value}}.","validation.gte.string":"The {{attribute}} must be greater than or equal to {{value}} characters.","validation.image":"The {{attribute}} must be an image.","validation.in":"The selected {{attribute}} is invalid.","validation.in_array":"The {{attribute}} field does not exist in {{other}}.","validation.integer":"The {{attribute}} must be an integer.","validation.ip":"The {{attribute}} must be a valid IP address.","validation.ipv4":"The {{attribute}} must be a valid IPv4 address.","validation.ipv6":"The {{attribute}} must be a valid IPv6 address.","validation.json":"The {{attribute}} must be a valid JSON string.","validation.lowercase":"The {{attribute}} must be lowercase.","validation.lt.array":"The {{attribute}} must have less than {{value}} items.","validation.lt.file":"The {{attribute}} must be less than {{value}} kilobytes.","validation.lt.numeric":"The {{attribute}} must be less than {{value}}.","validation.lt.string":"The {{attribute}} must be less than {{value}} characters.","validation.lte.array":"The {{attribute}} must not have more than {{value}} items.","validation.lte.file":"The {{attribute}} must be less than or equal to {{value}} kilobytes.","validation.lte.numeric":"The {{attribute}} must be less than or equal to {{value}}.","validation.lte.string":"The {{attribute}} must be less than or equal to {{value}} characters.","validation.mac_address":"The {{attribute}} must be a valid MAC address.","validation.max.array":"The {{attribute}} must not have more than {{max}} items.","validation.max.file":"The {{attribute}} must not be greater than {{max}} kilobytes.","validation.max.numeric":"The {{attribute}} must not be greater than {{max}}.","validation.max.string":"The {{attribute}} must not be greater than {{max}} characters.","validation.max_digits":"The {{attribute}} must not have more than {{max}} digits.","validation.mimes":"The {{attribute}} must be a file of type: {{values}}.","validation.mimetypes":"The {{attribute}} must be a file of type: {{values}}.","validation.min.array":"The {{attribute}} must have at least {{min}} items.","validation.min.file":"The {{attribute}} must be at least {{min}} kilobytes.","validation.min.numeric":"The {{attribute}} must be at least {{min}}.","validation.min.string":"The {{attribute}} must be at least {{min}} characters.","validation.min_digits":"The {{attribute}} must have at least {{min}} digits.","validation.missing":"The {{attribute}} field must be missing.","validation.missing_if":"The {{attribute}} field must be missing when {{other}} is {{value}}.","validation.missing_unless":"The {{attribute}} field must be missing unless {{other}} is {{value}}.","validation.missing_with":"The {{attribute}} field must be missing when {{values}} is present.","validation.missing_with_all":"The {{attribute}} field must be missing when {{values}} are present.","validation.multiple_of":"The {{attribute}} must be a multiple of {{value}}.","validation.not_in":"The selected {{attribute}} is invalid.","validation.not_regex":"The {{attribute}} format is invalid.","validation.numeric":"The {{attribute}} must be a number.","validation.password.letters":"The {{attribute}} must contain at least one letter.","validation.password.mixed":"The {{attribute}} must contain at least one uppercase and one lowercase letter.","validation.password.numbers":"The {{attribute}} must contain at least one number.","validation.password.symbols":"The {{attribute}} must contain at least one symbol.","validation.password.uncompromised":"The given {{attribute}} has appeared in a data leak. Please choose a different {{attribute}}.","validation.present":"The {{attribute}} field must be present.","validation.prohibited":"The {{attribute}} field is prohibited.","validation.prohibited_if":"The {{attribute}} field is prohibited when {{other}} is {{value}}.","validation.prohibited_unless":"The {{attribute}} field is prohibited unless {{other}} is in {{values}}.","validation.prohibits":"The {{attribute}} field prohibits {{other}} from being present.","validation.regex":"The {{attribute}} format is invalid.","validation.required":"The {{attribute}} field is required.","validation.required_array_keys":"The {{attribute}} field must contain entries for: {{values}}.","validation.required_if":"The {{attribute}} field is required when {{other}} is {{value}}.","validation.required_if_accepted":"The {{attribute}} field is required when {{other}} is accepted.","validation.required_unless":"The {{attribute}} field is required unless {{other}} is in {{values}}.","validation.required_with":"The {{attribute}} field is required when {{values}} is present.","validation.required_with_all":"The {{attribute}} field is required when {{values}} are present.","validation.required_without":"The {{attribute}} field is required when {{values}} is not present.","validation.required_without_all":"The {{attribute}} field is required when none of {{values}} are present.","validation.same":"The {{attribute}} and {{other}} must match.","validation.size.array":"The {{attribute}} must contain {{size}} items.","validation.size.file":"The {{attribute}} must be {{size}} kilobytes.","validation.size.numeric":"The {{attribute}} must be {{size}}.","validation.size.string":"The {{attribute}} must be {{size}} characters.","validation.starts_with":"The {{attribute}} must start with one of the following: {{values}}.","validation.string":"The {{attribute}} must be a string.","validation.timezone":"The {{attribute}} must be a valid timezone.","validation.unique":"The {{attribute}} has already been taken.","validation.uploaded":"The {{attribute}} failed to upload.","validation.uppercase":"The {{attribute}} must be uppercase.","validation.url":"The {{attribute}} must be a valid URL.","validation.ulid":"The {{attribute}} must be a valid ULID.","validation.uuid":"The {{attribute}} must be a valid UUID.","validation.custom.attribute-name.rule-name":"custom-message","validation.unsupported_currency_code":"The currency code you provided is invalid or not supported.","validation.unsupported_period":"The period you provided is invalid or not supported.","validation.unsupported_token_symbol":"The token symbol you provided is invalid or not supported.","validation.gallery_title_required":"Gallery name is required.","validation.gallery_title_max_characters":"The gallery name should not exceed 50 characters.","validation.gallery_title_invalid":"The gallery name is invalid.","validation.nfts_required":"Please add at least one NFT.","validation.nfts_max_size":"Galleries can contain no more than {{limit}} NFTs","validation.invalid_nfts":"The NFT in position {{position}} is invalid, please select another one.","validation.invalid_cover":"You have selected an invalid cover image, please try another one."} \ No newline at end of file diff --git a/resources/js/Pages/Collections/Components/CollectionOfTheMonth/CollectionOfTheMonth.tsx b/resources/js/Pages/Collections/Components/CollectionOfTheMonth/CollectionOfTheMonth.tsx deleted file mode 100644 index a401db493..000000000 --- a/resources/js/Pages/Collections/Components/CollectionOfTheMonth/CollectionOfTheMonth.tsx +++ /dev/null @@ -1,15 +0,0 @@ -import React from "react"; -import { VoteCollection } from "./VoteCollection"; -import { CollectionOfTheMonthWinners } from "@/Components/Collections/CollectionOfTheMonthWinners"; - -export const CollectionOfTheMonth = ({ - winners, -}: { - winners: App.Data.Collections.CollectionOfTheMonthData[]; -}): JSX.Element => ( -
    - - - -
    -); diff --git a/resources/js/Pages/Collections/Components/CollectionOfTheMonth/VoteCollection.tsx b/resources/js/Pages/Collections/Components/CollectionOfTheMonth/VoteCollection.tsx deleted file mode 100644 index 8e5eccbc9..000000000 --- a/resources/js/Pages/Collections/Components/CollectionOfTheMonth/VoteCollection.tsx +++ /dev/null @@ -1,31 +0,0 @@ -import React from "react"; -import { useTranslation } from "react-i18next"; -import { VoteCountdown } from "./VoteCountdown"; -import { Heading } from "@/Components/Heading"; -import { LinkButton } from "@/Components/Link"; - -export const VoteCollection = (): JSX.Element => { - const { t } = useTranslation(); - - return ( -
    - {t("pages.collections.vote.vote_for_top_collection")} - -
    - - - { - console.log("TODO: Implement or nominate collection"); - }} - variant="link" - className="font-medium leading-6 dark:hover:decoration-theme-primary-400" - fontSize="!text-base" - textColor="!text-theme-primary-600 dark:!text-theme-primary-400" - > - {t("pages.collections.vote.or_nominate_collection")} - -
    -
    - ); -}; diff --git a/resources/js/Pages/Collections/Components/CollectionOfTheMonth/index.tsx b/resources/js/Pages/Collections/Components/CollectionOfTheMonth/index.tsx deleted file mode 100644 index 6f5aabe3a..000000000 --- a/resources/js/Pages/Collections/Components/CollectionOfTheMonth/index.tsx +++ /dev/null @@ -1,3 +0,0 @@ -export * from "./CollectionOfTheMonth"; -export * from "./VoteCollection"; -export * from "./VoteCountdown"; diff --git a/resources/js/Pages/Collections/Components/CollectionVoting/VoteCollections.test.tsx b/resources/js/Pages/Collections/Components/CollectionVoting/VoteCollections.test.tsx new file mode 100644 index 000000000..d1d793e61 --- /dev/null +++ b/resources/js/Pages/Collections/Components/CollectionVoting/VoteCollections.test.tsx @@ -0,0 +1,60 @@ +import { within } from "@testing-library/react"; +import { expect } from "vitest"; +import { + VoteCollection, + type VoteCollectionProperties, + VoteCollections, + VoteCount, +} from "@/Pages/Collections/Components/CollectionVoting/VoteCollections"; +import { render, screen } from "@/Tests/testing-library"; + +const demoCollection: VoteCollectionProperties = { + index: 1, + name: "AlphaDogs", + image: "https://i.seadn.io/gcs/files/4ef4a60496c335d66eba069423c0af90.png?w=500&auto=format", + volume: "256.000000000000000000", + volumeCurrency: "ETH", + volumeDecimals: 18, + votes: 15, +}; + +const collections = Array.from({ length: 8 }).fill(demoCollection) as VoteCollectionProperties[]; + +describe("VoteCollections", () => { + it("should render collections in two block, 4 collection in each", () => { + render(); + + const leftBlock = screen.getByTestId("VoteCollections_Left"); + const rightBlock = screen.getByTestId("VoteCollections_Right"); + + expect(within(leftBlock).getAllByText("AlphaDogs").length).toBe(4); + expect(within(rightBlock).getAllByText("AlphaDogs").length).toBe(4); + }); +}); +describe("VoteCollection", () => { + it("should render the component", () => { + render(); + + expect(screen.getByText("AlphaDogs")).toBeInTheDocument(); + }); + + it("should render volume of the collection", () => { + render(); + + expect(screen.getByText(/Vol: 256 ETH/)).toBeInTheDocument(); + }); +}); + +describe("VoteCount", () => { + it("should render without vote count", () => { + render(); + + expect(screen.getByTestId("icon-HiddenVote")).toBeInTheDocument(); + }); + + it("should render with vote count", () => { + render(); + + expect(screen.getByText("15")).toBeInTheDocument(); + }); +}); diff --git a/resources/js/Pages/Collections/Components/CollectionVoting/VoteCollections.tsx b/resources/js/Pages/Collections/Components/CollectionVoting/VoteCollections.tsx new file mode 100644 index 000000000..83219418b --- /dev/null +++ b/resources/js/Pages/Collections/Components/CollectionVoting/VoteCollections.tsx @@ -0,0 +1,172 @@ +import React from "react"; +import { useTranslation } from "react-i18next"; +import { twMerge } from "tailwind-merge"; +import { VoteCountdown } from "./VoteCountdown"; +import { Heading } from "@/Components/Heading"; +import { Icon } from "@/Components/Icon"; +import { Img } from "@/Components/Image"; +import { LinkButton } from "@/Components/Link"; +import { Tooltip } from "@/Components/Tooltip"; +import { FormatCrypto } from "@/Utils/Currency"; + +export interface VoteCollectionProperties { + name: string; + image: string; + volume?: string; + volumeCurrency?: string; + volumeDecimals?: number; + votes?: number; + index: number; +} + +export const VoteCollections = ({ collections }: { collections: VoteCollectionProperties[] }): JSX.Element => { + const { t } = useTranslation(); + + return ( +
    + {t("pages.collections.vote.vote_for_top_collection")} + +
    +
    + {collections.slice(0, 4).map((collection, index) => ( + + ))} +
    +
    + {collections.slice(4, 8).map((collection, index) => ( + + ))} +
    +
    + +
    + + + { + console.log("TODO: Implement or nominate collection"); + }} + variant="link" + className="font-medium leading-6 dark:hover:decoration-theme-primary-400" + fontSize="!text-base" + textColor="!text-theme-primary-600 dark:!text-theme-primary-400" + > + {t("pages.collections.vote.or_nominate_collection")} + +
    +
    + ); +}; + +export const VoteCollection = ({ collection }: { collection: VoteCollectionProperties }): JSX.Element => { + const { t } = useTranslation(); + + return ( +
    +
    +
    +
    +
    + + {collection.index} + +
    +
    + +
    +
    + +
    +

    + {collection.name} +

    +

    + {t("common.vol")}:{" "} + +

    +
    + +
    +
    +
    + +
    + +
    +
    +
    + ); +}; + +export const VoteCount = ({ + iconClass, + textClass, + voteCount, +}: { + iconClass?: string; + textClass?: string; + voteCount?: number; +}): JSX.Element => { + const { t } = useTranslation(); + return ( +
    +

    + Votes +

    + {voteCount !== undefined ? ( +

    + {voteCount} +

    + ) : ( + +
    + +
    +
    + )} +
    + ); +}; diff --git a/resources/js/Pages/Collections/Components/CollectionOfTheMonth/VoteCountdown.tsx b/resources/js/Pages/Collections/Components/CollectionVoting/VoteCountdown.tsx similarity index 100% rename from resources/js/Pages/Collections/Components/CollectionOfTheMonth/VoteCountdown.tsx rename to resources/js/Pages/Collections/Components/CollectionVoting/VoteCountdown.tsx diff --git a/resources/js/Pages/Collections/Components/CollectionVoting/index.tsx b/resources/js/Pages/Collections/Components/CollectionVoting/index.tsx new file mode 100644 index 000000000..825fc3aa8 --- /dev/null +++ b/resources/js/Pages/Collections/Components/CollectionVoting/index.tsx @@ -0,0 +1,2 @@ +export * from "./VoteCollections"; +export * from "./VoteCountdown"; diff --git a/resources/js/Pages/Collections/Index.tsx b/resources/js/Pages/Collections/Index.tsx index 0c1f608ff..bc6539d33 100644 --- a/resources/js/Pages/Collections/Index.tsx +++ b/resources/js/Pages/Collections/Index.tsx @@ -8,12 +8,13 @@ import { FeaturedCollectionsCarousel } from "./Components/FeaturedCollections"; import { PopularCollectionsFilterPopover } from "./Components/PopularCollectionsFilterPopover"; import { type PopularCollectionsSortBy, PopularCollectionsSorting } from "./Components/PopularCollectionsSorting"; import { ButtonLink } from "@/Components/Buttons/ButtonLink"; +import { CollectionOfTheMonthWinners } from "@/Components/Collections/CollectionOfTheMonthWinners"; import { PopularCollectionsTable } from "@/Components/Collections/PopularCollectionsTable"; import { Heading } from "@/Components/Heading"; import { type PaginationData } from "@/Components/Pagination/Pagination.contracts"; import { useIsFirstRender } from "@/Hooks/useIsFirstRender"; import { DefaultLayout } from "@/Layouts/DefaultLayout"; -import { CollectionOfTheMonth } from "@/Pages/Collections/Components/CollectionOfTheMonth"; +import { type VoteCollectionProperties, VoteCollections } from "@/Pages/Collections/Components/CollectionVoting"; import { type ChainFilter, ChainFilters } from "@/Pages/Collections/Components/PopularCollectionsFilters"; interface Filters extends Record { @@ -29,6 +30,15 @@ interface CollectionsIndexProperties extends PageProps { filters: Filters; } +const demoCollection: VoteCollectionProperties = { + index: 1, + name: "AlphaDogs", + image: "https://i.seadn.io/gcs/files/4ef4a60496c335d66eba069423c0af90.png?w=500&auto=format", + volume: "256.000000000000000000", + volumeCurrency: "ETH", + volumeDecimals: 18, +}; + const CollectionsIndex = ({ title, featuredCollections, @@ -133,10 +143,17 @@ const CollectionsIndex = ({
    +
    + + +
    - - ); diff --git a/resources/js/icons.tsx b/resources/js/icons.tsx index 03f35bb65..dd02c5664 100644 --- a/resources/js/icons.tsx +++ b/resources/js/icons.tsx @@ -65,6 +65,7 @@ import { ReactComponent as GridWithPencil } from "@icons/grid-with-pencil.svg"; import { ReactComponent as Grid } from "@icons/grid.svg"; import { ReactComponent as Heart } from "@icons/heart.svg"; import { ReactComponent as HeartbeatInCircle } from "@icons/heartbeat-in-circle.svg"; +import { ReactComponent as HiddenVote } from "@icons/hidden-vote.svg"; import { ReactComponent as Image } from "@icons/image.svg"; import { ReactComponent as InfoInCircle } from "@icons/info-in-circle.svg"; import { ReactComponent as KeyboardDelete } from "@icons/keyboard-delete.svg"; @@ -234,4 +235,5 @@ export const SvgCollection = { AudioPlay, Polygon, Ethereum, + HiddenVote, }; From 6dfff9ec102f12d99de31a5fee024949dc72d99b Mon Sep 17 00:00:00 2001 From: shahin-hq <132887516+shahin-hq@users.noreply.github.com> Date: Tue, 5 Dec 2023 19:20:35 +0400 Subject: [PATCH 026/145] feat: add collection vote seeder (#535) --- database/seeders/CollectionVotesSeeder.php | 74 ++++++++++++++++++++++ database/seeders/DatabaseSeeder.php | 1 + 2 files changed, 75 insertions(+) create mode 100644 database/seeders/CollectionVotesSeeder.php diff --git a/database/seeders/CollectionVotesSeeder.php b/database/seeders/CollectionVotesSeeder.php new file mode 100644 index 000000000..2a4771655 --- /dev/null +++ b/database/seeders/CollectionVotesSeeder.php @@ -0,0 +1,74 @@ +excludedCollections = collect(); + } + + /** + * @throws Exception + */ + public function run(): void + { + // now - 4 months - 1 winner + $this->addVotes(collectionsCount: 1, winnerCount: 1, subMonths: 4); + + // now - 3 months - 2 winners + $this->addVotes(collectionsCount: 2, winnerCount: 2, subMonths: 3); + + // now - 2 months - 3 winners + $this->addVotes(collectionsCount: 3, winnerCount: 3, subMonths: 2); + + // now - 1 month - 3 winners - 8 nominated + $this->addVotes(collectionsCount: 8, winnerCount: 3, subMonths: 1); + + // current month - 0 winners - 5 nominated + $this->addVotes(collectionsCount: 5, winnerCount: 0, subMonths: 0); + } + + /** + * @throws Exception + */ + private function addVotes(int $collectionsCount, int $winnerCount, int $subMonths) + { + $randomCollections = Collection::query() + ->whereNotIn('id', $this->excludedCollections) + ->inRandomOrder() + ->limit($collectionsCount) + ->get(); + + if ($randomCollections->count() < $collectionsCount) { + throw new Exception("Couldn't find enough collections to vote"); + } + + $this->excludedCollections->push(...$randomCollections->take($winnerCount)->pluck('id')); + + $votedAt = Carbon::now()->subMonths($subMonths); + + $randomCollections->map(function ($collection, $index) use ($votedAt, $collectionsCount, $winnerCount) { + $voteCount = $collectionsCount > $winnerCount && $winnerCount - $index > 0 ? $winnerCount - $index + 1 : 1; + + for ($i = 0; $i < $voteCount; $i++) { + $collection->votes()->create([ + 'wallet_id' => Wallet::factory()->create()->id, + 'voted_at' => $votedAt, + ]); + } + }); + } +} diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index 4513a56c3..0f3073710 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -33,6 +33,7 @@ public function run(): void if (Feature::active(Features::Collections->value) || Feature::active(Features::Galleries->value)) { $this->call(NftSeeder::class); + $this->call(CollectionVotesSeeder::class); } if (Feature::active(Features::Galleries->value)) { From 2759252544dd82a1fb71dd95166568f5cca1fa8a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josip=20Crnkovi=C4=87?= Date: Tue, 5 Dec 2023 22:28:07 +0100 Subject: [PATCH 027/145] fix: collection of the month styling (#538) --- resources/js/Components/Heading.tsx | 93 ++++++++----------- .../CollectionVoting/VoteCollections.tsx | 9 +- 2 files changed, 46 insertions(+), 56 deletions(-) diff --git a/resources/js/Components/Heading.tsx b/resources/js/Components/Heading.tsx index 451b951fc..35a672e81 100644 --- a/resources/js/Components/Heading.tsx +++ b/resources/js/Components/Heading.tsx @@ -1,5 +1,5 @@ import cn from "classnames"; -import { forwardRef, type HTMLAttributes } from "react"; +import { createElement, forwardRef, type HTMLAttributes } from "react"; export type HeadingWeight = "bold" | "medium" | "normal"; export type HeadingLevel = 1 | 2 | 3 | 4; @@ -7,6 +7,7 @@ export type HeadingLevel = 1 | 2 | 3 | 4; export interface HeadingProperties extends HTMLAttributes { level: HeadingLevel; weight?: HeadingWeight; + as?: "h1" | "h2" | "h3" | "h4"; } const weightClass = (weight: HeadingWeight): string => { @@ -22,68 +23,52 @@ const weightClass = (weight: HeadingWeight): string => { }; const Heading = forwardRef( - ({ level, children, weight = "medium", className, ...properties }, reference): JSX.Element => { + ({ level, weight = "medium", as, className, ...properties }, reference): JSX.Element => { if (level === 1) { - return ( -

    - {children} -

    - ); + return createElement(as ?? "h1", { + ref: reference, + className: cn( + "break-words text-xl leading-[1.875rem] text-theme-secondary-900 dark:text-theme-dark-50 md:text-2xl md:leading-8 lg:text-[2rem] lg:leading-[2.75rem]", + weightClass(weight), + className, + ), + ...properties, + }); } if (level === 2) { - return ( -

    - {children} -

    - ); + return createElement(as ?? "h2", { + ref: reference, + className: cn( + "text-xl leading-[1.875rem] text-theme-secondary-900 dark:text-theme-dark-50 md:text-2xl md:leading-8", + weightClass(weight), + className, + ), + ...properties, + }); } if (level === 3) { - return ( -

    - {children} -

    - ); - } - - return ( -

    - {children} -

    - ); + ), + ...properties, + }); + } + + return createElement(as ?? "h4", { + ref: reference, + className: cn( + "text-base leading-7 text-theme-secondary-900 dark:text-theme-dark-50 sm:text-lg", + weightClass(weight), + className, + ), + ...properties, + }); }, ); diff --git a/resources/js/Pages/Collections/Components/CollectionVoting/VoteCollections.tsx b/resources/js/Pages/Collections/Components/CollectionVoting/VoteCollections.tsx index 83219418b..8e8637f52 100644 --- a/resources/js/Pages/Collections/Components/CollectionVoting/VoteCollections.tsx +++ b/resources/js/Pages/Collections/Components/CollectionVoting/VoteCollections.tsx @@ -23,8 +23,13 @@ export const VoteCollections = ({ collections }: { collections: VoteCollectionPr const { t } = useTranslation(); return ( -
    - {t("pages.collections.vote.vote_for_top_collection")} +
    + + {t("pages.collections.vote.vote_for_top_collection")} +
    Date: Wed, 6 Dec 2023 09:47:21 +0100 Subject: [PATCH 028/145] feat: add articles to collections page (#537) --- app/Http/Controllers/CollectionController.php | 13 ++ lang/en/pages.php | 1 + resources/js/I18n/Locales/en.json | 2 +- .../Components/CollectionsArticles.tsx | 127 ++++++++++++++++++ resources/js/Pages/Collections/Index.tsx | 10 ++ 5 files changed, 152 insertions(+), 1 deletion(-) create mode 100644 resources/js/Pages/Collections/Components/CollectionsArticles.tsx diff --git a/app/Http/Controllers/CollectionController.php b/app/Http/Controllers/CollectionController.php index 37830dd41..b9ef24038 100644 --- a/app/Http/Controllers/CollectionController.php +++ b/app/Http/Controllers/CollectionController.php @@ -23,6 +23,7 @@ use App\Jobs\FetchCollectionActivity; use App\Jobs\FetchCollectionBanner; use App\Jobs\SyncCollection; +use App\Models\Article; use App\Models\Collection; use App\Models\User; use App\Support\Queues; @@ -76,6 +77,18 @@ public function index(Request $request): Response|JsonResponse|RedirectResponse 'allowsGuests' => true, 'filters' => fn () => $this->getFilters($request), 'title' => fn () => trans('metatags.collections.title'), + 'latestArticles' => fn () => ArticleData::collection(Article::isPublished() + ->with('media', 'user.media') + ->withRelatedCollections() + ->sortByPublishedDate() + ->limit(8) + ->get()), + 'popularArticles' => fn () => ArticleData::collection(Article::isPublished() + ->with('media', 'user.media') + ->withRelatedCollections() + ->sortByPopularity() + ->limit(8) + ->get()), 'topCollections' => fn () => CollectionOfTheMonthData::collection(Collection::query()->inRandomOrder()->limit(3)->get()), 'collections' => fn () => PopularCollectionData::collection( $collections->through(fn ($collection) => PopularCollectionData::fromModel($collection, $currency)) diff --git a/lang/en/pages.php b/lang/en/pages.php index bd24370b7..1c7a5b2ad 100644 --- a/lang/en/pages.php +++ b/lang/en/pages.php @@ -83,6 +83,7 @@ 'vote_success' => 'Your vote has been successfully submitted', ], 'articles' => [ + 'heading' => 'Latest NFT News & Features', 'no_articles' => 'No articles have been linked to this collection as of now.', 'no_articles_with_filters' => 'We could not find any articles matching your search criteria, please try again!', 'search_placeholder' => 'Search in Articles', diff --git a/resources/js/I18n/Locales/en.json b/resources/js/I18n/Locales/en.json index 3f953d2f4..a1ebb0b52 100644 --- a/resources/js/I18n/Locales/en.json +++ b/resources/js/I18n/Locales/en.json @@ -1 +1 @@ -{"auth.welcome":"Welcome to Dashbrd","auth.logged_in":"You're logged in!","auth.log_out":"Log out","auth.failed":"These credentials do not match our records.","auth.session_timeout":"Your session has timed out. Please refresh the page and try connecting your account again.","auth.session_timeout_modal":"Seems like your session has timed out. Please connnect your wallet again.","auth.password":"The provided password is incorrect.","auth.throttle":"Too many login attempts. Please try again in {{seconds}} seconds.","auth.wallet.connecting":"Connecting …","auth.wallet.waiting_for_signature":"Waiting for Signature …","auth.wallet.switching_wallet":"Switching Wallet …","auth.wallet.connect":"Connect Wallet","auth.wallet.connect_long":"Connect Your Wallet to Get Started","auth.wallet.sign_subtitle":"Connect Your Wallet to Continue","auth.wallet.disconnect":"Disconnect Wallet","auth.wallet.install":"Install MetaMask","auth.wallet.install_long":"Install MetaMask to Get Started","auth.wallet.sign":"Sign Message","auth.wallet.sign_message":"Welcome to Dashbrd. In order to login, sign this message with your wallet. It doesn't cost you anything!\n\nSigning ID (you can ignore this): {{nonce}}","auth.wallet.connect_subtitle":"Click on the MetaMask icon in your browser to confirm the action and connect your wallet.","auth.wallet.requires_signature":"In order to prevent impersonation, we require a signature to perform this action. This signature is only a signed message and does not give any access to your wallet.","auth.errors.metamask.no_account":"No account found. Please connect your wallet and try again.","auth.errors.metamask.generic":"Connection attempt error. Please retry and follow the steps to connect your wallet.","auth.errors.metamask.invalid_network":"Please switch to Polygon or Ethereum Mainnet in your MetaMask plugin to connect to Dashbrd.","auth.errors.metamask.provider_missing":"You don't have MetaMask installed in your browser. Please install and try again.","auth.errors.metamask.user_rejected":"It looks like you cancelled signing of the authentication message. Please try again.","auth.errors.metamask.provider_not_set":"Ethereum provider is not set","auth.validation.wallet_login_failed":"There was a problem trying to verify your signature. Please try again.","auth.validation.invalid_address":"Your wallet address is invalid. Please try again.","auth.validation.invalid_signature":"Signature is invalid. Please try again.","auth.validation.invalid_network":"Please switch to Polygon or Ethereum Mainnet in your MetaMask plugin to connect to Dashbrd.","common.author":"Author","common.add":"Add","common.amount":"Amount","common.balance":"Balance","common.cancel":"Cancel","common.delete":"Delete","common.edit":"Edit","common.confirm":"Confirm","common.connect":"Connect","common.continue":"Continue","common.done":"Done","common.filter":"Filter","common.items":"Items","common.receive":"Receive","common.received":"Received","common.retry":"Retry","common.records":"Records","common.save":"Save","common.send":"Send","common.sent":"Sent","common.show":"Show","common.searching":"Searching...","common.other":"Other","common.owned":"Owned","common.token":"Token","common.tokens":"Tokens","common.wallet":"Wallet","common.pending":"Pending","common.publish":"Publish","common.published":"Published","common.empty":"Empty","common.your_address":"Your Address","common.warning":"Warning","common.my_address":"My Address","common.my_wallet":"My Wallet","common.my_collections":"My Collections","common.my_balance":"My Balance","common.na":"N/A","common.simple_plural_without_data":"One comment|Many comments","common.simple_plural_with_data":"{{count}} comment|{{count}} comments","common.advanced_plural_without_data":"{0} no comments yet|{1} 1 comment|[2,*] Many comments","common.advanced_plural_with_data":"{0} no comments yet|{1} 1 comment|[2,*] {{count}} comments","common.copy_clipboard":"Copy to Clipboard","common.copy":"Copy","common.download":"Download","common.zoom":"Zoom","common.my_collection":"My Collection","common.max":"Max","common.chain":"Chain","common.copied":"Copied!","common.coming_soon":"Coming Soon","common.more_details":"More Details","common.close":"Close","common.close_toast":"Close toast","common.loading":"Loading","common.price":"Price","common.articles":"Articles","common.most_popular":"Most Popular","common.market_cap":"Market Cap","common.volume":"Volume","common.volume_frequency":"Volume {{frequency}}","common.value":"Value","common.last_n_days":"Last {{count}} Days","common.details":"Details","common.view_all":"View All","common.view_more_on_polygonscan":"View More on Polygonscan","common.view_more_on_etherscan":"View More on Etherscan","common.view_nft_on_etherscan":"View NFT on Etherscan","common.view_nft_on_polygonscan":"View NFT on Polygonscan","common.view_nft_on_goerli_tesnet":"View NFT on Goerli Testnet Explorer","common.view_nft_on_mumbai_tesnet":"View NFT on Mumbai Testnet Explorer","common.polygonscan":"Polygonscan","common.etherscan":"Etherscan","common.featured":"Featured","common.floor_price":"Floor Price","common.floor":"Floor","common.supply":"Supply","common.owners":"Owners","common.created":"Created","common.nft":"NFT","common.collection":"Collection","common.collections":"Collections","common.gallery":"Gallery","common.basic_gallery":"Basic Gallery","common.gallery_name":"Gallery Name","common.create_gallery":"Create Gallery","common.external_link":"External Link","common.follow_link":"Follow Link","common.cover":"Cover","common.template":"Template","common.page":"Page","common.polygon":"Polygon","common.ethereum":"Ethereum","common.mumbai":"Mumbai","common.goerli":"Goerli","common.of":"of","common.pagination_input_placeholder":"Enter the page number","common.pagination_input_placeholder_mobile":"Page number","common.nft_count":"{0} {{count}} NFTs|{1} {{count}} NFT|[2,*] {{count}} NFTs","common.nft_gallery":"NFT Gallery","common.unable_to_retrieve_image":"Unable to retrieve your NFT image at this time","common.optional":"Optional","common.selected":"Selected","common.select":"Select","common.preview":"Preview","common.image_size_error":"Image size must not exceed 2MB","common.image_dimensions_error":"Image dimensions must exceed 287px x 190px","common.write_to_confirm":"Write {{word}} to confirm","common.n_hours":"{0} {{count}} hour|{1} {{count}} hour|[2,*] {{count}} hours","common.n_minutes":"{0} {{count}} minute|{1} {{count}} minute|[2,*] {{count}} minutes","common.report":"Report","common.nfts":"NFTs","common.n_nfts":"{0}NFTs|{1}NFT|[2,*]NFTs","common.n_collections":"{0}collections|{1}collection|[2,*]collections","common.back":"Back","common.back_to":"Back to","common.name":"Name","common.type":"Type","common.from":"From","common.to":"To","common.sale_price":"Sale Price","common.recent_activity":"Recent Activity","common.time":"Time","common.datetime.few_seconds_ago":"A few seconds ago","common.datetime.minutes_ago":"{0} Less than a minute ago|{1} A minute ago|[2,*] {{count}} minutes ago","common.datetime.hours_ago":"{0} Less than an hour ago|{1} An hour ago|[2,*] {{count}} hours ago","common.datetime.days_ago":"{0} Less than a day ago|{1} A day ago|[2,*] {{count}} days ago","common.datetime.weeks_ago":"{0} Less than a week ago|{1} A week ago|[2,*] {{count}} weeks ago","common.datetime.months_ago":"{0} Less than a month ago|{1} A month ago|[2,*] {{count}} months ago","common.datetime.years_ago":"{0} Less than a year ago|{1} A year ago|[2,*] {{count}} years ago","common.no_traits_found":"No traits found.","common.empty_transactions":"You don't have any transactions yet. Once transactions have been made, they will show up here.","common.error":"Error","common.refresh":"Refresh","common.refresh_metadata":"Refresh Metadata","common.refreshing_metadata":"Refreshing Metadata... Please check back later.","common.refreshing_activity":"Refreshing Activity... Please check back later.","common.pending_confirmation":"Pending Confirmation","common.confirmed_transaction":"Confirmed Transaction","common.transaction_error":"Transaction Error","common.transaction_error_description_first_part":"Your transaction encountered an error. View this transaction on","common.transaction_error_description_second_part":"for more details.","common.home":"Home","common.contact":"Contact","common.menu":"Menu","common.website":"Website","common.twitter":"Twitter","common.discord":"Discord","common.facebook":"Facebook","common.reddit":"Reddit","common.x":"X","common.sort":"Sort","common.drafts":"Drafts","common.draft":"Draft","common.delete_draft":"Delete Draft","common.share_on":"Share on {{platform}}","common.top":"Top","common.all_chains":"All chains","common.votes":"Votes","common.vol":"Vol","footer.copyright":"{{year}} © Dashbrd. All rights reserved.","footer.all_rights_reserved":"All rights reserved","footer.privacy_policy":"Privacy Policy","footer.terms_of_service":"Terms of Service","footer.powered_by":"Powered by","format.fiat":"{{ value, currency }}","format.number":"{{ value, number }}","metatags.home.title":"Dashbrd | Web3 Portfolio Management Made Simple","metatags.home.description":"Simplify your Web3 journey with Dashbrd. Manage your portfolio of tokens, NFTs, and other digital collectibles across the Ethereum and Polygon blockchains.","metatags.home.image":"/images/meta/home.png","metatags.error.title":"Error {{code}} | Dashbrd","metatags.wallet.title":"My Wallet | Dashbrd","metatags.galleries.title":"Top NFT Galleries | Dashbrd","metatags.galleries.image":"/images/meta/nft-galleries.png","metatags.galleries.description":"Explore user published NFT galleries to find custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.most_popular.title":"Most Popular Galleries | Dashbrd","metatags.galleries.most_popular.image":"/images/meta/most-popular-nft-galleries.png","metatags.galleries.most_popular.description":"Explore and discover Most Popular NFT Galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.newest.title":"Newest Galleries | Dashbrd","metatags.galleries.newest.image":"/images/meta/newest-nft-galleries.png","metatags.galleries.newest.description":"Explore and discover most recent NFT galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More","metatags.galleries.most_valuable.title":"Most Valuable Galleries | Dashbrd","metatags.galleries.most_valuable.image":"/images/meta/most-valuable-nft-galleries.png","metatags.galleries.most_valuable.description":"Explore and discover Most Valuable NFT Galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.view.title":"{{name}} | Dashbrd","metatags.galleries.view.description":"{{name}} | A Curated NFT Gallery at Dashbrd","metatags.galleries.view.image":"/images/meta/nft-gallery.png","metatags.my_galleries.title":"My Galleries | Dashbrd","metatags.my_galleries.title_draft":"My Draft Galleries | Dashbrd","metatags.my_galleries.create.title":"Create Gallery | Dashbrd","metatags.my_galleries.edit.title":"Edit {{name}} | Dashbrd","metatags.collections.title":"Collections | Dashbrd","metatags.collections.view.title":"{{name}} Collection | Dashbrd","metatags.collections.view.description":"Immerse yourself in the intricate details of {{name}} collection, featuring remarkable digital assets. Start your NFT journey today!","metatags.collections.view.image":"/images/meta/nft-collection.png","metatags.my-collections.title":"My Collections | Dashbrd","metatags.nfts.view.title":"{{nft}} NFT | Dashbrd","metatags.nfts.view.description":"Uncover the complete story of {{nft}} NFT from the {{collection}} collection, delving into its unique attributes and distinctive features.","metatags.nfts.view.image":"/images/meta/nft-details.png","metatags.settings.title":"Settings | Dashbrd","metatags.articles.title":"Articles | Dashbrd","metatags.articles.view.title":"{{title}} | Dashbrd","metatags.login.title":"Login | Dashbrd","metatags.privacy_policy.title":"Privacy Policy | Dashbrd","metatags.privacy_policy.description":"Dashbrd’s privacy policy outlines the information we collect and explains your choices surrounding how we use information about you.","metatags.terms_of_service.title":"Terms of Service | Dashbrd","metatags.terms_of_service.description":"These Terms of Service cover your use and access to services, products or websites of Dashbrd.","metatags.cookie_policy.title":"Cookie Policy | Dashbrd","metatags.cookie_policy.description":"Dashbrd uses cookies to make the website more user-friendly. Find out about the main types of cookies we use, and what we use them for.","metatags.welcome.title":"Welcome to Dashbrd | Web3 Simplified","pages.onboarding.title":"Get Started","pages.onboarding.heading":"Your monkeys were bored and ran off, we are trying to round them up.","pages.onboarding.message":"We are setting up your account. This process usually takes just a few minutes, but can take up to 15 minutes.","pages.error.heading":"Oops, something went wrong ...","pages.error.message":"Please try again or get in touch if the issue persists.","pages.maintenance.title":"Dashbrd is currently down for scheduled maintenance.","pages.maintenance.description":"We expect to be back soon. Thanks for your patience.","pages.dashboard.title":"My Wallet","pages.dashboard.breakdown.title":"Portfolio Breakdown","pages.dashboard.line_chart.data_error":"Could not load chart data","pages.articles.title":"Articles","pages.articles.featured_collections":"Featured Collections","pages.articles.placeholder_more_soon":"More Soon","pages.articles.no_articles":"No articles have been published yet. Please check back later!","pages.articles.header_title":"Explore our collection of","pages.articles.header_suffix_one":"published article","pages.articles.header_suffix_other":"published articles","pages.articles.audio_version":"Audio version","pages.articles.consists_of_collections":"{0} This article highlights {{count}} collections|{1} This article highlights {{count}} collection|[2,*] This article highlights {{count}} collections","pages.collections.title":"Collections","pages.collections.collections":"Collections","pages.collections.popular_collections":"Popular Collections","pages.collections.collection_value":"Collection Value","pages.collections.nfts_owned":"NFTs Owned","pages.collections.header_title":"You own <0>{{nftsCount}} {{nfts}} across <0>{{collectionsCount}} {{collections}}, worth about <0><1>{{worth}}","pages.collections.search_placeholder":"Search by Collection","pages.collections.properties":"Properties","pages.collections.collections_network":"Collections Network","pages.collections.property_search_placeholder":"Feature Search","pages.collections.floor_price":"Floor Price","pages.collections.value":"Value","pages.collections.rarity":"Rarity","pages.collections.report":"Report","pages.collections.hide_collection":"Hide Collection","pages.collections.unhide_collection":"Unhide Collection","pages.collections.no_collections":"You do not own any NFTs yet. Once you do they will be shown here.","pages.collections.all_collections_hidden":"You have hidden all your collections. Unhide and they will appear here.","pages.collections.about_collection":"About Collection","pages.collections.show_hidden":"Show Hidden","pages.collections.show_my_collection":"Show My Collection","pages.collections.owned":"Owned","pages.collections.activities.loading_activities":"We're fetching Activity for this NFT, please hang tight, this can take a while.","pages.collections.activities.loading_activities_collection":"We're fetching Activity for this collection, please hang tight, this can take a while.","pages.collections.activities.ignores_activities":"We don't support activity history for this collection yet.","pages.collections.activities.no_activity":"This collection does not have any activity yet.","pages.collections.activities.types.LABEL_MINT":"Mint","pages.collections.activities.types.LABEL_TRANSFER":"Transfer","pages.collections.activities.types.LABEL_SALE":"Sale","pages.collections.activities.types.LABEL_BURN":"Burn","pages.collections.collection_of_the_month.winners_month":"Winners: {{month}}","pages.collections.collection_of_the_month.vote_for_next_months_winners":"Vote now for next month's winners","pages.collections.collection_of_the_month.view_previous_winners":"View Previous Winners","pages.collections.collection_of_the_month.vote_success":"Your vote has been successfully submitted","pages.collections.articles.no_articles":"No articles have been linked to this collection as of now.","pages.collections.articles.no_articles_with_filters":"We could not find any articles matching your search criteria, please try again!","pages.collections.articles.search_placeholder":"Search in Articles","pages.collections.articles.sort_latest":"Latest","pages.collections.articles.sort_popularity":"Most Popular","pages.collections.search.loading_results":"Loading results...","pages.collections.search.no_results":"We could not find anything matching your search criteria, please try again!","pages.collections.search.no_results_with_filters":"We could not find anything matching your filters, please try again!","pages.collections.search.no_results_ownership":"You do not own any NFTs in this collection","pages.collections.search.error":"Could not load search results. Please try again later.","pages.collections.vote.vote_for_top_collection":"Vote for Top Collection of the Month","pages.collections.vote.vote":"Vote","pages.collections.vote.time_left":"Time Left","pages.collections.vote.or_nominate_collection":"Or nominate a collection","pages.collections.vote.vote_to_reveal":"Vote to reveal data","pages.collections.sorting.token_number":"Token Number","pages.collections.sorting.recently_received":"Recently Received","pages.collections.sorting.recently_created":"Recently Created","pages.collections.sorting.oldest_collection":"Oldest Collection","pages.collections.traits.description":"List of NFT traits by % of occurrence in the collection","pages.collections.traits.no_traits":"No Properties can be found for this NFT","pages.collections.menu.collection":"Collection","pages.collections.menu.articles":"Articles","pages.collections.menu.activity":"Activity","pages.collections.hidden_modal.collection_hidden":"Collection Hidden","pages.collections.hidden_modal.description":"This collection is currently set to Hidden. Are you sure you want to unhide this collection? You can\n reset the collection to hidden from the collection menu.","pages.collections.hidden_modal.unhide":"Unhide","pages.collections.hidden_modal.error":"Something went wrong. Please try again.","pages.collections.external_modal.you_wish_continue":"You are about to leave Dashbrd to an external website. Dashbrd has no control over the content of\n this site. Are you sure you wish to continue?","pages.collections.external_modal.not_show":"Do not show this message again.","pages.collections.refresh.title":"Refresh your collection","pages.collections.refresh.notice":"You can refresh data every 15 minutes.","pages.collections.refresh.notice_wait":"Please wait. You can refresh data every 15 minutes.","pages.collections.refresh.toast":"We're updating information for your collection.","pages.collections.featured.title":"Featured Collections","pages.collections.featured.button":"Explore Collection","pages.collections.footer.heading_broken.0":"Connect with MetaMask","pages.collections.footer.heading_broken.1":"& Manage Your Collection","pages.collections.footer.subtitle":"Explore, Filter, & Share your favorite NFTs with Dashbrd.","pages.collections.footer.button":"Manage Collections","pages.nfts.nft":"nft","pages.nfts.about_nft":"About NFT","pages.nfts.owned_by":"Owned by","pages.nfts.collection_image":"collection image","pages.nfts.menu.properties":"Properties","pages.nfts.menu.activity":"Activity","pages.reports.title":"Submit a Report","pages.reports.description":"Thanks for looking out by reporting things that break the rules. Let us know what's happening and we'll receive the report.","pages.reports.success":"Thank you for your report. We'll review it and see if it breaks our ToS.","pages.reports.failed":"Something went wrong. Please try again.","pages.reports.throttle":"You have made too many requests. Please wait {{time}} before reporting again.","pages.reports.reported":"You have already reported this {{model}}.","pages.reports.reasons.spam":"Spam","pages.reports.reasons.violence":"Promoting Violence","pages.reports.reasons.hate":"Hate","pages.reports.reasons.inappropriate_content":"Inappropriate Content","pages.reports.reasons.impersonation":"Impersonation","pages.reports.reasons.trademark":"Trademark or Copyright","pages.reports.reasons.selfharm":"Self-Harm","pages.reports.reasons.harassment":"Harassment","pages.galleries.title":"Galleries","pages.galleries.empty_title":"No galleries have been published yet. Once they do they will appear here.","pages.galleries.search.loading_results":"Loading results...","pages.galleries.search.no_results":"We could not find anything matching your search criteria, please try again!","pages.galleries.search.placeholder":"Search by name or curator address","pages.galleries.search.placeholder_nfts":"Search by NFTs","pages.galleries.search.error":"Could not load search results. Please try again later.","pages.galleries.my_galleries.title":"My Galleries","pages.galleries.my_galleries.subtitle":"Manage your galleries","pages.galleries.my_galleries.new_gallery":"New Gallery","pages.galleries.my_galleries.no_galleries":"You have not created any galleries yet. To create a gallery, click on the \"Create Gallery\" button.","pages.galleries.my_galleries.no_available_collections":"You have hidden all your collections. If you want to create a gallery, make sure you have at least 1 collection available.","pages.galleries.my_galleries.no_draft_galleries":"You have no draft galleries yet. To create a gallery, click on the \"Create Gallery\" button.","pages.galleries.my_galleries.succesfully_deleted":"Gallery has been successfully removed","pages.galleries.my_galleries.draft_succesfully_deleted":"Draft has been successfully removed","pages.galleries.my_galleries.successfully_created":"Gallery has been successfully created","pages.galleries.my_galleries.successfully_updated":"Gallery has been successfully updated","pages.galleries.my_galleries.new_gallery_no_nfts":"Creating a Gallery requires you to own an NFT.","pages.galleries.my_galleries.new_gallery_all_collections_hidden":"Creating a Gallery requires you to have at least 1 collection available.","pages.galleries.my_galleries.delete_modal.title":"Delete Draft","pages.galleries.my_galleries.delete_modal.text":"Are you sure you want to delete the draft? Everything you've done will be deleted and you won't be able to get it back.","pages.galleries.my_galleries.nfts_no_longer_owned":"NFTs no longer owned by this wallet have been removed from the draft”","pages.galleries.copy_gallery_link":"Copy Gallery Link","pages.galleries.my_nfts":"My NFTs","pages.galleries.show_hidden_collections":"Show hidden collections","pages.galleries.value":"Value","pages.galleries.floor_price":"Floor Price","pages.galleries.nfts":"NFTs","pages.galleries.collections":"Collections","pages.galleries.galleries_count_simple":"{0} galleries|{1} gallery|[2,*] galleries","pages.galleries.galleries_count":"{0} {{count}} Galleries|{1} {{count}} Gallery|[2,*] {{count}} Galleries","pages.galleries.collections_count_simple":"{0} collections|{1} collection|[2,*] collections","pages.galleries.collections_count":"{0} {{count}} Collections|{1} {{count}} Collection|[2,*] {{count}} Collections","pages.galleries.nfts_count_simple":"{0} NFTs|{1} NFT|[2,*] NFTs","pages.galleries.nfts_count":"{0} {{count}} NFTs|{1} {{count}} NFT|[2,*] {{count}} NFTs","pages.galleries.users_count_simple":"{0} users|{1} user|[2,*] users","pages.galleries.users_count":"{0} {{count}} Users|{1} {{count}} User|[2,*] {{count}} Users","pages.galleries.featuring":"Featuring","pages.galleries.curated_by":"Curated by","pages.galleries.worth_about":"Worth About","pages.galleries.valued_at":"valued at","pages.galleries.from":"From","pages.galleries.most_popular_galleries":"Most Popular Galleries","pages.galleries.newest_galleries":"Newest Galleries","pages.galleries.most_valuable_galleries":"Most Valuable Galleries","pages.galleries.most_popular":"Most Popular","pages.galleries.newest":"Newest","pages.galleries.most_valuable":"Most Valuable","pages.galleries.create.search_by_nfts":"Search by NFTs","pages.galleries.create.input_placeholder":"Enter gallery name","pages.galleries.create.title_too_long":"Gallery name must not exceed {{max}} characters.","pages.galleries.create.already_selected_nft":"NFT already exists in this gallery","pages.galleries.create.nft_missing_image":"Only NFTs with images can be added to galleries","pages.galleries.create.nft_gallery_limit":"You can only add 16 NFTs per gallery","pages.galleries.create.gallery_cover":"Gallery Cover","pages.galleries.create.gallery_cover_description":"The cover is used for the card on the gallery list page. While the cover is not a requirement it will allow you to add personality and stand out from the crowd.","pages.galleries.create.gallery_cover_information":"Image dimensions must be at least 287px x 190px, with a max size of 2 MB (JPG, PNG or GIF)","pages.galleries.create.no_results":"We could not find anything matching your search criteria, please try again!","pages.galleries.create.templates.cover":"Cover","pages.galleries.create.templates.template":"Template","pages.galleries.create.templates.select":"Select Gallery Template","pages.galleries.create.templates.basic":"Basic Gallery","pages.galleries.create.templates.coming_soon":"More Coming Soon","pages.galleries.create.load_more_collections_one":"Load {{count}} More Collection","pages.galleries.create.load_more_collections_other":"Load {{count}} More Collections","pages.galleries.create.load_more_nfts":"Load More NFTs","pages.galleries.create.can_purchase":"You can purchase NFTs with these top NFT Marketplaces:","pages.galleries.create.must_own_one_nft":"You must own at least one (1) NFT in order to create a gallery.","pages.galleries.create.back_to_galleries":"Back to Galleries","pages.galleries.create.draft_saved":"Draft Saved","pages.galleries.create.saving_to_draft":"Saving to draft","pages.galleries.create.drafts_limit_modal_title":"Draft Gallery Limit","pages.galleries.create.drafts_limit_modal_message":"You’ve hit your limit for draft galleries. While you can still make new galleries and publish them, they won’t be saved as drafts. To Free up space, you can either delete existing drafts or publish them.","pages.galleries.create.drafts_limit_modal_cancel":"Go to Drafts","pages.galleries.delete_modal.title":"Delete Gallery","pages.galleries.delete_modal.confirmation_text":"Are you sure you want to delete the gallery? Deleting a Gallery is permanent, all associated views and likes will be lost.","pages.galleries.consists_of_collections":"{0} This gallery consists of {{count}} collections|{1} This gallery consists of {{count}} collection|[2,*] This gallery consists of {{count}} collections","pages.galleries.guest_banner.title":"Craft the ultimate","pages.galleries.guest_banner.subtitle":"Pick your favorites, curate your gallery, & share it with the world.","pages.profile.title":"Profile","pages.token_panel.balance_tooltip":"Total percentage of the portfolio held in this token","pages.token_panel.insufficient_funds":"Insufficient Balance","pages.token_panel.error":"Dashbrd has failed to load token information. Please try again later.","pages.token_panel.failed_to_retrieve_transactions":"We were unable to fetch your transactions.","pages.token_panel.tabs.transaction_history":"Transaction History","pages.token_panel.tabs.history":"History","pages.token_panel.tabs.market_data":"Market Data","pages.token_panel.details.current_price":"Current Price","pages.token_panel.details.title":"Token Details","pages.token_panel.details.market_cap":"Market Cap","pages.token_panel.details.volume":"Daily Volume","pages.token_panel.details.supply":"Minted Supply","pages.token_panel.details.ath":"All-Time High","pages.token_panel.details.atl":"All-Time Low","pages.token_panel.chart.failed":"Dashbrd has failed to load chart information. Please try again later.","pages.transaction_details_panel.title":"Transaction Details","pages.transaction_details_panel.details.blockchain":"Blockchain","pages.transaction_details_panel.details.timestamp":"Timestamp","pages.transaction_details_panel.details.transaction_hash":"Transaction Hash","pages.transaction_details_panel.details.transaction_fee":"Transaction Fee","pages.transaction_details_panel.details.gas_price":"Gas Price","pages.transaction_details_panel.details.gas_used":"Gas Used","pages.transaction_details_panel.details.nonce":"Nonce","pages.send_receive_panel.send.labels.token_and_amount":"Token and Amount","pages.send_receive_panel.send.labels.destination_address":"Destination Address","pages.send_receive_panel.send.labels.projected_fee":"Projected Fee","pages.send_receive_panel.send.placeholders.enter_amount":"Enter Amount","pages.send_receive_panel.send.placeholders.insert_recipient_address":"Insert Recipient Address","pages.send_receive_panel.send.placeholders.projected_fee":"Projected Fee","pages.send_receive_panel.send.errors.amount":"Insufficient Funds: You do not have enough to cover the amount + fee.","pages.send_receive_panel.send.errors.destination":"Destination address is not correct. Check and input again.","pages.send_receive_panel.send.hints.token_price":"Token Price","pages.send_receive_panel.send.fees.Fast":"Fast","pages.send_receive_panel.send.fees.Avg":"Avg","pages.send_receive_panel.send.fees.Slow":"Slow","pages.send_receive_panel.send.search_dropdown.placeholder":"Search token","pages.send_receive_panel.send.search_dropdown.no_results":"No Results","pages.send_receive_panel.send.search_dropdown.error":"Error occurred while searching tokens.","pages.send_receive_panel.send.transaction_time":"Transaction Time: ~{{ time }} minutes","pages.send_receive_panel.send.from":"From","pages.send_receive_panel.send.to":"To","pages.send_receive_panel.send.amount":"Amount","pages.send_receive_panel.send.fee":"Fee","pages.send_receive_panel.send.total_amount":"Total Amount","pages.send_receive_panel.send.waiting_message":"Review and verify the information on your MetaMask. Sign to send the transaction.","pages.send_receive_panel.send.waiting_spinner_text":"Waiting for confirmation...","pages.send_receive_panel.send.failed_message":"It looks like something went wrong while sending your transaction. Press 'Retry' to make another attempt.","pages.send_receive_panel.receive.alert":"Send only Polygon or Ethereum Network compatible tokens to this address or you could permanently lose your funds!","pages.settings.title":"Settings","pages.settings.sidebar.general":"General","pages.settings.sidebar.notifications":"Notifications","pages.settings.sidebar.session_history":"Sessions History","pages.settings.general.title":"Settings","pages.settings.general.subtitle":"Customize your App Experience","pages.settings.general.currency":"Currency","pages.settings.general.currency_subtitle":"Select your default currency which will be used throughout the app.","pages.settings.general.time_date":"Time & Date","pages.settings.general.time_date_subtitle":"Select how you want time and date be shown inside app.","pages.settings.general.date_format":"Date Format","pages.settings.general.time_format":"Time Format","pages.settings.general.timezone":"Timezone","pages.settings.general.set_defaults":"Set Defaults","pages.settings.general.set_defaults_content":"Reverting to the default settings will remove any customizations previously made. Are you sure?","pages.settings.general.save":"Save Settings","pages.settings.general.saved":"Your settings have been successfully saved","pages.wallet.title":"Wallet","pages.privacy_policy.title":"Privacy Policy","pages.terms_of_service.title":"Terms of Service","pagination.previous":"« Previous","pagination.next":"Next »","passwords.reset":"Your password has been reset!","passwords.sent":"We have emailed your password reset link!","passwords.throttled":"Please wait before retrying.","passwords.token":"This password reset token is invalid.","passwords.user":"We can't find a user with that email address.","urls.landing":"https://dashbrd.com","urls.cookie_policy":"https://dashbrd.com/cookie-policy","urls.privacy_policy":"https://dashbrd.com/privacy-policy","urls.terms_of_service":"https://dashbrd.com/terms-of-service","urls.twitter":"https://x.com/DashbrdApp","urls.discord":"https://discord.gg/MJyWKkCJ5k","urls.github":"https://github.com/ArdentHQ/dashbrd","urls.coingecko":"https://www.coingecko.com","urls.etherscan":"https://etherscan.io","urls.polygonscan":"https://polygonscan.com","urls.alchemy":"https://www.alchemy.com","urls.moralis":"https://moralis.io","urls.mnemonic":"https://www.mnemonichq.com","urls.opensea":"https://opensea.io/","urls.explorers.etherscan.token_transactions":"https://etherscan.io/token/{{token}}?a={{address}}","urls.explorers.etherscan.addresses":"https://etherscan.io/address/{{address}}","urls.explorers.etherscan.transactions":"https://etherscan.io/tx/{{id}}","urls.explorers.etherscan.nft":"https://etherscan.io/nft/{{address}}/{{nftId}}","urls.explorers.polygonscan.token_transactions":"https://polygonscan.com/token/{{token}}?a={{address}}","urls.explorers.polygonscan.addresses":"https://polygonscan.com/address/{{address}}","urls.explorers.polygonscan.transactions":"https://polygonscan.com/tx/{{id}}","urls.explorers.polygonscan.nft":"https://polygonscan.com/nft/{{address}}/{{nftId}}","urls.explorers.mumbai.token_transactions":"https://mumbai.polygonscan.com/token/{{token}}?a={{address}}","urls.explorers.mumbai.addresses":"https://mumbai.polygonscan.com/address/{{address}}","urls.explorers.mumbai.transactions":"https://mumbai.polygonscan.com/tx/{{id}}","urls.explorers.mumbai.nft":"https://mumbai.polygonscan.com/nft/{{address}}/{{nftId}}","urls.explorers.goerli.token_transactions":"https://goerli.etherscan.io/token/{{token}}?a={{address}}","urls.explorers.goerli.addresses":"https://goerli.etherscan.io/address/{{address}}","urls.explorers.goerli.transactions":"https://goerli.etherscan.io/tx/{{id}}","urls.explorers.goerli.nft":"https://goerli.etherscan.io/nft/{{address}}/{{nftId}}","urls.marketplaces.opensea.collection":"https://opensea.io/assets/{{network}}/{{address}}","urls.marketplaces.opensea.nft":"https://opensea.io/assets/{{network}}/{{address}}/{{nftId}}","urls.marketplaces.rarible.collection":"https://rarible.com/collection/{{address}}/items","urls.marketplaces.rarible.nft":"https://rarible.com/token/{{address}}:{{nftId}}","urls.marketplaces.blur.collection":"https://blur.io/collection/{{address}}","urls.marketplaces.blur.nft":"https://blur.io/asset/{{address}}/{{nftId}}","urls.marketplaces.looksrare.collection":"https://looksrare.org/collections/{{address}}","urls.marketplaces.looksrare.nft":"https://looksrare.org/collections/{{address}}/{{nftId}}","validation.accepted":"The {{attribute}} must be accepted.","validation.accepted_if":"The {{attribute}} must be accepted when {{other}} is {{value}}.","validation.active_url":"The {{attribute}} is not a valid URL.","validation.after":"The {{attribute}} must be a date after {{date}}.","validation.after_or_equal":"The {{attribute}} must be a date after or equal to {{date}}.","validation.alpha":"The {{attribute}} must only contain letters.","validation.alpha_dash":"The {{attribute}} must only contain letters, numbers, dashes and underscores.","validation.alpha_num":"The {{attribute}} must only contain letters and numbers.","validation.array":"The {{attribute}} must be an array.","validation.ascii":"The {{attribute}} must only contain single-byte alphanumeric characters and symbols.","validation.before":"The {{attribute}} must be a date before {{date}}.","validation.before_or_equal":"The {{attribute}} must be a date before or equal to {{date}}.","validation.between.array":"The {{attribute}} must have between {{min}} and {{max}} items.","validation.between.file":"The {{attribute}} must be between {{min}} and {{max}} kilobytes.","validation.between.numeric":"The {{attribute}} must be between {{min}} and {{max}}.","validation.between.string":"The {{attribute}} must be between {{min}} and {{max}} characters.","validation.boolean":"The {{attribute}} field must be true or false.","validation.confirmed":"The {{attribute}} confirmation does not match.","validation.current_password":"The password is incorrect.","validation.date":"The {{attribute}} is not a valid date.","validation.date_equals":"The {{attribute}} must be a date equal to {{date}}.","validation.date_format":"The {{attribute}} does not match the format {{format}}.","validation.decimal":"The {{attribute}} must have {{decimal}} decimal places.","validation.declined":"The {{attribute}} must be declined.","validation.declined_if":"The {{attribute}} must be declined when {{other}} is {{value}}.","validation.different":"The {{attribute}} and {{other}} must be different.","validation.digits":"The {{attribute}} must be {{digits}} digits.","validation.digits_between":"The {{attribute}} must be between {{min}} and {{max}} digits.","validation.dimensions":"The {{attribute}} has invalid image dimensions.","validation.distinct":"The {{attribute}} field has a duplicate value.","validation.doesnt_end_with":"The {{attribute}} may not end with one of the following: {{values}}.","validation.doesnt_start_with":"The {{attribute}} may not start with one of the following: {{values}}.","validation.email":"The {{attribute}} must be a valid email address.","validation.ends_with":"The {{attribute}} must end with one of the following: {{values}}.","validation.enum":"The selected {{attribute}} is invalid.","validation.exists":"The selected {{attribute}} is invalid.","validation.file":"The {{attribute}} must be a file.","validation.filled":"The {{attribute}} field must have a value.","validation.gt.array":"The {{attribute}} must have more than {{value}} items.","validation.gt.file":"The {{attribute}} must be greater than {{value}} kilobytes.","validation.gt.numeric":"The {{attribute}} must be greater than {{value}}.","validation.gt.string":"The {{attribute}} must be greater than {{value}} characters.","validation.gte.array":"The {{attribute}} must have {{value}} items or more.","validation.gte.file":"The {{attribute}} must be greater than or equal to {{value}} kilobytes.","validation.gte.numeric":"The {{attribute}} must be greater than or equal to {{value}}.","validation.gte.string":"The {{attribute}} must be greater than or equal to {{value}} characters.","validation.image":"The {{attribute}} must be an image.","validation.in":"The selected {{attribute}} is invalid.","validation.in_array":"The {{attribute}} field does not exist in {{other}}.","validation.integer":"The {{attribute}} must be an integer.","validation.ip":"The {{attribute}} must be a valid IP address.","validation.ipv4":"The {{attribute}} must be a valid IPv4 address.","validation.ipv6":"The {{attribute}} must be a valid IPv6 address.","validation.json":"The {{attribute}} must be a valid JSON string.","validation.lowercase":"The {{attribute}} must be lowercase.","validation.lt.array":"The {{attribute}} must have less than {{value}} items.","validation.lt.file":"The {{attribute}} must be less than {{value}} kilobytes.","validation.lt.numeric":"The {{attribute}} must be less than {{value}}.","validation.lt.string":"The {{attribute}} must be less than {{value}} characters.","validation.lte.array":"The {{attribute}} must not have more than {{value}} items.","validation.lte.file":"The {{attribute}} must be less than or equal to {{value}} kilobytes.","validation.lte.numeric":"The {{attribute}} must be less than or equal to {{value}}.","validation.lte.string":"The {{attribute}} must be less than or equal to {{value}} characters.","validation.mac_address":"The {{attribute}} must be a valid MAC address.","validation.max.array":"The {{attribute}} must not have more than {{max}} items.","validation.max.file":"The {{attribute}} must not be greater than {{max}} kilobytes.","validation.max.numeric":"The {{attribute}} must not be greater than {{max}}.","validation.max.string":"The {{attribute}} must not be greater than {{max}} characters.","validation.max_digits":"The {{attribute}} must not have more than {{max}} digits.","validation.mimes":"The {{attribute}} must be a file of type: {{values}}.","validation.mimetypes":"The {{attribute}} must be a file of type: {{values}}.","validation.min.array":"The {{attribute}} must have at least {{min}} items.","validation.min.file":"The {{attribute}} must be at least {{min}} kilobytes.","validation.min.numeric":"The {{attribute}} must be at least {{min}}.","validation.min.string":"The {{attribute}} must be at least {{min}} characters.","validation.min_digits":"The {{attribute}} must have at least {{min}} digits.","validation.missing":"The {{attribute}} field must be missing.","validation.missing_if":"The {{attribute}} field must be missing when {{other}} is {{value}}.","validation.missing_unless":"The {{attribute}} field must be missing unless {{other}} is {{value}}.","validation.missing_with":"The {{attribute}} field must be missing when {{values}} is present.","validation.missing_with_all":"The {{attribute}} field must be missing when {{values}} are present.","validation.multiple_of":"The {{attribute}} must be a multiple of {{value}}.","validation.not_in":"The selected {{attribute}} is invalid.","validation.not_regex":"The {{attribute}} format is invalid.","validation.numeric":"The {{attribute}} must be a number.","validation.password.letters":"The {{attribute}} must contain at least one letter.","validation.password.mixed":"The {{attribute}} must contain at least one uppercase and one lowercase letter.","validation.password.numbers":"The {{attribute}} must contain at least one number.","validation.password.symbols":"The {{attribute}} must contain at least one symbol.","validation.password.uncompromised":"The given {{attribute}} has appeared in a data leak. Please choose a different {{attribute}}.","validation.present":"The {{attribute}} field must be present.","validation.prohibited":"The {{attribute}} field is prohibited.","validation.prohibited_if":"The {{attribute}} field is prohibited when {{other}} is {{value}}.","validation.prohibited_unless":"The {{attribute}} field is prohibited unless {{other}} is in {{values}}.","validation.prohibits":"The {{attribute}} field prohibits {{other}} from being present.","validation.regex":"The {{attribute}} format is invalid.","validation.required":"The {{attribute}} field is required.","validation.required_array_keys":"The {{attribute}} field must contain entries for: {{values}}.","validation.required_if":"The {{attribute}} field is required when {{other}} is {{value}}.","validation.required_if_accepted":"The {{attribute}} field is required when {{other}} is accepted.","validation.required_unless":"The {{attribute}} field is required unless {{other}} is in {{values}}.","validation.required_with":"The {{attribute}} field is required when {{values}} is present.","validation.required_with_all":"The {{attribute}} field is required when {{values}} are present.","validation.required_without":"The {{attribute}} field is required when {{values}} is not present.","validation.required_without_all":"The {{attribute}} field is required when none of {{values}} are present.","validation.same":"The {{attribute}} and {{other}} must match.","validation.size.array":"The {{attribute}} must contain {{size}} items.","validation.size.file":"The {{attribute}} must be {{size}} kilobytes.","validation.size.numeric":"The {{attribute}} must be {{size}}.","validation.size.string":"The {{attribute}} must be {{size}} characters.","validation.starts_with":"The {{attribute}} must start with one of the following: {{values}}.","validation.string":"The {{attribute}} must be a string.","validation.timezone":"The {{attribute}} must be a valid timezone.","validation.unique":"The {{attribute}} has already been taken.","validation.uploaded":"The {{attribute}} failed to upload.","validation.uppercase":"The {{attribute}} must be uppercase.","validation.url":"The {{attribute}} must be a valid URL.","validation.ulid":"The {{attribute}} must be a valid ULID.","validation.uuid":"The {{attribute}} must be a valid UUID.","validation.custom.attribute-name.rule-name":"custom-message","validation.unsupported_currency_code":"The currency code you provided is invalid or not supported.","validation.unsupported_period":"The period you provided is invalid or not supported.","validation.unsupported_token_symbol":"The token symbol you provided is invalid or not supported.","validation.gallery_title_required":"Gallery name is required.","validation.gallery_title_max_characters":"The gallery name should not exceed 50 characters.","validation.gallery_title_invalid":"The gallery name is invalid.","validation.nfts_required":"Please add at least one NFT.","validation.nfts_max_size":"Galleries can contain no more than {{limit}} NFTs","validation.invalid_nfts":"The NFT in position {{position}} is invalid, please select another one.","validation.invalid_cover":"You have selected an invalid cover image, please try another one."} \ No newline at end of file +{"auth.welcome":"Welcome to Dashbrd","auth.logged_in":"You're logged in!","auth.log_out":"Log out","auth.failed":"These credentials do not match our records.","auth.session_timeout":"Your session has timed out. Please refresh the page and try connecting your account again.","auth.session_timeout_modal":"Seems like your session has timed out. Please connnect your wallet again.","auth.password":"The provided password is incorrect.","auth.throttle":"Too many login attempts. Please try again in {{seconds}} seconds.","auth.wallet.connecting":"Connecting …","auth.wallet.waiting_for_signature":"Waiting for Signature …","auth.wallet.switching_wallet":"Switching Wallet …","auth.wallet.connect":"Connect Wallet","auth.wallet.connect_long":"Connect Your Wallet to Get Started","auth.wallet.sign_subtitle":"Connect Your Wallet to Continue","auth.wallet.disconnect":"Disconnect Wallet","auth.wallet.install":"Install MetaMask","auth.wallet.install_long":"Install MetaMask to Get Started","auth.wallet.sign":"Sign Message","auth.wallet.sign_message":"Welcome to Dashbrd. In order to login, sign this message with your wallet. It doesn't cost you anything!\n\nSigning ID (you can ignore this): {{nonce}}","auth.wallet.connect_subtitle":"Click on the MetaMask icon in your browser to confirm the action and connect your wallet.","auth.wallet.requires_signature":"In order to prevent impersonation, we require a signature to perform this action. This signature is only a signed message and does not give any access to your wallet.","auth.errors.metamask.no_account":"No account found. Please connect your wallet and try again.","auth.errors.metamask.generic":"Connection attempt error. Please retry and follow the steps to connect your wallet.","auth.errors.metamask.invalid_network":"Please switch to Polygon or Ethereum Mainnet in your MetaMask plugin to connect to Dashbrd.","auth.errors.metamask.provider_missing":"You don't have MetaMask installed in your browser. Please install and try again.","auth.errors.metamask.user_rejected":"It looks like you cancelled signing of the authentication message. Please try again.","auth.errors.metamask.provider_not_set":"Ethereum provider is not set","auth.validation.wallet_login_failed":"There was a problem trying to verify your signature. Please try again.","auth.validation.invalid_address":"Your wallet address is invalid. Please try again.","auth.validation.invalid_signature":"Signature is invalid. Please try again.","auth.validation.invalid_network":"Please switch to Polygon or Ethereum Mainnet in your MetaMask plugin to connect to Dashbrd.","common.author":"Author","common.add":"Add","common.amount":"Amount","common.balance":"Balance","common.cancel":"Cancel","common.delete":"Delete","common.edit":"Edit","common.confirm":"Confirm","common.connect":"Connect","common.continue":"Continue","common.done":"Done","common.filter":"Filter","common.items":"Items","common.receive":"Receive","common.received":"Received","common.retry":"Retry","common.records":"Records","common.save":"Save","common.send":"Send","common.sent":"Sent","common.show":"Show","common.searching":"Searching...","common.other":"Other","common.owned":"Owned","common.token":"Token","common.tokens":"Tokens","common.wallet":"Wallet","common.pending":"Pending","common.publish":"Publish","common.published":"Published","common.empty":"Empty","common.your_address":"Your Address","common.warning":"Warning","common.my_address":"My Address","common.my_wallet":"My Wallet","common.my_collections":"My Collections","common.my_balance":"My Balance","common.na":"N/A","common.simple_plural_without_data":"One comment|Many comments","common.simple_plural_with_data":"{{count}} comment|{{count}} comments","common.advanced_plural_without_data":"{0} no comments yet|{1} 1 comment|[2,*] Many comments","common.advanced_plural_with_data":"{0} no comments yet|{1} 1 comment|[2,*] {{count}} comments","common.copy_clipboard":"Copy to Clipboard","common.copy":"Copy","common.download":"Download","common.zoom":"Zoom","common.my_collection":"My Collection","common.max":"Max","common.chain":"Chain","common.copied":"Copied!","common.coming_soon":"Coming Soon","common.more_details":"More Details","common.close":"Close","common.close_toast":"Close toast","common.loading":"Loading","common.price":"Price","common.articles":"Articles","common.most_popular":"Most Popular","common.market_cap":"Market Cap","common.volume":"Volume","common.volume_frequency":"Volume {{frequency}}","common.value":"Value","common.last_n_days":"Last {{count}} Days","common.details":"Details","common.view_all":"View All","common.view_more_on_polygonscan":"View More on Polygonscan","common.view_more_on_etherscan":"View More on Etherscan","common.view_nft_on_etherscan":"View NFT on Etherscan","common.view_nft_on_polygonscan":"View NFT on Polygonscan","common.view_nft_on_goerli_tesnet":"View NFT on Goerli Testnet Explorer","common.view_nft_on_mumbai_tesnet":"View NFT on Mumbai Testnet Explorer","common.polygonscan":"Polygonscan","common.etherscan":"Etherscan","common.featured":"Featured","common.floor_price":"Floor Price","common.floor":"Floor","common.supply":"Supply","common.owners":"Owners","common.created":"Created","common.nft":"NFT","common.collection":"Collection","common.collections":"Collections","common.gallery":"Gallery","common.basic_gallery":"Basic Gallery","common.gallery_name":"Gallery Name","common.create_gallery":"Create Gallery","common.external_link":"External Link","common.follow_link":"Follow Link","common.cover":"Cover","common.template":"Template","common.page":"Page","common.polygon":"Polygon","common.ethereum":"Ethereum","common.mumbai":"Mumbai","common.goerli":"Goerli","common.of":"of","common.pagination_input_placeholder":"Enter the page number","common.pagination_input_placeholder_mobile":"Page number","common.nft_count":"{0} {{count}} NFTs|{1} {{count}} NFT|[2,*] {{count}} NFTs","common.nft_gallery":"NFT Gallery","common.unable_to_retrieve_image":"Unable to retrieve your NFT image at this time","common.optional":"Optional","common.selected":"Selected","common.select":"Select","common.preview":"Preview","common.image_size_error":"Image size must not exceed 2MB","common.image_dimensions_error":"Image dimensions must exceed 287px x 190px","common.write_to_confirm":"Write {{word}} to confirm","common.n_hours":"{0} {{count}} hour|{1} {{count}} hour|[2,*] {{count}} hours","common.n_minutes":"{0} {{count}} minute|{1} {{count}} minute|[2,*] {{count}} minutes","common.report":"Report","common.nfts":"NFTs","common.n_nfts":"{0}NFTs|{1}NFT|[2,*]NFTs","common.n_collections":"{0}collections|{1}collection|[2,*]collections","common.back":"Back","common.back_to":"Back to","common.name":"Name","common.type":"Type","common.from":"From","common.to":"To","common.sale_price":"Sale Price","common.recent_activity":"Recent Activity","common.time":"Time","common.datetime.few_seconds_ago":"A few seconds ago","common.datetime.minutes_ago":"{0} Less than a minute ago|{1} A minute ago|[2,*] {{count}} minutes ago","common.datetime.hours_ago":"{0} Less than an hour ago|{1} An hour ago|[2,*] {{count}} hours ago","common.datetime.days_ago":"{0} Less than a day ago|{1} A day ago|[2,*] {{count}} days ago","common.datetime.weeks_ago":"{0} Less than a week ago|{1} A week ago|[2,*] {{count}} weeks ago","common.datetime.months_ago":"{0} Less than a month ago|{1} A month ago|[2,*] {{count}} months ago","common.datetime.years_ago":"{0} Less than a year ago|{1} A year ago|[2,*] {{count}} years ago","common.no_traits_found":"No traits found.","common.empty_transactions":"You don't have any transactions yet. Once transactions have been made, they will show up here.","common.error":"Error","common.refresh":"Refresh","common.refresh_metadata":"Refresh Metadata","common.refreshing_metadata":"Refreshing Metadata... Please check back later.","common.refreshing_activity":"Refreshing Activity... Please check back later.","common.pending_confirmation":"Pending Confirmation","common.confirmed_transaction":"Confirmed Transaction","common.transaction_error":"Transaction Error","common.transaction_error_description_first_part":"Your transaction encountered an error. View this transaction on","common.transaction_error_description_second_part":"for more details.","common.home":"Home","common.contact":"Contact","common.menu":"Menu","common.website":"Website","common.twitter":"Twitter","common.discord":"Discord","common.facebook":"Facebook","common.reddit":"Reddit","common.x":"X","common.sort":"Sort","common.drafts":"Drafts","common.draft":"Draft","common.delete_draft":"Delete Draft","common.share_on":"Share on {{platform}}","common.top":"Top","common.all_chains":"All chains","common.votes":"Votes","common.vol":"Vol","footer.copyright":"{{year}} © Dashbrd. All rights reserved.","footer.all_rights_reserved":"All rights reserved","footer.privacy_policy":"Privacy Policy","footer.terms_of_service":"Terms of Service","footer.powered_by":"Powered by","format.fiat":"{{ value, currency }}","format.number":"{{ value, number }}","metatags.home.title":"Dashbrd | Web3 Portfolio Management Made Simple","metatags.home.description":"Simplify your Web3 journey with Dashbrd. Manage your portfolio of tokens, NFTs, and other digital collectibles across the Ethereum and Polygon blockchains.","metatags.home.image":"/images/meta/home.png","metatags.error.title":"Error {{code}} | Dashbrd","metatags.wallet.title":"My Wallet | Dashbrd","metatags.galleries.title":"Top NFT Galleries | Dashbrd","metatags.galleries.image":"/images/meta/nft-galleries.png","metatags.galleries.description":"Explore user published NFT galleries to find custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.most_popular.title":"Most Popular Galleries | Dashbrd","metatags.galleries.most_popular.image":"/images/meta/most-popular-nft-galleries.png","metatags.galleries.most_popular.description":"Explore and discover Most Popular NFT Galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.newest.title":"Newest Galleries | Dashbrd","metatags.galleries.newest.image":"/images/meta/newest-nft-galleries.png","metatags.galleries.newest.description":"Explore and discover most recent NFT galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More","metatags.galleries.most_valuable.title":"Most Valuable Galleries | Dashbrd","metatags.galleries.most_valuable.image":"/images/meta/most-valuable-nft-galleries.png","metatags.galleries.most_valuable.description":"Explore and discover Most Valuable NFT Galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.view.title":"{{name}} | Dashbrd","metatags.galleries.view.description":"{{name}} | A Curated NFT Gallery at Dashbrd","metatags.galleries.view.image":"/images/meta/nft-gallery.png","metatags.my_galleries.title":"My Galleries | Dashbrd","metatags.my_galleries.title_draft":"My Draft Galleries | Dashbrd","metatags.my_galleries.create.title":"Create Gallery | Dashbrd","metatags.my_galleries.edit.title":"Edit {{name}} | Dashbrd","metatags.collections.title":"Collections | Dashbrd","metatags.collections.view.title":"{{name}} Collection | Dashbrd","metatags.collections.view.description":"Immerse yourself in the intricate details of {{name}} collection, featuring remarkable digital assets. Start your NFT journey today!","metatags.collections.view.image":"/images/meta/nft-collection.png","metatags.my-collections.title":"My Collections | Dashbrd","metatags.nfts.view.title":"{{nft}} NFT | Dashbrd","metatags.nfts.view.description":"Uncover the complete story of {{nft}} NFT from the {{collection}} collection, delving into its unique attributes and distinctive features.","metatags.nfts.view.image":"/images/meta/nft-details.png","metatags.settings.title":"Settings | Dashbrd","metatags.articles.title":"Articles | Dashbrd","metatags.articles.view.title":"{{title}} | Dashbrd","metatags.login.title":"Login | Dashbrd","metatags.privacy_policy.title":"Privacy Policy | Dashbrd","metatags.privacy_policy.description":"Dashbrd’s privacy policy outlines the information we collect and explains your choices surrounding how we use information about you.","metatags.terms_of_service.title":"Terms of Service | Dashbrd","metatags.terms_of_service.description":"These Terms of Service cover your use and access to services, products or websites of Dashbrd.","metatags.cookie_policy.title":"Cookie Policy | Dashbrd","metatags.cookie_policy.description":"Dashbrd uses cookies to make the website more user-friendly. Find out about the main types of cookies we use, and what we use them for.","metatags.welcome.title":"Welcome to Dashbrd | Web3 Simplified","pages.onboarding.title":"Get Started","pages.onboarding.heading":"Your monkeys were bored and ran off, we are trying to round them up.","pages.onboarding.message":"We are setting up your account. This process usually takes just a few minutes, but can take up to 15 minutes.","pages.error.heading":"Oops, something went wrong ...","pages.error.message":"Please try again or get in touch if the issue persists.","pages.maintenance.title":"Dashbrd is currently down for scheduled maintenance.","pages.maintenance.description":"We expect to be back soon. Thanks for your patience.","pages.dashboard.title":"My Wallet","pages.dashboard.breakdown.title":"Portfolio Breakdown","pages.dashboard.line_chart.data_error":"Could not load chart data","pages.articles.title":"Articles","pages.articles.featured_collections":"Featured Collections","pages.articles.placeholder_more_soon":"More Soon","pages.articles.no_articles":"No articles have been published yet. Please check back later!","pages.articles.header_title":"Explore our collection of","pages.articles.header_suffix_one":"published article","pages.articles.header_suffix_other":"published articles","pages.articles.audio_version":"Audio version","pages.articles.consists_of_collections":"{0} This article highlights {{count}} collections|{1} This article highlights {{count}} collection|[2,*] This article highlights {{count}} collections","pages.collections.title":"Collections","pages.collections.collections":"Collections","pages.collections.popular_collections":"Popular Collections","pages.collections.collection_value":"Collection Value","pages.collections.nfts_owned":"NFTs Owned","pages.collections.header_title":"You own <0>{{nftsCount}} {{nfts}} across <0>{{collectionsCount}} {{collections}}, worth about <0><1>{{worth}}","pages.collections.search_placeholder":"Search by Collection","pages.collections.properties":"Properties","pages.collections.collections_network":"Collections Network","pages.collections.property_search_placeholder":"Feature Search","pages.collections.floor_price":"Floor Price","pages.collections.value":"Value","pages.collections.rarity":"Rarity","pages.collections.report":"Report","pages.collections.hide_collection":"Hide Collection","pages.collections.unhide_collection":"Unhide Collection","pages.collections.no_collections":"You do not own any NFTs yet. Once you do they will be shown here.","pages.collections.all_collections_hidden":"You have hidden all your collections. Unhide and they will appear here.","pages.collections.about_collection":"About Collection","pages.collections.show_hidden":"Show Hidden","pages.collections.show_my_collection":"Show My Collection","pages.collections.owned":"Owned","pages.collections.activities.loading_activities":"We're fetching Activity for this NFT, please hang tight, this can take a while.","pages.collections.activities.loading_activities_collection":"We're fetching Activity for this collection, please hang tight, this can take a while.","pages.collections.activities.ignores_activities":"We don't support activity history for this collection yet.","pages.collections.activities.no_activity":"This collection does not have any activity yet.","pages.collections.activities.types.LABEL_MINT":"Mint","pages.collections.activities.types.LABEL_TRANSFER":"Transfer","pages.collections.activities.types.LABEL_SALE":"Sale","pages.collections.activities.types.LABEL_BURN":"Burn","pages.collections.collection_of_the_month.winners_month":"Winners: {{month}}","pages.collections.collection_of_the_month.vote_for_next_months_winners":"Vote now for next month's winners","pages.collections.collection_of_the_month.view_previous_winners":"View Previous Winners","pages.collections.collection_of_the_month.vote_success":"Your vote has been successfully submitted","pages.collections.articles.heading":"Latest NFT News & Features","pages.collections.articles.no_articles":"No articles have been linked to this collection as of now.","pages.collections.articles.no_articles_with_filters":"We could not find any articles matching your search criteria, please try again!","pages.collections.articles.search_placeholder":"Search in Articles","pages.collections.articles.sort_latest":"Latest","pages.collections.articles.sort_popularity":"Most Popular","pages.collections.search.loading_results":"Loading results...","pages.collections.search.no_results":"We could not find anything matching your search criteria, please try again!","pages.collections.search.no_results_with_filters":"We could not find anything matching your filters, please try again!","pages.collections.search.no_results_ownership":"You do not own any NFTs in this collection","pages.collections.search.error":"Could not load search results. Please try again later.","pages.collections.vote.vote_for_top_collection":"Vote for Top Collection of the Month","pages.collections.vote.vote":"Vote","pages.collections.vote.time_left":"Time Left","pages.collections.vote.or_nominate_collection":"Or nominate a collection","pages.collections.vote.vote_to_reveal":"Vote to reveal data","pages.collections.sorting.token_number":"Token Number","pages.collections.sorting.recently_received":"Recently Received","pages.collections.sorting.recently_created":"Recently Created","pages.collections.sorting.oldest_collection":"Oldest Collection","pages.collections.traits.description":"List of NFT traits by % of occurrence in the collection","pages.collections.traits.no_traits":"No Properties can be found for this NFT","pages.collections.menu.collection":"Collection","pages.collections.menu.articles":"Articles","pages.collections.menu.activity":"Activity","pages.collections.hidden_modal.collection_hidden":"Collection Hidden","pages.collections.hidden_modal.description":"This collection is currently set to Hidden. Are you sure you want to unhide this collection? You can\n reset the collection to hidden from the collection menu.","pages.collections.hidden_modal.unhide":"Unhide","pages.collections.hidden_modal.error":"Something went wrong. Please try again.","pages.collections.external_modal.you_wish_continue":"You are about to leave Dashbrd to an external website. Dashbrd has no control over the content of\n this site. Are you sure you wish to continue?","pages.collections.external_modal.not_show":"Do not show this message again.","pages.collections.refresh.title":"Refresh your collection","pages.collections.refresh.notice":"You can refresh data every 15 minutes.","pages.collections.refresh.notice_wait":"Please wait. You can refresh data every 15 minutes.","pages.collections.refresh.toast":"We're updating information for your collection.","pages.collections.featured.title":"Featured Collections","pages.collections.featured.button":"Explore Collection","pages.collections.footer.heading_broken.0":"Connect with MetaMask","pages.collections.footer.heading_broken.1":"& Manage Your Collection","pages.collections.footer.subtitle":"Explore, Filter, & Share your favorite NFTs with Dashbrd.","pages.collections.footer.button":"Manage Collections","pages.nfts.nft":"nft","pages.nfts.about_nft":"About NFT","pages.nfts.owned_by":"Owned by","pages.nfts.collection_image":"collection image","pages.nfts.menu.properties":"Properties","pages.nfts.menu.activity":"Activity","pages.reports.title":"Submit a Report","pages.reports.description":"Thanks for looking out by reporting things that break the rules. Let us know what's happening and we'll receive the report.","pages.reports.success":"Thank you for your report. We'll review it and see if it breaks our ToS.","pages.reports.failed":"Something went wrong. Please try again.","pages.reports.throttle":"You have made too many requests. Please wait {{time}} before reporting again.","pages.reports.reported":"You have already reported this {{model}}.","pages.reports.reasons.spam":"Spam","pages.reports.reasons.violence":"Promoting Violence","pages.reports.reasons.hate":"Hate","pages.reports.reasons.inappropriate_content":"Inappropriate Content","pages.reports.reasons.impersonation":"Impersonation","pages.reports.reasons.trademark":"Trademark or Copyright","pages.reports.reasons.selfharm":"Self-Harm","pages.reports.reasons.harassment":"Harassment","pages.galleries.title":"Galleries","pages.galleries.empty_title":"No galleries have been published yet. Once they do they will appear here.","pages.galleries.search.loading_results":"Loading results...","pages.galleries.search.no_results":"We could not find anything matching your search criteria, please try again!","pages.galleries.search.placeholder":"Search by name or curator address","pages.galleries.search.placeholder_nfts":"Search by NFTs","pages.galleries.search.error":"Could not load search results. Please try again later.","pages.galleries.my_galleries.title":"My Galleries","pages.galleries.my_galleries.subtitle":"Manage your galleries","pages.galleries.my_galleries.new_gallery":"New Gallery","pages.galleries.my_galleries.no_galleries":"You have not created any galleries yet. To create a gallery, click on the \"Create Gallery\" button.","pages.galleries.my_galleries.no_available_collections":"You have hidden all your collections. If you want to create a gallery, make sure you have at least 1 collection available.","pages.galleries.my_galleries.no_draft_galleries":"You have no draft galleries yet. To create a gallery, click on the \"Create Gallery\" button.","pages.galleries.my_galleries.succesfully_deleted":"Gallery has been successfully removed","pages.galleries.my_galleries.draft_succesfully_deleted":"Draft has been successfully removed","pages.galleries.my_galleries.successfully_created":"Gallery has been successfully created","pages.galleries.my_galleries.successfully_updated":"Gallery has been successfully updated","pages.galleries.my_galleries.new_gallery_no_nfts":"Creating a Gallery requires you to own an NFT.","pages.galleries.my_galleries.new_gallery_all_collections_hidden":"Creating a Gallery requires you to have at least 1 collection available.","pages.galleries.my_galleries.delete_modal.title":"Delete Draft","pages.galleries.my_galleries.delete_modal.text":"Are you sure you want to delete the draft? Everything you've done will be deleted and you won't be able to get it back.","pages.galleries.my_galleries.nfts_no_longer_owned":"NFTs no longer owned by this wallet have been removed from the draft”","pages.galleries.copy_gallery_link":"Copy Gallery Link","pages.galleries.my_nfts":"My NFTs","pages.galleries.show_hidden_collections":"Show hidden collections","pages.galleries.value":"Value","pages.galleries.floor_price":"Floor Price","pages.galleries.nfts":"NFTs","pages.galleries.collections":"Collections","pages.galleries.galleries_count_simple":"{0} galleries|{1} gallery|[2,*] galleries","pages.galleries.galleries_count":"{0} {{count}} Galleries|{1} {{count}} Gallery|[2,*] {{count}} Galleries","pages.galleries.collections_count_simple":"{0} collections|{1} collection|[2,*] collections","pages.galleries.collections_count":"{0} {{count}} Collections|{1} {{count}} Collection|[2,*] {{count}} Collections","pages.galleries.nfts_count_simple":"{0} NFTs|{1} NFT|[2,*] NFTs","pages.galleries.nfts_count":"{0} {{count}} NFTs|{1} {{count}} NFT|[2,*] {{count}} NFTs","pages.galleries.users_count_simple":"{0} users|{1} user|[2,*] users","pages.galleries.users_count":"{0} {{count}} Users|{1} {{count}} User|[2,*] {{count}} Users","pages.galleries.featuring":"Featuring","pages.galleries.curated_by":"Curated by","pages.galleries.worth_about":"Worth About","pages.galleries.valued_at":"valued at","pages.galleries.from":"From","pages.galleries.most_popular_galleries":"Most Popular Galleries","pages.galleries.newest_galleries":"Newest Galleries","pages.galleries.most_valuable_galleries":"Most Valuable Galleries","pages.galleries.most_popular":"Most Popular","pages.galleries.newest":"Newest","pages.galleries.most_valuable":"Most Valuable","pages.galleries.create.search_by_nfts":"Search by NFTs","pages.galleries.create.input_placeholder":"Enter gallery name","pages.galleries.create.title_too_long":"Gallery name must not exceed {{max}} characters.","pages.galleries.create.already_selected_nft":"NFT already exists in this gallery","pages.galleries.create.nft_missing_image":"Only NFTs with images can be added to galleries","pages.galleries.create.nft_gallery_limit":"You can only add 16 NFTs per gallery","pages.galleries.create.gallery_cover":"Gallery Cover","pages.galleries.create.gallery_cover_description":"The cover is used for the card on the gallery list page. While the cover is not a requirement it will allow you to add personality and stand out from the crowd.","pages.galleries.create.gallery_cover_information":"Image dimensions must be at least 287px x 190px, with a max size of 2 MB (JPG, PNG or GIF)","pages.galleries.create.no_results":"We could not find anything matching your search criteria, please try again!","pages.galleries.create.templates.cover":"Cover","pages.galleries.create.templates.template":"Template","pages.galleries.create.templates.select":"Select Gallery Template","pages.galleries.create.templates.basic":"Basic Gallery","pages.galleries.create.templates.coming_soon":"More Coming Soon","pages.galleries.create.load_more_collections_one":"Load {{count}} More Collection","pages.galleries.create.load_more_collections_other":"Load {{count}} More Collections","pages.galleries.create.load_more_nfts":"Load More NFTs","pages.galleries.create.can_purchase":"You can purchase NFTs with these top NFT Marketplaces:","pages.galleries.create.must_own_one_nft":"You must own at least one (1) NFT in order to create a gallery.","pages.galleries.create.back_to_galleries":"Back to Galleries","pages.galleries.create.draft_saved":"Draft Saved","pages.galleries.create.saving_to_draft":"Saving to draft","pages.galleries.create.drafts_limit_modal_title":"Draft Gallery Limit","pages.galleries.create.drafts_limit_modal_message":"You’ve hit your limit for draft galleries. While you can still make new galleries and publish them, they won’t be saved as drafts. To Free up space, you can either delete existing drafts or publish them.","pages.galleries.create.drafts_limit_modal_cancel":"Go to Drafts","pages.galleries.delete_modal.title":"Delete Gallery","pages.galleries.delete_modal.confirmation_text":"Are you sure you want to delete the gallery? Deleting a Gallery is permanent, all associated views and likes will be lost.","pages.galleries.consists_of_collections":"{0} This gallery consists of {{count}} collections|{1} This gallery consists of {{count}} collection|[2,*] This gallery consists of {{count}} collections","pages.galleries.guest_banner.title":"Craft the ultimate","pages.galleries.guest_banner.subtitle":"Pick your favorites, curate your gallery, & share it with the world.","pages.profile.title":"Profile","pages.token_panel.balance_tooltip":"Total percentage of the portfolio held in this token","pages.token_panel.insufficient_funds":"Insufficient Balance","pages.token_panel.error":"Dashbrd has failed to load token information. Please try again later.","pages.token_panel.failed_to_retrieve_transactions":"We were unable to fetch your transactions.","pages.token_panel.tabs.transaction_history":"Transaction History","pages.token_panel.tabs.history":"History","pages.token_panel.tabs.market_data":"Market Data","pages.token_panel.details.current_price":"Current Price","pages.token_panel.details.title":"Token Details","pages.token_panel.details.market_cap":"Market Cap","pages.token_panel.details.volume":"Daily Volume","pages.token_panel.details.supply":"Minted Supply","pages.token_panel.details.ath":"All-Time High","pages.token_panel.details.atl":"All-Time Low","pages.token_panel.chart.failed":"Dashbrd has failed to load chart information. Please try again later.","pages.transaction_details_panel.title":"Transaction Details","pages.transaction_details_panel.details.blockchain":"Blockchain","pages.transaction_details_panel.details.timestamp":"Timestamp","pages.transaction_details_panel.details.transaction_hash":"Transaction Hash","pages.transaction_details_panel.details.transaction_fee":"Transaction Fee","pages.transaction_details_panel.details.gas_price":"Gas Price","pages.transaction_details_panel.details.gas_used":"Gas Used","pages.transaction_details_panel.details.nonce":"Nonce","pages.send_receive_panel.send.labels.token_and_amount":"Token and Amount","pages.send_receive_panel.send.labels.destination_address":"Destination Address","pages.send_receive_panel.send.labels.projected_fee":"Projected Fee","pages.send_receive_panel.send.placeholders.enter_amount":"Enter Amount","pages.send_receive_panel.send.placeholders.insert_recipient_address":"Insert Recipient Address","pages.send_receive_panel.send.placeholders.projected_fee":"Projected Fee","pages.send_receive_panel.send.errors.amount":"Insufficient Funds: You do not have enough to cover the amount + fee.","pages.send_receive_panel.send.errors.destination":"Destination address is not correct. Check and input again.","pages.send_receive_panel.send.hints.token_price":"Token Price","pages.send_receive_panel.send.fees.Fast":"Fast","pages.send_receive_panel.send.fees.Avg":"Avg","pages.send_receive_panel.send.fees.Slow":"Slow","pages.send_receive_panel.send.search_dropdown.placeholder":"Search token","pages.send_receive_panel.send.search_dropdown.no_results":"No Results","pages.send_receive_panel.send.search_dropdown.error":"Error occurred while searching tokens.","pages.send_receive_panel.send.transaction_time":"Transaction Time: ~{{ time }} minutes","pages.send_receive_panel.send.from":"From","pages.send_receive_panel.send.to":"To","pages.send_receive_panel.send.amount":"Amount","pages.send_receive_panel.send.fee":"Fee","pages.send_receive_panel.send.total_amount":"Total Amount","pages.send_receive_panel.send.waiting_message":"Review and verify the information on your MetaMask. Sign to send the transaction.","pages.send_receive_panel.send.waiting_spinner_text":"Waiting for confirmation...","pages.send_receive_panel.send.failed_message":"It looks like something went wrong while sending your transaction. Press 'Retry' to make another attempt.","pages.send_receive_panel.receive.alert":"Send only Polygon or Ethereum Network compatible tokens to this address or you could permanently lose your funds!","pages.settings.title":"Settings","pages.settings.sidebar.general":"General","pages.settings.sidebar.notifications":"Notifications","pages.settings.sidebar.session_history":"Sessions History","pages.settings.general.title":"Settings","pages.settings.general.subtitle":"Customize your App Experience","pages.settings.general.currency":"Currency","pages.settings.general.currency_subtitle":"Select your default currency which will be used throughout the app.","pages.settings.general.time_date":"Time & Date","pages.settings.general.time_date_subtitle":"Select how you want time and date be shown inside app.","pages.settings.general.date_format":"Date Format","pages.settings.general.time_format":"Time Format","pages.settings.general.timezone":"Timezone","pages.settings.general.set_defaults":"Set Defaults","pages.settings.general.set_defaults_content":"Reverting to the default settings will remove any customizations previously made. Are you sure?","pages.settings.general.save":"Save Settings","pages.settings.general.saved":"Your settings have been successfully saved","pages.wallet.title":"Wallet","pages.privacy_policy.title":"Privacy Policy","pages.terms_of_service.title":"Terms of Service","pagination.previous":"« Previous","pagination.next":"Next »","passwords.reset":"Your password has been reset!","passwords.sent":"We have emailed your password reset link!","passwords.throttled":"Please wait before retrying.","passwords.token":"This password reset token is invalid.","passwords.user":"We can't find a user with that email address.","urls.landing":"https://dashbrd.com","urls.cookie_policy":"https://dashbrd.com/cookie-policy","urls.privacy_policy":"https://dashbrd.com/privacy-policy","urls.terms_of_service":"https://dashbrd.com/terms-of-service","urls.twitter":"https://x.com/DashbrdApp","urls.discord":"https://discord.gg/MJyWKkCJ5k","urls.github":"https://github.com/ArdentHQ/dashbrd","urls.coingecko":"https://www.coingecko.com","urls.etherscan":"https://etherscan.io","urls.polygonscan":"https://polygonscan.com","urls.alchemy":"https://www.alchemy.com","urls.moralis":"https://moralis.io","urls.mnemonic":"https://www.mnemonichq.com","urls.opensea":"https://opensea.io/","urls.explorers.etherscan.token_transactions":"https://etherscan.io/token/{{token}}?a={{address}}","urls.explorers.etherscan.addresses":"https://etherscan.io/address/{{address}}","urls.explorers.etherscan.transactions":"https://etherscan.io/tx/{{id}}","urls.explorers.etherscan.nft":"https://etherscan.io/nft/{{address}}/{{nftId}}","urls.explorers.polygonscan.token_transactions":"https://polygonscan.com/token/{{token}}?a={{address}}","urls.explorers.polygonscan.addresses":"https://polygonscan.com/address/{{address}}","urls.explorers.polygonscan.transactions":"https://polygonscan.com/tx/{{id}}","urls.explorers.polygonscan.nft":"https://polygonscan.com/nft/{{address}}/{{nftId}}","urls.explorers.mumbai.token_transactions":"https://mumbai.polygonscan.com/token/{{token}}?a={{address}}","urls.explorers.mumbai.addresses":"https://mumbai.polygonscan.com/address/{{address}}","urls.explorers.mumbai.transactions":"https://mumbai.polygonscan.com/tx/{{id}}","urls.explorers.mumbai.nft":"https://mumbai.polygonscan.com/nft/{{address}}/{{nftId}}","urls.explorers.goerli.token_transactions":"https://goerli.etherscan.io/token/{{token}}?a={{address}}","urls.explorers.goerli.addresses":"https://goerli.etherscan.io/address/{{address}}","urls.explorers.goerli.transactions":"https://goerli.etherscan.io/tx/{{id}}","urls.explorers.goerli.nft":"https://goerli.etherscan.io/nft/{{address}}/{{nftId}}","urls.marketplaces.opensea.collection":"https://opensea.io/assets/{{network}}/{{address}}","urls.marketplaces.opensea.nft":"https://opensea.io/assets/{{network}}/{{address}}/{{nftId}}","urls.marketplaces.rarible.collection":"https://rarible.com/collection/{{address}}/items","urls.marketplaces.rarible.nft":"https://rarible.com/token/{{address}}:{{nftId}}","urls.marketplaces.blur.collection":"https://blur.io/collection/{{address}}","urls.marketplaces.blur.nft":"https://blur.io/asset/{{address}}/{{nftId}}","urls.marketplaces.looksrare.collection":"https://looksrare.org/collections/{{address}}","urls.marketplaces.looksrare.nft":"https://looksrare.org/collections/{{address}}/{{nftId}}","validation.accepted":"The {{attribute}} must be accepted.","validation.accepted_if":"The {{attribute}} must be accepted when {{other}} is {{value}}.","validation.active_url":"The {{attribute}} is not a valid URL.","validation.after":"The {{attribute}} must be a date after {{date}}.","validation.after_or_equal":"The {{attribute}} must be a date after or equal to {{date}}.","validation.alpha":"The {{attribute}} must only contain letters.","validation.alpha_dash":"The {{attribute}} must only contain letters, numbers, dashes and underscores.","validation.alpha_num":"The {{attribute}} must only contain letters and numbers.","validation.array":"The {{attribute}} must be an array.","validation.ascii":"The {{attribute}} must only contain single-byte alphanumeric characters and symbols.","validation.before":"The {{attribute}} must be a date before {{date}}.","validation.before_or_equal":"The {{attribute}} must be a date before or equal to {{date}}.","validation.between.array":"The {{attribute}} must have between {{min}} and {{max}} items.","validation.between.file":"The {{attribute}} must be between {{min}} and {{max}} kilobytes.","validation.between.numeric":"The {{attribute}} must be between {{min}} and {{max}}.","validation.between.string":"The {{attribute}} must be between {{min}} and {{max}} characters.","validation.boolean":"The {{attribute}} field must be true or false.","validation.confirmed":"The {{attribute}} confirmation does not match.","validation.current_password":"The password is incorrect.","validation.date":"The {{attribute}} is not a valid date.","validation.date_equals":"The {{attribute}} must be a date equal to {{date}}.","validation.date_format":"The {{attribute}} does not match the format {{format}}.","validation.decimal":"The {{attribute}} must have {{decimal}} decimal places.","validation.declined":"The {{attribute}} must be declined.","validation.declined_if":"The {{attribute}} must be declined when {{other}} is {{value}}.","validation.different":"The {{attribute}} and {{other}} must be different.","validation.digits":"The {{attribute}} must be {{digits}} digits.","validation.digits_between":"The {{attribute}} must be between {{min}} and {{max}} digits.","validation.dimensions":"The {{attribute}} has invalid image dimensions.","validation.distinct":"The {{attribute}} field has a duplicate value.","validation.doesnt_end_with":"The {{attribute}} may not end with one of the following: {{values}}.","validation.doesnt_start_with":"The {{attribute}} may not start with one of the following: {{values}}.","validation.email":"The {{attribute}} must be a valid email address.","validation.ends_with":"The {{attribute}} must end with one of the following: {{values}}.","validation.enum":"The selected {{attribute}} is invalid.","validation.exists":"The selected {{attribute}} is invalid.","validation.file":"The {{attribute}} must be a file.","validation.filled":"The {{attribute}} field must have a value.","validation.gt.array":"The {{attribute}} must have more than {{value}} items.","validation.gt.file":"The {{attribute}} must be greater than {{value}} kilobytes.","validation.gt.numeric":"The {{attribute}} must be greater than {{value}}.","validation.gt.string":"The {{attribute}} must be greater than {{value}} characters.","validation.gte.array":"The {{attribute}} must have {{value}} items or more.","validation.gte.file":"The {{attribute}} must be greater than or equal to {{value}} kilobytes.","validation.gte.numeric":"The {{attribute}} must be greater than or equal to {{value}}.","validation.gte.string":"The {{attribute}} must be greater than or equal to {{value}} characters.","validation.image":"The {{attribute}} must be an image.","validation.in":"The selected {{attribute}} is invalid.","validation.in_array":"The {{attribute}} field does not exist in {{other}}.","validation.integer":"The {{attribute}} must be an integer.","validation.ip":"The {{attribute}} must be a valid IP address.","validation.ipv4":"The {{attribute}} must be a valid IPv4 address.","validation.ipv6":"The {{attribute}} must be a valid IPv6 address.","validation.json":"The {{attribute}} must be a valid JSON string.","validation.lowercase":"The {{attribute}} must be lowercase.","validation.lt.array":"The {{attribute}} must have less than {{value}} items.","validation.lt.file":"The {{attribute}} must be less than {{value}} kilobytes.","validation.lt.numeric":"The {{attribute}} must be less than {{value}}.","validation.lt.string":"The {{attribute}} must be less than {{value}} characters.","validation.lte.array":"The {{attribute}} must not have more than {{value}} items.","validation.lte.file":"The {{attribute}} must be less than or equal to {{value}} kilobytes.","validation.lte.numeric":"The {{attribute}} must be less than or equal to {{value}}.","validation.lte.string":"The {{attribute}} must be less than or equal to {{value}} characters.","validation.mac_address":"The {{attribute}} must be a valid MAC address.","validation.max.array":"The {{attribute}} must not have more than {{max}} items.","validation.max.file":"The {{attribute}} must not be greater than {{max}} kilobytes.","validation.max.numeric":"The {{attribute}} must not be greater than {{max}}.","validation.max.string":"The {{attribute}} must not be greater than {{max}} characters.","validation.max_digits":"The {{attribute}} must not have more than {{max}} digits.","validation.mimes":"The {{attribute}} must be a file of type: {{values}}.","validation.mimetypes":"The {{attribute}} must be a file of type: {{values}}.","validation.min.array":"The {{attribute}} must have at least {{min}} items.","validation.min.file":"The {{attribute}} must be at least {{min}} kilobytes.","validation.min.numeric":"The {{attribute}} must be at least {{min}}.","validation.min.string":"The {{attribute}} must be at least {{min}} characters.","validation.min_digits":"The {{attribute}} must have at least {{min}} digits.","validation.missing":"The {{attribute}} field must be missing.","validation.missing_if":"The {{attribute}} field must be missing when {{other}} is {{value}}.","validation.missing_unless":"The {{attribute}} field must be missing unless {{other}} is {{value}}.","validation.missing_with":"The {{attribute}} field must be missing when {{values}} is present.","validation.missing_with_all":"The {{attribute}} field must be missing when {{values}} are present.","validation.multiple_of":"The {{attribute}} must be a multiple of {{value}}.","validation.not_in":"The selected {{attribute}} is invalid.","validation.not_regex":"The {{attribute}} format is invalid.","validation.numeric":"The {{attribute}} must be a number.","validation.password.letters":"The {{attribute}} must contain at least one letter.","validation.password.mixed":"The {{attribute}} must contain at least one uppercase and one lowercase letter.","validation.password.numbers":"The {{attribute}} must contain at least one number.","validation.password.symbols":"The {{attribute}} must contain at least one symbol.","validation.password.uncompromised":"The given {{attribute}} has appeared in a data leak. Please choose a different {{attribute}}.","validation.present":"The {{attribute}} field must be present.","validation.prohibited":"The {{attribute}} field is prohibited.","validation.prohibited_if":"The {{attribute}} field is prohibited when {{other}} is {{value}}.","validation.prohibited_unless":"The {{attribute}} field is prohibited unless {{other}} is in {{values}}.","validation.prohibits":"The {{attribute}} field prohibits {{other}} from being present.","validation.regex":"The {{attribute}} format is invalid.","validation.required":"The {{attribute}} field is required.","validation.required_array_keys":"The {{attribute}} field must contain entries for: {{values}}.","validation.required_if":"The {{attribute}} field is required when {{other}} is {{value}}.","validation.required_if_accepted":"The {{attribute}} field is required when {{other}} is accepted.","validation.required_unless":"The {{attribute}} field is required unless {{other}} is in {{values}}.","validation.required_with":"The {{attribute}} field is required when {{values}} is present.","validation.required_with_all":"The {{attribute}} field is required when {{values}} are present.","validation.required_without":"The {{attribute}} field is required when {{values}} is not present.","validation.required_without_all":"The {{attribute}} field is required when none of {{values}} are present.","validation.same":"The {{attribute}} and {{other}} must match.","validation.size.array":"The {{attribute}} must contain {{size}} items.","validation.size.file":"The {{attribute}} must be {{size}} kilobytes.","validation.size.numeric":"The {{attribute}} must be {{size}}.","validation.size.string":"The {{attribute}} must be {{size}} characters.","validation.starts_with":"The {{attribute}} must start with one of the following: {{values}}.","validation.string":"The {{attribute}} must be a string.","validation.timezone":"The {{attribute}} must be a valid timezone.","validation.unique":"The {{attribute}} has already been taken.","validation.uploaded":"The {{attribute}} failed to upload.","validation.uppercase":"The {{attribute}} must be uppercase.","validation.url":"The {{attribute}} must be a valid URL.","validation.ulid":"The {{attribute}} must be a valid ULID.","validation.uuid":"The {{attribute}} must be a valid UUID.","validation.custom.attribute-name.rule-name":"custom-message","validation.unsupported_currency_code":"The currency code you provided is invalid or not supported.","validation.unsupported_period":"The period you provided is invalid or not supported.","validation.unsupported_token_symbol":"The token symbol you provided is invalid or not supported.","validation.gallery_title_required":"Gallery name is required.","validation.gallery_title_max_characters":"The gallery name should not exceed 50 characters.","validation.gallery_title_invalid":"The gallery name is invalid.","validation.nfts_required":"Please add at least one NFT.","validation.nfts_max_size":"Galleries can contain no more than {{limit}} NFTs","validation.invalid_nfts":"The NFT in position {{position}} is invalid, please select another one.","validation.invalid_cover":"You have selected an invalid cover image, please try another one."} \ No newline at end of file diff --git a/resources/js/Pages/Collections/Components/CollectionsArticles.tsx b/resources/js/Pages/Collections/Components/CollectionsArticles.tsx new file mode 100644 index 000000000..591fad65b --- /dev/null +++ b/resources/js/Pages/Collections/Components/CollectionsArticles.tsx @@ -0,0 +1,127 @@ +import { Tab } from "@headlessui/react"; +import cn from "classnames"; +import { Fragment, useMemo, useState } from "react"; +import { useTranslation } from "react-i18next"; +import { ArticleCard } from "@/Components/Articles/ArticleCard"; +import { ButtonLink } from "@/Components/Buttons/ButtonLink"; +import { Carousel, CarouselControls, CarouselItem } from "@/Components/Carousel"; +import { Heading } from "@/Components/Heading"; +import { Tabs } from "@/Components/Tabs"; +import { useCarousel } from "@/Hooks/useCarousel"; + +interface Properties { + latest: App.Data.Articles.ArticleData[]; + popular: App.Data.Articles.ArticleData[]; +} + +type TabOption = "latest" | "popular"; + +export const CollectionsArticles = ({ latest, popular }: Properties): JSX.Element => { + const [tab, setTab] = useState("latest"); + const articles = useMemo(() => (tab === "latest" ? latest : popular), [tab]); + + const { t } = useTranslation(); + const { slidesPerView, horizontalOffset } = useCarousel(); + + return ( +
    +
    + + {t("pages.collections.articles.heading")} + + +
    + { + setTab(tab); + }} + /> + + +
    +
    + + + {articles.map((article) => ( + +
    + +
    +
    + ))} +
    + +
    + +
    +
    + ); +}; + +const ArticleTabs = ({ active, onChange }: { active: TabOption; onChange: (tab: TabOption) => void }): JSX.Element => { + const { t } = useTranslation(); + + return ( + + + + + { + onChange("latest"); + }} + > + {t("pages.collections.articles.sort_latest")} + + + + + { + onChange("popular"); + }} + > + {t("pages.collections.articles.sort_popularity")} + + + + + + ); +}; + +const ViewAllButton = ({ className }: { className?: string }): JSX.Element => { + const { t } = useTranslation(); + + return ( + + {t("common.view_all")} + + ); +}; diff --git a/resources/js/Pages/Collections/Index.tsx b/resources/js/Pages/Collections/Index.tsx index bc6539d33..ecdabe2ec 100644 --- a/resources/js/Pages/Collections/Index.tsx +++ b/resources/js/Pages/Collections/Index.tsx @@ -3,6 +3,7 @@ import { Head, router, usePage } from "@inertiajs/react"; import cn from "classnames"; import { useEffect, useState } from "react"; import { useTranslation } from "react-i18next"; +import { CollectionsArticles } from "./Components/CollectionsArticles"; import { CollectionsCallToAction } from "./Components/CollectionsCallToAction"; import { FeaturedCollectionsCarousel } from "./Components/FeaturedCollections"; import { PopularCollectionsFilterPopover } from "./Components/PopularCollectionsFilterPopover"; @@ -28,6 +29,8 @@ interface CollectionsIndexProperties extends PageProps { featuredCollections: App.Data.Collections.CollectionFeaturedData[]; topCollections: App.Data.Collections.CollectionOfTheMonthData[]; filters: Filters; + latestArticles: App.Data.Articles.ArticleData[]; + popularArticles: App.Data.Articles.ArticleData[]; } const demoCollection: VoteCollectionProperties = { @@ -46,6 +49,8 @@ const CollectionsIndex = ({ topCollections, auth, filters, + latestArticles, + popularArticles, }: CollectionsIndexProperties): JSX.Element => { const { t } = useTranslation(); @@ -154,6 +159,11 @@ const CollectionsIndex = ({
    + + ); From 34ae421a1bc29d805bbfb629d91a4f525a289439 Mon Sep 17 00:00:00 2001 From: shahin-hq <132887516+shahin-hq@users.noreply.github.com> Date: Wed, 6 Dec 2023 13:55:41 +0400 Subject: [PATCH 029/145] feat: add collections table voted state (#532) --- lang/en/pages.php | 1 + .../icons/voted-collection-checkmark.svg | 1 + resources/js/I18n/Locales/en.json | 2 +- .../CollectionVoting/VoteCollections.test.tsx | 75 ++++++- .../CollectionVoting/VoteCollections.tsx | 186 +++++++++++++----- .../CollectionVoting/VoteCountdown.tsx | 28 ++- resources/js/Pages/Collections/Index.tsx | 3 + resources/js/icons.tsx | 2 + 8 files changed, 231 insertions(+), 67 deletions(-) create mode 100644 resources/icons/voted-collection-checkmark.svg diff --git a/lang/en/pages.php b/lang/en/pages.php index 1c7a5b2ad..6ab88da87 100644 --- a/lang/en/pages.php +++ b/lang/en/pages.php @@ -103,6 +103,7 @@ 'time_left' => 'Time Left', 'or_nominate_collection' => 'Or nominate a collection', 'vote_to_reveal' => 'Vote to reveal data', + 'already_voted' => 'You’ve already nominated. Come back next month!', ], 'sorting' => [ 'token_number' => 'Token Number', diff --git a/resources/icons/voted-collection-checkmark.svg b/resources/icons/voted-collection-checkmark.svg new file mode 100644 index 000000000..e082d3b52 --- /dev/null +++ b/resources/icons/voted-collection-checkmark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/js/I18n/Locales/en.json b/resources/js/I18n/Locales/en.json index a1ebb0b52..36f4f8240 100644 --- a/resources/js/I18n/Locales/en.json +++ b/resources/js/I18n/Locales/en.json @@ -1 +1 @@ -{"auth.welcome":"Welcome to Dashbrd","auth.logged_in":"You're logged in!","auth.log_out":"Log out","auth.failed":"These credentials do not match our records.","auth.session_timeout":"Your session has timed out. Please refresh the page and try connecting your account again.","auth.session_timeout_modal":"Seems like your session has timed out. Please connnect your wallet again.","auth.password":"The provided password is incorrect.","auth.throttle":"Too many login attempts. Please try again in {{seconds}} seconds.","auth.wallet.connecting":"Connecting …","auth.wallet.waiting_for_signature":"Waiting for Signature …","auth.wallet.switching_wallet":"Switching Wallet …","auth.wallet.connect":"Connect Wallet","auth.wallet.connect_long":"Connect Your Wallet to Get Started","auth.wallet.sign_subtitle":"Connect Your Wallet to Continue","auth.wallet.disconnect":"Disconnect Wallet","auth.wallet.install":"Install MetaMask","auth.wallet.install_long":"Install MetaMask to Get Started","auth.wallet.sign":"Sign Message","auth.wallet.sign_message":"Welcome to Dashbrd. In order to login, sign this message with your wallet. It doesn't cost you anything!\n\nSigning ID (you can ignore this): {{nonce}}","auth.wallet.connect_subtitle":"Click on the MetaMask icon in your browser to confirm the action and connect your wallet.","auth.wallet.requires_signature":"In order to prevent impersonation, we require a signature to perform this action. This signature is only a signed message and does not give any access to your wallet.","auth.errors.metamask.no_account":"No account found. Please connect your wallet and try again.","auth.errors.metamask.generic":"Connection attempt error. Please retry and follow the steps to connect your wallet.","auth.errors.metamask.invalid_network":"Please switch to Polygon or Ethereum Mainnet in your MetaMask plugin to connect to Dashbrd.","auth.errors.metamask.provider_missing":"You don't have MetaMask installed in your browser. Please install and try again.","auth.errors.metamask.user_rejected":"It looks like you cancelled signing of the authentication message. Please try again.","auth.errors.metamask.provider_not_set":"Ethereum provider is not set","auth.validation.wallet_login_failed":"There was a problem trying to verify your signature. Please try again.","auth.validation.invalid_address":"Your wallet address is invalid. Please try again.","auth.validation.invalid_signature":"Signature is invalid. Please try again.","auth.validation.invalid_network":"Please switch to Polygon or Ethereum Mainnet in your MetaMask plugin to connect to Dashbrd.","common.author":"Author","common.add":"Add","common.amount":"Amount","common.balance":"Balance","common.cancel":"Cancel","common.delete":"Delete","common.edit":"Edit","common.confirm":"Confirm","common.connect":"Connect","common.continue":"Continue","common.done":"Done","common.filter":"Filter","common.items":"Items","common.receive":"Receive","common.received":"Received","common.retry":"Retry","common.records":"Records","common.save":"Save","common.send":"Send","common.sent":"Sent","common.show":"Show","common.searching":"Searching...","common.other":"Other","common.owned":"Owned","common.token":"Token","common.tokens":"Tokens","common.wallet":"Wallet","common.pending":"Pending","common.publish":"Publish","common.published":"Published","common.empty":"Empty","common.your_address":"Your Address","common.warning":"Warning","common.my_address":"My Address","common.my_wallet":"My Wallet","common.my_collections":"My Collections","common.my_balance":"My Balance","common.na":"N/A","common.simple_plural_without_data":"One comment|Many comments","common.simple_plural_with_data":"{{count}} comment|{{count}} comments","common.advanced_plural_without_data":"{0} no comments yet|{1} 1 comment|[2,*] Many comments","common.advanced_plural_with_data":"{0} no comments yet|{1} 1 comment|[2,*] {{count}} comments","common.copy_clipboard":"Copy to Clipboard","common.copy":"Copy","common.download":"Download","common.zoom":"Zoom","common.my_collection":"My Collection","common.max":"Max","common.chain":"Chain","common.copied":"Copied!","common.coming_soon":"Coming Soon","common.more_details":"More Details","common.close":"Close","common.close_toast":"Close toast","common.loading":"Loading","common.price":"Price","common.articles":"Articles","common.most_popular":"Most Popular","common.market_cap":"Market Cap","common.volume":"Volume","common.volume_frequency":"Volume {{frequency}}","common.value":"Value","common.last_n_days":"Last {{count}} Days","common.details":"Details","common.view_all":"View All","common.view_more_on_polygonscan":"View More on Polygonscan","common.view_more_on_etherscan":"View More on Etherscan","common.view_nft_on_etherscan":"View NFT on Etherscan","common.view_nft_on_polygonscan":"View NFT on Polygonscan","common.view_nft_on_goerli_tesnet":"View NFT on Goerli Testnet Explorer","common.view_nft_on_mumbai_tesnet":"View NFT on Mumbai Testnet Explorer","common.polygonscan":"Polygonscan","common.etherscan":"Etherscan","common.featured":"Featured","common.floor_price":"Floor Price","common.floor":"Floor","common.supply":"Supply","common.owners":"Owners","common.created":"Created","common.nft":"NFT","common.collection":"Collection","common.collections":"Collections","common.gallery":"Gallery","common.basic_gallery":"Basic Gallery","common.gallery_name":"Gallery Name","common.create_gallery":"Create Gallery","common.external_link":"External Link","common.follow_link":"Follow Link","common.cover":"Cover","common.template":"Template","common.page":"Page","common.polygon":"Polygon","common.ethereum":"Ethereum","common.mumbai":"Mumbai","common.goerli":"Goerli","common.of":"of","common.pagination_input_placeholder":"Enter the page number","common.pagination_input_placeholder_mobile":"Page number","common.nft_count":"{0} {{count}} NFTs|{1} {{count}} NFT|[2,*] {{count}} NFTs","common.nft_gallery":"NFT Gallery","common.unable_to_retrieve_image":"Unable to retrieve your NFT image at this time","common.optional":"Optional","common.selected":"Selected","common.select":"Select","common.preview":"Preview","common.image_size_error":"Image size must not exceed 2MB","common.image_dimensions_error":"Image dimensions must exceed 287px x 190px","common.write_to_confirm":"Write {{word}} to confirm","common.n_hours":"{0} {{count}} hour|{1} {{count}} hour|[2,*] {{count}} hours","common.n_minutes":"{0} {{count}} minute|{1} {{count}} minute|[2,*] {{count}} minutes","common.report":"Report","common.nfts":"NFTs","common.n_nfts":"{0}NFTs|{1}NFT|[2,*]NFTs","common.n_collections":"{0}collections|{1}collection|[2,*]collections","common.back":"Back","common.back_to":"Back to","common.name":"Name","common.type":"Type","common.from":"From","common.to":"To","common.sale_price":"Sale Price","common.recent_activity":"Recent Activity","common.time":"Time","common.datetime.few_seconds_ago":"A few seconds ago","common.datetime.minutes_ago":"{0} Less than a minute ago|{1} A minute ago|[2,*] {{count}} minutes ago","common.datetime.hours_ago":"{0} Less than an hour ago|{1} An hour ago|[2,*] {{count}} hours ago","common.datetime.days_ago":"{0} Less than a day ago|{1} A day ago|[2,*] {{count}} days ago","common.datetime.weeks_ago":"{0} Less than a week ago|{1} A week ago|[2,*] {{count}} weeks ago","common.datetime.months_ago":"{0} Less than a month ago|{1} A month ago|[2,*] {{count}} months ago","common.datetime.years_ago":"{0} Less than a year ago|{1} A year ago|[2,*] {{count}} years ago","common.no_traits_found":"No traits found.","common.empty_transactions":"You don't have any transactions yet. Once transactions have been made, they will show up here.","common.error":"Error","common.refresh":"Refresh","common.refresh_metadata":"Refresh Metadata","common.refreshing_metadata":"Refreshing Metadata... Please check back later.","common.refreshing_activity":"Refreshing Activity... Please check back later.","common.pending_confirmation":"Pending Confirmation","common.confirmed_transaction":"Confirmed Transaction","common.transaction_error":"Transaction Error","common.transaction_error_description_first_part":"Your transaction encountered an error. View this transaction on","common.transaction_error_description_second_part":"for more details.","common.home":"Home","common.contact":"Contact","common.menu":"Menu","common.website":"Website","common.twitter":"Twitter","common.discord":"Discord","common.facebook":"Facebook","common.reddit":"Reddit","common.x":"X","common.sort":"Sort","common.drafts":"Drafts","common.draft":"Draft","common.delete_draft":"Delete Draft","common.share_on":"Share on {{platform}}","common.top":"Top","common.all_chains":"All chains","common.votes":"Votes","common.vol":"Vol","footer.copyright":"{{year}} © Dashbrd. All rights reserved.","footer.all_rights_reserved":"All rights reserved","footer.privacy_policy":"Privacy Policy","footer.terms_of_service":"Terms of Service","footer.powered_by":"Powered by","format.fiat":"{{ value, currency }}","format.number":"{{ value, number }}","metatags.home.title":"Dashbrd | Web3 Portfolio Management Made Simple","metatags.home.description":"Simplify your Web3 journey with Dashbrd. Manage your portfolio of tokens, NFTs, and other digital collectibles across the Ethereum and Polygon blockchains.","metatags.home.image":"/images/meta/home.png","metatags.error.title":"Error {{code}} | Dashbrd","metatags.wallet.title":"My Wallet | Dashbrd","metatags.galleries.title":"Top NFT Galleries | Dashbrd","metatags.galleries.image":"/images/meta/nft-galleries.png","metatags.galleries.description":"Explore user published NFT galleries to find custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.most_popular.title":"Most Popular Galleries | Dashbrd","metatags.galleries.most_popular.image":"/images/meta/most-popular-nft-galleries.png","metatags.galleries.most_popular.description":"Explore and discover Most Popular NFT Galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.newest.title":"Newest Galleries | Dashbrd","metatags.galleries.newest.image":"/images/meta/newest-nft-galleries.png","metatags.galleries.newest.description":"Explore and discover most recent NFT galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More","metatags.galleries.most_valuable.title":"Most Valuable Galleries | Dashbrd","metatags.galleries.most_valuable.image":"/images/meta/most-valuable-nft-galleries.png","metatags.galleries.most_valuable.description":"Explore and discover Most Valuable NFT Galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.view.title":"{{name}} | Dashbrd","metatags.galleries.view.description":"{{name}} | A Curated NFT Gallery at Dashbrd","metatags.galleries.view.image":"/images/meta/nft-gallery.png","metatags.my_galleries.title":"My Galleries | Dashbrd","metatags.my_galleries.title_draft":"My Draft Galleries | Dashbrd","metatags.my_galleries.create.title":"Create Gallery | Dashbrd","metatags.my_galleries.edit.title":"Edit {{name}} | Dashbrd","metatags.collections.title":"Collections | Dashbrd","metatags.collections.view.title":"{{name}} Collection | Dashbrd","metatags.collections.view.description":"Immerse yourself in the intricate details of {{name}} collection, featuring remarkable digital assets. Start your NFT journey today!","metatags.collections.view.image":"/images/meta/nft-collection.png","metatags.my-collections.title":"My Collections | Dashbrd","metatags.nfts.view.title":"{{nft}} NFT | Dashbrd","metatags.nfts.view.description":"Uncover the complete story of {{nft}} NFT from the {{collection}} collection, delving into its unique attributes and distinctive features.","metatags.nfts.view.image":"/images/meta/nft-details.png","metatags.settings.title":"Settings | Dashbrd","metatags.articles.title":"Articles | Dashbrd","metatags.articles.view.title":"{{title}} | Dashbrd","metatags.login.title":"Login | Dashbrd","metatags.privacy_policy.title":"Privacy Policy | Dashbrd","metatags.privacy_policy.description":"Dashbrd’s privacy policy outlines the information we collect and explains your choices surrounding how we use information about you.","metatags.terms_of_service.title":"Terms of Service | Dashbrd","metatags.terms_of_service.description":"These Terms of Service cover your use and access to services, products or websites of Dashbrd.","metatags.cookie_policy.title":"Cookie Policy | Dashbrd","metatags.cookie_policy.description":"Dashbrd uses cookies to make the website more user-friendly. Find out about the main types of cookies we use, and what we use them for.","metatags.welcome.title":"Welcome to Dashbrd | Web3 Simplified","pages.onboarding.title":"Get Started","pages.onboarding.heading":"Your monkeys were bored and ran off, we are trying to round them up.","pages.onboarding.message":"We are setting up your account. This process usually takes just a few minutes, but can take up to 15 minutes.","pages.error.heading":"Oops, something went wrong ...","pages.error.message":"Please try again or get in touch if the issue persists.","pages.maintenance.title":"Dashbrd is currently down for scheduled maintenance.","pages.maintenance.description":"We expect to be back soon. Thanks for your patience.","pages.dashboard.title":"My Wallet","pages.dashboard.breakdown.title":"Portfolio Breakdown","pages.dashboard.line_chart.data_error":"Could not load chart data","pages.articles.title":"Articles","pages.articles.featured_collections":"Featured Collections","pages.articles.placeholder_more_soon":"More Soon","pages.articles.no_articles":"No articles have been published yet. Please check back later!","pages.articles.header_title":"Explore our collection of","pages.articles.header_suffix_one":"published article","pages.articles.header_suffix_other":"published articles","pages.articles.audio_version":"Audio version","pages.articles.consists_of_collections":"{0} This article highlights {{count}} collections|{1} This article highlights {{count}} collection|[2,*] This article highlights {{count}} collections","pages.collections.title":"Collections","pages.collections.collections":"Collections","pages.collections.popular_collections":"Popular Collections","pages.collections.collection_value":"Collection Value","pages.collections.nfts_owned":"NFTs Owned","pages.collections.header_title":"You own <0>{{nftsCount}} {{nfts}} across <0>{{collectionsCount}} {{collections}}, worth about <0><1>{{worth}}","pages.collections.search_placeholder":"Search by Collection","pages.collections.properties":"Properties","pages.collections.collections_network":"Collections Network","pages.collections.property_search_placeholder":"Feature Search","pages.collections.floor_price":"Floor Price","pages.collections.value":"Value","pages.collections.rarity":"Rarity","pages.collections.report":"Report","pages.collections.hide_collection":"Hide Collection","pages.collections.unhide_collection":"Unhide Collection","pages.collections.no_collections":"You do not own any NFTs yet. Once you do they will be shown here.","pages.collections.all_collections_hidden":"You have hidden all your collections. Unhide and they will appear here.","pages.collections.about_collection":"About Collection","pages.collections.show_hidden":"Show Hidden","pages.collections.show_my_collection":"Show My Collection","pages.collections.owned":"Owned","pages.collections.activities.loading_activities":"We're fetching Activity for this NFT, please hang tight, this can take a while.","pages.collections.activities.loading_activities_collection":"We're fetching Activity for this collection, please hang tight, this can take a while.","pages.collections.activities.ignores_activities":"We don't support activity history for this collection yet.","pages.collections.activities.no_activity":"This collection does not have any activity yet.","pages.collections.activities.types.LABEL_MINT":"Mint","pages.collections.activities.types.LABEL_TRANSFER":"Transfer","pages.collections.activities.types.LABEL_SALE":"Sale","pages.collections.activities.types.LABEL_BURN":"Burn","pages.collections.collection_of_the_month.winners_month":"Winners: {{month}}","pages.collections.collection_of_the_month.vote_for_next_months_winners":"Vote now for next month's winners","pages.collections.collection_of_the_month.view_previous_winners":"View Previous Winners","pages.collections.collection_of_the_month.vote_success":"Your vote has been successfully submitted","pages.collections.articles.heading":"Latest NFT News & Features","pages.collections.articles.no_articles":"No articles have been linked to this collection as of now.","pages.collections.articles.no_articles_with_filters":"We could not find any articles matching your search criteria, please try again!","pages.collections.articles.search_placeholder":"Search in Articles","pages.collections.articles.sort_latest":"Latest","pages.collections.articles.sort_popularity":"Most Popular","pages.collections.search.loading_results":"Loading results...","pages.collections.search.no_results":"We could not find anything matching your search criteria, please try again!","pages.collections.search.no_results_with_filters":"We could not find anything matching your filters, please try again!","pages.collections.search.no_results_ownership":"You do not own any NFTs in this collection","pages.collections.search.error":"Could not load search results. Please try again later.","pages.collections.vote.vote_for_top_collection":"Vote for Top Collection of the Month","pages.collections.vote.vote":"Vote","pages.collections.vote.time_left":"Time Left","pages.collections.vote.or_nominate_collection":"Or nominate a collection","pages.collections.vote.vote_to_reveal":"Vote to reveal data","pages.collections.sorting.token_number":"Token Number","pages.collections.sorting.recently_received":"Recently Received","pages.collections.sorting.recently_created":"Recently Created","pages.collections.sorting.oldest_collection":"Oldest Collection","pages.collections.traits.description":"List of NFT traits by % of occurrence in the collection","pages.collections.traits.no_traits":"No Properties can be found for this NFT","pages.collections.menu.collection":"Collection","pages.collections.menu.articles":"Articles","pages.collections.menu.activity":"Activity","pages.collections.hidden_modal.collection_hidden":"Collection Hidden","pages.collections.hidden_modal.description":"This collection is currently set to Hidden. Are you sure you want to unhide this collection? You can\n reset the collection to hidden from the collection menu.","pages.collections.hidden_modal.unhide":"Unhide","pages.collections.hidden_modal.error":"Something went wrong. Please try again.","pages.collections.external_modal.you_wish_continue":"You are about to leave Dashbrd to an external website. Dashbrd has no control over the content of\n this site. Are you sure you wish to continue?","pages.collections.external_modal.not_show":"Do not show this message again.","pages.collections.refresh.title":"Refresh your collection","pages.collections.refresh.notice":"You can refresh data every 15 minutes.","pages.collections.refresh.notice_wait":"Please wait. You can refresh data every 15 minutes.","pages.collections.refresh.toast":"We're updating information for your collection.","pages.collections.featured.title":"Featured Collections","pages.collections.featured.button":"Explore Collection","pages.collections.footer.heading_broken.0":"Connect with MetaMask","pages.collections.footer.heading_broken.1":"& Manage Your Collection","pages.collections.footer.subtitle":"Explore, Filter, & Share your favorite NFTs with Dashbrd.","pages.collections.footer.button":"Manage Collections","pages.nfts.nft":"nft","pages.nfts.about_nft":"About NFT","pages.nfts.owned_by":"Owned by","pages.nfts.collection_image":"collection image","pages.nfts.menu.properties":"Properties","pages.nfts.menu.activity":"Activity","pages.reports.title":"Submit a Report","pages.reports.description":"Thanks for looking out by reporting things that break the rules. Let us know what's happening and we'll receive the report.","pages.reports.success":"Thank you for your report. We'll review it and see if it breaks our ToS.","pages.reports.failed":"Something went wrong. Please try again.","pages.reports.throttle":"You have made too many requests. Please wait {{time}} before reporting again.","pages.reports.reported":"You have already reported this {{model}}.","pages.reports.reasons.spam":"Spam","pages.reports.reasons.violence":"Promoting Violence","pages.reports.reasons.hate":"Hate","pages.reports.reasons.inappropriate_content":"Inappropriate Content","pages.reports.reasons.impersonation":"Impersonation","pages.reports.reasons.trademark":"Trademark or Copyright","pages.reports.reasons.selfharm":"Self-Harm","pages.reports.reasons.harassment":"Harassment","pages.galleries.title":"Galleries","pages.galleries.empty_title":"No galleries have been published yet. Once they do they will appear here.","pages.galleries.search.loading_results":"Loading results...","pages.galleries.search.no_results":"We could not find anything matching your search criteria, please try again!","pages.galleries.search.placeholder":"Search by name or curator address","pages.galleries.search.placeholder_nfts":"Search by NFTs","pages.galleries.search.error":"Could not load search results. Please try again later.","pages.galleries.my_galleries.title":"My Galleries","pages.galleries.my_galleries.subtitle":"Manage your galleries","pages.galleries.my_galleries.new_gallery":"New Gallery","pages.galleries.my_galleries.no_galleries":"You have not created any galleries yet. To create a gallery, click on the \"Create Gallery\" button.","pages.galleries.my_galleries.no_available_collections":"You have hidden all your collections. If you want to create a gallery, make sure you have at least 1 collection available.","pages.galleries.my_galleries.no_draft_galleries":"You have no draft galleries yet. To create a gallery, click on the \"Create Gallery\" button.","pages.galleries.my_galleries.succesfully_deleted":"Gallery has been successfully removed","pages.galleries.my_galleries.draft_succesfully_deleted":"Draft has been successfully removed","pages.galleries.my_galleries.successfully_created":"Gallery has been successfully created","pages.galleries.my_galleries.successfully_updated":"Gallery has been successfully updated","pages.galleries.my_galleries.new_gallery_no_nfts":"Creating a Gallery requires you to own an NFT.","pages.galleries.my_galleries.new_gallery_all_collections_hidden":"Creating a Gallery requires you to have at least 1 collection available.","pages.galleries.my_galleries.delete_modal.title":"Delete Draft","pages.galleries.my_galleries.delete_modal.text":"Are you sure you want to delete the draft? Everything you've done will be deleted and you won't be able to get it back.","pages.galleries.my_galleries.nfts_no_longer_owned":"NFTs no longer owned by this wallet have been removed from the draft”","pages.galleries.copy_gallery_link":"Copy Gallery Link","pages.galleries.my_nfts":"My NFTs","pages.galleries.show_hidden_collections":"Show hidden collections","pages.galleries.value":"Value","pages.galleries.floor_price":"Floor Price","pages.galleries.nfts":"NFTs","pages.galleries.collections":"Collections","pages.galleries.galleries_count_simple":"{0} galleries|{1} gallery|[2,*] galleries","pages.galleries.galleries_count":"{0} {{count}} Galleries|{1} {{count}} Gallery|[2,*] {{count}} Galleries","pages.galleries.collections_count_simple":"{0} collections|{1} collection|[2,*] collections","pages.galleries.collections_count":"{0} {{count}} Collections|{1} {{count}} Collection|[2,*] {{count}} Collections","pages.galleries.nfts_count_simple":"{0} NFTs|{1} NFT|[2,*] NFTs","pages.galleries.nfts_count":"{0} {{count}} NFTs|{1} {{count}} NFT|[2,*] {{count}} NFTs","pages.galleries.users_count_simple":"{0} users|{1} user|[2,*] users","pages.galleries.users_count":"{0} {{count}} Users|{1} {{count}} User|[2,*] {{count}} Users","pages.galleries.featuring":"Featuring","pages.galleries.curated_by":"Curated by","pages.galleries.worth_about":"Worth About","pages.galleries.valued_at":"valued at","pages.galleries.from":"From","pages.galleries.most_popular_galleries":"Most Popular Galleries","pages.galleries.newest_galleries":"Newest Galleries","pages.galleries.most_valuable_galleries":"Most Valuable Galleries","pages.galleries.most_popular":"Most Popular","pages.galleries.newest":"Newest","pages.galleries.most_valuable":"Most Valuable","pages.galleries.create.search_by_nfts":"Search by NFTs","pages.galleries.create.input_placeholder":"Enter gallery name","pages.galleries.create.title_too_long":"Gallery name must not exceed {{max}} characters.","pages.galleries.create.already_selected_nft":"NFT already exists in this gallery","pages.galleries.create.nft_missing_image":"Only NFTs with images can be added to galleries","pages.galleries.create.nft_gallery_limit":"You can only add 16 NFTs per gallery","pages.galleries.create.gallery_cover":"Gallery Cover","pages.galleries.create.gallery_cover_description":"The cover is used for the card on the gallery list page. While the cover is not a requirement it will allow you to add personality and stand out from the crowd.","pages.galleries.create.gallery_cover_information":"Image dimensions must be at least 287px x 190px, with a max size of 2 MB (JPG, PNG or GIF)","pages.galleries.create.no_results":"We could not find anything matching your search criteria, please try again!","pages.galleries.create.templates.cover":"Cover","pages.galleries.create.templates.template":"Template","pages.galleries.create.templates.select":"Select Gallery Template","pages.galleries.create.templates.basic":"Basic Gallery","pages.galleries.create.templates.coming_soon":"More Coming Soon","pages.galleries.create.load_more_collections_one":"Load {{count}} More Collection","pages.galleries.create.load_more_collections_other":"Load {{count}} More Collections","pages.galleries.create.load_more_nfts":"Load More NFTs","pages.galleries.create.can_purchase":"You can purchase NFTs with these top NFT Marketplaces:","pages.galleries.create.must_own_one_nft":"You must own at least one (1) NFT in order to create a gallery.","pages.galleries.create.back_to_galleries":"Back to Galleries","pages.galleries.create.draft_saved":"Draft Saved","pages.galleries.create.saving_to_draft":"Saving to draft","pages.galleries.create.drafts_limit_modal_title":"Draft Gallery Limit","pages.galleries.create.drafts_limit_modal_message":"You’ve hit your limit for draft galleries. While you can still make new galleries and publish them, they won’t be saved as drafts. To Free up space, you can either delete existing drafts or publish them.","pages.galleries.create.drafts_limit_modal_cancel":"Go to Drafts","pages.galleries.delete_modal.title":"Delete Gallery","pages.galleries.delete_modal.confirmation_text":"Are you sure you want to delete the gallery? Deleting a Gallery is permanent, all associated views and likes will be lost.","pages.galleries.consists_of_collections":"{0} This gallery consists of {{count}} collections|{1} This gallery consists of {{count}} collection|[2,*] This gallery consists of {{count}} collections","pages.galleries.guest_banner.title":"Craft the ultimate","pages.galleries.guest_banner.subtitle":"Pick your favorites, curate your gallery, & share it with the world.","pages.profile.title":"Profile","pages.token_panel.balance_tooltip":"Total percentage of the portfolio held in this token","pages.token_panel.insufficient_funds":"Insufficient Balance","pages.token_panel.error":"Dashbrd has failed to load token information. Please try again later.","pages.token_panel.failed_to_retrieve_transactions":"We were unable to fetch your transactions.","pages.token_panel.tabs.transaction_history":"Transaction History","pages.token_panel.tabs.history":"History","pages.token_panel.tabs.market_data":"Market Data","pages.token_panel.details.current_price":"Current Price","pages.token_panel.details.title":"Token Details","pages.token_panel.details.market_cap":"Market Cap","pages.token_panel.details.volume":"Daily Volume","pages.token_panel.details.supply":"Minted Supply","pages.token_panel.details.ath":"All-Time High","pages.token_panel.details.atl":"All-Time Low","pages.token_panel.chart.failed":"Dashbrd has failed to load chart information. Please try again later.","pages.transaction_details_panel.title":"Transaction Details","pages.transaction_details_panel.details.blockchain":"Blockchain","pages.transaction_details_panel.details.timestamp":"Timestamp","pages.transaction_details_panel.details.transaction_hash":"Transaction Hash","pages.transaction_details_panel.details.transaction_fee":"Transaction Fee","pages.transaction_details_panel.details.gas_price":"Gas Price","pages.transaction_details_panel.details.gas_used":"Gas Used","pages.transaction_details_panel.details.nonce":"Nonce","pages.send_receive_panel.send.labels.token_and_amount":"Token and Amount","pages.send_receive_panel.send.labels.destination_address":"Destination Address","pages.send_receive_panel.send.labels.projected_fee":"Projected Fee","pages.send_receive_panel.send.placeholders.enter_amount":"Enter Amount","pages.send_receive_panel.send.placeholders.insert_recipient_address":"Insert Recipient Address","pages.send_receive_panel.send.placeholders.projected_fee":"Projected Fee","pages.send_receive_panel.send.errors.amount":"Insufficient Funds: You do not have enough to cover the amount + fee.","pages.send_receive_panel.send.errors.destination":"Destination address is not correct. Check and input again.","pages.send_receive_panel.send.hints.token_price":"Token Price","pages.send_receive_panel.send.fees.Fast":"Fast","pages.send_receive_panel.send.fees.Avg":"Avg","pages.send_receive_panel.send.fees.Slow":"Slow","pages.send_receive_panel.send.search_dropdown.placeholder":"Search token","pages.send_receive_panel.send.search_dropdown.no_results":"No Results","pages.send_receive_panel.send.search_dropdown.error":"Error occurred while searching tokens.","pages.send_receive_panel.send.transaction_time":"Transaction Time: ~{{ time }} minutes","pages.send_receive_panel.send.from":"From","pages.send_receive_panel.send.to":"To","pages.send_receive_panel.send.amount":"Amount","pages.send_receive_panel.send.fee":"Fee","pages.send_receive_panel.send.total_amount":"Total Amount","pages.send_receive_panel.send.waiting_message":"Review and verify the information on your MetaMask. Sign to send the transaction.","pages.send_receive_panel.send.waiting_spinner_text":"Waiting for confirmation...","pages.send_receive_panel.send.failed_message":"It looks like something went wrong while sending your transaction. Press 'Retry' to make another attempt.","pages.send_receive_panel.receive.alert":"Send only Polygon or Ethereum Network compatible tokens to this address or you could permanently lose your funds!","pages.settings.title":"Settings","pages.settings.sidebar.general":"General","pages.settings.sidebar.notifications":"Notifications","pages.settings.sidebar.session_history":"Sessions History","pages.settings.general.title":"Settings","pages.settings.general.subtitle":"Customize your App Experience","pages.settings.general.currency":"Currency","pages.settings.general.currency_subtitle":"Select your default currency which will be used throughout the app.","pages.settings.general.time_date":"Time & Date","pages.settings.general.time_date_subtitle":"Select how you want time and date be shown inside app.","pages.settings.general.date_format":"Date Format","pages.settings.general.time_format":"Time Format","pages.settings.general.timezone":"Timezone","pages.settings.general.set_defaults":"Set Defaults","pages.settings.general.set_defaults_content":"Reverting to the default settings will remove any customizations previously made. Are you sure?","pages.settings.general.save":"Save Settings","pages.settings.general.saved":"Your settings have been successfully saved","pages.wallet.title":"Wallet","pages.privacy_policy.title":"Privacy Policy","pages.terms_of_service.title":"Terms of Service","pagination.previous":"« Previous","pagination.next":"Next »","passwords.reset":"Your password has been reset!","passwords.sent":"We have emailed your password reset link!","passwords.throttled":"Please wait before retrying.","passwords.token":"This password reset token is invalid.","passwords.user":"We can't find a user with that email address.","urls.landing":"https://dashbrd.com","urls.cookie_policy":"https://dashbrd.com/cookie-policy","urls.privacy_policy":"https://dashbrd.com/privacy-policy","urls.terms_of_service":"https://dashbrd.com/terms-of-service","urls.twitter":"https://x.com/DashbrdApp","urls.discord":"https://discord.gg/MJyWKkCJ5k","urls.github":"https://github.com/ArdentHQ/dashbrd","urls.coingecko":"https://www.coingecko.com","urls.etherscan":"https://etherscan.io","urls.polygonscan":"https://polygonscan.com","urls.alchemy":"https://www.alchemy.com","urls.moralis":"https://moralis.io","urls.mnemonic":"https://www.mnemonichq.com","urls.opensea":"https://opensea.io/","urls.explorers.etherscan.token_transactions":"https://etherscan.io/token/{{token}}?a={{address}}","urls.explorers.etherscan.addresses":"https://etherscan.io/address/{{address}}","urls.explorers.etherscan.transactions":"https://etherscan.io/tx/{{id}}","urls.explorers.etherscan.nft":"https://etherscan.io/nft/{{address}}/{{nftId}}","urls.explorers.polygonscan.token_transactions":"https://polygonscan.com/token/{{token}}?a={{address}}","urls.explorers.polygonscan.addresses":"https://polygonscan.com/address/{{address}}","urls.explorers.polygonscan.transactions":"https://polygonscan.com/tx/{{id}}","urls.explorers.polygonscan.nft":"https://polygonscan.com/nft/{{address}}/{{nftId}}","urls.explorers.mumbai.token_transactions":"https://mumbai.polygonscan.com/token/{{token}}?a={{address}}","urls.explorers.mumbai.addresses":"https://mumbai.polygonscan.com/address/{{address}}","urls.explorers.mumbai.transactions":"https://mumbai.polygonscan.com/tx/{{id}}","urls.explorers.mumbai.nft":"https://mumbai.polygonscan.com/nft/{{address}}/{{nftId}}","urls.explorers.goerli.token_transactions":"https://goerli.etherscan.io/token/{{token}}?a={{address}}","urls.explorers.goerli.addresses":"https://goerli.etherscan.io/address/{{address}}","urls.explorers.goerli.transactions":"https://goerli.etherscan.io/tx/{{id}}","urls.explorers.goerli.nft":"https://goerli.etherscan.io/nft/{{address}}/{{nftId}}","urls.marketplaces.opensea.collection":"https://opensea.io/assets/{{network}}/{{address}}","urls.marketplaces.opensea.nft":"https://opensea.io/assets/{{network}}/{{address}}/{{nftId}}","urls.marketplaces.rarible.collection":"https://rarible.com/collection/{{address}}/items","urls.marketplaces.rarible.nft":"https://rarible.com/token/{{address}}:{{nftId}}","urls.marketplaces.blur.collection":"https://blur.io/collection/{{address}}","urls.marketplaces.blur.nft":"https://blur.io/asset/{{address}}/{{nftId}}","urls.marketplaces.looksrare.collection":"https://looksrare.org/collections/{{address}}","urls.marketplaces.looksrare.nft":"https://looksrare.org/collections/{{address}}/{{nftId}}","validation.accepted":"The {{attribute}} must be accepted.","validation.accepted_if":"The {{attribute}} must be accepted when {{other}} is {{value}}.","validation.active_url":"The {{attribute}} is not a valid URL.","validation.after":"The {{attribute}} must be a date after {{date}}.","validation.after_or_equal":"The {{attribute}} must be a date after or equal to {{date}}.","validation.alpha":"The {{attribute}} must only contain letters.","validation.alpha_dash":"The {{attribute}} must only contain letters, numbers, dashes and underscores.","validation.alpha_num":"The {{attribute}} must only contain letters and numbers.","validation.array":"The {{attribute}} must be an array.","validation.ascii":"The {{attribute}} must only contain single-byte alphanumeric characters and symbols.","validation.before":"The {{attribute}} must be a date before {{date}}.","validation.before_or_equal":"The {{attribute}} must be a date before or equal to {{date}}.","validation.between.array":"The {{attribute}} must have between {{min}} and {{max}} items.","validation.between.file":"The {{attribute}} must be between {{min}} and {{max}} kilobytes.","validation.between.numeric":"The {{attribute}} must be between {{min}} and {{max}}.","validation.between.string":"The {{attribute}} must be between {{min}} and {{max}} characters.","validation.boolean":"The {{attribute}} field must be true or false.","validation.confirmed":"The {{attribute}} confirmation does not match.","validation.current_password":"The password is incorrect.","validation.date":"The {{attribute}} is not a valid date.","validation.date_equals":"The {{attribute}} must be a date equal to {{date}}.","validation.date_format":"The {{attribute}} does not match the format {{format}}.","validation.decimal":"The {{attribute}} must have {{decimal}} decimal places.","validation.declined":"The {{attribute}} must be declined.","validation.declined_if":"The {{attribute}} must be declined when {{other}} is {{value}}.","validation.different":"The {{attribute}} and {{other}} must be different.","validation.digits":"The {{attribute}} must be {{digits}} digits.","validation.digits_between":"The {{attribute}} must be between {{min}} and {{max}} digits.","validation.dimensions":"The {{attribute}} has invalid image dimensions.","validation.distinct":"The {{attribute}} field has a duplicate value.","validation.doesnt_end_with":"The {{attribute}} may not end with one of the following: {{values}}.","validation.doesnt_start_with":"The {{attribute}} may not start with one of the following: {{values}}.","validation.email":"The {{attribute}} must be a valid email address.","validation.ends_with":"The {{attribute}} must end with one of the following: {{values}}.","validation.enum":"The selected {{attribute}} is invalid.","validation.exists":"The selected {{attribute}} is invalid.","validation.file":"The {{attribute}} must be a file.","validation.filled":"The {{attribute}} field must have a value.","validation.gt.array":"The {{attribute}} must have more than {{value}} items.","validation.gt.file":"The {{attribute}} must be greater than {{value}} kilobytes.","validation.gt.numeric":"The {{attribute}} must be greater than {{value}}.","validation.gt.string":"The {{attribute}} must be greater than {{value}} characters.","validation.gte.array":"The {{attribute}} must have {{value}} items or more.","validation.gte.file":"The {{attribute}} must be greater than or equal to {{value}} kilobytes.","validation.gte.numeric":"The {{attribute}} must be greater than or equal to {{value}}.","validation.gte.string":"The {{attribute}} must be greater than or equal to {{value}} characters.","validation.image":"The {{attribute}} must be an image.","validation.in":"The selected {{attribute}} is invalid.","validation.in_array":"The {{attribute}} field does not exist in {{other}}.","validation.integer":"The {{attribute}} must be an integer.","validation.ip":"The {{attribute}} must be a valid IP address.","validation.ipv4":"The {{attribute}} must be a valid IPv4 address.","validation.ipv6":"The {{attribute}} must be a valid IPv6 address.","validation.json":"The {{attribute}} must be a valid JSON string.","validation.lowercase":"The {{attribute}} must be lowercase.","validation.lt.array":"The {{attribute}} must have less than {{value}} items.","validation.lt.file":"The {{attribute}} must be less than {{value}} kilobytes.","validation.lt.numeric":"The {{attribute}} must be less than {{value}}.","validation.lt.string":"The {{attribute}} must be less than {{value}} characters.","validation.lte.array":"The {{attribute}} must not have more than {{value}} items.","validation.lte.file":"The {{attribute}} must be less than or equal to {{value}} kilobytes.","validation.lte.numeric":"The {{attribute}} must be less than or equal to {{value}}.","validation.lte.string":"The {{attribute}} must be less than or equal to {{value}} characters.","validation.mac_address":"The {{attribute}} must be a valid MAC address.","validation.max.array":"The {{attribute}} must not have more than {{max}} items.","validation.max.file":"The {{attribute}} must not be greater than {{max}} kilobytes.","validation.max.numeric":"The {{attribute}} must not be greater than {{max}}.","validation.max.string":"The {{attribute}} must not be greater than {{max}} characters.","validation.max_digits":"The {{attribute}} must not have more than {{max}} digits.","validation.mimes":"The {{attribute}} must be a file of type: {{values}}.","validation.mimetypes":"The {{attribute}} must be a file of type: {{values}}.","validation.min.array":"The {{attribute}} must have at least {{min}} items.","validation.min.file":"The {{attribute}} must be at least {{min}} kilobytes.","validation.min.numeric":"The {{attribute}} must be at least {{min}}.","validation.min.string":"The {{attribute}} must be at least {{min}} characters.","validation.min_digits":"The {{attribute}} must have at least {{min}} digits.","validation.missing":"The {{attribute}} field must be missing.","validation.missing_if":"The {{attribute}} field must be missing when {{other}} is {{value}}.","validation.missing_unless":"The {{attribute}} field must be missing unless {{other}} is {{value}}.","validation.missing_with":"The {{attribute}} field must be missing when {{values}} is present.","validation.missing_with_all":"The {{attribute}} field must be missing when {{values}} are present.","validation.multiple_of":"The {{attribute}} must be a multiple of {{value}}.","validation.not_in":"The selected {{attribute}} is invalid.","validation.not_regex":"The {{attribute}} format is invalid.","validation.numeric":"The {{attribute}} must be a number.","validation.password.letters":"The {{attribute}} must contain at least one letter.","validation.password.mixed":"The {{attribute}} must contain at least one uppercase and one lowercase letter.","validation.password.numbers":"The {{attribute}} must contain at least one number.","validation.password.symbols":"The {{attribute}} must contain at least one symbol.","validation.password.uncompromised":"The given {{attribute}} has appeared in a data leak. Please choose a different {{attribute}}.","validation.present":"The {{attribute}} field must be present.","validation.prohibited":"The {{attribute}} field is prohibited.","validation.prohibited_if":"The {{attribute}} field is prohibited when {{other}} is {{value}}.","validation.prohibited_unless":"The {{attribute}} field is prohibited unless {{other}} is in {{values}}.","validation.prohibits":"The {{attribute}} field prohibits {{other}} from being present.","validation.regex":"The {{attribute}} format is invalid.","validation.required":"The {{attribute}} field is required.","validation.required_array_keys":"The {{attribute}} field must contain entries for: {{values}}.","validation.required_if":"The {{attribute}} field is required when {{other}} is {{value}}.","validation.required_if_accepted":"The {{attribute}} field is required when {{other}} is accepted.","validation.required_unless":"The {{attribute}} field is required unless {{other}} is in {{values}}.","validation.required_with":"The {{attribute}} field is required when {{values}} is present.","validation.required_with_all":"The {{attribute}} field is required when {{values}} are present.","validation.required_without":"The {{attribute}} field is required when {{values}} is not present.","validation.required_without_all":"The {{attribute}} field is required when none of {{values}} are present.","validation.same":"The {{attribute}} and {{other}} must match.","validation.size.array":"The {{attribute}} must contain {{size}} items.","validation.size.file":"The {{attribute}} must be {{size}} kilobytes.","validation.size.numeric":"The {{attribute}} must be {{size}}.","validation.size.string":"The {{attribute}} must be {{size}} characters.","validation.starts_with":"The {{attribute}} must start with one of the following: {{values}}.","validation.string":"The {{attribute}} must be a string.","validation.timezone":"The {{attribute}} must be a valid timezone.","validation.unique":"The {{attribute}} has already been taken.","validation.uploaded":"The {{attribute}} failed to upload.","validation.uppercase":"The {{attribute}} must be uppercase.","validation.url":"The {{attribute}} must be a valid URL.","validation.ulid":"The {{attribute}} must be a valid ULID.","validation.uuid":"The {{attribute}} must be a valid UUID.","validation.custom.attribute-name.rule-name":"custom-message","validation.unsupported_currency_code":"The currency code you provided is invalid or not supported.","validation.unsupported_period":"The period you provided is invalid or not supported.","validation.unsupported_token_symbol":"The token symbol you provided is invalid or not supported.","validation.gallery_title_required":"Gallery name is required.","validation.gallery_title_max_characters":"The gallery name should not exceed 50 characters.","validation.gallery_title_invalid":"The gallery name is invalid.","validation.nfts_required":"Please add at least one NFT.","validation.nfts_max_size":"Galleries can contain no more than {{limit}} NFTs","validation.invalid_nfts":"The NFT in position {{position}} is invalid, please select another one.","validation.invalid_cover":"You have selected an invalid cover image, please try another one."} \ No newline at end of file +{"auth.welcome":"Welcome to Dashbrd","auth.logged_in":"You're logged in!","auth.log_out":"Log out","auth.failed":"These credentials do not match our records.","auth.session_timeout":"Your session has timed out. Please refresh the page and try connecting your account again.","auth.session_timeout_modal":"Seems like your session has timed out. Please connnect your wallet again.","auth.password":"The provided password is incorrect.","auth.throttle":"Too many login attempts. Please try again in {{seconds}} seconds.","auth.wallet.connecting":"Connecting …","auth.wallet.waiting_for_signature":"Waiting for Signature …","auth.wallet.switching_wallet":"Switching Wallet …","auth.wallet.connect":"Connect Wallet","auth.wallet.connect_long":"Connect Your Wallet to Get Started","auth.wallet.sign_subtitle":"Connect Your Wallet to Continue","auth.wallet.disconnect":"Disconnect Wallet","auth.wallet.install":"Install MetaMask","auth.wallet.install_long":"Install MetaMask to Get Started","auth.wallet.sign":"Sign Message","auth.wallet.sign_message":"Welcome to Dashbrd. In order to login, sign this message with your wallet. It doesn't cost you anything!\n\nSigning ID (you can ignore this): {{nonce}}","auth.wallet.connect_subtitle":"Click on the MetaMask icon in your browser to confirm the action and connect your wallet.","auth.wallet.requires_signature":"In order to prevent impersonation, we require a signature to perform this action. This signature is only a signed message and does not give any access to your wallet.","auth.errors.metamask.no_account":"No account found. Please connect your wallet and try again.","auth.errors.metamask.generic":"Connection attempt error. Please retry and follow the steps to connect your wallet.","auth.errors.metamask.invalid_network":"Please switch to Polygon or Ethereum Mainnet in your MetaMask plugin to connect to Dashbrd.","auth.errors.metamask.provider_missing":"You don't have MetaMask installed in your browser. Please install and try again.","auth.errors.metamask.user_rejected":"It looks like you cancelled signing of the authentication message. Please try again.","auth.errors.metamask.provider_not_set":"Ethereum provider is not set","auth.validation.wallet_login_failed":"There was a problem trying to verify your signature. Please try again.","auth.validation.invalid_address":"Your wallet address is invalid. Please try again.","auth.validation.invalid_signature":"Signature is invalid. Please try again.","auth.validation.invalid_network":"Please switch to Polygon or Ethereum Mainnet in your MetaMask plugin to connect to Dashbrd.","common.author":"Author","common.add":"Add","common.amount":"Amount","common.balance":"Balance","common.cancel":"Cancel","common.delete":"Delete","common.edit":"Edit","common.confirm":"Confirm","common.connect":"Connect","common.continue":"Continue","common.done":"Done","common.filter":"Filter","common.items":"Items","common.receive":"Receive","common.received":"Received","common.retry":"Retry","common.records":"Records","common.save":"Save","common.send":"Send","common.sent":"Sent","common.show":"Show","common.searching":"Searching...","common.other":"Other","common.owned":"Owned","common.token":"Token","common.tokens":"Tokens","common.wallet":"Wallet","common.pending":"Pending","common.publish":"Publish","common.published":"Published","common.empty":"Empty","common.your_address":"Your Address","common.warning":"Warning","common.my_address":"My Address","common.my_wallet":"My Wallet","common.my_collections":"My Collections","common.my_balance":"My Balance","common.na":"N/A","common.simple_plural_without_data":"One comment|Many comments","common.simple_plural_with_data":"{{count}} comment|{{count}} comments","common.advanced_plural_without_data":"{0} no comments yet|{1} 1 comment|[2,*] Many comments","common.advanced_plural_with_data":"{0} no comments yet|{1} 1 comment|[2,*] {{count}} comments","common.copy_clipboard":"Copy to Clipboard","common.copy":"Copy","common.download":"Download","common.zoom":"Zoom","common.my_collection":"My Collection","common.max":"Max","common.chain":"Chain","common.copied":"Copied!","common.coming_soon":"Coming Soon","common.more_details":"More Details","common.close":"Close","common.close_toast":"Close toast","common.loading":"Loading","common.price":"Price","common.articles":"Articles","common.most_popular":"Most Popular","common.market_cap":"Market Cap","common.volume":"Volume","common.volume_frequency":"Volume {{frequency}}","common.value":"Value","common.last_n_days":"Last {{count}} Days","common.details":"Details","common.view_all":"View All","common.view_more_on_polygonscan":"View More on Polygonscan","common.view_more_on_etherscan":"View More on Etherscan","common.view_nft_on_etherscan":"View NFT on Etherscan","common.view_nft_on_polygonscan":"View NFT on Polygonscan","common.view_nft_on_goerli_tesnet":"View NFT on Goerli Testnet Explorer","common.view_nft_on_mumbai_tesnet":"View NFT on Mumbai Testnet Explorer","common.polygonscan":"Polygonscan","common.etherscan":"Etherscan","common.featured":"Featured","common.floor_price":"Floor Price","common.floor":"Floor","common.supply":"Supply","common.owners":"Owners","common.created":"Created","common.nft":"NFT","common.collection":"Collection","common.collections":"Collections","common.gallery":"Gallery","common.basic_gallery":"Basic Gallery","common.gallery_name":"Gallery Name","common.create_gallery":"Create Gallery","common.external_link":"External Link","common.follow_link":"Follow Link","common.cover":"Cover","common.template":"Template","common.page":"Page","common.polygon":"Polygon","common.ethereum":"Ethereum","common.mumbai":"Mumbai","common.goerli":"Goerli","common.of":"of","common.pagination_input_placeholder":"Enter the page number","common.pagination_input_placeholder_mobile":"Page number","common.nft_count":"{0} {{count}} NFTs|{1} {{count}} NFT|[2,*] {{count}} NFTs","common.nft_gallery":"NFT Gallery","common.unable_to_retrieve_image":"Unable to retrieve your NFT image at this time","common.optional":"Optional","common.selected":"Selected","common.select":"Select","common.preview":"Preview","common.image_size_error":"Image size must not exceed 2MB","common.image_dimensions_error":"Image dimensions must exceed 287px x 190px","common.write_to_confirm":"Write {{word}} to confirm","common.n_hours":"{0} {{count}} hour|{1} {{count}} hour|[2,*] {{count}} hours","common.n_minutes":"{0} {{count}} minute|{1} {{count}} minute|[2,*] {{count}} minutes","common.report":"Report","common.nfts":"NFTs","common.n_nfts":"{0}NFTs|{1}NFT|[2,*]NFTs","common.n_collections":"{0}collections|{1}collection|[2,*]collections","common.back":"Back","common.back_to":"Back to","common.name":"Name","common.type":"Type","common.from":"From","common.to":"To","common.sale_price":"Sale Price","common.recent_activity":"Recent Activity","common.time":"Time","common.datetime.few_seconds_ago":"A few seconds ago","common.datetime.minutes_ago":"{0} Less than a minute ago|{1} A minute ago|[2,*] {{count}} minutes ago","common.datetime.hours_ago":"{0} Less than an hour ago|{1} An hour ago|[2,*] {{count}} hours ago","common.datetime.days_ago":"{0} Less than a day ago|{1} A day ago|[2,*] {{count}} days ago","common.datetime.weeks_ago":"{0} Less than a week ago|{1} A week ago|[2,*] {{count}} weeks ago","common.datetime.months_ago":"{0} Less than a month ago|{1} A month ago|[2,*] {{count}} months ago","common.datetime.years_ago":"{0} Less than a year ago|{1} A year ago|[2,*] {{count}} years ago","common.no_traits_found":"No traits found.","common.empty_transactions":"You don't have any transactions yet. Once transactions have been made, they will show up here.","common.error":"Error","common.refresh":"Refresh","common.refresh_metadata":"Refresh Metadata","common.refreshing_metadata":"Refreshing Metadata... Please check back later.","common.refreshing_activity":"Refreshing Activity... Please check back later.","common.pending_confirmation":"Pending Confirmation","common.confirmed_transaction":"Confirmed Transaction","common.transaction_error":"Transaction Error","common.transaction_error_description_first_part":"Your transaction encountered an error. View this transaction on","common.transaction_error_description_second_part":"for more details.","common.home":"Home","common.contact":"Contact","common.menu":"Menu","common.website":"Website","common.twitter":"Twitter","common.discord":"Discord","common.facebook":"Facebook","common.reddit":"Reddit","common.x":"X","common.sort":"Sort","common.drafts":"Drafts","common.draft":"Draft","common.delete_draft":"Delete Draft","common.share_on":"Share on {{platform}}","common.top":"Top","common.all_chains":"All chains","common.votes":"Votes","common.vol":"Vol","footer.copyright":"{{year}} © Dashbrd. All rights reserved.","footer.all_rights_reserved":"All rights reserved","footer.privacy_policy":"Privacy Policy","footer.terms_of_service":"Terms of Service","footer.powered_by":"Powered by","format.fiat":"{{ value, currency }}","format.number":"{{ value, number }}","metatags.home.title":"Dashbrd | Web3 Portfolio Management Made Simple","metatags.home.description":"Simplify your Web3 journey with Dashbrd. Manage your portfolio of tokens, NFTs, and other digital collectibles across the Ethereum and Polygon blockchains.","metatags.home.image":"/images/meta/home.png","metatags.error.title":"Error {{code}} | Dashbrd","metatags.wallet.title":"My Wallet | Dashbrd","metatags.galleries.title":"Top NFT Galleries | Dashbrd","metatags.galleries.image":"/images/meta/nft-galleries.png","metatags.galleries.description":"Explore user published NFT galleries to find custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.most_popular.title":"Most Popular Galleries | Dashbrd","metatags.galleries.most_popular.image":"/images/meta/most-popular-nft-galleries.png","metatags.galleries.most_popular.description":"Explore and discover Most Popular NFT Galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.newest.title":"Newest Galleries | Dashbrd","metatags.galleries.newest.image":"/images/meta/newest-nft-galleries.png","metatags.galleries.newest.description":"Explore and discover most recent NFT galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More","metatags.galleries.most_valuable.title":"Most Valuable Galleries | Dashbrd","metatags.galleries.most_valuable.image":"/images/meta/most-valuable-nft-galleries.png","metatags.galleries.most_valuable.description":"Explore and discover Most Valuable NFT Galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.view.title":"{{name}} | Dashbrd","metatags.galleries.view.description":"{{name}} | A Curated NFT Gallery at Dashbrd","metatags.galleries.view.image":"/images/meta/nft-gallery.png","metatags.my_galleries.title":"My Galleries | Dashbrd","metatags.my_galleries.title_draft":"My Draft Galleries | Dashbrd","metatags.my_galleries.create.title":"Create Gallery | Dashbrd","metatags.my_galleries.edit.title":"Edit {{name}} | Dashbrd","metatags.collections.title":"Collections | Dashbrd","metatags.collections.view.title":"{{name}} Collection | Dashbrd","metatags.collections.view.description":"Immerse yourself in the intricate details of {{name}} collection, featuring remarkable digital assets. Start your NFT journey today!","metatags.collections.view.image":"/images/meta/nft-collection.png","metatags.my-collections.title":"My Collections | Dashbrd","metatags.nfts.view.title":"{{nft}} NFT | Dashbrd","metatags.nfts.view.description":"Uncover the complete story of {{nft}} NFT from the {{collection}} collection, delving into its unique attributes and distinctive features.","metatags.nfts.view.image":"/images/meta/nft-details.png","metatags.settings.title":"Settings | Dashbrd","metatags.articles.title":"Articles | Dashbrd","metatags.articles.view.title":"{{title}} | Dashbrd","metatags.login.title":"Login | Dashbrd","metatags.privacy_policy.title":"Privacy Policy | Dashbrd","metatags.privacy_policy.description":"Dashbrd’s privacy policy outlines the information we collect and explains your choices surrounding how we use information about you.","metatags.terms_of_service.title":"Terms of Service | Dashbrd","metatags.terms_of_service.description":"These Terms of Service cover your use and access to services, products or websites of Dashbrd.","metatags.cookie_policy.title":"Cookie Policy | Dashbrd","metatags.cookie_policy.description":"Dashbrd uses cookies to make the website more user-friendly. Find out about the main types of cookies we use, and what we use them for.","metatags.welcome.title":"Welcome to Dashbrd | Web3 Simplified","pages.onboarding.title":"Get Started","pages.onboarding.heading":"Your monkeys were bored and ran off, we are trying to round them up.","pages.onboarding.message":"We are setting up your account. This process usually takes just a few minutes, but can take up to 15 minutes.","pages.error.heading":"Oops, something went wrong ...","pages.error.message":"Please try again or get in touch if the issue persists.","pages.maintenance.title":"Dashbrd is currently down for scheduled maintenance.","pages.maintenance.description":"We expect to be back soon. Thanks for your patience.","pages.dashboard.title":"My Wallet","pages.dashboard.breakdown.title":"Portfolio Breakdown","pages.dashboard.line_chart.data_error":"Could not load chart data","pages.articles.title":"Articles","pages.articles.featured_collections":"Featured Collections","pages.articles.placeholder_more_soon":"More Soon","pages.articles.no_articles":"No articles have been published yet. Please check back later!","pages.articles.header_title":"Explore our collection of","pages.articles.header_suffix_one":"published article","pages.articles.header_suffix_other":"published articles","pages.articles.audio_version":"Audio version","pages.articles.consists_of_collections":"{0} This article highlights {{count}} collections|{1} This article highlights {{count}} collection|[2,*] This article highlights {{count}} collections","pages.collections.title":"Collections","pages.collections.collections":"Collections","pages.collections.popular_collections":"Popular Collections","pages.collections.collection_value":"Collection Value","pages.collections.nfts_owned":"NFTs Owned","pages.collections.header_title":"You own <0>{{nftsCount}} {{nfts}} across <0>{{collectionsCount}} {{collections}}, worth about <0><1>{{worth}}","pages.collections.search_placeholder":"Search by Collection","pages.collections.properties":"Properties","pages.collections.collections_network":"Collections Network","pages.collections.property_search_placeholder":"Feature Search","pages.collections.floor_price":"Floor Price","pages.collections.value":"Value","pages.collections.rarity":"Rarity","pages.collections.report":"Report","pages.collections.hide_collection":"Hide Collection","pages.collections.unhide_collection":"Unhide Collection","pages.collections.no_collections":"You do not own any NFTs yet. Once you do they will be shown here.","pages.collections.all_collections_hidden":"You have hidden all your collections. Unhide and they will appear here.","pages.collections.about_collection":"About Collection","pages.collections.show_hidden":"Show Hidden","pages.collections.show_my_collection":"Show My Collection","pages.collections.owned":"Owned","pages.collections.activities.loading_activities":"We're fetching Activity for this NFT, please hang tight, this can take a while.","pages.collections.activities.loading_activities_collection":"We're fetching Activity for this collection, please hang tight, this can take a while.","pages.collections.activities.ignores_activities":"We don't support activity history for this collection yet.","pages.collections.activities.no_activity":"This collection does not have any activity yet.","pages.collections.activities.types.LABEL_MINT":"Mint","pages.collections.activities.types.LABEL_TRANSFER":"Transfer","pages.collections.activities.types.LABEL_SALE":"Sale","pages.collections.activities.types.LABEL_BURN":"Burn","pages.collections.collection_of_the_month.winners_month":"Winners: {{month}}","pages.collections.collection_of_the_month.vote_for_next_months_winners":"Vote now for next month's winners","pages.collections.collection_of_the_month.view_previous_winners":"View Previous Winners","pages.collections.collection_of_the_month.vote_success":"Your vote has been successfully submitted","pages.collections.articles.heading":"Latest NFT News & Features","pages.collections.articles.no_articles":"No articles have been linked to this collection as of now.","pages.collections.articles.no_articles_with_filters":"We could not find any articles matching your search criteria, please try again!","pages.collections.articles.search_placeholder":"Search in Articles","pages.collections.articles.sort_latest":"Latest","pages.collections.articles.sort_popularity":"Most Popular","pages.collections.search.loading_results":"Loading results...","pages.collections.search.no_results":"We could not find anything matching your search criteria, please try again!","pages.collections.search.no_results_with_filters":"We could not find anything matching your filters, please try again!","pages.collections.search.no_results_ownership":"You do not own any NFTs in this collection","pages.collections.search.error":"Could not load search results. Please try again later.","pages.collections.vote.vote_for_top_collection":"Vote for Top Collection of the Month","pages.collections.vote.vote":"Vote","pages.collections.vote.time_left":"Time Left","pages.collections.vote.or_nominate_collection":"Or nominate a collection","pages.collections.vote.vote_to_reveal":"Vote to reveal data","pages.collections.vote.already_voted":"You’ve already nominated. Come back next month!","pages.collections.sorting.token_number":"Token Number","pages.collections.sorting.recently_received":"Recently Received","pages.collections.sorting.recently_created":"Recently Created","pages.collections.sorting.oldest_collection":"Oldest Collection","pages.collections.traits.description":"List of NFT traits by % of occurrence in the collection","pages.collections.traits.no_traits":"No Properties can be found for this NFT","pages.collections.menu.collection":"Collection","pages.collections.menu.articles":"Articles","pages.collections.menu.activity":"Activity","pages.collections.hidden_modal.collection_hidden":"Collection Hidden","pages.collections.hidden_modal.description":"This collection is currently set to Hidden. Are you sure you want to unhide this collection? You can\n reset the collection to hidden from the collection menu.","pages.collections.hidden_modal.unhide":"Unhide","pages.collections.hidden_modal.error":"Something went wrong. Please try again.","pages.collections.external_modal.you_wish_continue":"You are about to leave Dashbrd to an external website. Dashbrd has no control over the content of\n this site. Are you sure you wish to continue?","pages.collections.external_modal.not_show":"Do not show this message again.","pages.collections.refresh.title":"Refresh your collection","pages.collections.refresh.notice":"You can refresh data every 15 minutes.","pages.collections.refresh.notice_wait":"Please wait. You can refresh data every 15 minutes.","pages.collections.refresh.toast":"We're updating information for your collection.","pages.collections.featured.title":"Featured Collections","pages.collections.featured.button":"Explore Collection","pages.collections.footer.heading_broken.0":"Connect with MetaMask","pages.collections.footer.heading_broken.1":"& Manage Your Collection","pages.collections.footer.subtitle":"Explore, Filter, & Share your favorite NFTs with Dashbrd.","pages.collections.footer.button":"Manage Collections","pages.nfts.nft":"nft","pages.nfts.about_nft":"About NFT","pages.nfts.owned_by":"Owned by","pages.nfts.collection_image":"collection image","pages.nfts.menu.properties":"Properties","pages.nfts.menu.activity":"Activity","pages.reports.title":"Submit a Report","pages.reports.description":"Thanks for looking out by reporting things that break the rules. Let us know what's happening and we'll receive the report.","pages.reports.success":"Thank you for your report. We'll review it and see if it breaks our ToS.","pages.reports.failed":"Something went wrong. Please try again.","pages.reports.throttle":"You have made too many requests. Please wait {{time}} before reporting again.","pages.reports.reported":"You have already reported this {{model}}.","pages.reports.reasons.spam":"Spam","pages.reports.reasons.violence":"Promoting Violence","pages.reports.reasons.hate":"Hate","pages.reports.reasons.inappropriate_content":"Inappropriate Content","pages.reports.reasons.impersonation":"Impersonation","pages.reports.reasons.trademark":"Trademark or Copyright","pages.reports.reasons.selfharm":"Self-Harm","pages.reports.reasons.harassment":"Harassment","pages.galleries.title":"Galleries","pages.galleries.empty_title":"No galleries have been published yet. Once they do they will appear here.","pages.galleries.search.loading_results":"Loading results...","pages.galleries.search.no_results":"We could not find anything matching your search criteria, please try again!","pages.galleries.search.placeholder":"Search by name or curator address","pages.galleries.search.placeholder_nfts":"Search by NFTs","pages.galleries.search.error":"Could not load search results. Please try again later.","pages.galleries.my_galleries.title":"My Galleries","pages.galleries.my_galleries.subtitle":"Manage your galleries","pages.galleries.my_galleries.new_gallery":"New Gallery","pages.galleries.my_galleries.no_galleries":"You have not created any galleries yet. To create a gallery, click on the \"Create Gallery\" button.","pages.galleries.my_galleries.no_available_collections":"You have hidden all your collections. If you want to create a gallery, make sure you have at least 1 collection available.","pages.galleries.my_galleries.no_draft_galleries":"You have no draft galleries yet. To create a gallery, click on the \"Create Gallery\" button.","pages.galleries.my_galleries.succesfully_deleted":"Gallery has been successfully removed","pages.galleries.my_galleries.draft_succesfully_deleted":"Draft has been successfully removed","pages.galleries.my_galleries.successfully_created":"Gallery has been successfully created","pages.galleries.my_galleries.successfully_updated":"Gallery has been successfully updated","pages.galleries.my_galleries.new_gallery_no_nfts":"Creating a Gallery requires you to own an NFT.","pages.galleries.my_galleries.new_gallery_all_collections_hidden":"Creating a Gallery requires you to have at least 1 collection available.","pages.galleries.my_galleries.delete_modal.title":"Delete Draft","pages.galleries.my_galleries.delete_modal.text":"Are you sure you want to delete the draft? Everything you've done will be deleted and you won't be able to get it back.","pages.galleries.my_galleries.nfts_no_longer_owned":"NFTs no longer owned by this wallet have been removed from the draft”","pages.galleries.copy_gallery_link":"Copy Gallery Link","pages.galleries.my_nfts":"My NFTs","pages.galleries.show_hidden_collections":"Show hidden collections","pages.galleries.value":"Value","pages.galleries.floor_price":"Floor Price","pages.galleries.nfts":"NFTs","pages.galleries.collections":"Collections","pages.galleries.galleries_count_simple":"{0} galleries|{1} gallery|[2,*] galleries","pages.galleries.galleries_count":"{0} {{count}} Galleries|{1} {{count}} Gallery|[2,*] {{count}} Galleries","pages.galleries.collections_count_simple":"{0} collections|{1} collection|[2,*] collections","pages.galleries.collections_count":"{0} {{count}} Collections|{1} {{count}} Collection|[2,*] {{count}} Collections","pages.galleries.nfts_count_simple":"{0} NFTs|{1} NFT|[2,*] NFTs","pages.galleries.nfts_count":"{0} {{count}} NFTs|{1} {{count}} NFT|[2,*] {{count}} NFTs","pages.galleries.users_count_simple":"{0} users|{1} user|[2,*] users","pages.galleries.users_count":"{0} {{count}} Users|{1} {{count}} User|[2,*] {{count}} Users","pages.galleries.featuring":"Featuring","pages.galleries.curated_by":"Curated by","pages.galleries.worth_about":"Worth About","pages.galleries.valued_at":"valued at","pages.galleries.from":"From","pages.galleries.most_popular_galleries":"Most Popular Galleries","pages.galleries.newest_galleries":"Newest Galleries","pages.galleries.most_valuable_galleries":"Most Valuable Galleries","pages.galleries.most_popular":"Most Popular","pages.galleries.newest":"Newest","pages.galleries.most_valuable":"Most Valuable","pages.galleries.create.search_by_nfts":"Search by NFTs","pages.galleries.create.input_placeholder":"Enter gallery name","pages.galleries.create.title_too_long":"Gallery name must not exceed {{max}} characters.","pages.galleries.create.already_selected_nft":"NFT already exists in this gallery","pages.galleries.create.nft_missing_image":"Only NFTs with images can be added to galleries","pages.galleries.create.nft_gallery_limit":"You can only add 16 NFTs per gallery","pages.galleries.create.gallery_cover":"Gallery Cover","pages.galleries.create.gallery_cover_description":"The cover is used for the card on the gallery list page. While the cover is not a requirement it will allow you to add personality and stand out from the crowd.","pages.galleries.create.gallery_cover_information":"Image dimensions must be at least 287px x 190px, with a max size of 2 MB (JPG, PNG or GIF)","pages.galleries.create.no_results":"We could not find anything matching your search criteria, please try again!","pages.galleries.create.templates.cover":"Cover","pages.galleries.create.templates.template":"Template","pages.galleries.create.templates.select":"Select Gallery Template","pages.galleries.create.templates.basic":"Basic Gallery","pages.galleries.create.templates.coming_soon":"More Coming Soon","pages.galleries.create.load_more_collections_one":"Load {{count}} More Collection","pages.galleries.create.load_more_collections_other":"Load {{count}} More Collections","pages.galleries.create.load_more_nfts":"Load More NFTs","pages.galleries.create.can_purchase":"You can purchase NFTs with these top NFT Marketplaces:","pages.galleries.create.must_own_one_nft":"You must own at least one (1) NFT in order to create a gallery.","pages.galleries.create.back_to_galleries":"Back to Galleries","pages.galleries.create.draft_saved":"Draft Saved","pages.galleries.create.saving_to_draft":"Saving to draft","pages.galleries.create.drafts_limit_modal_title":"Draft Gallery Limit","pages.galleries.create.drafts_limit_modal_message":"You’ve hit your limit for draft galleries. While you can still make new galleries and publish them, they won’t be saved as drafts. To Free up space, you can either delete existing drafts or publish them.","pages.galleries.create.drafts_limit_modal_cancel":"Go to Drafts","pages.galleries.delete_modal.title":"Delete Gallery","pages.galleries.delete_modal.confirmation_text":"Are you sure you want to delete the gallery? Deleting a Gallery is permanent, all associated views and likes will be lost.","pages.galleries.consists_of_collections":"{0} This gallery consists of {{count}} collections|{1} This gallery consists of {{count}} collection|[2,*] This gallery consists of {{count}} collections","pages.galleries.guest_banner.title":"Craft the ultimate","pages.galleries.guest_banner.subtitle":"Pick your favorites, curate your gallery, & share it with the world.","pages.profile.title":"Profile","pages.token_panel.balance_tooltip":"Total percentage of the portfolio held in this token","pages.token_panel.insufficient_funds":"Insufficient Balance","pages.token_panel.error":"Dashbrd has failed to load token information. Please try again later.","pages.token_panel.failed_to_retrieve_transactions":"We were unable to fetch your transactions.","pages.token_panel.tabs.transaction_history":"Transaction History","pages.token_panel.tabs.history":"History","pages.token_panel.tabs.market_data":"Market Data","pages.token_panel.details.current_price":"Current Price","pages.token_panel.details.title":"Token Details","pages.token_panel.details.market_cap":"Market Cap","pages.token_panel.details.volume":"Daily Volume","pages.token_panel.details.supply":"Minted Supply","pages.token_panel.details.ath":"All-Time High","pages.token_panel.details.atl":"All-Time Low","pages.token_panel.chart.failed":"Dashbrd has failed to load chart information. Please try again later.","pages.transaction_details_panel.title":"Transaction Details","pages.transaction_details_panel.details.blockchain":"Blockchain","pages.transaction_details_panel.details.timestamp":"Timestamp","pages.transaction_details_panel.details.transaction_hash":"Transaction Hash","pages.transaction_details_panel.details.transaction_fee":"Transaction Fee","pages.transaction_details_panel.details.gas_price":"Gas Price","pages.transaction_details_panel.details.gas_used":"Gas Used","pages.transaction_details_panel.details.nonce":"Nonce","pages.send_receive_panel.send.labels.token_and_amount":"Token and Amount","pages.send_receive_panel.send.labels.destination_address":"Destination Address","pages.send_receive_panel.send.labels.projected_fee":"Projected Fee","pages.send_receive_panel.send.placeholders.enter_amount":"Enter Amount","pages.send_receive_panel.send.placeholders.insert_recipient_address":"Insert Recipient Address","pages.send_receive_panel.send.placeholders.projected_fee":"Projected Fee","pages.send_receive_panel.send.errors.amount":"Insufficient Funds: You do not have enough to cover the amount + fee.","pages.send_receive_panel.send.errors.destination":"Destination address is not correct. Check and input again.","pages.send_receive_panel.send.hints.token_price":"Token Price","pages.send_receive_panel.send.fees.Fast":"Fast","pages.send_receive_panel.send.fees.Avg":"Avg","pages.send_receive_panel.send.fees.Slow":"Slow","pages.send_receive_panel.send.search_dropdown.placeholder":"Search token","pages.send_receive_panel.send.search_dropdown.no_results":"No Results","pages.send_receive_panel.send.search_dropdown.error":"Error occurred while searching tokens.","pages.send_receive_panel.send.transaction_time":"Transaction Time: ~{{ time }} minutes","pages.send_receive_panel.send.from":"From","pages.send_receive_panel.send.to":"To","pages.send_receive_panel.send.amount":"Amount","pages.send_receive_panel.send.fee":"Fee","pages.send_receive_panel.send.total_amount":"Total Amount","pages.send_receive_panel.send.waiting_message":"Review and verify the information on your MetaMask. Sign to send the transaction.","pages.send_receive_panel.send.waiting_spinner_text":"Waiting for confirmation...","pages.send_receive_panel.send.failed_message":"It looks like something went wrong while sending your transaction. Press 'Retry' to make another attempt.","pages.send_receive_panel.receive.alert":"Send only Polygon or Ethereum Network compatible tokens to this address or you could permanently lose your funds!","pages.settings.title":"Settings","pages.settings.sidebar.general":"General","pages.settings.sidebar.notifications":"Notifications","pages.settings.sidebar.session_history":"Sessions History","pages.settings.general.title":"Settings","pages.settings.general.subtitle":"Customize your App Experience","pages.settings.general.currency":"Currency","pages.settings.general.currency_subtitle":"Select your default currency which will be used throughout the app.","pages.settings.general.time_date":"Time & Date","pages.settings.general.time_date_subtitle":"Select how you want time and date be shown inside app.","pages.settings.general.date_format":"Date Format","pages.settings.general.time_format":"Time Format","pages.settings.general.timezone":"Timezone","pages.settings.general.set_defaults":"Set Defaults","pages.settings.general.set_defaults_content":"Reverting to the default settings will remove any customizations previously made. Are you sure?","pages.settings.general.save":"Save Settings","pages.settings.general.saved":"Your settings have been successfully saved","pages.wallet.title":"Wallet","pages.privacy_policy.title":"Privacy Policy","pages.terms_of_service.title":"Terms of Service","pagination.previous":"« Previous","pagination.next":"Next »","passwords.reset":"Your password has been reset!","passwords.sent":"We have emailed your password reset link!","passwords.throttled":"Please wait before retrying.","passwords.token":"This password reset token is invalid.","passwords.user":"We can't find a user with that email address.","urls.landing":"https://dashbrd.com","urls.cookie_policy":"https://dashbrd.com/cookie-policy","urls.privacy_policy":"https://dashbrd.com/privacy-policy","urls.terms_of_service":"https://dashbrd.com/terms-of-service","urls.twitter":"https://x.com/DashbrdApp","urls.discord":"https://discord.gg/MJyWKkCJ5k","urls.github":"https://github.com/ArdentHQ/dashbrd","urls.coingecko":"https://www.coingecko.com","urls.etherscan":"https://etherscan.io","urls.polygonscan":"https://polygonscan.com","urls.alchemy":"https://www.alchemy.com","urls.moralis":"https://moralis.io","urls.mnemonic":"https://www.mnemonichq.com","urls.opensea":"https://opensea.io/","urls.explorers.etherscan.token_transactions":"https://etherscan.io/token/{{token}}?a={{address}}","urls.explorers.etherscan.addresses":"https://etherscan.io/address/{{address}}","urls.explorers.etherscan.transactions":"https://etherscan.io/tx/{{id}}","urls.explorers.etherscan.nft":"https://etherscan.io/nft/{{address}}/{{nftId}}","urls.explorers.polygonscan.token_transactions":"https://polygonscan.com/token/{{token}}?a={{address}}","urls.explorers.polygonscan.addresses":"https://polygonscan.com/address/{{address}}","urls.explorers.polygonscan.transactions":"https://polygonscan.com/tx/{{id}}","urls.explorers.polygonscan.nft":"https://polygonscan.com/nft/{{address}}/{{nftId}}","urls.explorers.mumbai.token_transactions":"https://mumbai.polygonscan.com/token/{{token}}?a={{address}}","urls.explorers.mumbai.addresses":"https://mumbai.polygonscan.com/address/{{address}}","urls.explorers.mumbai.transactions":"https://mumbai.polygonscan.com/tx/{{id}}","urls.explorers.mumbai.nft":"https://mumbai.polygonscan.com/nft/{{address}}/{{nftId}}","urls.explorers.goerli.token_transactions":"https://goerli.etherscan.io/token/{{token}}?a={{address}}","urls.explorers.goerli.addresses":"https://goerli.etherscan.io/address/{{address}}","urls.explorers.goerli.transactions":"https://goerli.etherscan.io/tx/{{id}}","urls.explorers.goerli.nft":"https://goerli.etherscan.io/nft/{{address}}/{{nftId}}","urls.marketplaces.opensea.collection":"https://opensea.io/assets/{{network}}/{{address}}","urls.marketplaces.opensea.nft":"https://opensea.io/assets/{{network}}/{{address}}/{{nftId}}","urls.marketplaces.rarible.collection":"https://rarible.com/collection/{{address}}/items","urls.marketplaces.rarible.nft":"https://rarible.com/token/{{address}}:{{nftId}}","urls.marketplaces.blur.collection":"https://blur.io/collection/{{address}}","urls.marketplaces.blur.nft":"https://blur.io/asset/{{address}}/{{nftId}}","urls.marketplaces.looksrare.collection":"https://looksrare.org/collections/{{address}}","urls.marketplaces.looksrare.nft":"https://looksrare.org/collections/{{address}}/{{nftId}}","validation.accepted":"The {{attribute}} must be accepted.","validation.accepted_if":"The {{attribute}} must be accepted when {{other}} is {{value}}.","validation.active_url":"The {{attribute}} is not a valid URL.","validation.after":"The {{attribute}} must be a date after {{date}}.","validation.after_or_equal":"The {{attribute}} must be a date after or equal to {{date}}.","validation.alpha":"The {{attribute}} must only contain letters.","validation.alpha_dash":"The {{attribute}} must only contain letters, numbers, dashes and underscores.","validation.alpha_num":"The {{attribute}} must only contain letters and numbers.","validation.array":"The {{attribute}} must be an array.","validation.ascii":"The {{attribute}} must only contain single-byte alphanumeric characters and symbols.","validation.before":"The {{attribute}} must be a date before {{date}}.","validation.before_or_equal":"The {{attribute}} must be a date before or equal to {{date}}.","validation.between.array":"The {{attribute}} must have between {{min}} and {{max}} items.","validation.between.file":"The {{attribute}} must be between {{min}} and {{max}} kilobytes.","validation.between.numeric":"The {{attribute}} must be between {{min}} and {{max}}.","validation.between.string":"The {{attribute}} must be between {{min}} and {{max}} characters.","validation.boolean":"The {{attribute}} field must be true or false.","validation.confirmed":"The {{attribute}} confirmation does not match.","validation.current_password":"The password is incorrect.","validation.date":"The {{attribute}} is not a valid date.","validation.date_equals":"The {{attribute}} must be a date equal to {{date}}.","validation.date_format":"The {{attribute}} does not match the format {{format}}.","validation.decimal":"The {{attribute}} must have {{decimal}} decimal places.","validation.declined":"The {{attribute}} must be declined.","validation.declined_if":"The {{attribute}} must be declined when {{other}} is {{value}}.","validation.different":"The {{attribute}} and {{other}} must be different.","validation.digits":"The {{attribute}} must be {{digits}} digits.","validation.digits_between":"The {{attribute}} must be between {{min}} and {{max}} digits.","validation.dimensions":"The {{attribute}} has invalid image dimensions.","validation.distinct":"The {{attribute}} field has a duplicate value.","validation.doesnt_end_with":"The {{attribute}} may not end with one of the following: {{values}}.","validation.doesnt_start_with":"The {{attribute}} may not start with one of the following: {{values}}.","validation.email":"The {{attribute}} must be a valid email address.","validation.ends_with":"The {{attribute}} must end with one of the following: {{values}}.","validation.enum":"The selected {{attribute}} is invalid.","validation.exists":"The selected {{attribute}} is invalid.","validation.file":"The {{attribute}} must be a file.","validation.filled":"The {{attribute}} field must have a value.","validation.gt.array":"The {{attribute}} must have more than {{value}} items.","validation.gt.file":"The {{attribute}} must be greater than {{value}} kilobytes.","validation.gt.numeric":"The {{attribute}} must be greater than {{value}}.","validation.gt.string":"The {{attribute}} must be greater than {{value}} characters.","validation.gte.array":"The {{attribute}} must have {{value}} items or more.","validation.gte.file":"The {{attribute}} must be greater than or equal to {{value}} kilobytes.","validation.gte.numeric":"The {{attribute}} must be greater than or equal to {{value}}.","validation.gte.string":"The {{attribute}} must be greater than or equal to {{value}} characters.","validation.image":"The {{attribute}} must be an image.","validation.in":"The selected {{attribute}} is invalid.","validation.in_array":"The {{attribute}} field does not exist in {{other}}.","validation.integer":"The {{attribute}} must be an integer.","validation.ip":"The {{attribute}} must be a valid IP address.","validation.ipv4":"The {{attribute}} must be a valid IPv4 address.","validation.ipv6":"The {{attribute}} must be a valid IPv6 address.","validation.json":"The {{attribute}} must be a valid JSON string.","validation.lowercase":"The {{attribute}} must be lowercase.","validation.lt.array":"The {{attribute}} must have less than {{value}} items.","validation.lt.file":"The {{attribute}} must be less than {{value}} kilobytes.","validation.lt.numeric":"The {{attribute}} must be less than {{value}}.","validation.lt.string":"The {{attribute}} must be less than {{value}} characters.","validation.lte.array":"The {{attribute}} must not have more than {{value}} items.","validation.lte.file":"The {{attribute}} must be less than or equal to {{value}} kilobytes.","validation.lte.numeric":"The {{attribute}} must be less than or equal to {{value}}.","validation.lte.string":"The {{attribute}} must be less than or equal to {{value}} characters.","validation.mac_address":"The {{attribute}} must be a valid MAC address.","validation.max.array":"The {{attribute}} must not have more than {{max}} items.","validation.max.file":"The {{attribute}} must not be greater than {{max}} kilobytes.","validation.max.numeric":"The {{attribute}} must not be greater than {{max}}.","validation.max.string":"The {{attribute}} must not be greater than {{max}} characters.","validation.max_digits":"The {{attribute}} must not have more than {{max}} digits.","validation.mimes":"The {{attribute}} must be a file of type: {{values}}.","validation.mimetypes":"The {{attribute}} must be a file of type: {{values}}.","validation.min.array":"The {{attribute}} must have at least {{min}} items.","validation.min.file":"The {{attribute}} must be at least {{min}} kilobytes.","validation.min.numeric":"The {{attribute}} must be at least {{min}}.","validation.min.string":"The {{attribute}} must be at least {{min}} characters.","validation.min_digits":"The {{attribute}} must have at least {{min}} digits.","validation.missing":"The {{attribute}} field must be missing.","validation.missing_if":"The {{attribute}} field must be missing when {{other}} is {{value}}.","validation.missing_unless":"The {{attribute}} field must be missing unless {{other}} is {{value}}.","validation.missing_with":"The {{attribute}} field must be missing when {{values}} is present.","validation.missing_with_all":"The {{attribute}} field must be missing when {{values}} are present.","validation.multiple_of":"The {{attribute}} must be a multiple of {{value}}.","validation.not_in":"The selected {{attribute}} is invalid.","validation.not_regex":"The {{attribute}} format is invalid.","validation.numeric":"The {{attribute}} must be a number.","validation.password.letters":"The {{attribute}} must contain at least one letter.","validation.password.mixed":"The {{attribute}} must contain at least one uppercase and one lowercase letter.","validation.password.numbers":"The {{attribute}} must contain at least one number.","validation.password.symbols":"The {{attribute}} must contain at least one symbol.","validation.password.uncompromised":"The given {{attribute}} has appeared in a data leak. Please choose a different {{attribute}}.","validation.present":"The {{attribute}} field must be present.","validation.prohibited":"The {{attribute}} field is prohibited.","validation.prohibited_if":"The {{attribute}} field is prohibited when {{other}} is {{value}}.","validation.prohibited_unless":"The {{attribute}} field is prohibited unless {{other}} is in {{values}}.","validation.prohibits":"The {{attribute}} field prohibits {{other}} from being present.","validation.regex":"The {{attribute}} format is invalid.","validation.required":"The {{attribute}} field is required.","validation.required_array_keys":"The {{attribute}} field must contain entries for: {{values}}.","validation.required_if":"The {{attribute}} field is required when {{other}} is {{value}}.","validation.required_if_accepted":"The {{attribute}} field is required when {{other}} is accepted.","validation.required_unless":"The {{attribute}} field is required unless {{other}} is in {{values}}.","validation.required_with":"The {{attribute}} field is required when {{values}} is present.","validation.required_with_all":"The {{attribute}} field is required when {{values}} are present.","validation.required_without":"The {{attribute}} field is required when {{values}} is not present.","validation.required_without_all":"The {{attribute}} field is required when none of {{values}} are present.","validation.same":"The {{attribute}} and {{other}} must match.","validation.size.array":"The {{attribute}} must contain {{size}} items.","validation.size.file":"The {{attribute}} must be {{size}} kilobytes.","validation.size.numeric":"The {{attribute}} must be {{size}}.","validation.size.string":"The {{attribute}} must be {{size}} characters.","validation.starts_with":"The {{attribute}} must start with one of the following: {{values}}.","validation.string":"The {{attribute}} must be a string.","validation.timezone":"The {{attribute}} must be a valid timezone.","validation.unique":"The {{attribute}} has already been taken.","validation.uploaded":"The {{attribute}} failed to upload.","validation.uppercase":"The {{attribute}} must be uppercase.","validation.url":"The {{attribute}} must be a valid URL.","validation.ulid":"The {{attribute}} must be a valid ULID.","validation.uuid":"The {{attribute}} must be a valid UUID.","validation.custom.attribute-name.rule-name":"custom-message","validation.unsupported_currency_code":"The currency code you provided is invalid or not supported.","validation.unsupported_period":"The period you provided is invalid or not supported.","validation.unsupported_token_symbol":"The token symbol you provided is invalid or not supported.","validation.gallery_title_required":"Gallery name is required.","validation.gallery_title_max_characters":"The gallery name should not exceed 50 characters.","validation.gallery_title_invalid":"The gallery name is invalid.","validation.nfts_required":"Please add at least one NFT.","validation.nfts_max_size":"Galleries can contain no more than {{limit}} NFTs","validation.invalid_nfts":"The NFT in position {{position}} is invalid, please select another one.","validation.invalid_cover":"You have selected an invalid cover image, please try another one."} \ No newline at end of file diff --git a/resources/js/Pages/Collections/Components/CollectionVoting/VoteCollections.test.tsx b/resources/js/Pages/Collections/Components/CollectionVoting/VoteCollections.test.tsx index d1d793e61..12a7d3e73 100644 --- a/resources/js/Pages/Collections/Components/CollectionVoting/VoteCollections.test.tsx +++ b/resources/js/Pages/Collections/Components/CollectionVoting/VoteCollections.test.tsx @@ -6,9 +6,10 @@ import { VoteCollections, VoteCount, } from "@/Pages/Collections/Components/CollectionVoting/VoteCollections"; -import { render, screen } from "@/Tests/testing-library"; +import { render, screen, userEvent } from "@/Tests/testing-library"; const demoCollection: VoteCollectionProperties = { + id: 1, index: 1, name: "AlphaDogs", image: "https://i.seadn.io/gcs/files/4ef4a60496c335d66eba069423c0af90.png?w=500&auto=format", @@ -33,27 +34,91 @@ describe("VoteCollections", () => { }); describe("VoteCollection", () => { it("should render the component", () => { - render(); + render( + , + ); expect(screen.getByText("AlphaDogs")).toBeInTheDocument(); }); it("should render volume of the collection", () => { - render(); + render( + , + ); expect(screen.getByText(/Vol: 256 ETH/)).toBeInTheDocument(); }); + + it("should render voted collection variant", () => { + render( + , + ); + + expect(screen.getByTestId("icon-VotedCollectionCheckmark")).toBeInTheDocument(); + }); + + it("should not select collection if user has already voted", () => { + const selectCollectionMock = vi.fn(); + + render( + , + ); + + expect(selectCollectionMock).not.toHaveBeenCalled(); + }); + + it("should select the collection", async () => { + const selectCollectionMock = vi.fn(); + + render( + , + ); + + await userEvent.click(screen.getByTestId("VoteCollectionTrigger")); + expect(selectCollectionMock).toHaveBeenCalled(); + }); }); describe("VoteCount", () => { it("should render without vote count", () => { - render(); + render( + , + ); expect(screen.getByTestId("icon-HiddenVote")).toBeInTheDocument(); }); it("should render with vote count", () => { - render(); + render( + , + ); expect(screen.getByText("15")).toBeInTheDocument(); }); diff --git a/resources/js/Pages/Collections/Components/CollectionVoting/VoteCollections.tsx b/resources/js/Pages/Collections/Components/CollectionVoting/VoteCollections.tsx index 8e8637f52..b208be18a 100644 --- a/resources/js/Pages/Collections/Components/CollectionVoting/VoteCollections.tsx +++ b/resources/js/Pages/Collections/Components/CollectionVoting/VoteCollections.tsx @@ -1,4 +1,5 @@ -import React from "react"; +import cn from "classnames"; +import React, { useState } from "react"; import { useTranslation } from "react-i18next"; import { twMerge } from "tailwind-merge"; import { VoteCountdown } from "./VoteCountdown"; @@ -8,8 +9,10 @@ import { Img } from "@/Components/Image"; import { LinkButton } from "@/Components/Link"; import { Tooltip } from "@/Components/Tooltip"; import { FormatCrypto } from "@/Utils/Currency"; +import { isTruthy } from "@/Utils/is-truthy"; export interface VoteCollectionProperties { + id: number; name: string; image: string; volume?: string; @@ -19,9 +22,20 @@ export interface VoteCollectionProperties { index: number; } -export const VoteCollections = ({ collections }: { collections: VoteCollectionProperties[] }): JSX.Element => { +export const VoteCollections = ({ + collections, + votedCollectionId, +}: { + collections: VoteCollectionProperties[]; + votedCollectionId?: number; +}): JSX.Element => { const { t } = useTranslation(); + const [selectedCollectionId, setSelectedCollectionId] = useState(undefined); + + const getVariant = (collectionId: number): VoteCollectionVariants => + votedCollectionId === collectionId ? "voted" : selectedCollectionId === collectionId ? "selected" : undefined; + return (
    ( ))}
    @@ -50,14 +67,17 @@ export const VoteCollections = ({ collections }: { collections: VoteCollectionPr {collections.slice(4, 8).map((collection, index) => ( ))}
    - + { @@ -75,62 +95,118 @@ export const VoteCollections = ({ collections }: { collections: VoteCollectionPr ); }; -export const VoteCollection = ({ collection }: { collection: VoteCollectionProperties }): JSX.Element => { +type VoteCollectionVariants = "selected" | "voted" | undefined; + +export const VoteCollection = ({ + collection, + votedId, + variant, + setSelectedCollectionId, +}: { + collection: VoteCollectionProperties; + votedId?: number; + variant?: VoteCollectionVariants; + setSelectedCollectionId: (collectionId: number) => void; +}): JSX.Element => { const { t } = useTranslation(); + const hasVoted = isTruthy(votedId); + return ( -
    -
    -
    -
    -
    - - {collection.index} - -
    -
    - -
    +
    +
    { + if (!isTruthy(votedId)) { + setSelectedCollectionId(collection.id); + } + }} + tabIndex={0} + className={cn("relative overflow-hidden rounded-lg px-4 py-4 focus:outline-none md:py-3", { + "border-2 border-theme-primary-600 dark:border-theme-hint-400": + variant === "selected" || variant === "voted", + "pointer-events-none bg-theme-primary-50 dark:bg-theme-dark-800": variant === "voted", + "border border-theme-secondary-300 dark:border-theme-dark-700": variant === undefined, + "hover:outline hover:outline-theme-hint-100 focus:ring focus:ring-theme-hint-100 dark:hover:outline-theme-dark-500 dark:focus:ring-theme-dark-500": + !hasVoted && variant === undefined, + })} + data-testid="VoteCollectionTrigger" + > + {variant === "voted" && ( +
    +
    + )} +
    +
    +
    +
    + + {collection.index} + +
    +
    + +
    +
    -
    -

    - {collection.name} -

    -

    - {t("common.vol")}:{" "} - -

    -
    - +
    +

    + {collection.name} +

    +

    + {t("common.vol")}:{" "} + +

    +
    + +
    -
    -
    - +
    + +
    @@ -141,10 +217,12 @@ export const VoteCount = ({ iconClass, textClass, voteCount, + showVoteCount, }: { iconClass?: string; textClass?: string; voteCount?: number; + showVoteCount: boolean; }): JSX.Element => { const { t } = useTranslation(); return ( @@ -157,7 +235,7 @@ export const VoteCount = ({ > Votes

    - {voteCount !== undefined ? ( + {showVoteCount ? (

    {voteCount}

    diff --git a/resources/js/Pages/Collections/Components/CollectionVoting/VoteCountdown.tsx b/resources/js/Pages/Collections/Components/CollectionVoting/VoteCountdown.tsx index 7db127c04..cb2c284b1 100644 --- a/resources/js/Pages/Collections/Components/CollectionVoting/VoteCountdown.tsx +++ b/resources/js/Pages/Collections/Components/CollectionVoting/VoteCountdown.tsx @@ -1,6 +1,8 @@ import React, { useEffect, useState } from "react"; import { useTranslation } from "react-i18next"; import { Button } from "@/Components/Buttons"; +import { Icon } from "@/Components/Icon"; +import { Tooltip } from "@/Components/Tooltip"; interface TimeLeft { days: number; @@ -33,7 +35,7 @@ const formatTime = (value: number, unit: string): string => { return `${paddedValue}${unit}`; }; -export const VoteCountdown = (): JSX.Element => { +export const VoteCountdown = ({ hasUserVoted }: { hasUserVoted?: boolean }): JSX.Element => { const { t } = useTranslation(); const [timeLeft, setTimeLeft] = useState(calculateTimeLeft()); @@ -64,12 +66,24 @@ export const VoteCountdown = (): JSX.Element => { return (
    - + {hasUserVoted === true ? ( + +
    + +
    +
    + ) : ( + + )}
    {t("pages.collections.vote.time_left")} diff --git a/resources/js/Pages/Collections/Index.tsx b/resources/js/Pages/Collections/Index.tsx index ecdabe2ec..788b5fcd2 100644 --- a/resources/js/Pages/Collections/Index.tsx +++ b/resources/js/Pages/Collections/Index.tsx @@ -34,12 +34,14 @@ interface CollectionsIndexProperties extends PageProps { } const demoCollection: VoteCollectionProperties = { + id: 1, index: 1, name: "AlphaDogs", image: "https://i.seadn.io/gcs/files/4ef4a60496c335d66eba069423c0af90.png?w=500&auto=format", volume: "256.000000000000000000", volumeCurrency: "ETH", volumeDecimals: 18, + votes: 45, }; const CollectionsIndex = ({ @@ -150,6 +152,7 @@ const CollectionsIndex = ({
    Date: Thu, 7 Dec 2023 07:58:37 -0500 Subject: [PATCH 030/145] feat: add nomination modal (#536) --- lang/en/common.php | 1 + lang/en/pages.php | 1 + resources/css/_tables.css | 18 +++ .../NominateCollectionName.test.tsx | 77 +++++++++++++ .../CollectionName/NominateCollectionName.tsx | 58 ++++++++++ .../Collections/CollectionName/index.tsx | 1 + .../PopularCollectionsTable.blocks.tsx | 10 +- resources/js/Components/Dialog.test.tsx | 15 +++ resources/js/Components/Dialog.tsx | 7 +- resources/js/I18n/Locales/en.json | 2 +- .../CollectionVoting/NominationDialog.tsx | 98 ++++++++++++++++ .../CollectionVoting/NomineeCollection.tsx | 82 ++++++++++++++ .../CollectionVoting/NomineeCollections.tsx | 105 ++++++++++++++++++ .../CollectionVoting/VoteCollections.test.tsx | 18 ++- .../CollectionVoting/VoteCollections.tsx | 32 +++++- .../Components/CollectionVoting/index.tsx | 3 + resources/js/Pages/Collections/Index.tsx | 10 +- 17 files changed, 526 insertions(+), 12 deletions(-) create mode 100644 resources/js/Components/Collections/CollectionName/NominateCollectionName.test.tsx create mode 100644 resources/js/Components/Collections/CollectionName/NominateCollectionName.tsx create mode 100644 resources/js/Pages/Collections/Components/CollectionVoting/NominationDialog.tsx create mode 100644 resources/js/Pages/Collections/Components/CollectionVoting/NomineeCollection.tsx create mode 100644 resources/js/Pages/Collections/Components/CollectionVoting/NomineeCollections.tsx diff --git a/lang/en/common.php b/lang/en/common.php index c0154346c..84775c411 100644 --- a/lang/en/common.php +++ b/lang/en/common.php @@ -165,5 +165,6 @@ 'top' => 'Top', 'all_chains' => 'All chains', 'votes' => 'Votes', + 'vote' => 'Vote', 'vol' => 'Vol', ]; diff --git a/lang/en/pages.php b/lang/en/pages.php index 6ab88da87..c1fc579c3 100644 --- a/lang/en/pages.php +++ b/lang/en/pages.php @@ -102,6 +102,7 @@ 'vote' => 'Vote', 'time_left' => 'Time Left', 'or_nominate_collection' => 'Or nominate a collection', + 'nominate_collection' => 'Nominate a collection', 'vote_to_reveal' => 'Vote to reveal data', 'already_voted' => 'You’ve already nominated. Come back next month!', ], diff --git a/resources/css/_tables.css b/resources/css/_tables.css index 4f68cabd1..edd6527fa 100644 --- a/resources/css/_tables.css +++ b/resources/css/_tables.css @@ -101,3 +101,21 @@ content: ""; @apply pointer-events-none absolute top-0 z-10 block h-full w-full border-y border-theme-secondary-300 dark:border-theme-dark-700; } + +.table-list tbody tr.selected-candidate td:first-child::before, +.table-list tbody tr.selected-candidate td:last-child::before, +.table-list tbody tr.selected-candidate td.custom-table-cell:after { + @apply border-theme-primary-600 dark:border-theme-primary-400; +} + +.table-list tbody tr.selected-candidate td:first-child::before { + @apply border-y-2 border-l-2; +} + +.table-list tbody tr.selected-candidate td:last-child::before { + @apply border-y-2 border-r-2; +} + +.table-list tbody tr.selected-candidate td.custom-table-cell:after { + @apply border-y-2; +} diff --git a/resources/js/Components/Collections/CollectionName/NominateCollectionName.test.tsx b/resources/js/Components/Collections/CollectionName/NominateCollectionName.test.tsx new file mode 100644 index 000000000..b9aae1c87 --- /dev/null +++ b/resources/js/Components/Collections/CollectionName/NominateCollectionName.test.tsx @@ -0,0 +1,77 @@ +import React from "react"; +import { NominateCollectionName } from "./NominateCollectionName"; +import { type VoteCollectionProperties } from "@/Pages/Collections/Components/CollectionVoting"; +import { render, screen } from "@/Tests/testing-library"; + +const demoCollection: VoteCollectionProperties = { + floorPriceFiat: "45.25", + floorPrice: "0", + floorPriceCurrency: "ETH", + floorPriceDecimals: 18, + volumeFiat: 45.12, + id: 1, + index: 1, + name: "AlphaDogs", + image: "https://i.seadn.io/gcs/files/4ef4a60496c335d66eba069423c0af90.png?w=500&auto=format", + volume: "0", + volumeCurrency: "ETH", + volumeDecimals: 18, + votes: 45, + nftsCount: 5, +}; + +describe("NominateCollectionName", () => { + it("should render", () => { + render(); + + expect(screen.getByTestId("NominateCollectionName")).toBeInTheDocument(); + }); + + it("should use ETH as default volume currency", () => { + render(); + + expect(screen.getByTestId("CollectionName__volume")).toHaveTextContent("0 ETH"); + }); + + it("should render the volume with the selected currency", () => { + render(); + + expect(screen.getByTestId("CollectionName__volume")).toHaveTextContent("0 BTC"); + }); + + it("should render 0 if collection has no volume", () => { + render(); + + expect(screen.getByTestId("CollectionName__volume")).toHaveTextContent("0 BTC"); + }); + + it("should render the volume using 18 decimals to format by default", () => { + render( + , + ); + + expect(screen.getByTestId("CollectionName__volume")).toHaveTextContent("1 ETH"); + }); + + it("should render the volume using the specified decimals", () => { + render( + , + ); + + expect(screen.getByTestId("CollectionName__volume")).toHaveTextContent("1,000,000,000,000 ETH"); + }); +}); diff --git a/resources/js/Components/Collections/CollectionName/NominateCollectionName.tsx b/resources/js/Components/Collections/CollectionName/NominateCollectionName.tsx new file mode 100644 index 000000000..ad1c476f0 --- /dev/null +++ b/resources/js/Components/Collections/CollectionName/NominateCollectionName.tsx @@ -0,0 +1,58 @@ +import { useRef } from "react"; +import { Img } from "@/Components/Image"; +import { Tooltip } from "@/Components/Tooltip"; +import { useIsTruncated } from "@/Hooks/useIsTruncated"; +import { type VoteCollectionProperties } from "@/Pages/Collections/Components/CollectionVoting"; +import { FormatCrypto } from "@/Utils/Currency"; + +export const NominateCollectionName = ({ collection }: { collection: VoteCollectionProperties }): JSX.Element => { + const collectionNameReference = useRef(null); + const isTruncated = useIsTruncated({ reference: collectionNameReference }); + + return ( +
    +
    +
    + +
    + +
    + +

    + {collection.name} +

    +
    + +

    + +

    +
    +
    +
    + ); +}; diff --git a/resources/js/Components/Collections/CollectionName/index.tsx b/resources/js/Components/Collections/CollectionName/index.tsx index f90c117b4..9ea68c83d 100644 --- a/resources/js/Components/Collections/CollectionName/index.tsx +++ b/resources/js/Components/Collections/CollectionName/index.tsx @@ -1 +1,2 @@ export * from "./CollectionName"; +export * from "./NominateCollectionName"; diff --git a/resources/js/Components/Collections/PopularCollectionsTable/PopularCollectionsTable.blocks.tsx b/resources/js/Components/Collections/PopularCollectionsTable/PopularCollectionsTable.blocks.tsx index 7b25a7929..089cf70c9 100644 --- a/resources/js/Components/Collections/PopularCollectionsTable/PopularCollectionsTable.blocks.tsx +++ b/resources/js/Components/Collections/PopularCollectionsTable/PopularCollectionsTable.blocks.tsx @@ -64,7 +64,10 @@ export const PopularCollectionName = ({ export const PopularCollectionFloorPrice = ({ collection, }: { - collection: App.Data.Collections.PopularCollectionData; + collection: Pick< + App.Data.Collections.PopularCollectionData, + "floorPrice" | "floorPriceCurrency" | "floorPriceDecimals" + >; }): JSX.Element => (
    ; user: App.Data.UserData | null; }): JSX.Element => (
    { expect(onClose).toHaveBeenCalled(); }); + + it("should render custom class names for the panel", () => { + render( + +
    +
    , + ); + + expect(screen.getByTestId("Dialog__panel")).toHaveClass("custom-class"); + }); }); diff --git a/resources/js/Components/Dialog.tsx b/resources/js/Components/Dialog.tsx index 907fbec41..5611ad24c 100644 --- a/resources/js/Components/Dialog.tsx +++ b/resources/js/Components/Dialog.tsx @@ -13,6 +13,7 @@ interface Properties extends HTMLAttributes { isUsedByConfirmationDialog?: boolean; hasBlurryOverlay?: boolean; footer?: React.ReactNode; + panelClassName?: string; } const NOOP = /* istanbul ignore next */ (): null => null; @@ -27,6 +28,7 @@ const Dialog = ({ isUsedByConfirmationDialog = false, hasBlurryOverlay = false, className, + panelClassName, footer, ...properties }: Properties): JSX.Element => ( @@ -77,7 +79,10 @@ const Dialog = ({
    Dashbrd. All rights reserved.","footer.all_rights_reserved":"All rights reserved","footer.privacy_policy":"Privacy Policy","footer.terms_of_service":"Terms of Service","footer.powered_by":"Powered by","format.fiat":"{{ value, currency }}","format.number":"{{ value, number }}","metatags.home.title":"Dashbrd | Web3 Portfolio Management Made Simple","metatags.home.description":"Simplify your Web3 journey with Dashbrd. Manage your portfolio of tokens, NFTs, and other digital collectibles across the Ethereum and Polygon blockchains.","metatags.home.image":"/images/meta/home.png","metatags.error.title":"Error {{code}} | Dashbrd","metatags.wallet.title":"My Wallet | Dashbrd","metatags.galleries.title":"Top NFT Galleries | Dashbrd","metatags.galleries.image":"/images/meta/nft-galleries.png","metatags.galleries.description":"Explore user published NFT galleries to find custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.most_popular.title":"Most Popular Galleries | Dashbrd","metatags.galleries.most_popular.image":"/images/meta/most-popular-nft-galleries.png","metatags.galleries.most_popular.description":"Explore and discover Most Popular NFT Galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.newest.title":"Newest Galleries | Dashbrd","metatags.galleries.newest.image":"/images/meta/newest-nft-galleries.png","metatags.galleries.newest.description":"Explore and discover most recent NFT galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More","metatags.galleries.most_valuable.title":"Most Valuable Galleries | Dashbrd","metatags.galleries.most_valuable.image":"/images/meta/most-valuable-nft-galleries.png","metatags.galleries.most_valuable.description":"Explore and discover Most Valuable NFT Galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.view.title":"{{name}} | Dashbrd","metatags.galleries.view.description":"{{name}} | A Curated NFT Gallery at Dashbrd","metatags.galleries.view.image":"/images/meta/nft-gallery.png","metatags.my_galleries.title":"My Galleries | Dashbrd","metatags.my_galleries.title_draft":"My Draft Galleries | Dashbrd","metatags.my_galleries.create.title":"Create Gallery | Dashbrd","metatags.my_galleries.edit.title":"Edit {{name}} | Dashbrd","metatags.collections.title":"Collections | Dashbrd","metatags.collections.view.title":"{{name}} Collection | Dashbrd","metatags.collections.view.description":"Immerse yourself in the intricate details of {{name}} collection, featuring remarkable digital assets. Start your NFT journey today!","metatags.collections.view.image":"/images/meta/nft-collection.png","metatags.my-collections.title":"My Collections | Dashbrd","metatags.nfts.view.title":"{{nft}} NFT | Dashbrd","metatags.nfts.view.description":"Uncover the complete story of {{nft}} NFT from the {{collection}} collection, delving into its unique attributes and distinctive features.","metatags.nfts.view.image":"/images/meta/nft-details.png","metatags.settings.title":"Settings | Dashbrd","metatags.articles.title":"Articles | Dashbrd","metatags.articles.view.title":"{{title}} | Dashbrd","metatags.login.title":"Login | Dashbrd","metatags.privacy_policy.title":"Privacy Policy | Dashbrd","metatags.privacy_policy.description":"Dashbrd’s privacy policy outlines the information we collect and explains your choices surrounding how we use information about you.","metatags.terms_of_service.title":"Terms of Service | Dashbrd","metatags.terms_of_service.description":"These Terms of Service cover your use and access to services, products or websites of Dashbrd.","metatags.cookie_policy.title":"Cookie Policy | Dashbrd","metatags.cookie_policy.description":"Dashbrd uses cookies to make the website more user-friendly. Find out about the main types of cookies we use, and what we use them for.","metatags.welcome.title":"Welcome to Dashbrd | Web3 Simplified","pages.onboarding.title":"Get Started","pages.onboarding.heading":"Your monkeys were bored and ran off, we are trying to round them up.","pages.onboarding.message":"We are setting up your account. This process usually takes just a few minutes, but can take up to 15 minutes.","pages.error.heading":"Oops, something went wrong ...","pages.error.message":"Please try again or get in touch if the issue persists.","pages.maintenance.title":"Dashbrd is currently down for scheduled maintenance.","pages.maintenance.description":"We expect to be back soon. Thanks for your patience.","pages.dashboard.title":"My Wallet","pages.dashboard.breakdown.title":"Portfolio Breakdown","pages.dashboard.line_chart.data_error":"Could not load chart data","pages.articles.title":"Articles","pages.articles.featured_collections":"Featured Collections","pages.articles.placeholder_more_soon":"More Soon","pages.articles.no_articles":"No articles have been published yet. Please check back later!","pages.articles.header_title":"Explore our collection of","pages.articles.header_suffix_one":"published article","pages.articles.header_suffix_other":"published articles","pages.articles.audio_version":"Audio version","pages.articles.consists_of_collections":"{0} This article highlights {{count}} collections|{1} This article highlights {{count}} collection|[2,*] This article highlights {{count}} collections","pages.collections.title":"Collections","pages.collections.collections":"Collections","pages.collections.popular_collections":"Popular Collections","pages.collections.collection_value":"Collection Value","pages.collections.nfts_owned":"NFTs Owned","pages.collections.header_title":"You own <0>{{nftsCount}} {{nfts}} across <0>{{collectionsCount}} {{collections}}, worth about <0><1>{{worth}}","pages.collections.search_placeholder":"Search by Collection","pages.collections.properties":"Properties","pages.collections.collections_network":"Collections Network","pages.collections.property_search_placeholder":"Feature Search","pages.collections.floor_price":"Floor Price","pages.collections.value":"Value","pages.collections.rarity":"Rarity","pages.collections.report":"Report","pages.collections.hide_collection":"Hide Collection","pages.collections.unhide_collection":"Unhide Collection","pages.collections.no_collections":"You do not own any NFTs yet. Once you do they will be shown here.","pages.collections.all_collections_hidden":"You have hidden all your collections. Unhide and they will appear here.","pages.collections.about_collection":"About Collection","pages.collections.show_hidden":"Show Hidden","pages.collections.show_my_collection":"Show My Collection","pages.collections.owned":"Owned","pages.collections.activities.loading_activities":"We're fetching Activity for this NFT, please hang tight, this can take a while.","pages.collections.activities.loading_activities_collection":"We're fetching Activity for this collection, please hang tight, this can take a while.","pages.collections.activities.ignores_activities":"We don't support activity history for this collection yet.","pages.collections.activities.no_activity":"This collection does not have any activity yet.","pages.collections.activities.types.LABEL_MINT":"Mint","pages.collections.activities.types.LABEL_TRANSFER":"Transfer","pages.collections.activities.types.LABEL_SALE":"Sale","pages.collections.activities.types.LABEL_BURN":"Burn","pages.collections.collection_of_the_month.winners_month":"Winners: {{month}}","pages.collections.collection_of_the_month.vote_for_next_months_winners":"Vote now for next month's winners","pages.collections.collection_of_the_month.view_previous_winners":"View Previous Winners","pages.collections.collection_of_the_month.vote_success":"Your vote has been successfully submitted","pages.collections.articles.heading":"Latest NFT News & Features","pages.collections.articles.no_articles":"No articles have been linked to this collection as of now.","pages.collections.articles.no_articles_with_filters":"We could not find any articles matching your search criteria, please try again!","pages.collections.articles.search_placeholder":"Search in Articles","pages.collections.articles.sort_latest":"Latest","pages.collections.articles.sort_popularity":"Most Popular","pages.collections.search.loading_results":"Loading results...","pages.collections.search.no_results":"We could not find anything matching your search criteria, please try again!","pages.collections.search.no_results_with_filters":"We could not find anything matching your filters, please try again!","pages.collections.search.no_results_ownership":"You do not own any NFTs in this collection","pages.collections.search.error":"Could not load search results. Please try again later.","pages.collections.vote.vote_for_top_collection":"Vote for Top Collection of the Month","pages.collections.vote.vote":"Vote","pages.collections.vote.time_left":"Time Left","pages.collections.vote.or_nominate_collection":"Or nominate a collection","pages.collections.vote.vote_to_reveal":"Vote to reveal data","pages.collections.vote.already_voted":"You’ve already nominated. Come back next month!","pages.collections.sorting.token_number":"Token Number","pages.collections.sorting.recently_received":"Recently Received","pages.collections.sorting.recently_created":"Recently Created","pages.collections.sorting.oldest_collection":"Oldest Collection","pages.collections.traits.description":"List of NFT traits by % of occurrence in the collection","pages.collections.traits.no_traits":"No Properties can be found for this NFT","pages.collections.menu.collection":"Collection","pages.collections.menu.articles":"Articles","pages.collections.menu.activity":"Activity","pages.collections.hidden_modal.collection_hidden":"Collection Hidden","pages.collections.hidden_modal.description":"This collection is currently set to Hidden. Are you sure you want to unhide this collection? You can\n reset the collection to hidden from the collection menu.","pages.collections.hidden_modal.unhide":"Unhide","pages.collections.hidden_modal.error":"Something went wrong. Please try again.","pages.collections.external_modal.you_wish_continue":"You are about to leave Dashbrd to an external website. Dashbrd has no control over the content of\n this site. Are you sure you wish to continue?","pages.collections.external_modal.not_show":"Do not show this message again.","pages.collections.refresh.title":"Refresh your collection","pages.collections.refresh.notice":"You can refresh data every 15 minutes.","pages.collections.refresh.notice_wait":"Please wait. You can refresh data every 15 minutes.","pages.collections.refresh.toast":"We're updating information for your collection.","pages.collections.featured.title":"Featured Collections","pages.collections.featured.button":"Explore Collection","pages.collections.footer.heading_broken.0":"Connect with MetaMask","pages.collections.footer.heading_broken.1":"& Manage Your Collection","pages.collections.footer.subtitle":"Explore, Filter, & Share your favorite NFTs with Dashbrd.","pages.collections.footer.button":"Manage Collections","pages.nfts.nft":"nft","pages.nfts.about_nft":"About NFT","pages.nfts.owned_by":"Owned by","pages.nfts.collection_image":"collection image","pages.nfts.menu.properties":"Properties","pages.nfts.menu.activity":"Activity","pages.reports.title":"Submit a Report","pages.reports.description":"Thanks for looking out by reporting things that break the rules. Let us know what's happening and we'll receive the report.","pages.reports.success":"Thank you for your report. We'll review it and see if it breaks our ToS.","pages.reports.failed":"Something went wrong. Please try again.","pages.reports.throttle":"You have made too many requests. Please wait {{time}} before reporting again.","pages.reports.reported":"You have already reported this {{model}}.","pages.reports.reasons.spam":"Spam","pages.reports.reasons.violence":"Promoting Violence","pages.reports.reasons.hate":"Hate","pages.reports.reasons.inappropriate_content":"Inappropriate Content","pages.reports.reasons.impersonation":"Impersonation","pages.reports.reasons.trademark":"Trademark or Copyright","pages.reports.reasons.selfharm":"Self-Harm","pages.reports.reasons.harassment":"Harassment","pages.galleries.title":"Galleries","pages.galleries.empty_title":"No galleries have been published yet. Once they do they will appear here.","pages.galleries.search.loading_results":"Loading results...","pages.galleries.search.no_results":"We could not find anything matching your search criteria, please try again!","pages.galleries.search.placeholder":"Search by name or curator address","pages.galleries.search.placeholder_nfts":"Search by NFTs","pages.galleries.search.error":"Could not load search results. Please try again later.","pages.galleries.my_galleries.title":"My Galleries","pages.galleries.my_galleries.subtitle":"Manage your galleries","pages.galleries.my_galleries.new_gallery":"New Gallery","pages.galleries.my_galleries.no_galleries":"You have not created any galleries yet. To create a gallery, click on the \"Create Gallery\" button.","pages.galleries.my_galleries.no_available_collections":"You have hidden all your collections. If you want to create a gallery, make sure you have at least 1 collection available.","pages.galleries.my_galleries.no_draft_galleries":"You have no draft galleries yet. To create a gallery, click on the \"Create Gallery\" button.","pages.galleries.my_galleries.succesfully_deleted":"Gallery has been successfully removed","pages.galleries.my_galleries.draft_succesfully_deleted":"Draft has been successfully removed","pages.galleries.my_galleries.successfully_created":"Gallery has been successfully created","pages.galleries.my_galleries.successfully_updated":"Gallery has been successfully updated","pages.galleries.my_galleries.new_gallery_no_nfts":"Creating a Gallery requires you to own an NFT.","pages.galleries.my_galleries.new_gallery_all_collections_hidden":"Creating a Gallery requires you to have at least 1 collection available.","pages.galleries.my_galleries.delete_modal.title":"Delete Draft","pages.galleries.my_galleries.delete_modal.text":"Are you sure you want to delete the draft? Everything you've done will be deleted and you won't be able to get it back.","pages.galleries.my_galleries.nfts_no_longer_owned":"NFTs no longer owned by this wallet have been removed from the draft”","pages.galleries.copy_gallery_link":"Copy Gallery Link","pages.galleries.my_nfts":"My NFTs","pages.galleries.show_hidden_collections":"Show hidden collections","pages.galleries.value":"Value","pages.galleries.floor_price":"Floor Price","pages.galleries.nfts":"NFTs","pages.galleries.collections":"Collections","pages.galleries.galleries_count_simple":"{0} galleries|{1} gallery|[2,*] galleries","pages.galleries.galleries_count":"{0} {{count}} Galleries|{1} {{count}} Gallery|[2,*] {{count}} Galleries","pages.galleries.collections_count_simple":"{0} collections|{1} collection|[2,*] collections","pages.galleries.collections_count":"{0} {{count}} Collections|{1} {{count}} Collection|[2,*] {{count}} Collections","pages.galleries.nfts_count_simple":"{0} NFTs|{1} NFT|[2,*] NFTs","pages.galleries.nfts_count":"{0} {{count}} NFTs|{1} {{count}} NFT|[2,*] {{count}} NFTs","pages.galleries.users_count_simple":"{0} users|{1} user|[2,*] users","pages.galleries.users_count":"{0} {{count}} Users|{1} {{count}} User|[2,*] {{count}} Users","pages.galleries.featuring":"Featuring","pages.galleries.curated_by":"Curated by","pages.galleries.worth_about":"Worth About","pages.galleries.valued_at":"valued at","pages.galleries.from":"From","pages.galleries.most_popular_galleries":"Most Popular Galleries","pages.galleries.newest_galleries":"Newest Galleries","pages.galleries.most_valuable_galleries":"Most Valuable Galleries","pages.galleries.most_popular":"Most Popular","pages.galleries.newest":"Newest","pages.galleries.most_valuable":"Most Valuable","pages.galleries.create.search_by_nfts":"Search by NFTs","pages.galleries.create.input_placeholder":"Enter gallery name","pages.galleries.create.title_too_long":"Gallery name must not exceed {{max}} characters.","pages.galleries.create.already_selected_nft":"NFT already exists in this gallery","pages.galleries.create.nft_missing_image":"Only NFTs with images can be added to galleries","pages.galleries.create.nft_gallery_limit":"You can only add 16 NFTs per gallery","pages.galleries.create.gallery_cover":"Gallery Cover","pages.galleries.create.gallery_cover_description":"The cover is used for the card on the gallery list page. While the cover is not a requirement it will allow you to add personality and stand out from the crowd.","pages.galleries.create.gallery_cover_information":"Image dimensions must be at least 287px x 190px, with a max size of 2 MB (JPG, PNG or GIF)","pages.galleries.create.no_results":"We could not find anything matching your search criteria, please try again!","pages.galleries.create.templates.cover":"Cover","pages.galleries.create.templates.template":"Template","pages.galleries.create.templates.select":"Select Gallery Template","pages.galleries.create.templates.basic":"Basic Gallery","pages.galleries.create.templates.coming_soon":"More Coming Soon","pages.galleries.create.load_more_collections_one":"Load {{count}} More Collection","pages.galleries.create.load_more_collections_other":"Load {{count}} More Collections","pages.galleries.create.load_more_nfts":"Load More NFTs","pages.galleries.create.can_purchase":"You can purchase NFTs with these top NFT Marketplaces:","pages.galleries.create.must_own_one_nft":"You must own at least one (1) NFT in order to create a gallery.","pages.galleries.create.back_to_galleries":"Back to Galleries","pages.galleries.create.draft_saved":"Draft Saved","pages.galleries.create.saving_to_draft":"Saving to draft","pages.galleries.create.drafts_limit_modal_title":"Draft Gallery Limit","pages.galleries.create.drafts_limit_modal_message":"You’ve hit your limit for draft galleries. While you can still make new galleries and publish them, they won’t be saved as drafts. To Free up space, you can either delete existing drafts or publish them.","pages.galleries.create.drafts_limit_modal_cancel":"Go to Drafts","pages.galleries.delete_modal.title":"Delete Gallery","pages.galleries.delete_modal.confirmation_text":"Are you sure you want to delete the gallery? Deleting a Gallery is permanent, all associated views and likes will be lost.","pages.galleries.consists_of_collections":"{0} This gallery consists of {{count}} collections|{1} This gallery consists of {{count}} collection|[2,*] This gallery consists of {{count}} collections","pages.galleries.guest_banner.title":"Craft the ultimate","pages.galleries.guest_banner.subtitle":"Pick your favorites, curate your gallery, & share it with the world.","pages.profile.title":"Profile","pages.token_panel.balance_tooltip":"Total percentage of the portfolio held in this token","pages.token_panel.insufficient_funds":"Insufficient Balance","pages.token_panel.error":"Dashbrd has failed to load token information. Please try again later.","pages.token_panel.failed_to_retrieve_transactions":"We were unable to fetch your transactions.","pages.token_panel.tabs.transaction_history":"Transaction History","pages.token_panel.tabs.history":"History","pages.token_panel.tabs.market_data":"Market Data","pages.token_panel.details.current_price":"Current Price","pages.token_panel.details.title":"Token Details","pages.token_panel.details.market_cap":"Market Cap","pages.token_panel.details.volume":"Daily Volume","pages.token_panel.details.supply":"Minted Supply","pages.token_panel.details.ath":"All-Time High","pages.token_panel.details.atl":"All-Time Low","pages.token_panel.chart.failed":"Dashbrd has failed to load chart information. Please try again later.","pages.transaction_details_panel.title":"Transaction Details","pages.transaction_details_panel.details.blockchain":"Blockchain","pages.transaction_details_panel.details.timestamp":"Timestamp","pages.transaction_details_panel.details.transaction_hash":"Transaction Hash","pages.transaction_details_panel.details.transaction_fee":"Transaction Fee","pages.transaction_details_panel.details.gas_price":"Gas Price","pages.transaction_details_panel.details.gas_used":"Gas Used","pages.transaction_details_panel.details.nonce":"Nonce","pages.send_receive_panel.send.labels.token_and_amount":"Token and Amount","pages.send_receive_panel.send.labels.destination_address":"Destination Address","pages.send_receive_panel.send.labels.projected_fee":"Projected Fee","pages.send_receive_panel.send.placeholders.enter_amount":"Enter Amount","pages.send_receive_panel.send.placeholders.insert_recipient_address":"Insert Recipient Address","pages.send_receive_panel.send.placeholders.projected_fee":"Projected Fee","pages.send_receive_panel.send.errors.amount":"Insufficient Funds: You do not have enough to cover the amount + fee.","pages.send_receive_panel.send.errors.destination":"Destination address is not correct. Check and input again.","pages.send_receive_panel.send.hints.token_price":"Token Price","pages.send_receive_panel.send.fees.Fast":"Fast","pages.send_receive_panel.send.fees.Avg":"Avg","pages.send_receive_panel.send.fees.Slow":"Slow","pages.send_receive_panel.send.search_dropdown.placeholder":"Search token","pages.send_receive_panel.send.search_dropdown.no_results":"No Results","pages.send_receive_panel.send.search_dropdown.error":"Error occurred while searching tokens.","pages.send_receive_panel.send.transaction_time":"Transaction Time: ~{{ time }} minutes","pages.send_receive_panel.send.from":"From","pages.send_receive_panel.send.to":"To","pages.send_receive_panel.send.amount":"Amount","pages.send_receive_panel.send.fee":"Fee","pages.send_receive_panel.send.total_amount":"Total Amount","pages.send_receive_panel.send.waiting_message":"Review and verify the information on your MetaMask. Sign to send the transaction.","pages.send_receive_panel.send.waiting_spinner_text":"Waiting for confirmation...","pages.send_receive_panel.send.failed_message":"It looks like something went wrong while sending your transaction. Press 'Retry' to make another attempt.","pages.send_receive_panel.receive.alert":"Send only Polygon or Ethereum Network compatible tokens to this address or you could permanently lose your funds!","pages.settings.title":"Settings","pages.settings.sidebar.general":"General","pages.settings.sidebar.notifications":"Notifications","pages.settings.sidebar.session_history":"Sessions History","pages.settings.general.title":"Settings","pages.settings.general.subtitle":"Customize your App Experience","pages.settings.general.currency":"Currency","pages.settings.general.currency_subtitle":"Select your default currency which will be used throughout the app.","pages.settings.general.time_date":"Time & Date","pages.settings.general.time_date_subtitle":"Select how you want time and date be shown inside app.","pages.settings.general.date_format":"Date Format","pages.settings.general.time_format":"Time Format","pages.settings.general.timezone":"Timezone","pages.settings.general.set_defaults":"Set Defaults","pages.settings.general.set_defaults_content":"Reverting to the default settings will remove any customizations previously made. Are you sure?","pages.settings.general.save":"Save Settings","pages.settings.general.saved":"Your settings have been successfully saved","pages.wallet.title":"Wallet","pages.privacy_policy.title":"Privacy Policy","pages.terms_of_service.title":"Terms of Service","pagination.previous":"« Previous","pagination.next":"Next »","passwords.reset":"Your password has been reset!","passwords.sent":"We have emailed your password reset link!","passwords.throttled":"Please wait before retrying.","passwords.token":"This password reset token is invalid.","passwords.user":"We can't find a user with that email address.","urls.landing":"https://dashbrd.com","urls.cookie_policy":"https://dashbrd.com/cookie-policy","urls.privacy_policy":"https://dashbrd.com/privacy-policy","urls.terms_of_service":"https://dashbrd.com/terms-of-service","urls.twitter":"https://x.com/DashbrdApp","urls.discord":"https://discord.gg/MJyWKkCJ5k","urls.github":"https://github.com/ArdentHQ/dashbrd","urls.coingecko":"https://www.coingecko.com","urls.etherscan":"https://etherscan.io","urls.polygonscan":"https://polygonscan.com","urls.alchemy":"https://www.alchemy.com","urls.moralis":"https://moralis.io","urls.mnemonic":"https://www.mnemonichq.com","urls.opensea":"https://opensea.io/","urls.explorers.etherscan.token_transactions":"https://etherscan.io/token/{{token}}?a={{address}}","urls.explorers.etherscan.addresses":"https://etherscan.io/address/{{address}}","urls.explorers.etherscan.transactions":"https://etherscan.io/tx/{{id}}","urls.explorers.etherscan.nft":"https://etherscan.io/nft/{{address}}/{{nftId}}","urls.explorers.polygonscan.token_transactions":"https://polygonscan.com/token/{{token}}?a={{address}}","urls.explorers.polygonscan.addresses":"https://polygonscan.com/address/{{address}}","urls.explorers.polygonscan.transactions":"https://polygonscan.com/tx/{{id}}","urls.explorers.polygonscan.nft":"https://polygonscan.com/nft/{{address}}/{{nftId}}","urls.explorers.mumbai.token_transactions":"https://mumbai.polygonscan.com/token/{{token}}?a={{address}}","urls.explorers.mumbai.addresses":"https://mumbai.polygonscan.com/address/{{address}}","urls.explorers.mumbai.transactions":"https://mumbai.polygonscan.com/tx/{{id}}","urls.explorers.mumbai.nft":"https://mumbai.polygonscan.com/nft/{{address}}/{{nftId}}","urls.explorers.goerli.token_transactions":"https://goerli.etherscan.io/token/{{token}}?a={{address}}","urls.explorers.goerli.addresses":"https://goerli.etherscan.io/address/{{address}}","urls.explorers.goerli.transactions":"https://goerli.etherscan.io/tx/{{id}}","urls.explorers.goerli.nft":"https://goerli.etherscan.io/nft/{{address}}/{{nftId}}","urls.marketplaces.opensea.collection":"https://opensea.io/assets/{{network}}/{{address}}","urls.marketplaces.opensea.nft":"https://opensea.io/assets/{{network}}/{{address}}/{{nftId}}","urls.marketplaces.rarible.collection":"https://rarible.com/collection/{{address}}/items","urls.marketplaces.rarible.nft":"https://rarible.com/token/{{address}}:{{nftId}}","urls.marketplaces.blur.collection":"https://blur.io/collection/{{address}}","urls.marketplaces.blur.nft":"https://blur.io/asset/{{address}}/{{nftId}}","urls.marketplaces.looksrare.collection":"https://looksrare.org/collections/{{address}}","urls.marketplaces.looksrare.nft":"https://looksrare.org/collections/{{address}}/{{nftId}}","validation.accepted":"The {{attribute}} must be accepted.","validation.accepted_if":"The {{attribute}} must be accepted when {{other}} is {{value}}.","validation.active_url":"The {{attribute}} is not a valid URL.","validation.after":"The {{attribute}} must be a date after {{date}}.","validation.after_or_equal":"The {{attribute}} must be a date after or equal to {{date}}.","validation.alpha":"The {{attribute}} must only contain letters.","validation.alpha_dash":"The {{attribute}} must only contain letters, numbers, dashes and underscores.","validation.alpha_num":"The {{attribute}} must only contain letters and numbers.","validation.array":"The {{attribute}} must be an array.","validation.ascii":"The {{attribute}} must only contain single-byte alphanumeric characters and symbols.","validation.before":"The {{attribute}} must be a date before {{date}}.","validation.before_or_equal":"The {{attribute}} must be a date before or equal to {{date}}.","validation.between.array":"The {{attribute}} must have between {{min}} and {{max}} items.","validation.between.file":"The {{attribute}} must be between {{min}} and {{max}} kilobytes.","validation.between.numeric":"The {{attribute}} must be between {{min}} and {{max}}.","validation.between.string":"The {{attribute}} must be between {{min}} and {{max}} characters.","validation.boolean":"The {{attribute}} field must be true or false.","validation.confirmed":"The {{attribute}} confirmation does not match.","validation.current_password":"The password is incorrect.","validation.date":"The {{attribute}} is not a valid date.","validation.date_equals":"The {{attribute}} must be a date equal to {{date}}.","validation.date_format":"The {{attribute}} does not match the format {{format}}.","validation.decimal":"The {{attribute}} must have {{decimal}} decimal places.","validation.declined":"The {{attribute}} must be declined.","validation.declined_if":"The {{attribute}} must be declined when {{other}} is {{value}}.","validation.different":"The {{attribute}} and {{other}} must be different.","validation.digits":"The {{attribute}} must be {{digits}} digits.","validation.digits_between":"The {{attribute}} must be between {{min}} and {{max}} digits.","validation.dimensions":"The {{attribute}} has invalid image dimensions.","validation.distinct":"The {{attribute}} field has a duplicate value.","validation.doesnt_end_with":"The {{attribute}} may not end with one of the following: {{values}}.","validation.doesnt_start_with":"The {{attribute}} may not start with one of the following: {{values}}.","validation.email":"The {{attribute}} must be a valid email address.","validation.ends_with":"The {{attribute}} must end with one of the following: {{values}}.","validation.enum":"The selected {{attribute}} is invalid.","validation.exists":"The selected {{attribute}} is invalid.","validation.file":"The {{attribute}} must be a file.","validation.filled":"The {{attribute}} field must have a value.","validation.gt.array":"The {{attribute}} must have more than {{value}} items.","validation.gt.file":"The {{attribute}} must be greater than {{value}} kilobytes.","validation.gt.numeric":"The {{attribute}} must be greater than {{value}}.","validation.gt.string":"The {{attribute}} must be greater than {{value}} characters.","validation.gte.array":"The {{attribute}} must have {{value}} items or more.","validation.gte.file":"The {{attribute}} must be greater than or equal to {{value}} kilobytes.","validation.gte.numeric":"The {{attribute}} must be greater than or equal to {{value}}.","validation.gte.string":"The {{attribute}} must be greater than or equal to {{value}} characters.","validation.image":"The {{attribute}} must be an image.","validation.in":"The selected {{attribute}} is invalid.","validation.in_array":"The {{attribute}} field does not exist in {{other}}.","validation.integer":"The {{attribute}} must be an integer.","validation.ip":"The {{attribute}} must be a valid IP address.","validation.ipv4":"The {{attribute}} must be a valid IPv4 address.","validation.ipv6":"The {{attribute}} must be a valid IPv6 address.","validation.json":"The {{attribute}} must be a valid JSON string.","validation.lowercase":"The {{attribute}} must be lowercase.","validation.lt.array":"The {{attribute}} must have less than {{value}} items.","validation.lt.file":"The {{attribute}} must be less than {{value}} kilobytes.","validation.lt.numeric":"The {{attribute}} must be less than {{value}}.","validation.lt.string":"The {{attribute}} must be less than {{value}} characters.","validation.lte.array":"The {{attribute}} must not have more than {{value}} items.","validation.lte.file":"The {{attribute}} must be less than or equal to {{value}} kilobytes.","validation.lte.numeric":"The {{attribute}} must be less than or equal to {{value}}.","validation.lte.string":"The {{attribute}} must be less than or equal to {{value}} characters.","validation.mac_address":"The {{attribute}} must be a valid MAC address.","validation.max.array":"The {{attribute}} must not have more than {{max}} items.","validation.max.file":"The {{attribute}} must not be greater than {{max}} kilobytes.","validation.max.numeric":"The {{attribute}} must not be greater than {{max}}.","validation.max.string":"The {{attribute}} must not be greater than {{max}} characters.","validation.max_digits":"The {{attribute}} must not have more than {{max}} digits.","validation.mimes":"The {{attribute}} must be a file of type: {{values}}.","validation.mimetypes":"The {{attribute}} must be a file of type: {{values}}.","validation.min.array":"The {{attribute}} must have at least {{min}} items.","validation.min.file":"The {{attribute}} must be at least {{min}} kilobytes.","validation.min.numeric":"The {{attribute}} must be at least {{min}}.","validation.min.string":"The {{attribute}} must be at least {{min}} characters.","validation.min_digits":"The {{attribute}} must have at least {{min}} digits.","validation.missing":"The {{attribute}} field must be missing.","validation.missing_if":"The {{attribute}} field must be missing when {{other}} is {{value}}.","validation.missing_unless":"The {{attribute}} field must be missing unless {{other}} is {{value}}.","validation.missing_with":"The {{attribute}} field must be missing when {{values}} is present.","validation.missing_with_all":"The {{attribute}} field must be missing when {{values}} are present.","validation.multiple_of":"The {{attribute}} must be a multiple of {{value}}.","validation.not_in":"The selected {{attribute}} is invalid.","validation.not_regex":"The {{attribute}} format is invalid.","validation.numeric":"The {{attribute}} must be a number.","validation.password.letters":"The {{attribute}} must contain at least one letter.","validation.password.mixed":"The {{attribute}} must contain at least one uppercase and one lowercase letter.","validation.password.numbers":"The {{attribute}} must contain at least one number.","validation.password.symbols":"The {{attribute}} must contain at least one symbol.","validation.password.uncompromised":"The given {{attribute}} has appeared in a data leak. Please choose a different {{attribute}}.","validation.present":"The {{attribute}} field must be present.","validation.prohibited":"The {{attribute}} field is prohibited.","validation.prohibited_if":"The {{attribute}} field is prohibited when {{other}} is {{value}}.","validation.prohibited_unless":"The {{attribute}} field is prohibited unless {{other}} is in {{values}}.","validation.prohibits":"The {{attribute}} field prohibits {{other}} from being present.","validation.regex":"The {{attribute}} format is invalid.","validation.required":"The {{attribute}} field is required.","validation.required_array_keys":"The {{attribute}} field must contain entries for: {{values}}.","validation.required_if":"The {{attribute}} field is required when {{other}} is {{value}}.","validation.required_if_accepted":"The {{attribute}} field is required when {{other}} is accepted.","validation.required_unless":"The {{attribute}} field is required unless {{other}} is in {{values}}.","validation.required_with":"The {{attribute}} field is required when {{values}} is present.","validation.required_with_all":"The {{attribute}} field is required when {{values}} are present.","validation.required_without":"The {{attribute}} field is required when {{values}} is not present.","validation.required_without_all":"The {{attribute}} field is required when none of {{values}} are present.","validation.same":"The {{attribute}} and {{other}} must match.","validation.size.array":"The {{attribute}} must contain {{size}} items.","validation.size.file":"The {{attribute}} must be {{size}} kilobytes.","validation.size.numeric":"The {{attribute}} must be {{size}}.","validation.size.string":"The {{attribute}} must be {{size}} characters.","validation.starts_with":"The {{attribute}} must start with one of the following: {{values}}.","validation.string":"The {{attribute}} must be a string.","validation.timezone":"The {{attribute}} must be a valid timezone.","validation.unique":"The {{attribute}} has already been taken.","validation.uploaded":"The {{attribute}} failed to upload.","validation.uppercase":"The {{attribute}} must be uppercase.","validation.url":"The {{attribute}} must be a valid URL.","validation.ulid":"The {{attribute}} must be a valid ULID.","validation.uuid":"The {{attribute}} must be a valid UUID.","validation.custom.attribute-name.rule-name":"custom-message","validation.unsupported_currency_code":"The currency code you provided is invalid or not supported.","validation.unsupported_period":"The period you provided is invalid or not supported.","validation.unsupported_token_symbol":"The token symbol you provided is invalid or not supported.","validation.gallery_title_required":"Gallery name is required.","validation.gallery_title_max_characters":"The gallery name should not exceed 50 characters.","validation.gallery_title_invalid":"The gallery name is invalid.","validation.nfts_required":"Please add at least one NFT.","validation.nfts_max_size":"Galleries can contain no more than {{limit}} NFTs","validation.invalid_nfts":"The NFT in position {{position}} is invalid, please select another one.","validation.invalid_cover":"You have selected an invalid cover image, please try another one."} \ No newline at end of file +{"auth.welcome":"Welcome to Dashbrd","auth.logged_in":"You're logged in!","auth.log_out":"Log out","auth.failed":"These credentials do not match our records.","auth.session_timeout":"Your session has timed out. Please refresh the page and try connecting your account again.","auth.session_timeout_modal":"Seems like your session has timed out. Please connnect your wallet again.","auth.password":"The provided password is incorrect.","auth.throttle":"Too many login attempts. Please try again in {{seconds}} seconds.","auth.wallet.connecting":"Connecting …","auth.wallet.waiting_for_signature":"Waiting for Signature …","auth.wallet.switching_wallet":"Switching Wallet …","auth.wallet.connect":"Connect Wallet","auth.wallet.connect_long":"Connect Your Wallet to Get Started","auth.wallet.sign_subtitle":"Connect Your Wallet to Continue","auth.wallet.disconnect":"Disconnect Wallet","auth.wallet.install":"Install MetaMask","auth.wallet.install_long":"Install MetaMask to Get Started","auth.wallet.sign":"Sign Message","auth.wallet.sign_message":"Welcome to Dashbrd. In order to login, sign this message with your wallet. It doesn't cost you anything!\n\nSigning ID (you can ignore this): {{nonce}}","auth.wallet.connect_subtitle":"Click on the MetaMask icon in your browser to confirm the action and connect your wallet.","auth.wallet.requires_signature":"In order to prevent impersonation, we require a signature to perform this action. This signature is only a signed message and does not give any access to your wallet.","auth.errors.metamask.no_account":"No account found. Please connect your wallet and try again.","auth.errors.metamask.generic":"Connection attempt error. Please retry and follow the steps to connect your wallet.","auth.errors.metamask.invalid_network":"Please switch to Polygon or Ethereum Mainnet in your MetaMask plugin to connect to Dashbrd.","auth.errors.metamask.provider_missing":"You don't have MetaMask installed in your browser. Please install and try again.","auth.errors.metamask.user_rejected":"It looks like you cancelled signing of the authentication message. Please try again.","auth.errors.metamask.provider_not_set":"Ethereum provider is not set","auth.validation.wallet_login_failed":"There was a problem trying to verify your signature. Please try again.","auth.validation.invalid_address":"Your wallet address is invalid. Please try again.","auth.validation.invalid_signature":"Signature is invalid. Please try again.","auth.validation.invalid_network":"Please switch to Polygon or Ethereum Mainnet in your MetaMask plugin to connect to Dashbrd.","common.author":"Author","common.add":"Add","common.amount":"Amount","common.balance":"Balance","common.cancel":"Cancel","common.delete":"Delete","common.edit":"Edit","common.confirm":"Confirm","common.connect":"Connect","common.continue":"Continue","common.done":"Done","common.filter":"Filter","common.items":"Items","common.receive":"Receive","common.received":"Received","common.retry":"Retry","common.records":"Records","common.save":"Save","common.send":"Send","common.sent":"Sent","common.show":"Show","common.searching":"Searching...","common.other":"Other","common.owned":"Owned","common.token":"Token","common.tokens":"Tokens","common.wallet":"Wallet","common.pending":"Pending","common.publish":"Publish","common.published":"Published","common.empty":"Empty","common.your_address":"Your Address","common.warning":"Warning","common.my_address":"My Address","common.my_wallet":"My Wallet","common.my_collections":"My Collections","common.my_balance":"My Balance","common.na":"N/A","common.simple_plural_without_data":"One comment|Many comments","common.simple_plural_with_data":"{{count}} comment|{{count}} comments","common.advanced_plural_without_data":"{0} no comments yet|{1} 1 comment|[2,*] Many comments","common.advanced_plural_with_data":"{0} no comments yet|{1} 1 comment|[2,*] {{count}} comments","common.copy_clipboard":"Copy to Clipboard","common.copy":"Copy","common.download":"Download","common.zoom":"Zoom","common.my_collection":"My Collection","common.max":"Max","common.chain":"Chain","common.copied":"Copied!","common.coming_soon":"Coming Soon","common.more_details":"More Details","common.close":"Close","common.close_toast":"Close toast","common.loading":"Loading","common.price":"Price","common.articles":"Articles","common.most_popular":"Most Popular","common.market_cap":"Market Cap","common.volume":"Volume","common.volume_frequency":"Volume {{frequency}}","common.value":"Value","common.last_n_days":"Last {{count}} Days","common.details":"Details","common.view_all":"View All","common.view_more_on_polygonscan":"View More on Polygonscan","common.view_more_on_etherscan":"View More on Etherscan","common.view_nft_on_etherscan":"View NFT on Etherscan","common.view_nft_on_polygonscan":"View NFT on Polygonscan","common.view_nft_on_goerli_tesnet":"View NFT on Goerli Testnet Explorer","common.view_nft_on_mumbai_tesnet":"View NFT on Mumbai Testnet Explorer","common.polygonscan":"Polygonscan","common.etherscan":"Etherscan","common.featured":"Featured","common.floor_price":"Floor Price","common.floor":"Floor","common.supply":"Supply","common.owners":"Owners","common.created":"Created","common.nft":"NFT","common.collection":"Collection","common.collections":"Collections","common.gallery":"Gallery","common.basic_gallery":"Basic Gallery","common.gallery_name":"Gallery Name","common.create_gallery":"Create Gallery","common.external_link":"External Link","common.follow_link":"Follow Link","common.cover":"Cover","common.template":"Template","common.page":"Page","common.polygon":"Polygon","common.ethereum":"Ethereum","common.mumbai":"Mumbai","common.goerli":"Goerli","common.of":"of","common.pagination_input_placeholder":"Enter the page number","common.pagination_input_placeholder_mobile":"Page number","common.nft_count":"{0} {{count}} NFTs|{1} {{count}} NFT|[2,*] {{count}} NFTs","common.nft_gallery":"NFT Gallery","common.unable_to_retrieve_image":"Unable to retrieve your NFT image at this time","common.optional":"Optional","common.selected":"Selected","common.select":"Select","common.preview":"Preview","common.image_size_error":"Image size must not exceed 2MB","common.image_dimensions_error":"Image dimensions must exceed 287px x 190px","common.write_to_confirm":"Write {{word}} to confirm","common.n_hours":"{0} {{count}} hour|{1} {{count}} hour|[2,*] {{count}} hours","common.n_minutes":"{0} {{count}} minute|{1} {{count}} minute|[2,*] {{count}} minutes","common.report":"Report","common.nfts":"NFTs","common.n_nfts":"{0}NFTs|{1}NFT|[2,*]NFTs","common.n_collections":"{0}collections|{1}collection|[2,*]collections","common.back":"Back","common.back_to":"Back to","common.name":"Name","common.type":"Type","common.from":"From","common.to":"To","common.sale_price":"Sale Price","common.recent_activity":"Recent Activity","common.time":"Time","common.datetime.few_seconds_ago":"A few seconds ago","common.datetime.minutes_ago":"{0} Less than a minute ago|{1} A minute ago|[2,*] {{count}} minutes ago","common.datetime.hours_ago":"{0} Less than an hour ago|{1} An hour ago|[2,*] {{count}} hours ago","common.datetime.days_ago":"{0} Less than a day ago|{1} A day ago|[2,*] {{count}} days ago","common.datetime.weeks_ago":"{0} Less than a week ago|{1} A week ago|[2,*] {{count}} weeks ago","common.datetime.months_ago":"{0} Less than a month ago|{1} A month ago|[2,*] {{count}} months ago","common.datetime.years_ago":"{0} Less than a year ago|{1} A year ago|[2,*] {{count}} years ago","common.no_traits_found":"No traits found.","common.empty_transactions":"You don't have any transactions yet. Once transactions have been made, they will show up here.","common.error":"Error","common.refresh":"Refresh","common.refresh_metadata":"Refresh Metadata","common.refreshing_metadata":"Refreshing Metadata... Please check back later.","common.refreshing_activity":"Refreshing Activity... Please check back later.","common.pending_confirmation":"Pending Confirmation","common.confirmed_transaction":"Confirmed Transaction","common.transaction_error":"Transaction Error","common.transaction_error_description_first_part":"Your transaction encountered an error. View this transaction on","common.transaction_error_description_second_part":"for more details.","common.home":"Home","common.contact":"Contact","common.menu":"Menu","common.website":"Website","common.twitter":"Twitter","common.discord":"Discord","common.facebook":"Facebook","common.reddit":"Reddit","common.x":"X","common.sort":"Sort","common.drafts":"Drafts","common.draft":"Draft","common.delete_draft":"Delete Draft","common.share_on":"Share on {{platform}}","common.top":"Top","common.all_chains":"All chains","common.votes":"Votes","common.vote":"Vote","common.vol":"Vol","footer.copyright":"{{year}} © Dashbrd. All rights reserved.","footer.all_rights_reserved":"All rights reserved","footer.privacy_policy":"Privacy Policy","footer.terms_of_service":"Terms of Service","footer.powered_by":"Powered by","format.fiat":"{{ value, currency }}","format.number":"{{ value, number }}","metatags.home.title":"Dashbrd | Web3 Portfolio Management Made Simple","metatags.home.description":"Simplify your Web3 journey with Dashbrd. Manage your portfolio of tokens, NFTs, and other digital collectibles across the Ethereum and Polygon blockchains.","metatags.home.image":"/images/meta/home.png","metatags.error.title":"Error {{code}} | Dashbrd","metatags.wallet.title":"My Wallet | Dashbrd","metatags.galleries.title":"Top NFT Galleries | Dashbrd","metatags.galleries.image":"/images/meta/nft-galleries.png","metatags.galleries.description":"Explore user published NFT galleries to find custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.most_popular.title":"Most Popular Galleries | Dashbrd","metatags.galleries.most_popular.image":"/images/meta/most-popular-nft-galleries.png","metatags.galleries.most_popular.description":"Explore and discover Most Popular NFT Galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.newest.title":"Newest Galleries | Dashbrd","metatags.galleries.newest.image":"/images/meta/newest-nft-galleries.png","metatags.galleries.newest.description":"Explore and discover most recent NFT galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More","metatags.galleries.most_valuable.title":"Most Valuable Galleries | Dashbrd","metatags.galleries.most_valuable.image":"/images/meta/most-valuable-nft-galleries.png","metatags.galleries.most_valuable.description":"Explore and discover Most Valuable NFT Galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.view.title":"{{name}} | Dashbrd","metatags.galleries.view.description":"{{name}} | A Curated NFT Gallery at Dashbrd","metatags.galleries.view.image":"/images/meta/nft-gallery.png","metatags.my_galleries.title":"My Galleries | Dashbrd","metatags.my_galleries.title_draft":"My Draft Galleries | Dashbrd","metatags.my_galleries.create.title":"Create Gallery | Dashbrd","metatags.my_galleries.edit.title":"Edit {{name}} | Dashbrd","metatags.collections.title":"Collections | Dashbrd","metatags.collections.view.title":"{{name}} Collection | Dashbrd","metatags.collections.view.description":"Immerse yourself in the intricate details of {{name}} collection, featuring remarkable digital assets. Start your NFT journey today!","metatags.collections.view.image":"/images/meta/nft-collection.png","metatags.my-collections.title":"My Collections | Dashbrd","metatags.nfts.view.title":"{{nft}} NFT | Dashbrd","metatags.nfts.view.description":"Uncover the complete story of {{nft}} NFT from the {{collection}} collection, delving into its unique attributes and distinctive features.","metatags.nfts.view.image":"/images/meta/nft-details.png","metatags.settings.title":"Settings | Dashbrd","metatags.articles.title":"Articles | Dashbrd","metatags.articles.view.title":"{{title}} | Dashbrd","metatags.login.title":"Login | Dashbrd","metatags.privacy_policy.title":"Privacy Policy | Dashbrd","metatags.privacy_policy.description":"Dashbrd’s privacy policy outlines the information we collect and explains your choices surrounding how we use information about you.","metatags.terms_of_service.title":"Terms of Service | Dashbrd","metatags.terms_of_service.description":"These Terms of Service cover your use and access to services, products or websites of Dashbrd.","metatags.cookie_policy.title":"Cookie Policy | Dashbrd","metatags.cookie_policy.description":"Dashbrd uses cookies to make the website more user-friendly. Find out about the main types of cookies we use, and what we use them for.","metatags.welcome.title":"Welcome to Dashbrd | Web3 Simplified","pages.onboarding.title":"Get Started","pages.onboarding.heading":"Your monkeys were bored and ran off, we are trying to round them up.","pages.onboarding.message":"We are setting up your account. This process usually takes just a few minutes, but can take up to 15 minutes.","pages.error.heading":"Oops, something went wrong ...","pages.error.message":"Please try again or get in touch if the issue persists.","pages.maintenance.title":"Dashbrd is currently down for scheduled maintenance.","pages.maintenance.description":"We expect to be back soon. Thanks for your patience.","pages.dashboard.title":"My Wallet","pages.dashboard.breakdown.title":"Portfolio Breakdown","pages.dashboard.line_chart.data_error":"Could not load chart data","pages.articles.title":"Articles","pages.articles.featured_collections":"Featured Collections","pages.articles.placeholder_more_soon":"More Soon","pages.articles.no_articles":"No articles have been published yet. Please check back later!","pages.articles.header_title":"Explore our collection of","pages.articles.header_suffix_one":"published article","pages.articles.header_suffix_other":"published articles","pages.articles.audio_version":"Audio version","pages.articles.consists_of_collections":"{0} This article highlights {{count}} collections|{1} This article highlights {{count}} collection|[2,*] This article highlights {{count}} collections","pages.collections.title":"Collections","pages.collections.collections":"Collections","pages.collections.popular_collections":"Popular Collections","pages.collections.collection_value":"Collection Value","pages.collections.nfts_owned":"NFTs Owned","pages.collections.header_title":"You own <0>{{nftsCount}} {{nfts}} across <0>{{collectionsCount}} {{collections}}, worth about <0><1>{{worth}}","pages.collections.search_placeholder":"Search by Collection","pages.collections.properties":"Properties","pages.collections.collections_network":"Collections Network","pages.collections.property_search_placeholder":"Feature Search","pages.collections.floor_price":"Floor Price","pages.collections.value":"Value","pages.collections.rarity":"Rarity","pages.collections.report":"Report","pages.collections.hide_collection":"Hide Collection","pages.collections.unhide_collection":"Unhide Collection","pages.collections.no_collections":"You do not own any NFTs yet. Once you do they will be shown here.","pages.collections.all_collections_hidden":"You have hidden all your collections. Unhide and they will appear here.","pages.collections.about_collection":"About Collection","pages.collections.show_hidden":"Show Hidden","pages.collections.show_my_collection":"Show My Collection","pages.collections.owned":"Owned","pages.collections.activities.loading_activities":"We're fetching Activity for this NFT, please hang tight, this can take a while.","pages.collections.activities.loading_activities_collection":"We're fetching Activity for this collection, please hang tight, this can take a while.","pages.collections.activities.ignores_activities":"We don't support activity history for this collection yet.","pages.collections.activities.no_activity":"This collection does not have any activity yet.","pages.collections.activities.types.LABEL_MINT":"Mint","pages.collections.activities.types.LABEL_TRANSFER":"Transfer","pages.collections.activities.types.LABEL_SALE":"Sale","pages.collections.activities.types.LABEL_BURN":"Burn","pages.collections.collection_of_the_month.winners_month":"Winners: {{month}}","pages.collections.collection_of_the_month.vote_for_next_months_winners":"Vote now for next month's winners","pages.collections.collection_of_the_month.view_previous_winners":"View Previous Winners","pages.collections.collection_of_the_month.vote_success":"Your vote has been successfully submitted","pages.collections.articles.heading":"Latest NFT News & Features","pages.collections.articles.no_articles":"No articles have been linked to this collection as of now.","pages.collections.articles.no_articles_with_filters":"We could not find any articles matching your search criteria, please try again!","pages.collections.articles.search_placeholder":"Search in Articles","pages.collections.articles.sort_latest":"Latest","pages.collections.articles.sort_popularity":"Most Popular","pages.collections.search.loading_results":"Loading results...","pages.collections.search.no_results":"We could not find anything matching your search criteria, please try again!","pages.collections.search.no_results_with_filters":"We could not find anything matching your filters, please try again!","pages.collections.search.no_results_ownership":"You do not own any NFTs in this collection","pages.collections.search.error":"Could not load search results. Please try again later.","pages.collections.vote.vote_for_top_collection":"Vote for Top Collection of the Month","pages.collections.vote.vote":"Vote","pages.collections.vote.time_left":"Time Left","pages.collections.vote.or_nominate_collection":"Or nominate a collection","pages.collections.vote.nominate_collection":"Nominate a collection","pages.collections.vote.vote_to_reveal":"Vote to reveal data","pages.collections.vote.already_voted":"You’ve already nominated. Come back next month!","pages.collections.sorting.token_number":"Token Number","pages.collections.sorting.recently_received":"Recently Received","pages.collections.sorting.recently_created":"Recently Created","pages.collections.sorting.oldest_collection":"Oldest Collection","pages.collections.traits.description":"List of NFT traits by % of occurrence in the collection","pages.collections.traits.no_traits":"No Properties can be found for this NFT","pages.collections.menu.collection":"Collection","pages.collections.menu.articles":"Articles","pages.collections.menu.activity":"Activity","pages.collections.hidden_modal.collection_hidden":"Collection Hidden","pages.collections.hidden_modal.description":"This collection is currently set to Hidden. Are you sure you want to unhide this collection? You can\n reset the collection to hidden from the collection menu.","pages.collections.hidden_modal.unhide":"Unhide","pages.collections.hidden_modal.error":"Something went wrong. Please try again.","pages.collections.external_modal.you_wish_continue":"You are about to leave Dashbrd to an external website. Dashbrd has no control over the content of\n this site. Are you sure you wish to continue?","pages.collections.external_modal.not_show":"Do not show this message again.","pages.collections.refresh.title":"Refresh your collection","pages.collections.refresh.notice":"You can refresh data every 15 minutes.","pages.collections.refresh.notice_wait":"Please wait. You can refresh data every 15 minutes.","pages.collections.refresh.toast":"We're updating information for your collection.","pages.collections.featured.title":"Featured Collections","pages.collections.featured.button":"Explore Collection","pages.collections.footer.heading_broken.0":"Connect with MetaMask","pages.collections.footer.heading_broken.1":"& Manage Your Collection","pages.collections.footer.subtitle":"Explore, Filter, & Share your favorite NFTs with Dashbrd.","pages.collections.footer.button":"Manage Collections","pages.nfts.nft":"nft","pages.nfts.about_nft":"About NFT","pages.nfts.owned_by":"Owned by","pages.nfts.collection_image":"collection image","pages.nfts.menu.properties":"Properties","pages.nfts.menu.activity":"Activity","pages.reports.title":"Submit a Report","pages.reports.description":"Thanks for looking out by reporting things that break the rules. Let us know what's happening and we'll receive the report.","pages.reports.success":"Thank you for your report. We'll review it and see if it breaks our ToS.","pages.reports.failed":"Something went wrong. Please try again.","pages.reports.throttle":"You have made too many requests. Please wait {{time}} before reporting again.","pages.reports.reported":"You have already reported this {{model}}.","pages.reports.reasons.spam":"Spam","pages.reports.reasons.violence":"Promoting Violence","pages.reports.reasons.hate":"Hate","pages.reports.reasons.inappropriate_content":"Inappropriate Content","pages.reports.reasons.impersonation":"Impersonation","pages.reports.reasons.trademark":"Trademark or Copyright","pages.reports.reasons.selfharm":"Self-Harm","pages.reports.reasons.harassment":"Harassment","pages.galleries.title":"Galleries","pages.galleries.empty_title":"No galleries have been published yet. Once they do they will appear here.","pages.galleries.search.loading_results":"Loading results...","pages.galleries.search.no_results":"We could not find anything matching your search criteria, please try again!","pages.galleries.search.placeholder":"Search by name or curator address","pages.galleries.search.placeholder_nfts":"Search by NFTs","pages.galleries.search.error":"Could not load search results. Please try again later.","pages.galleries.my_galleries.title":"My Galleries","pages.galleries.my_galleries.subtitle":"Manage your galleries","pages.galleries.my_galleries.new_gallery":"New Gallery","pages.galleries.my_galleries.no_galleries":"You have not created any galleries yet. To create a gallery, click on the \"Create Gallery\" button.","pages.galleries.my_galleries.no_available_collections":"You have hidden all your collections. If you want to create a gallery, make sure you have at least 1 collection available.","pages.galleries.my_galleries.no_draft_galleries":"You have no draft galleries yet. To create a gallery, click on the \"Create Gallery\" button.","pages.galleries.my_galleries.succesfully_deleted":"Gallery has been successfully removed","pages.galleries.my_galleries.draft_succesfully_deleted":"Draft has been successfully removed","pages.galleries.my_galleries.successfully_created":"Gallery has been successfully created","pages.galleries.my_galleries.successfully_updated":"Gallery has been successfully updated","pages.galleries.my_galleries.new_gallery_no_nfts":"Creating a Gallery requires you to own an NFT.","pages.galleries.my_galleries.new_gallery_all_collections_hidden":"Creating a Gallery requires you to have at least 1 collection available.","pages.galleries.my_galleries.delete_modal.title":"Delete Draft","pages.galleries.my_galleries.delete_modal.text":"Are you sure you want to delete the draft? Everything you've done will be deleted and you won't be able to get it back.","pages.galleries.my_galleries.nfts_no_longer_owned":"NFTs no longer owned by this wallet have been removed from the draft”","pages.galleries.copy_gallery_link":"Copy Gallery Link","pages.galleries.my_nfts":"My NFTs","pages.galleries.show_hidden_collections":"Show hidden collections","pages.galleries.value":"Value","pages.galleries.floor_price":"Floor Price","pages.galleries.nfts":"NFTs","pages.galleries.collections":"Collections","pages.galleries.galleries_count_simple":"{0} galleries|{1} gallery|[2,*] galleries","pages.galleries.galleries_count":"{0} {{count}} Galleries|{1} {{count}} Gallery|[2,*] {{count}} Galleries","pages.galleries.collections_count_simple":"{0} collections|{1} collection|[2,*] collections","pages.galleries.collections_count":"{0} {{count}} Collections|{1} {{count}} Collection|[2,*] {{count}} Collections","pages.galleries.nfts_count_simple":"{0} NFTs|{1} NFT|[2,*] NFTs","pages.galleries.nfts_count":"{0} {{count}} NFTs|{1} {{count}} NFT|[2,*] {{count}} NFTs","pages.galleries.users_count_simple":"{0} users|{1} user|[2,*] users","pages.galleries.users_count":"{0} {{count}} Users|{1} {{count}} User|[2,*] {{count}} Users","pages.galleries.featuring":"Featuring","pages.galleries.curated_by":"Curated by","pages.galleries.worth_about":"Worth About","pages.galleries.valued_at":"valued at","pages.galleries.from":"From","pages.galleries.most_popular_galleries":"Most Popular Galleries","pages.galleries.newest_galleries":"Newest Galleries","pages.galleries.most_valuable_galleries":"Most Valuable Galleries","pages.galleries.most_popular":"Most Popular","pages.galleries.newest":"Newest","pages.galleries.most_valuable":"Most Valuable","pages.galleries.create.search_by_nfts":"Search by NFTs","pages.galleries.create.input_placeholder":"Enter gallery name","pages.galleries.create.title_too_long":"Gallery name must not exceed {{max}} characters.","pages.galleries.create.already_selected_nft":"NFT already exists in this gallery","pages.galleries.create.nft_missing_image":"Only NFTs with images can be added to galleries","pages.galleries.create.nft_gallery_limit":"You can only add 16 NFTs per gallery","pages.galleries.create.gallery_cover":"Gallery Cover","pages.galleries.create.gallery_cover_description":"The cover is used for the card on the gallery list page. While the cover is not a requirement it will allow you to add personality and stand out from the crowd.","pages.galleries.create.gallery_cover_information":"Image dimensions must be at least 287px x 190px, with a max size of 2 MB (JPG, PNG or GIF)","pages.galleries.create.no_results":"We could not find anything matching your search criteria, please try again!","pages.galleries.create.templates.cover":"Cover","pages.galleries.create.templates.template":"Template","pages.galleries.create.templates.select":"Select Gallery Template","pages.galleries.create.templates.basic":"Basic Gallery","pages.galleries.create.templates.coming_soon":"More Coming Soon","pages.galleries.create.load_more_collections_one":"Load {{count}} More Collection","pages.galleries.create.load_more_collections_other":"Load {{count}} More Collections","pages.galleries.create.load_more_nfts":"Load More NFTs","pages.galleries.create.can_purchase":"You can purchase NFTs with these top NFT Marketplaces:","pages.galleries.create.must_own_one_nft":"You must own at least one (1) NFT in order to create a gallery.","pages.galleries.create.back_to_galleries":"Back to Galleries","pages.galleries.create.draft_saved":"Draft Saved","pages.galleries.create.saving_to_draft":"Saving to draft","pages.galleries.create.drafts_limit_modal_title":"Draft Gallery Limit","pages.galleries.create.drafts_limit_modal_message":"You’ve hit your limit for draft galleries. While you can still make new galleries and publish them, they won’t be saved as drafts. To Free up space, you can either delete existing drafts or publish them.","pages.galleries.create.drafts_limit_modal_cancel":"Go to Drafts","pages.galleries.delete_modal.title":"Delete Gallery","pages.galleries.delete_modal.confirmation_text":"Are you sure you want to delete the gallery? Deleting a Gallery is permanent, all associated views and likes will be lost.","pages.galleries.consists_of_collections":"{0} This gallery consists of {{count}} collections|{1} This gallery consists of {{count}} collection|[2,*] This gallery consists of {{count}} collections","pages.galleries.guest_banner.title":"Craft the ultimate","pages.galleries.guest_banner.subtitle":"Pick your favorites, curate your gallery, & share it with the world.","pages.profile.title":"Profile","pages.token_panel.balance_tooltip":"Total percentage of the portfolio held in this token","pages.token_panel.insufficient_funds":"Insufficient Balance","pages.token_panel.error":"Dashbrd has failed to load token information. Please try again later.","pages.token_panel.failed_to_retrieve_transactions":"We were unable to fetch your transactions.","pages.token_panel.tabs.transaction_history":"Transaction History","pages.token_panel.tabs.history":"History","pages.token_panel.tabs.market_data":"Market Data","pages.token_panel.details.current_price":"Current Price","pages.token_panel.details.title":"Token Details","pages.token_panel.details.market_cap":"Market Cap","pages.token_panel.details.volume":"Daily Volume","pages.token_panel.details.supply":"Minted Supply","pages.token_panel.details.ath":"All-Time High","pages.token_panel.details.atl":"All-Time Low","pages.token_panel.chart.failed":"Dashbrd has failed to load chart information. Please try again later.","pages.transaction_details_panel.title":"Transaction Details","pages.transaction_details_panel.details.blockchain":"Blockchain","pages.transaction_details_panel.details.timestamp":"Timestamp","pages.transaction_details_panel.details.transaction_hash":"Transaction Hash","pages.transaction_details_panel.details.transaction_fee":"Transaction Fee","pages.transaction_details_panel.details.gas_price":"Gas Price","pages.transaction_details_panel.details.gas_used":"Gas Used","pages.transaction_details_panel.details.nonce":"Nonce","pages.send_receive_panel.send.labels.token_and_amount":"Token and Amount","pages.send_receive_panel.send.labels.destination_address":"Destination Address","pages.send_receive_panel.send.labels.projected_fee":"Projected Fee","pages.send_receive_panel.send.placeholders.enter_amount":"Enter Amount","pages.send_receive_panel.send.placeholders.insert_recipient_address":"Insert Recipient Address","pages.send_receive_panel.send.placeholders.projected_fee":"Projected Fee","pages.send_receive_panel.send.errors.amount":"Insufficient Funds: You do not have enough to cover the amount + fee.","pages.send_receive_panel.send.errors.destination":"Destination address is not correct. Check and input again.","pages.send_receive_panel.send.hints.token_price":"Token Price","pages.send_receive_panel.send.fees.Fast":"Fast","pages.send_receive_panel.send.fees.Avg":"Avg","pages.send_receive_panel.send.fees.Slow":"Slow","pages.send_receive_panel.send.search_dropdown.placeholder":"Search token","pages.send_receive_panel.send.search_dropdown.no_results":"No Results","pages.send_receive_panel.send.search_dropdown.error":"Error occurred while searching tokens.","pages.send_receive_panel.send.transaction_time":"Transaction Time: ~{{ time }} minutes","pages.send_receive_panel.send.from":"From","pages.send_receive_panel.send.to":"To","pages.send_receive_panel.send.amount":"Amount","pages.send_receive_panel.send.fee":"Fee","pages.send_receive_panel.send.total_amount":"Total Amount","pages.send_receive_panel.send.waiting_message":"Review and verify the information on your MetaMask. Sign to send the transaction.","pages.send_receive_panel.send.waiting_spinner_text":"Waiting for confirmation...","pages.send_receive_panel.send.failed_message":"It looks like something went wrong while sending your transaction. Press 'Retry' to make another attempt.","pages.send_receive_panel.receive.alert":"Send only Polygon or Ethereum Network compatible tokens to this address or you could permanently lose your funds!","pages.settings.title":"Settings","pages.settings.sidebar.general":"General","pages.settings.sidebar.notifications":"Notifications","pages.settings.sidebar.session_history":"Sessions History","pages.settings.general.title":"Settings","pages.settings.general.subtitle":"Customize your App Experience","pages.settings.general.currency":"Currency","pages.settings.general.currency_subtitle":"Select your default currency which will be used throughout the app.","pages.settings.general.time_date":"Time & Date","pages.settings.general.time_date_subtitle":"Select how you want time and date be shown inside app.","pages.settings.general.date_format":"Date Format","pages.settings.general.time_format":"Time Format","pages.settings.general.timezone":"Timezone","pages.settings.general.set_defaults":"Set Defaults","pages.settings.general.set_defaults_content":"Reverting to the default settings will remove any customizations previously made. Are you sure?","pages.settings.general.save":"Save Settings","pages.settings.general.saved":"Your settings have been successfully saved","pages.wallet.title":"Wallet","pages.privacy_policy.title":"Privacy Policy","pages.terms_of_service.title":"Terms of Service","pagination.previous":"« Previous","pagination.next":"Next »","passwords.reset":"Your password has been reset!","passwords.sent":"We have emailed your password reset link!","passwords.throttled":"Please wait before retrying.","passwords.token":"This password reset token is invalid.","passwords.user":"We can't find a user with that email address.","urls.landing":"https://dashbrd.com","urls.cookie_policy":"https://dashbrd.com/cookie-policy","urls.privacy_policy":"https://dashbrd.com/privacy-policy","urls.terms_of_service":"https://dashbrd.com/terms-of-service","urls.twitter":"https://x.com/DashbrdApp","urls.discord":"https://discord.gg/MJyWKkCJ5k","urls.github":"https://github.com/ArdentHQ/dashbrd","urls.coingecko":"https://www.coingecko.com","urls.etherscan":"https://etherscan.io","urls.polygonscan":"https://polygonscan.com","urls.alchemy":"https://www.alchemy.com","urls.moralis":"https://moralis.io","urls.mnemonic":"https://www.mnemonichq.com","urls.opensea":"https://opensea.io/","urls.explorers.etherscan.token_transactions":"https://etherscan.io/token/{{token}}?a={{address}}","urls.explorers.etherscan.addresses":"https://etherscan.io/address/{{address}}","urls.explorers.etherscan.transactions":"https://etherscan.io/tx/{{id}}","urls.explorers.etherscan.nft":"https://etherscan.io/nft/{{address}}/{{nftId}}","urls.explorers.polygonscan.token_transactions":"https://polygonscan.com/token/{{token}}?a={{address}}","urls.explorers.polygonscan.addresses":"https://polygonscan.com/address/{{address}}","urls.explorers.polygonscan.transactions":"https://polygonscan.com/tx/{{id}}","urls.explorers.polygonscan.nft":"https://polygonscan.com/nft/{{address}}/{{nftId}}","urls.explorers.mumbai.token_transactions":"https://mumbai.polygonscan.com/token/{{token}}?a={{address}}","urls.explorers.mumbai.addresses":"https://mumbai.polygonscan.com/address/{{address}}","urls.explorers.mumbai.transactions":"https://mumbai.polygonscan.com/tx/{{id}}","urls.explorers.mumbai.nft":"https://mumbai.polygonscan.com/nft/{{address}}/{{nftId}}","urls.explorers.goerli.token_transactions":"https://goerli.etherscan.io/token/{{token}}?a={{address}}","urls.explorers.goerli.addresses":"https://goerli.etherscan.io/address/{{address}}","urls.explorers.goerli.transactions":"https://goerli.etherscan.io/tx/{{id}}","urls.explorers.goerli.nft":"https://goerli.etherscan.io/nft/{{address}}/{{nftId}}","urls.marketplaces.opensea.collection":"https://opensea.io/assets/{{network}}/{{address}}","urls.marketplaces.opensea.nft":"https://opensea.io/assets/{{network}}/{{address}}/{{nftId}}","urls.marketplaces.rarible.collection":"https://rarible.com/collection/{{address}}/items","urls.marketplaces.rarible.nft":"https://rarible.com/token/{{address}}:{{nftId}}","urls.marketplaces.blur.collection":"https://blur.io/collection/{{address}}","urls.marketplaces.blur.nft":"https://blur.io/asset/{{address}}/{{nftId}}","urls.marketplaces.looksrare.collection":"https://looksrare.org/collections/{{address}}","urls.marketplaces.looksrare.nft":"https://looksrare.org/collections/{{address}}/{{nftId}}","validation.accepted":"The {{attribute}} must be accepted.","validation.accepted_if":"The {{attribute}} must be accepted when {{other}} is {{value}}.","validation.active_url":"The {{attribute}} is not a valid URL.","validation.after":"The {{attribute}} must be a date after {{date}}.","validation.after_or_equal":"The {{attribute}} must be a date after or equal to {{date}}.","validation.alpha":"The {{attribute}} must only contain letters.","validation.alpha_dash":"The {{attribute}} must only contain letters, numbers, dashes and underscores.","validation.alpha_num":"The {{attribute}} must only contain letters and numbers.","validation.array":"The {{attribute}} must be an array.","validation.ascii":"The {{attribute}} must only contain single-byte alphanumeric characters and symbols.","validation.before":"The {{attribute}} must be a date before {{date}}.","validation.before_or_equal":"The {{attribute}} must be a date before or equal to {{date}}.","validation.between.array":"The {{attribute}} must have between {{min}} and {{max}} items.","validation.between.file":"The {{attribute}} must be between {{min}} and {{max}} kilobytes.","validation.between.numeric":"The {{attribute}} must be between {{min}} and {{max}}.","validation.between.string":"The {{attribute}} must be between {{min}} and {{max}} characters.","validation.boolean":"The {{attribute}} field must be true or false.","validation.confirmed":"The {{attribute}} confirmation does not match.","validation.current_password":"The password is incorrect.","validation.date":"The {{attribute}} is not a valid date.","validation.date_equals":"The {{attribute}} must be a date equal to {{date}}.","validation.date_format":"The {{attribute}} does not match the format {{format}}.","validation.decimal":"The {{attribute}} must have {{decimal}} decimal places.","validation.declined":"The {{attribute}} must be declined.","validation.declined_if":"The {{attribute}} must be declined when {{other}} is {{value}}.","validation.different":"The {{attribute}} and {{other}} must be different.","validation.digits":"The {{attribute}} must be {{digits}} digits.","validation.digits_between":"The {{attribute}} must be between {{min}} and {{max}} digits.","validation.dimensions":"The {{attribute}} has invalid image dimensions.","validation.distinct":"The {{attribute}} field has a duplicate value.","validation.doesnt_end_with":"The {{attribute}} may not end with one of the following: {{values}}.","validation.doesnt_start_with":"The {{attribute}} may not start with one of the following: {{values}}.","validation.email":"The {{attribute}} must be a valid email address.","validation.ends_with":"The {{attribute}} must end with one of the following: {{values}}.","validation.enum":"The selected {{attribute}} is invalid.","validation.exists":"The selected {{attribute}} is invalid.","validation.file":"The {{attribute}} must be a file.","validation.filled":"The {{attribute}} field must have a value.","validation.gt.array":"The {{attribute}} must have more than {{value}} items.","validation.gt.file":"The {{attribute}} must be greater than {{value}} kilobytes.","validation.gt.numeric":"The {{attribute}} must be greater than {{value}}.","validation.gt.string":"The {{attribute}} must be greater than {{value}} characters.","validation.gte.array":"The {{attribute}} must have {{value}} items or more.","validation.gte.file":"The {{attribute}} must be greater than or equal to {{value}} kilobytes.","validation.gte.numeric":"The {{attribute}} must be greater than or equal to {{value}}.","validation.gte.string":"The {{attribute}} must be greater than or equal to {{value}} characters.","validation.image":"The {{attribute}} must be an image.","validation.in":"The selected {{attribute}} is invalid.","validation.in_array":"The {{attribute}} field does not exist in {{other}}.","validation.integer":"The {{attribute}} must be an integer.","validation.ip":"The {{attribute}} must be a valid IP address.","validation.ipv4":"The {{attribute}} must be a valid IPv4 address.","validation.ipv6":"The {{attribute}} must be a valid IPv6 address.","validation.json":"The {{attribute}} must be a valid JSON string.","validation.lowercase":"The {{attribute}} must be lowercase.","validation.lt.array":"The {{attribute}} must have less than {{value}} items.","validation.lt.file":"The {{attribute}} must be less than {{value}} kilobytes.","validation.lt.numeric":"The {{attribute}} must be less than {{value}}.","validation.lt.string":"The {{attribute}} must be less than {{value}} characters.","validation.lte.array":"The {{attribute}} must not have more than {{value}} items.","validation.lte.file":"The {{attribute}} must be less than or equal to {{value}} kilobytes.","validation.lte.numeric":"The {{attribute}} must be less than or equal to {{value}}.","validation.lte.string":"The {{attribute}} must be less than or equal to {{value}} characters.","validation.mac_address":"The {{attribute}} must be a valid MAC address.","validation.max.array":"The {{attribute}} must not have more than {{max}} items.","validation.max.file":"The {{attribute}} must not be greater than {{max}} kilobytes.","validation.max.numeric":"The {{attribute}} must not be greater than {{max}}.","validation.max.string":"The {{attribute}} must not be greater than {{max}} characters.","validation.max_digits":"The {{attribute}} must not have more than {{max}} digits.","validation.mimes":"The {{attribute}} must be a file of type: {{values}}.","validation.mimetypes":"The {{attribute}} must be a file of type: {{values}}.","validation.min.array":"The {{attribute}} must have at least {{min}} items.","validation.min.file":"The {{attribute}} must be at least {{min}} kilobytes.","validation.min.numeric":"The {{attribute}} must be at least {{min}}.","validation.min.string":"The {{attribute}} must be at least {{min}} characters.","validation.min_digits":"The {{attribute}} must have at least {{min}} digits.","validation.missing":"The {{attribute}} field must be missing.","validation.missing_if":"The {{attribute}} field must be missing when {{other}} is {{value}}.","validation.missing_unless":"The {{attribute}} field must be missing unless {{other}} is {{value}}.","validation.missing_with":"The {{attribute}} field must be missing when {{values}} is present.","validation.missing_with_all":"The {{attribute}} field must be missing when {{values}} are present.","validation.multiple_of":"The {{attribute}} must be a multiple of {{value}}.","validation.not_in":"The selected {{attribute}} is invalid.","validation.not_regex":"The {{attribute}} format is invalid.","validation.numeric":"The {{attribute}} must be a number.","validation.password.letters":"The {{attribute}} must contain at least one letter.","validation.password.mixed":"The {{attribute}} must contain at least one uppercase and one lowercase letter.","validation.password.numbers":"The {{attribute}} must contain at least one number.","validation.password.symbols":"The {{attribute}} must contain at least one symbol.","validation.password.uncompromised":"The given {{attribute}} has appeared in a data leak. Please choose a different {{attribute}}.","validation.present":"The {{attribute}} field must be present.","validation.prohibited":"The {{attribute}} field is prohibited.","validation.prohibited_if":"The {{attribute}} field is prohibited when {{other}} is {{value}}.","validation.prohibited_unless":"The {{attribute}} field is prohibited unless {{other}} is in {{values}}.","validation.prohibits":"The {{attribute}} field prohibits {{other}} from being present.","validation.regex":"The {{attribute}} format is invalid.","validation.required":"The {{attribute}} field is required.","validation.required_array_keys":"The {{attribute}} field must contain entries for: {{values}}.","validation.required_if":"The {{attribute}} field is required when {{other}} is {{value}}.","validation.required_if_accepted":"The {{attribute}} field is required when {{other}} is accepted.","validation.required_unless":"The {{attribute}} field is required unless {{other}} is in {{values}}.","validation.required_with":"The {{attribute}} field is required when {{values}} is present.","validation.required_with_all":"The {{attribute}} field is required when {{values}} are present.","validation.required_without":"The {{attribute}} field is required when {{values}} is not present.","validation.required_without_all":"The {{attribute}} field is required when none of {{values}} are present.","validation.same":"The {{attribute}} and {{other}} must match.","validation.size.array":"The {{attribute}} must contain {{size}} items.","validation.size.file":"The {{attribute}} must be {{size}} kilobytes.","validation.size.numeric":"The {{attribute}} must be {{size}}.","validation.size.string":"The {{attribute}} must be {{size}} characters.","validation.starts_with":"The {{attribute}} must start with one of the following: {{values}}.","validation.string":"The {{attribute}} must be a string.","validation.timezone":"The {{attribute}} must be a valid timezone.","validation.unique":"The {{attribute}} has already been taken.","validation.uploaded":"The {{attribute}} failed to upload.","validation.uppercase":"The {{attribute}} must be uppercase.","validation.url":"The {{attribute}} must be a valid URL.","validation.ulid":"The {{attribute}} must be a valid ULID.","validation.uuid":"The {{attribute}} must be a valid UUID.","validation.custom.attribute-name.rule-name":"custom-message","validation.unsupported_currency_code":"The currency code you provided is invalid or not supported.","validation.unsupported_period":"The period you provided is invalid or not supported.","validation.unsupported_token_symbol":"The token symbol you provided is invalid or not supported.","validation.gallery_title_required":"Gallery name is required.","validation.gallery_title_max_characters":"The gallery name should not exceed 50 characters.","validation.gallery_title_invalid":"The gallery name is invalid.","validation.nfts_required":"Please add at least one NFT.","validation.nfts_max_size":"Galleries can contain no more than {{limit}} NFTs","validation.invalid_nfts":"The NFT in position {{position}} is invalid, please select another one.","validation.invalid_cover":"You have selected an invalid cover image, please try another one."} \ No newline at end of file diff --git a/resources/js/Pages/Collections/Components/CollectionVoting/NominationDialog.tsx b/resources/js/Pages/Collections/Components/CollectionVoting/NominationDialog.tsx new file mode 100644 index 000000000..f331a9e37 --- /dev/null +++ b/resources/js/Pages/Collections/Components/CollectionVoting/NominationDialog.tsx @@ -0,0 +1,98 @@ +import React, { useState } from "react"; +import { useTranslation } from "react-i18next"; +import { NomineeCollections } from "./NomineeCollections"; +import { Button } from "@/Components/Buttons"; +import { Dialog } from "@/Components/Dialog"; +import { SearchInput } from "@/Components/Form/SearchInput"; +import { type VoteCollectionProperties } from "@/Pages/Collections/Components/CollectionVoting/VoteCollections"; + +const NominationDialogFooter = ({ + setIsOpen, + selectedCollection, + setSelectedCollection, +}: { + setIsOpen: (isOpen: boolean) => void; + selectedCollection: number; + setSelectedCollection: (selectedCollection: number) => void; +}): JSX.Element => { + const { t } = useTranslation(); + + return ( +
    +
    + + + +
    +
    + ); +}; + +export const NominationDialog = ({ + isOpen, + setIsOpen, + collections, + user, +}: { + isOpen: boolean; + setIsOpen: (isOpen: boolean) => void; + collections: VoteCollectionProperties[]; + user: App.Data.UserData | null; +}): JSX.Element => { + const { t } = useTranslation(); + const [query, setQuery] = useState(""); + const [selectedCollection, setSelectedCollection] = useState(0); + + return ( + { + setIsOpen(false); + setSelectedCollection(0); + }} + panelClassName="md:max-w-[640px] md-lg:max-w-[720px] lg:max-w-[790px]" + footer={ + + } + > +
    + + + +
    +
    + ); +}; diff --git a/resources/js/Pages/Collections/Components/CollectionVoting/NomineeCollection.tsx b/resources/js/Pages/Collections/Components/CollectionVoting/NomineeCollection.tsx new file mode 100644 index 000000000..15b1de49c --- /dev/null +++ b/resources/js/Pages/Collections/Components/CollectionVoting/NomineeCollection.tsx @@ -0,0 +1,82 @@ +import cn from "classnames"; +import React, { useRef } from "react"; +import { NominateCollectionName } from "@/Components/Collections/CollectionName"; +import { + PopularCollectionFloorPrice, + PopularCollectionVolume, +} from "@/Components/Collections/PopularCollectionsTable/PopularCollectionsTable.blocks"; +import { Radio } from "@/Components/Form/Radio"; +import { TableCell, TableRow } from "@/Components/Table"; +import { type VoteCollectionProperties } from "@/Pages/Collections/Components/CollectionVoting/VoteCollections"; + +export const NomineeCollection = ({ + collection, + uniqueKey, + user, + selectedCollection, + setSelectedCollection, +}: { + collection: VoteCollectionProperties; + uniqueKey: string; + user: App.Data.UserData | null; + selectedCollection: number; + setSelectedCollection: (selectedCollection: number) => void; +}): JSX.Element => { + const reference = useRef(null); + + return ( + { + setSelectedCollection(collection.id); + }} + > + + + + + + + + + + + + + + { + setSelectedCollection(collection.id); + }} + /> + + + ); +}; diff --git a/resources/js/Pages/Collections/Components/CollectionVoting/NomineeCollections.tsx b/resources/js/Pages/Collections/Components/CollectionVoting/NomineeCollections.tsx new file mode 100644 index 000000000..40ff11c1a --- /dev/null +++ b/resources/js/Pages/Collections/Components/CollectionVoting/NomineeCollections.tsx @@ -0,0 +1,105 @@ +import { BigNumber } from "@ardenthq/sdk-helpers"; +import React, { useMemo } from "react"; +import { useTranslation } from "react-i18next"; +import { type Column, type TableState } from "react-table"; +import { NomineeCollection } from "./NomineeCollection"; +import { Table } from "@/Components/Table"; +import { useBreakpoint } from "@/Hooks/useBreakpoint"; +import { type VoteCollectionProperties } from "@/Pages/Collections/Components/CollectionVoting/VoteCollections"; + +export const NomineeCollections = ({ + collections, + activeSort, + user, + selectedCollection, + setSelectedCollection, +}: { + collections: VoteCollectionProperties[]; + activeSort: string; + user: App.Data.UserData | null; + selectedCollection: number; + setSelectedCollection: (selectedCollection: number) => void; +}): JSX.Element => { + const { t } = useTranslation(); + const { isMdAndAbove, isLgAndAbove } = useBreakpoint(); + + const initialState = useMemo>>( + () => ({ + sortBy: [ + { + desc: true, + id: activeSort, + }, + ], + }), + [], + ); + + const columns = useMemo(() => { + const columns: Array> = [ + { + Header: t("pages.collections.popular_collections").toString(), + id: "name", + accessor: (collection) => collection.name, + className: "justify-start", + cellWidth: "sm:w-full", + paddingClassName: "py-2 px-2 md:px-5", + disableSortBy: true, + }, + { + id: "action", + paddingClassName: "px-0", + disableSortBy: true, + }, + ]; + + // @TODO fix 0s below collection.floorPriceFiat && nfts_count + if (isMdAndAbove) { + columns.splice(-1, 0, { + Header: t("common.volume").toString(), + id: "value", + accessor: (collection) => + BigNumber.make(collection.floorPriceFiat).times(collection.nftsCount).toString(), + headerClassName: "px-2 md:px-5", + paddingClassName: "py-2 px-2 md:px-5", + className: "justify-end", + disableSortBy: true, + }); + + columns.splice(-2, 0, { + Header: t("common.floor_price").toString(), + id: "floor-price", + accessor: (collection) => collection.floorPrice, + className: "justify-end whitespace-nowrap", + disableSortBy: true, + }); + } + + return columns; + }, [t, isMdAndAbove, isLgAndAbove]); + + if (collections.length === 0) { + return <>; + } + + return ( +
    ( + + )} + /> + ); +}; diff --git a/resources/js/Pages/Collections/Components/CollectionVoting/VoteCollections.test.tsx b/resources/js/Pages/Collections/Components/CollectionVoting/VoteCollections.test.tsx index 12a7d3e73..4f8cadb95 100644 --- a/resources/js/Pages/Collections/Components/CollectionVoting/VoteCollections.test.tsx +++ b/resources/js/Pages/Collections/Components/CollectionVoting/VoteCollections.test.tsx @@ -6,6 +6,7 @@ import { VoteCollections, VoteCount, } from "@/Pages/Collections/Components/CollectionVoting/VoteCollections"; +import UserDataFactory from "@/Tests/Factories/UserDataFactory"; import { render, screen, userEvent } from "@/Tests/testing-library"; const demoCollection: VoteCollectionProperties = { @@ -17,13 +18,26 @@ const demoCollection: VoteCollectionProperties = { volumeCurrency: "ETH", volumeDecimals: 18, votes: 15, + floorPriceFiat: "45.25", + floorPrice: "0", + floorPriceCurrency: "ETH", + floorPriceDecimals: 18, + volumeFiat: 45.12, + nftsCount: 5, }; -const collections = Array.from({ length: 8 }).fill(demoCollection) as VoteCollectionProperties[]; +const collections = Array.from({ length: 13 }).fill(demoCollection) as VoteCollectionProperties[]; describe("VoteCollections", () => { + const user = new UserDataFactory().create(); + it("should render collections in two block, 4 collection in each", () => { - render(); + render( + , + ); const leftBlock = screen.getByTestId("VoteCollections_Left"); const rightBlock = screen.getByTestId("VoteCollections_Right"); diff --git a/resources/js/Pages/Collections/Components/CollectionVoting/VoteCollections.tsx b/resources/js/Pages/Collections/Components/CollectionVoting/VoteCollections.tsx index b208be18a..caa7afa9b 100644 --- a/resources/js/Pages/Collections/Components/CollectionVoting/VoteCollections.tsx +++ b/resources/js/Pages/Collections/Components/CollectionVoting/VoteCollections.tsx @@ -2,6 +2,7 @@ import cn from "classnames"; import React, { useState } from "react"; import { useTranslation } from "react-i18next"; import { twMerge } from "tailwind-merge"; +import { NominationDialog } from "./NominationDialog"; import { VoteCountdown } from "./VoteCountdown"; import { Heading } from "@/Components/Heading"; import { Icon } from "@/Components/Icon"; @@ -14,19 +15,27 @@ import { isTruthy } from "@/Utils/is-truthy"; export interface VoteCollectionProperties { id: number; name: string; - image: string; - volume?: string; - volumeCurrency?: string; - volumeDecimals?: number; + image: string | null; votes?: number; index: number; + floorPrice: string | null; + floorPriceCurrency: string | null; + floorPriceFiat: string | null; + floorPriceDecimals: number | null; + volume: string | null; + volumeFiat: number | null; + volumeCurrency: string | null; + volumeDecimals: number | null; + nftsCount: number | null; } export const VoteCollections = ({ collections, + user, votedCollectionId, }: { collections: VoteCollectionProperties[]; + user: App.Data.UserData | null; votedCollectionId?: number; }): JSX.Element => { const { t } = useTranslation(); @@ -36,6 +45,8 @@ export const VoteCollections = ({ const getVariant = (collectionId: number): VoteCollectionVariants => votedCollectionId === collectionId ? "voted" : selectedCollectionId === collectionId ? "selected" : undefined; + const [isDialogOpen, setIsDialogOpen] = useState(false); + return (
    { - console.log("TODO: Implement or nominate collection"); + setIsDialogOpen(true); }} variant="link" className="font-medium leading-6 dark:hover:decoration-theme-primary-400" @@ -91,6 +102,17 @@ export const VoteCollections = ({ {t("pages.collections.vote.or_nominate_collection")}
    + + ({ + ...collection, + index: index + 8, + id: index + 8, + }))} + user={user} + /> ); }; diff --git a/resources/js/Pages/Collections/Components/CollectionVoting/index.tsx b/resources/js/Pages/Collections/Components/CollectionVoting/index.tsx index 825fc3aa8..dc5b5b114 100644 --- a/resources/js/Pages/Collections/Components/CollectionVoting/index.tsx +++ b/resources/js/Pages/Collections/Components/CollectionVoting/index.tsx @@ -1,2 +1,5 @@ +export * from "./NomineeCollections"; +export * from "./NomineeCollection"; +export * from "./NominationDialog"; export * from "./VoteCollections"; export * from "./VoteCountdown"; diff --git a/resources/js/Pages/Collections/Index.tsx b/resources/js/Pages/Collections/Index.tsx index 788b5fcd2..0398ce440 100644 --- a/resources/js/Pages/Collections/Index.tsx +++ b/resources/js/Pages/Collections/Index.tsx @@ -29,11 +29,17 @@ interface CollectionsIndexProperties extends PageProps { featuredCollections: App.Data.Collections.CollectionFeaturedData[]; topCollections: App.Data.Collections.CollectionOfTheMonthData[]; filters: Filters; + collectionsTableResults: App.Data.Collections.CollectionData[]; latestArticles: App.Data.Articles.ArticleData[]; popularArticles: App.Data.Articles.ArticleData[]; } const demoCollection: VoteCollectionProperties = { + floorPriceFiat: "45.25", + floorPrice: "0", + floorPriceCurrency: "ETH", + floorPriceDecimals: 18, + volumeFiat: 45.12, id: 1, index: 1, name: "AlphaDogs", @@ -42,6 +48,7 @@ const demoCollection: VoteCollectionProperties = { volumeCurrency: "ETH", volumeDecimals: 18, votes: 45, + nftsCount: 5, }; const CollectionsIndex = ({ @@ -153,7 +160,8 @@ const CollectionsIndex = ({
    Date: Thu, 7 Dec 2023 07:20:36 -0600 Subject: [PATCH 031/145] feat: vote received modal (#533) --- lang/en/pages.php | 7 ++ public/images/collections/voted.png | Bin 0 -> 109663 bytes public/images/collections/votes@2x.png | Bin 0 -> 297935 bytes resources/js/I18n/Locales/en.json | 2 +- .../CollectionsVoteReceivedModal.tsx | 76 ++++++++++++++++++ .../CollectionsVoteReceivedModal/index.tsx | 1 + resources/js/Pages/Collections/Index.tsx | 45 ++++++++++- resources/js/Utils/to-twitter-hashtag.test.ts | 17 ++++ resources/js/Utils/to-twitter-hashtag.ts | 13 +++ 9 files changed, 159 insertions(+), 2 deletions(-) create mode 100644 public/images/collections/voted.png create mode 100644 public/images/collections/votes@2x.png create mode 100644 resources/js/Pages/Collections/Components/CollectionsVoteReceivedModal/CollectionsVoteReceivedModal.tsx create mode 100644 resources/js/Pages/Collections/Components/CollectionsVoteReceivedModal/index.tsx create mode 100644 resources/js/Utils/to-twitter-hashtag.test.ts create mode 100644 resources/js/Utils/to-twitter-hashtag.ts diff --git a/lang/en/pages.php b/lang/en/pages.php index c1fc579c3..e21decc82 100644 --- a/lang/en/pages.php +++ b/lang/en/pages.php @@ -80,6 +80,13 @@ 'winners_month' => 'Winners: :month', 'vote_for_next_months_winners' => 'Vote now for next month\'s winners', 'view_previous_winners' => 'View Previous Winners', + 'vote_received_modal' => [ + 'title' => 'Vote Received', + 'description' => 'Your vote has been recorded. Share your vote on X and let everyone know!', + 'share_vote' => 'Share Vote', + 'img_alt' => 'I voted for Dashbrd Project of the Month', + 'x_text' => 'I voted for :collection for collection of the month @dashbrdapp! Go show your support!', + ], 'vote_success' => 'Your vote has been successfully submitted', ], 'articles' => [ diff --git a/public/images/collections/voted.png b/public/images/collections/voted.png new file mode 100644 index 0000000000000000000000000000000000000000..e2c4092b48c4687aacf8f4f70f04a72f66c92b00 GIT binary patch literal 109663 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�>mD4+eVZd6*x@O=dhQ!_GqUlhtIt49~8-j{P2 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%0A5PW5X?HI~B=^f2O{(#LbXelr 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. All rights reserved.","footer.all_rights_reserved":"All rights reserved","footer.privacy_policy":"Privacy Policy","footer.terms_of_service":"Terms of Service","footer.powered_by":"Powered by","format.fiat":"{{ value, currency }}","format.number":"{{ value, number }}","metatags.home.title":"Dashbrd | Web3 Portfolio Management Made Simple","metatags.home.description":"Simplify your Web3 journey with Dashbrd. Manage your portfolio of tokens, NFTs, and other digital collectibles across the Ethereum and Polygon blockchains.","metatags.home.image":"/images/meta/home.png","metatags.error.title":"Error {{code}} | Dashbrd","metatags.wallet.title":"My Wallet | Dashbrd","metatags.galleries.title":"Top NFT Galleries | Dashbrd","metatags.galleries.image":"/images/meta/nft-galleries.png","metatags.galleries.description":"Explore user published NFT galleries to find custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.most_popular.title":"Most Popular Galleries | Dashbrd","metatags.galleries.most_popular.image":"/images/meta/most-popular-nft-galleries.png","metatags.galleries.most_popular.description":"Explore and discover Most Popular NFT Galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.newest.title":"Newest Galleries | Dashbrd","metatags.galleries.newest.image":"/images/meta/newest-nft-galleries.png","metatags.galleries.newest.description":"Explore and discover most recent NFT galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More","metatags.galleries.most_valuable.title":"Most Valuable Galleries | Dashbrd","metatags.galleries.most_valuable.image":"/images/meta/most-valuable-nft-galleries.png","metatags.galleries.most_valuable.description":"Explore and discover Most Valuable NFT Galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.view.title":"{{name}} | Dashbrd","metatags.galleries.view.description":"{{name}} | A Curated NFT Gallery at Dashbrd","metatags.galleries.view.image":"/images/meta/nft-gallery.png","metatags.my_galleries.title":"My Galleries | Dashbrd","metatags.my_galleries.title_draft":"My Draft Galleries | Dashbrd","metatags.my_galleries.create.title":"Create Gallery | Dashbrd","metatags.my_galleries.edit.title":"Edit {{name}} | Dashbrd","metatags.collections.title":"Collections | Dashbrd","metatags.collections.view.title":"{{name}} Collection | Dashbrd","metatags.collections.view.description":"Immerse yourself in the intricate details of {{name}} collection, featuring remarkable digital assets. Start your NFT journey today!","metatags.collections.view.image":"/images/meta/nft-collection.png","metatags.my-collections.title":"My Collections | Dashbrd","metatags.nfts.view.title":"{{nft}} NFT | Dashbrd","metatags.nfts.view.description":"Uncover the complete story of {{nft}} NFT from the {{collection}} collection, delving into its unique attributes and distinctive features.","metatags.nfts.view.image":"/images/meta/nft-details.png","metatags.settings.title":"Settings | Dashbrd","metatags.articles.title":"Articles | Dashbrd","metatags.articles.view.title":"{{title}} | Dashbrd","metatags.login.title":"Login | Dashbrd","metatags.privacy_policy.title":"Privacy Policy | Dashbrd","metatags.privacy_policy.description":"Dashbrd’s privacy policy outlines the information we collect and explains your choices surrounding how we use information about you.","metatags.terms_of_service.title":"Terms of Service | Dashbrd","metatags.terms_of_service.description":"These Terms of Service cover your use and access to services, products or websites of Dashbrd.","metatags.cookie_policy.title":"Cookie Policy | Dashbrd","metatags.cookie_policy.description":"Dashbrd uses cookies to make the website more user-friendly. Find out about the main types of cookies we use, and what we use them for.","metatags.welcome.title":"Welcome to Dashbrd | Web3 Simplified","pages.onboarding.title":"Get Started","pages.onboarding.heading":"Your monkeys were bored and ran off, we are trying to round them up.","pages.onboarding.message":"We are setting up your account. This process usually takes just a few minutes, but can take up to 15 minutes.","pages.error.heading":"Oops, something went wrong ...","pages.error.message":"Please try again or get in touch if the issue persists.","pages.maintenance.title":"Dashbrd is currently down for scheduled maintenance.","pages.maintenance.description":"We expect to be back soon. Thanks for your patience.","pages.dashboard.title":"My Wallet","pages.dashboard.breakdown.title":"Portfolio Breakdown","pages.dashboard.line_chart.data_error":"Could not load chart data","pages.articles.title":"Articles","pages.articles.featured_collections":"Featured Collections","pages.articles.placeholder_more_soon":"More Soon","pages.articles.no_articles":"No articles have been published yet. Please check back later!","pages.articles.header_title":"Explore our collection of","pages.articles.header_suffix_one":"published article","pages.articles.header_suffix_other":"published articles","pages.articles.audio_version":"Audio version","pages.articles.consists_of_collections":"{0} This article highlights {{count}} collections|{1} This article highlights {{count}} collection|[2,*] This article highlights {{count}} collections","pages.collections.title":"Collections","pages.collections.collections":"Collections","pages.collections.popular_collections":"Popular Collections","pages.collections.collection_value":"Collection Value","pages.collections.nfts_owned":"NFTs Owned","pages.collections.header_title":"You own <0>{{nftsCount}} {{nfts}} across <0>{{collectionsCount}} {{collections}}, worth about <0><1>{{worth}}","pages.collections.search_placeholder":"Search by Collection","pages.collections.properties":"Properties","pages.collections.collections_network":"Collections Network","pages.collections.property_search_placeholder":"Feature Search","pages.collections.floor_price":"Floor Price","pages.collections.value":"Value","pages.collections.rarity":"Rarity","pages.collections.report":"Report","pages.collections.hide_collection":"Hide Collection","pages.collections.unhide_collection":"Unhide Collection","pages.collections.no_collections":"You do not own any NFTs yet. Once you do they will be shown here.","pages.collections.all_collections_hidden":"You have hidden all your collections. Unhide and they will appear here.","pages.collections.about_collection":"About Collection","pages.collections.show_hidden":"Show Hidden","pages.collections.show_my_collection":"Show My Collection","pages.collections.owned":"Owned","pages.collections.activities.loading_activities":"We're fetching Activity for this NFT, please hang tight, this can take a while.","pages.collections.activities.loading_activities_collection":"We're fetching Activity for this collection, please hang tight, this can take a while.","pages.collections.activities.ignores_activities":"We don't support activity history for this collection yet.","pages.collections.activities.no_activity":"This collection does not have any activity yet.","pages.collections.activities.types.LABEL_MINT":"Mint","pages.collections.activities.types.LABEL_TRANSFER":"Transfer","pages.collections.activities.types.LABEL_SALE":"Sale","pages.collections.activities.types.LABEL_BURN":"Burn","pages.collections.collection_of_the_month.winners_month":"Winners: {{month}}","pages.collections.collection_of_the_month.vote_for_next_months_winners":"Vote now for next month's winners","pages.collections.collection_of_the_month.view_previous_winners":"View Previous Winners","pages.collections.collection_of_the_month.vote_success":"Your vote has been successfully submitted","pages.collections.articles.heading":"Latest NFT News & Features","pages.collections.articles.no_articles":"No articles have been linked to this collection as of now.","pages.collections.articles.no_articles_with_filters":"We could not find any articles matching your search criteria, please try again!","pages.collections.articles.search_placeholder":"Search in Articles","pages.collections.articles.sort_latest":"Latest","pages.collections.articles.sort_popularity":"Most Popular","pages.collections.search.loading_results":"Loading results...","pages.collections.search.no_results":"We could not find anything matching your search criteria, please try again!","pages.collections.search.no_results_with_filters":"We could not find anything matching your filters, please try again!","pages.collections.search.no_results_ownership":"You do not own any NFTs in this collection","pages.collections.search.error":"Could not load search results. Please try again later.","pages.collections.vote.vote_for_top_collection":"Vote for Top Collection of the Month","pages.collections.vote.vote":"Vote","pages.collections.vote.time_left":"Time Left","pages.collections.vote.or_nominate_collection":"Or nominate a collection","pages.collections.vote.nominate_collection":"Nominate a collection","pages.collections.vote.vote_to_reveal":"Vote to reveal data","pages.collections.vote.already_voted":"You’ve already nominated. Come back next month!","pages.collections.sorting.token_number":"Token Number","pages.collections.sorting.recently_received":"Recently Received","pages.collections.sorting.recently_created":"Recently Created","pages.collections.sorting.oldest_collection":"Oldest Collection","pages.collections.traits.description":"List of NFT traits by % of occurrence in the collection","pages.collections.traits.no_traits":"No Properties can be found for this NFT","pages.collections.menu.collection":"Collection","pages.collections.menu.articles":"Articles","pages.collections.menu.activity":"Activity","pages.collections.hidden_modal.collection_hidden":"Collection Hidden","pages.collections.hidden_modal.description":"This collection is currently set to Hidden. Are you sure you want to unhide this collection? You can\n reset the collection to hidden from the collection menu.","pages.collections.hidden_modal.unhide":"Unhide","pages.collections.hidden_modal.error":"Something went wrong. Please try again.","pages.collections.external_modal.you_wish_continue":"You are about to leave Dashbrd to an external website. Dashbrd has no control over the content of\n this site. Are you sure you wish to continue?","pages.collections.external_modal.not_show":"Do not show this message again.","pages.collections.refresh.title":"Refresh your collection","pages.collections.refresh.notice":"You can refresh data every 15 minutes.","pages.collections.refresh.notice_wait":"Please wait. You can refresh data every 15 minutes.","pages.collections.refresh.toast":"We're updating information for your collection.","pages.collections.featured.title":"Featured Collections","pages.collections.featured.button":"Explore Collection","pages.collections.footer.heading_broken.0":"Connect with MetaMask","pages.collections.footer.heading_broken.1":"& Manage Your Collection","pages.collections.footer.subtitle":"Explore, Filter, & Share your favorite NFTs with Dashbrd.","pages.collections.footer.button":"Manage Collections","pages.nfts.nft":"nft","pages.nfts.about_nft":"About NFT","pages.nfts.owned_by":"Owned by","pages.nfts.collection_image":"collection image","pages.nfts.menu.properties":"Properties","pages.nfts.menu.activity":"Activity","pages.reports.title":"Submit a Report","pages.reports.description":"Thanks for looking out by reporting things that break the rules. Let us know what's happening and we'll receive the report.","pages.reports.success":"Thank you for your report. We'll review it and see if it breaks our ToS.","pages.reports.failed":"Something went wrong. Please try again.","pages.reports.throttle":"You have made too many requests. Please wait {{time}} before reporting again.","pages.reports.reported":"You have already reported this {{model}}.","pages.reports.reasons.spam":"Spam","pages.reports.reasons.violence":"Promoting Violence","pages.reports.reasons.hate":"Hate","pages.reports.reasons.inappropriate_content":"Inappropriate Content","pages.reports.reasons.impersonation":"Impersonation","pages.reports.reasons.trademark":"Trademark or Copyright","pages.reports.reasons.selfharm":"Self-Harm","pages.reports.reasons.harassment":"Harassment","pages.galleries.title":"Galleries","pages.galleries.empty_title":"No galleries have been published yet. Once they do they will appear here.","pages.galleries.search.loading_results":"Loading results...","pages.galleries.search.no_results":"We could not find anything matching your search criteria, please try again!","pages.galleries.search.placeholder":"Search by name or curator address","pages.galleries.search.placeholder_nfts":"Search by NFTs","pages.galleries.search.error":"Could not load search results. Please try again later.","pages.galleries.my_galleries.title":"My Galleries","pages.galleries.my_galleries.subtitle":"Manage your galleries","pages.galleries.my_galleries.new_gallery":"New Gallery","pages.galleries.my_galleries.no_galleries":"You have not created any galleries yet. To create a gallery, click on the \"Create Gallery\" button.","pages.galleries.my_galleries.no_available_collections":"You have hidden all your collections. If you want to create a gallery, make sure you have at least 1 collection available.","pages.galleries.my_galleries.no_draft_galleries":"You have no draft galleries yet. To create a gallery, click on the \"Create Gallery\" button.","pages.galleries.my_galleries.succesfully_deleted":"Gallery has been successfully removed","pages.galleries.my_galleries.draft_succesfully_deleted":"Draft has been successfully removed","pages.galleries.my_galleries.successfully_created":"Gallery has been successfully created","pages.galleries.my_galleries.successfully_updated":"Gallery has been successfully updated","pages.galleries.my_galleries.new_gallery_no_nfts":"Creating a Gallery requires you to own an NFT.","pages.galleries.my_galleries.new_gallery_all_collections_hidden":"Creating a Gallery requires you to have at least 1 collection available.","pages.galleries.my_galleries.delete_modal.title":"Delete Draft","pages.galleries.my_galleries.delete_modal.text":"Are you sure you want to delete the draft? Everything you've done will be deleted and you won't be able to get it back.","pages.galleries.my_galleries.nfts_no_longer_owned":"NFTs no longer owned by this wallet have been removed from the draft”","pages.galleries.copy_gallery_link":"Copy Gallery Link","pages.galleries.my_nfts":"My NFTs","pages.galleries.show_hidden_collections":"Show hidden collections","pages.galleries.value":"Value","pages.galleries.floor_price":"Floor Price","pages.galleries.nfts":"NFTs","pages.galleries.collections":"Collections","pages.galleries.galleries_count_simple":"{0} galleries|{1} gallery|[2,*] galleries","pages.galleries.galleries_count":"{0} {{count}} Galleries|{1} {{count}} Gallery|[2,*] {{count}} Galleries","pages.galleries.collections_count_simple":"{0} collections|{1} collection|[2,*] collections","pages.galleries.collections_count":"{0} {{count}} Collections|{1} {{count}} Collection|[2,*] {{count}} Collections","pages.galleries.nfts_count_simple":"{0} NFTs|{1} NFT|[2,*] NFTs","pages.galleries.nfts_count":"{0} {{count}} NFTs|{1} {{count}} NFT|[2,*] {{count}} NFTs","pages.galleries.users_count_simple":"{0} users|{1} user|[2,*] users","pages.galleries.users_count":"{0} {{count}} Users|{1} {{count}} User|[2,*] {{count}} Users","pages.galleries.featuring":"Featuring","pages.galleries.curated_by":"Curated by","pages.galleries.worth_about":"Worth About","pages.galleries.valued_at":"valued at","pages.galleries.from":"From","pages.galleries.most_popular_galleries":"Most Popular Galleries","pages.galleries.newest_galleries":"Newest Galleries","pages.galleries.most_valuable_galleries":"Most Valuable Galleries","pages.galleries.most_popular":"Most Popular","pages.galleries.newest":"Newest","pages.galleries.most_valuable":"Most Valuable","pages.galleries.create.search_by_nfts":"Search by NFTs","pages.galleries.create.input_placeholder":"Enter gallery name","pages.galleries.create.title_too_long":"Gallery name must not exceed {{max}} characters.","pages.galleries.create.already_selected_nft":"NFT already exists in this gallery","pages.galleries.create.nft_missing_image":"Only NFTs with images can be added to galleries","pages.galleries.create.nft_gallery_limit":"You can only add 16 NFTs per gallery","pages.galleries.create.gallery_cover":"Gallery Cover","pages.galleries.create.gallery_cover_description":"The cover is used for the card on the gallery list page. While the cover is not a requirement it will allow you to add personality and stand out from the crowd.","pages.galleries.create.gallery_cover_information":"Image dimensions must be at least 287px x 190px, with a max size of 2 MB (JPG, PNG or GIF)","pages.galleries.create.no_results":"We could not find anything matching your search criteria, please try again!","pages.galleries.create.templates.cover":"Cover","pages.galleries.create.templates.template":"Template","pages.galleries.create.templates.select":"Select Gallery Template","pages.galleries.create.templates.basic":"Basic Gallery","pages.galleries.create.templates.coming_soon":"More Coming Soon","pages.galleries.create.load_more_collections_one":"Load {{count}} More Collection","pages.galleries.create.load_more_collections_other":"Load {{count}} More Collections","pages.galleries.create.load_more_nfts":"Load More NFTs","pages.galleries.create.can_purchase":"You can purchase NFTs with these top NFT Marketplaces:","pages.galleries.create.must_own_one_nft":"You must own at least one (1) NFT in order to create a gallery.","pages.galleries.create.back_to_galleries":"Back to Galleries","pages.galleries.create.draft_saved":"Draft Saved","pages.galleries.create.saving_to_draft":"Saving to draft","pages.galleries.create.drafts_limit_modal_title":"Draft Gallery Limit","pages.galleries.create.drafts_limit_modal_message":"You’ve hit your limit for draft galleries. While you can still make new galleries and publish them, they won’t be saved as drafts. To Free up space, you can either delete existing drafts or publish them.","pages.galleries.create.drafts_limit_modal_cancel":"Go to Drafts","pages.galleries.delete_modal.title":"Delete Gallery","pages.galleries.delete_modal.confirmation_text":"Are you sure you want to delete the gallery? Deleting a Gallery is permanent, all associated views and likes will be lost.","pages.galleries.consists_of_collections":"{0} This gallery consists of {{count}} collections|{1} This gallery consists of {{count}} collection|[2,*] This gallery consists of {{count}} collections","pages.galleries.guest_banner.title":"Craft the ultimate","pages.galleries.guest_banner.subtitle":"Pick your favorites, curate your gallery, & share it with the world.","pages.profile.title":"Profile","pages.token_panel.balance_tooltip":"Total percentage of the portfolio held in this token","pages.token_panel.insufficient_funds":"Insufficient Balance","pages.token_panel.error":"Dashbrd has failed to load token information. Please try again later.","pages.token_panel.failed_to_retrieve_transactions":"We were unable to fetch your transactions.","pages.token_panel.tabs.transaction_history":"Transaction History","pages.token_panel.tabs.history":"History","pages.token_panel.tabs.market_data":"Market Data","pages.token_panel.details.current_price":"Current Price","pages.token_panel.details.title":"Token Details","pages.token_panel.details.market_cap":"Market Cap","pages.token_panel.details.volume":"Daily Volume","pages.token_panel.details.supply":"Minted Supply","pages.token_panel.details.ath":"All-Time High","pages.token_panel.details.atl":"All-Time Low","pages.token_panel.chart.failed":"Dashbrd has failed to load chart information. Please try again later.","pages.transaction_details_panel.title":"Transaction Details","pages.transaction_details_panel.details.blockchain":"Blockchain","pages.transaction_details_panel.details.timestamp":"Timestamp","pages.transaction_details_panel.details.transaction_hash":"Transaction Hash","pages.transaction_details_panel.details.transaction_fee":"Transaction Fee","pages.transaction_details_panel.details.gas_price":"Gas Price","pages.transaction_details_panel.details.gas_used":"Gas Used","pages.transaction_details_panel.details.nonce":"Nonce","pages.send_receive_panel.send.labels.token_and_amount":"Token and Amount","pages.send_receive_panel.send.labels.destination_address":"Destination Address","pages.send_receive_panel.send.labels.projected_fee":"Projected Fee","pages.send_receive_panel.send.placeholders.enter_amount":"Enter Amount","pages.send_receive_panel.send.placeholders.insert_recipient_address":"Insert Recipient Address","pages.send_receive_panel.send.placeholders.projected_fee":"Projected Fee","pages.send_receive_panel.send.errors.amount":"Insufficient Funds: You do not have enough to cover the amount + fee.","pages.send_receive_panel.send.errors.destination":"Destination address is not correct. Check and input again.","pages.send_receive_panel.send.hints.token_price":"Token Price","pages.send_receive_panel.send.fees.Fast":"Fast","pages.send_receive_panel.send.fees.Avg":"Avg","pages.send_receive_panel.send.fees.Slow":"Slow","pages.send_receive_panel.send.search_dropdown.placeholder":"Search token","pages.send_receive_panel.send.search_dropdown.no_results":"No Results","pages.send_receive_panel.send.search_dropdown.error":"Error occurred while searching tokens.","pages.send_receive_panel.send.transaction_time":"Transaction Time: ~{{ time }} minutes","pages.send_receive_panel.send.from":"From","pages.send_receive_panel.send.to":"To","pages.send_receive_panel.send.amount":"Amount","pages.send_receive_panel.send.fee":"Fee","pages.send_receive_panel.send.total_amount":"Total Amount","pages.send_receive_panel.send.waiting_message":"Review and verify the information on your MetaMask. Sign to send the transaction.","pages.send_receive_panel.send.waiting_spinner_text":"Waiting for confirmation...","pages.send_receive_panel.send.failed_message":"It looks like something went wrong while sending your transaction. Press 'Retry' to make another attempt.","pages.send_receive_panel.receive.alert":"Send only Polygon or Ethereum Network compatible tokens to this address or you could permanently lose your funds!","pages.settings.title":"Settings","pages.settings.sidebar.general":"General","pages.settings.sidebar.notifications":"Notifications","pages.settings.sidebar.session_history":"Sessions History","pages.settings.general.title":"Settings","pages.settings.general.subtitle":"Customize your App Experience","pages.settings.general.currency":"Currency","pages.settings.general.currency_subtitle":"Select your default currency which will be used throughout the app.","pages.settings.general.time_date":"Time & Date","pages.settings.general.time_date_subtitle":"Select how you want time and date be shown inside app.","pages.settings.general.date_format":"Date Format","pages.settings.general.time_format":"Time Format","pages.settings.general.timezone":"Timezone","pages.settings.general.set_defaults":"Set Defaults","pages.settings.general.set_defaults_content":"Reverting to the default settings will remove any customizations previously made. Are you sure?","pages.settings.general.save":"Save Settings","pages.settings.general.saved":"Your settings have been successfully saved","pages.wallet.title":"Wallet","pages.privacy_policy.title":"Privacy Policy","pages.terms_of_service.title":"Terms of Service","pagination.previous":"« Previous","pagination.next":"Next »","passwords.reset":"Your password has been reset!","passwords.sent":"We have emailed your password reset link!","passwords.throttled":"Please wait before retrying.","passwords.token":"This password reset token is invalid.","passwords.user":"We can't find a user with that email address.","urls.landing":"https://dashbrd.com","urls.cookie_policy":"https://dashbrd.com/cookie-policy","urls.privacy_policy":"https://dashbrd.com/privacy-policy","urls.terms_of_service":"https://dashbrd.com/terms-of-service","urls.twitter":"https://x.com/DashbrdApp","urls.discord":"https://discord.gg/MJyWKkCJ5k","urls.github":"https://github.com/ArdentHQ/dashbrd","urls.coingecko":"https://www.coingecko.com","urls.etherscan":"https://etherscan.io","urls.polygonscan":"https://polygonscan.com","urls.alchemy":"https://www.alchemy.com","urls.moralis":"https://moralis.io","urls.mnemonic":"https://www.mnemonichq.com","urls.opensea":"https://opensea.io/","urls.explorers.etherscan.token_transactions":"https://etherscan.io/token/{{token}}?a={{address}}","urls.explorers.etherscan.addresses":"https://etherscan.io/address/{{address}}","urls.explorers.etherscan.transactions":"https://etherscan.io/tx/{{id}}","urls.explorers.etherscan.nft":"https://etherscan.io/nft/{{address}}/{{nftId}}","urls.explorers.polygonscan.token_transactions":"https://polygonscan.com/token/{{token}}?a={{address}}","urls.explorers.polygonscan.addresses":"https://polygonscan.com/address/{{address}}","urls.explorers.polygonscan.transactions":"https://polygonscan.com/tx/{{id}}","urls.explorers.polygonscan.nft":"https://polygonscan.com/nft/{{address}}/{{nftId}}","urls.explorers.mumbai.token_transactions":"https://mumbai.polygonscan.com/token/{{token}}?a={{address}}","urls.explorers.mumbai.addresses":"https://mumbai.polygonscan.com/address/{{address}}","urls.explorers.mumbai.transactions":"https://mumbai.polygonscan.com/tx/{{id}}","urls.explorers.mumbai.nft":"https://mumbai.polygonscan.com/nft/{{address}}/{{nftId}}","urls.explorers.goerli.token_transactions":"https://goerli.etherscan.io/token/{{token}}?a={{address}}","urls.explorers.goerli.addresses":"https://goerli.etherscan.io/address/{{address}}","urls.explorers.goerli.transactions":"https://goerli.etherscan.io/tx/{{id}}","urls.explorers.goerli.nft":"https://goerli.etherscan.io/nft/{{address}}/{{nftId}}","urls.marketplaces.opensea.collection":"https://opensea.io/assets/{{network}}/{{address}}","urls.marketplaces.opensea.nft":"https://opensea.io/assets/{{network}}/{{address}}/{{nftId}}","urls.marketplaces.rarible.collection":"https://rarible.com/collection/{{address}}/items","urls.marketplaces.rarible.nft":"https://rarible.com/token/{{address}}:{{nftId}}","urls.marketplaces.blur.collection":"https://blur.io/collection/{{address}}","urls.marketplaces.blur.nft":"https://blur.io/asset/{{address}}/{{nftId}}","urls.marketplaces.looksrare.collection":"https://looksrare.org/collections/{{address}}","urls.marketplaces.looksrare.nft":"https://looksrare.org/collections/{{address}}/{{nftId}}","validation.accepted":"The {{attribute}} must be accepted.","validation.accepted_if":"The {{attribute}} must be accepted when {{other}} is {{value}}.","validation.active_url":"The {{attribute}} is not a valid URL.","validation.after":"The {{attribute}} must be a date after {{date}}.","validation.after_or_equal":"The {{attribute}} must be a date after or equal to {{date}}.","validation.alpha":"The {{attribute}} must only contain letters.","validation.alpha_dash":"The {{attribute}} must only contain letters, numbers, dashes and underscores.","validation.alpha_num":"The {{attribute}} must only contain letters and numbers.","validation.array":"The {{attribute}} must be an array.","validation.ascii":"The {{attribute}} must only contain single-byte alphanumeric characters and symbols.","validation.before":"The {{attribute}} must be a date before {{date}}.","validation.before_or_equal":"The {{attribute}} must be a date before or equal to {{date}}.","validation.between.array":"The {{attribute}} must have between {{min}} and {{max}} items.","validation.between.file":"The {{attribute}} must be between {{min}} and {{max}} kilobytes.","validation.between.numeric":"The {{attribute}} must be between {{min}} and {{max}}.","validation.between.string":"The {{attribute}} must be between {{min}} and {{max}} characters.","validation.boolean":"The {{attribute}} field must be true or false.","validation.confirmed":"The {{attribute}} confirmation does not match.","validation.current_password":"The password is incorrect.","validation.date":"The {{attribute}} is not a valid date.","validation.date_equals":"The {{attribute}} must be a date equal to {{date}}.","validation.date_format":"The {{attribute}} does not match the format {{format}}.","validation.decimal":"The {{attribute}} must have {{decimal}} decimal places.","validation.declined":"The {{attribute}} must be declined.","validation.declined_if":"The {{attribute}} must be declined when {{other}} is {{value}}.","validation.different":"The {{attribute}} and {{other}} must be different.","validation.digits":"The {{attribute}} must be {{digits}} digits.","validation.digits_between":"The {{attribute}} must be between {{min}} and {{max}} digits.","validation.dimensions":"The {{attribute}} has invalid image dimensions.","validation.distinct":"The {{attribute}} field has a duplicate value.","validation.doesnt_end_with":"The {{attribute}} may not end with one of the following: {{values}}.","validation.doesnt_start_with":"The {{attribute}} may not start with one of the following: {{values}}.","validation.email":"The {{attribute}} must be a valid email address.","validation.ends_with":"The {{attribute}} must end with one of the following: {{values}}.","validation.enum":"The selected {{attribute}} is invalid.","validation.exists":"The selected {{attribute}} is invalid.","validation.file":"The {{attribute}} must be a file.","validation.filled":"The {{attribute}} field must have a value.","validation.gt.array":"The {{attribute}} must have more than {{value}} items.","validation.gt.file":"The {{attribute}} must be greater than {{value}} kilobytes.","validation.gt.numeric":"The {{attribute}} must be greater than {{value}}.","validation.gt.string":"The {{attribute}} must be greater than {{value}} characters.","validation.gte.array":"The {{attribute}} must have {{value}} items or more.","validation.gte.file":"The {{attribute}} must be greater than or equal to {{value}} kilobytes.","validation.gte.numeric":"The {{attribute}} must be greater than or equal to {{value}}.","validation.gte.string":"The {{attribute}} must be greater than or equal to {{value}} characters.","validation.image":"The {{attribute}} must be an image.","validation.in":"The selected {{attribute}} is invalid.","validation.in_array":"The {{attribute}} field does not exist in {{other}}.","validation.integer":"The {{attribute}} must be an integer.","validation.ip":"The {{attribute}} must be a valid IP address.","validation.ipv4":"The {{attribute}} must be a valid IPv4 address.","validation.ipv6":"The {{attribute}} must be a valid IPv6 address.","validation.json":"The {{attribute}} must be a valid JSON string.","validation.lowercase":"The {{attribute}} must be lowercase.","validation.lt.array":"The {{attribute}} must have less than {{value}} items.","validation.lt.file":"The {{attribute}} must be less than {{value}} kilobytes.","validation.lt.numeric":"The {{attribute}} must be less than {{value}}.","validation.lt.string":"The {{attribute}} must be less than {{value}} characters.","validation.lte.array":"The {{attribute}} must not have more than {{value}} items.","validation.lte.file":"The {{attribute}} must be less than or equal to {{value}} kilobytes.","validation.lte.numeric":"The {{attribute}} must be less than or equal to {{value}}.","validation.lte.string":"The {{attribute}} must be less than or equal to {{value}} characters.","validation.mac_address":"The {{attribute}} must be a valid MAC address.","validation.max.array":"The {{attribute}} must not have more than {{max}} items.","validation.max.file":"The {{attribute}} must not be greater than {{max}} kilobytes.","validation.max.numeric":"The {{attribute}} must not be greater than {{max}}.","validation.max.string":"The {{attribute}} must not be greater than {{max}} characters.","validation.max_digits":"The {{attribute}} must not have more than {{max}} digits.","validation.mimes":"The {{attribute}} must be a file of type: {{values}}.","validation.mimetypes":"The {{attribute}} must be a file of type: {{values}}.","validation.min.array":"The {{attribute}} must have at least {{min}} items.","validation.min.file":"The {{attribute}} must be at least {{min}} kilobytes.","validation.min.numeric":"The {{attribute}} must be at least {{min}}.","validation.min.string":"The {{attribute}} must be at least {{min}} characters.","validation.min_digits":"The {{attribute}} must have at least {{min}} digits.","validation.missing":"The {{attribute}} field must be missing.","validation.missing_if":"The {{attribute}} field must be missing when {{other}} is {{value}}.","validation.missing_unless":"The {{attribute}} field must be missing unless {{other}} is {{value}}.","validation.missing_with":"The {{attribute}} field must be missing when {{values}} is present.","validation.missing_with_all":"The {{attribute}} field must be missing when {{values}} are present.","validation.multiple_of":"The {{attribute}} must be a multiple of {{value}}.","validation.not_in":"The selected {{attribute}} is invalid.","validation.not_regex":"The {{attribute}} format is invalid.","validation.numeric":"The {{attribute}} must be a number.","validation.password.letters":"The {{attribute}} must contain at least one letter.","validation.password.mixed":"The {{attribute}} must contain at least one uppercase and one lowercase letter.","validation.password.numbers":"The {{attribute}} must contain at least one number.","validation.password.symbols":"The {{attribute}} must contain at least one symbol.","validation.password.uncompromised":"The given {{attribute}} has appeared in a data leak. Please choose a different {{attribute}}.","validation.present":"The {{attribute}} field must be present.","validation.prohibited":"The {{attribute}} field is prohibited.","validation.prohibited_if":"The {{attribute}} field is prohibited when {{other}} is {{value}}.","validation.prohibited_unless":"The {{attribute}} field is prohibited unless {{other}} is in {{values}}.","validation.prohibits":"The {{attribute}} field prohibits {{other}} from being present.","validation.regex":"The {{attribute}} format is invalid.","validation.required":"The {{attribute}} field is required.","validation.required_array_keys":"The {{attribute}} field must contain entries for: {{values}}.","validation.required_if":"The {{attribute}} field is required when {{other}} is {{value}}.","validation.required_if_accepted":"The {{attribute}} field is required when {{other}} is accepted.","validation.required_unless":"The {{attribute}} field is required unless {{other}} is in {{values}}.","validation.required_with":"The {{attribute}} field is required when {{values}} is present.","validation.required_with_all":"The {{attribute}} field is required when {{values}} are present.","validation.required_without":"The {{attribute}} field is required when {{values}} is not present.","validation.required_without_all":"The {{attribute}} field is required when none of {{values}} are present.","validation.same":"The {{attribute}} and {{other}} must match.","validation.size.array":"The {{attribute}} must contain {{size}} items.","validation.size.file":"The {{attribute}} must be {{size}} kilobytes.","validation.size.numeric":"The {{attribute}} must be {{size}}.","validation.size.string":"The {{attribute}} must be {{size}} characters.","validation.starts_with":"The {{attribute}} must start with one of the following: {{values}}.","validation.string":"The {{attribute}} must be a string.","validation.timezone":"The {{attribute}} must be a valid timezone.","validation.unique":"The {{attribute}} has already been taken.","validation.uploaded":"The {{attribute}} failed to upload.","validation.uppercase":"The {{attribute}} must be uppercase.","validation.url":"The {{attribute}} must be a valid URL.","validation.ulid":"The {{attribute}} must be a valid ULID.","validation.uuid":"The {{attribute}} must be a valid UUID.","validation.custom.attribute-name.rule-name":"custom-message","validation.unsupported_currency_code":"The currency code you provided is invalid or not supported.","validation.unsupported_period":"The period you provided is invalid or not supported.","validation.unsupported_token_symbol":"The token symbol you provided is invalid or not supported.","validation.gallery_title_required":"Gallery name is required.","validation.gallery_title_max_characters":"The gallery name should not exceed 50 characters.","validation.gallery_title_invalid":"The gallery name is invalid.","validation.nfts_required":"Please add at least one NFT.","validation.nfts_max_size":"Galleries can contain no more than {{limit}} NFTs","validation.invalid_nfts":"The NFT in position {{position}} is invalid, please select another one.","validation.invalid_cover":"You have selected an invalid cover image, please try another one."} \ No newline at end of file +{"auth.welcome":"Welcome to Dashbrd","auth.logged_in":"You're logged in!","auth.log_out":"Log out","auth.failed":"These credentials do not match our records.","auth.session_timeout":"Your session has timed out. Please refresh the page and try connecting your account again.","auth.session_timeout_modal":"Seems like your session has timed out. Please connnect your wallet again.","auth.password":"The provided password is incorrect.","auth.throttle":"Too many login attempts. Please try again in {{seconds}} seconds.","auth.wallet.connecting":"Connecting …","auth.wallet.waiting_for_signature":"Waiting for Signature …","auth.wallet.switching_wallet":"Switching Wallet …","auth.wallet.connect":"Connect Wallet","auth.wallet.connect_long":"Connect Your Wallet to Get Started","auth.wallet.sign_subtitle":"Connect Your Wallet to Continue","auth.wallet.disconnect":"Disconnect Wallet","auth.wallet.install":"Install MetaMask","auth.wallet.install_long":"Install MetaMask to Get Started","auth.wallet.sign":"Sign Message","auth.wallet.sign_message":"Welcome to Dashbrd. In order to login, sign this message with your wallet. It doesn't cost you anything!\n\nSigning ID (you can ignore this): {{nonce}}","auth.wallet.connect_subtitle":"Click on the MetaMask icon in your browser to confirm the action and connect your wallet.","auth.wallet.requires_signature":"In order to prevent impersonation, we require a signature to perform this action. This signature is only a signed message and does not give any access to your wallet.","auth.errors.metamask.no_account":"No account found. Please connect your wallet and try again.","auth.errors.metamask.generic":"Connection attempt error. Please retry and follow the steps to connect your wallet.","auth.errors.metamask.invalid_network":"Please switch to Polygon or Ethereum Mainnet in your MetaMask plugin to connect to Dashbrd.","auth.errors.metamask.provider_missing":"You don't have MetaMask installed in your browser. Please install and try again.","auth.errors.metamask.user_rejected":"It looks like you cancelled signing of the authentication message. Please try again.","auth.errors.metamask.provider_not_set":"Ethereum provider is not set","auth.validation.wallet_login_failed":"There was a problem trying to verify your signature. Please try again.","auth.validation.invalid_address":"Your wallet address is invalid. Please try again.","auth.validation.invalid_signature":"Signature is invalid. Please try again.","auth.validation.invalid_network":"Please switch to Polygon or Ethereum Mainnet in your MetaMask plugin to connect to Dashbrd.","common.author":"Author","common.add":"Add","common.amount":"Amount","common.balance":"Balance","common.cancel":"Cancel","common.delete":"Delete","common.edit":"Edit","common.confirm":"Confirm","common.connect":"Connect","common.continue":"Continue","common.done":"Done","common.filter":"Filter","common.items":"Items","common.receive":"Receive","common.received":"Received","common.retry":"Retry","common.records":"Records","common.save":"Save","common.send":"Send","common.sent":"Sent","common.show":"Show","common.searching":"Searching...","common.other":"Other","common.owned":"Owned","common.token":"Token","common.tokens":"Tokens","common.wallet":"Wallet","common.pending":"Pending","common.publish":"Publish","common.published":"Published","common.empty":"Empty","common.your_address":"Your Address","common.warning":"Warning","common.my_address":"My Address","common.my_wallet":"My Wallet","common.my_collections":"My Collections","common.my_balance":"My Balance","common.na":"N/A","common.simple_plural_without_data":"One comment|Many comments","common.simple_plural_with_data":"{{count}} comment|{{count}} comments","common.advanced_plural_without_data":"{0} no comments yet|{1} 1 comment|[2,*] Many comments","common.advanced_plural_with_data":"{0} no comments yet|{1} 1 comment|[2,*] {{count}} comments","common.copy_clipboard":"Copy to Clipboard","common.copy":"Copy","common.download":"Download","common.zoom":"Zoom","common.my_collection":"My Collection","common.max":"Max","common.chain":"Chain","common.copied":"Copied!","common.coming_soon":"Coming Soon","common.more_details":"More Details","common.close":"Close","common.close_toast":"Close toast","common.loading":"Loading","common.price":"Price","common.articles":"Articles","common.most_popular":"Most Popular","common.market_cap":"Market Cap","common.volume":"Volume","common.volume_frequency":"Volume {{frequency}}","common.value":"Value","common.last_n_days":"Last {{count}} Days","common.details":"Details","common.view_all":"View All","common.view_more_on_polygonscan":"View More on Polygonscan","common.view_more_on_etherscan":"View More on Etherscan","common.view_nft_on_etherscan":"View NFT on Etherscan","common.view_nft_on_polygonscan":"View NFT on Polygonscan","common.view_nft_on_goerli_tesnet":"View NFT on Goerli Testnet Explorer","common.view_nft_on_mumbai_tesnet":"View NFT on Mumbai Testnet Explorer","common.polygonscan":"Polygonscan","common.etherscan":"Etherscan","common.featured":"Featured","common.floor_price":"Floor Price","common.floor":"Floor","common.supply":"Supply","common.owners":"Owners","common.created":"Created","common.nft":"NFT","common.collection":"Collection","common.collections":"Collections","common.gallery":"Gallery","common.basic_gallery":"Basic Gallery","common.gallery_name":"Gallery Name","common.create_gallery":"Create Gallery","common.external_link":"External Link","common.follow_link":"Follow Link","common.cover":"Cover","common.template":"Template","common.page":"Page","common.polygon":"Polygon","common.ethereum":"Ethereum","common.mumbai":"Mumbai","common.goerli":"Goerli","common.of":"of","common.pagination_input_placeholder":"Enter the page number","common.pagination_input_placeholder_mobile":"Page number","common.nft_count":"{0} {{count}} NFTs|{1} {{count}} NFT|[2,*] {{count}} NFTs","common.nft_gallery":"NFT Gallery","common.unable_to_retrieve_image":"Unable to retrieve your NFT image at this time","common.optional":"Optional","common.selected":"Selected","common.select":"Select","common.preview":"Preview","common.image_size_error":"Image size must not exceed 2MB","common.image_dimensions_error":"Image dimensions must exceed 287px x 190px","common.write_to_confirm":"Write {{word}} to confirm","common.n_hours":"{0} {{count}} hour|{1} {{count}} hour|[2,*] {{count}} hours","common.n_minutes":"{0} {{count}} minute|{1} {{count}} minute|[2,*] {{count}} minutes","common.report":"Report","common.nfts":"NFTs","common.n_nfts":"{0}NFTs|{1}NFT|[2,*]NFTs","common.n_collections":"{0}collections|{1}collection|[2,*]collections","common.back":"Back","common.back_to":"Back to","common.name":"Name","common.type":"Type","common.from":"From","common.to":"To","common.sale_price":"Sale Price","common.recent_activity":"Recent Activity","common.time":"Time","common.datetime.few_seconds_ago":"A few seconds ago","common.datetime.minutes_ago":"{0} Less than a minute ago|{1} A minute ago|[2,*] {{count}} minutes ago","common.datetime.hours_ago":"{0} Less than an hour ago|{1} An hour ago|[2,*] {{count}} hours ago","common.datetime.days_ago":"{0} Less than a day ago|{1} A day ago|[2,*] {{count}} days ago","common.datetime.weeks_ago":"{0} Less than a week ago|{1} A week ago|[2,*] {{count}} weeks ago","common.datetime.months_ago":"{0} Less than a month ago|{1} A month ago|[2,*] {{count}} months ago","common.datetime.years_ago":"{0} Less than a year ago|{1} A year ago|[2,*] {{count}} years ago","common.no_traits_found":"No traits found.","common.empty_transactions":"You don't have any transactions yet. Once transactions have been made, they will show up here.","common.error":"Error","common.refresh":"Refresh","common.refresh_metadata":"Refresh Metadata","common.refreshing_metadata":"Refreshing Metadata... Please check back later.","common.refreshing_activity":"Refreshing Activity... Please check back later.","common.pending_confirmation":"Pending Confirmation","common.confirmed_transaction":"Confirmed Transaction","common.transaction_error":"Transaction Error","common.transaction_error_description_first_part":"Your transaction encountered an error. View this transaction on","common.transaction_error_description_second_part":"for more details.","common.home":"Home","common.contact":"Contact","common.menu":"Menu","common.website":"Website","common.twitter":"Twitter","common.discord":"Discord","common.facebook":"Facebook","common.reddit":"Reddit","common.x":"X","common.sort":"Sort","common.drafts":"Drafts","common.draft":"Draft","common.delete_draft":"Delete Draft","common.share_on":"Share on {{platform}}","common.top":"Top","common.all_chains":"All chains","common.votes":"Votes","common.vote":"Vote","common.vol":"Vol","footer.copyright":"{{year}} © Dashbrd. All rights reserved.","footer.all_rights_reserved":"All rights reserved","footer.privacy_policy":"Privacy Policy","footer.terms_of_service":"Terms of Service","footer.powered_by":"Powered by","format.fiat":"{{ value, currency }}","format.number":"{{ value, number }}","metatags.home.title":"Dashbrd | Web3 Portfolio Management Made Simple","metatags.home.description":"Simplify your Web3 journey with Dashbrd. Manage your portfolio of tokens, NFTs, and other digital collectibles across the Ethereum and Polygon blockchains.","metatags.home.image":"/images/meta/home.png","metatags.error.title":"Error {{code}} | Dashbrd","metatags.wallet.title":"My Wallet | Dashbrd","metatags.galleries.title":"Top NFT Galleries | Dashbrd","metatags.galleries.image":"/images/meta/nft-galleries.png","metatags.galleries.description":"Explore user published NFT galleries to find custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.most_popular.title":"Most Popular Galleries | Dashbrd","metatags.galleries.most_popular.image":"/images/meta/most-popular-nft-galleries.png","metatags.galleries.most_popular.description":"Explore and discover Most Popular NFT Galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.newest.title":"Newest Galleries | Dashbrd","metatags.galleries.newest.image":"/images/meta/newest-nft-galleries.png","metatags.galleries.newest.description":"Explore and discover most recent NFT galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More","metatags.galleries.most_valuable.title":"Most Valuable Galleries | Dashbrd","metatags.galleries.most_valuable.image":"/images/meta/most-valuable-nft-galleries.png","metatags.galleries.most_valuable.description":"Explore and discover Most Valuable NFT Galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.view.title":"{{name}} | Dashbrd","metatags.galleries.view.description":"{{name}} | A Curated NFT Gallery at Dashbrd","metatags.galleries.view.image":"/images/meta/nft-gallery.png","metatags.my_galleries.title":"My Galleries | Dashbrd","metatags.my_galleries.title_draft":"My Draft Galleries | Dashbrd","metatags.my_galleries.create.title":"Create Gallery | Dashbrd","metatags.my_galleries.edit.title":"Edit {{name}} | Dashbrd","metatags.collections.title":"Collections | Dashbrd","metatags.collections.view.title":"{{name}} Collection | Dashbrd","metatags.collections.view.description":"Immerse yourself in the intricate details of {{name}} collection, featuring remarkable digital assets. Start your NFT journey today!","metatags.collections.view.image":"/images/meta/nft-collection.png","metatags.my-collections.title":"My Collections | Dashbrd","metatags.nfts.view.title":"{{nft}} NFT | Dashbrd","metatags.nfts.view.description":"Uncover the complete story of {{nft}} NFT from the {{collection}} collection, delving into its unique attributes and distinctive features.","metatags.nfts.view.image":"/images/meta/nft-details.png","metatags.settings.title":"Settings | Dashbrd","metatags.articles.title":"Articles | Dashbrd","metatags.articles.view.title":"{{title}} | Dashbrd","metatags.login.title":"Login | Dashbrd","metatags.privacy_policy.title":"Privacy Policy | Dashbrd","metatags.privacy_policy.description":"Dashbrd’s privacy policy outlines the information we collect and explains your choices surrounding how we use information about you.","metatags.terms_of_service.title":"Terms of Service | Dashbrd","metatags.terms_of_service.description":"These Terms of Service cover your use and access to services, products or websites of Dashbrd.","metatags.cookie_policy.title":"Cookie Policy | Dashbrd","metatags.cookie_policy.description":"Dashbrd uses cookies to make the website more user-friendly. Find out about the main types of cookies we use, and what we use them for.","metatags.welcome.title":"Welcome to Dashbrd | Web3 Simplified","pages.onboarding.title":"Get Started","pages.onboarding.heading":"Your monkeys were bored and ran off, we are trying to round them up.","pages.onboarding.message":"We are setting up your account. This process usually takes just a few minutes, but can take up to 15 minutes.","pages.error.heading":"Oops, something went wrong ...","pages.error.message":"Please try again or get in touch if the issue persists.","pages.maintenance.title":"Dashbrd is currently down for scheduled maintenance.","pages.maintenance.description":"We expect to be back soon. Thanks for your patience.","pages.dashboard.title":"My Wallet","pages.dashboard.breakdown.title":"Portfolio Breakdown","pages.dashboard.line_chart.data_error":"Could not load chart data","pages.articles.title":"Articles","pages.articles.featured_collections":"Featured Collections","pages.articles.placeholder_more_soon":"More Soon","pages.articles.no_articles":"No articles have been published yet. Please check back later!","pages.articles.header_title":"Explore our collection of","pages.articles.header_suffix_one":"published article","pages.articles.header_suffix_other":"published articles","pages.articles.audio_version":"Audio version","pages.articles.consists_of_collections":"{0} This article highlights {{count}} collections|{1} This article highlights {{count}} collection|[2,*] This article highlights {{count}} collections","pages.collections.title":"Collections","pages.collections.collections":"Collections","pages.collections.popular_collections":"Popular Collections","pages.collections.collection_value":"Collection Value","pages.collections.nfts_owned":"NFTs Owned","pages.collections.header_title":"You own <0>{{nftsCount}} {{nfts}} across <0>{{collectionsCount}} {{collections}}, worth about <0><1>{{worth}}","pages.collections.search_placeholder":"Search by Collection","pages.collections.properties":"Properties","pages.collections.collections_network":"Collections Network","pages.collections.property_search_placeholder":"Feature Search","pages.collections.floor_price":"Floor Price","pages.collections.value":"Value","pages.collections.rarity":"Rarity","pages.collections.report":"Report","pages.collections.hide_collection":"Hide Collection","pages.collections.unhide_collection":"Unhide Collection","pages.collections.no_collections":"You do not own any NFTs yet. Once you do they will be shown here.","pages.collections.all_collections_hidden":"You have hidden all your collections. Unhide and they will appear here.","pages.collections.about_collection":"About Collection","pages.collections.show_hidden":"Show Hidden","pages.collections.show_my_collection":"Show My Collection","pages.collections.owned":"Owned","pages.collections.activities.loading_activities":"We're fetching Activity for this NFT, please hang tight, this can take a while.","pages.collections.activities.loading_activities_collection":"We're fetching Activity for this collection, please hang tight, this can take a while.","pages.collections.activities.ignores_activities":"We don't support activity history for this collection yet.","pages.collections.activities.no_activity":"This collection does not have any activity yet.","pages.collections.activities.types.LABEL_MINT":"Mint","pages.collections.activities.types.LABEL_TRANSFER":"Transfer","pages.collections.activities.types.LABEL_SALE":"Sale","pages.collections.activities.types.LABEL_BURN":"Burn","pages.collections.collection_of_the_month.winners_month":"Winners: {{month}}","pages.collections.collection_of_the_month.vote_for_next_months_winners":"Vote now for next month's winners","pages.collections.collection_of_the_month.view_previous_winners":"View Previous Winners","pages.collections.collection_of_the_month.vote_received_modal.title":"Vote Received","pages.collections.collection_of_the_month.vote_received_modal.description":"Your vote has been recorded. Share your vote on X and let everyone know!","pages.collections.collection_of_the_month.vote_received_modal.share_vote":"Share Vote","pages.collections.collection_of_the_month.vote_received_modal.img_alt":"I voted for Dashbrd Project of the Month","pages.collections.collection_of_the_month.vote_received_modal.x_text":"I voted for {{collection}} for collection of the month @dashbrdapp! Go show your support!","pages.collections.collection_of_the_month.vote_success":"Your vote has been successfully submitted","pages.collections.articles.heading":"Latest NFT News & Features","pages.collections.articles.no_articles":"No articles have been linked to this collection as of now.","pages.collections.articles.no_articles_with_filters":"We could not find any articles matching your search criteria, please try again!","pages.collections.articles.search_placeholder":"Search in Articles","pages.collections.articles.sort_latest":"Latest","pages.collections.articles.sort_popularity":"Most Popular","pages.collections.search.loading_results":"Loading results...","pages.collections.search.no_results":"We could not find anything matching your search criteria, please try again!","pages.collections.search.no_results_with_filters":"We could not find anything matching your filters, please try again!","pages.collections.search.no_results_ownership":"You do not own any NFTs in this collection","pages.collections.search.error":"Could not load search results. Please try again later.","pages.collections.vote.vote_for_top_collection":"Vote for Top Collection of the Month","pages.collections.vote.vote":"Vote","pages.collections.vote.time_left":"Time Left","pages.collections.vote.or_nominate_collection":"Or nominate a collection","pages.collections.vote.nominate_collection":"Nominate a collection","pages.collections.vote.vote_to_reveal":"Vote to reveal data","pages.collections.vote.already_voted":"You’ve already nominated. Come back next month!","pages.collections.sorting.token_number":"Token Number","pages.collections.sorting.recently_received":"Recently Received","pages.collections.sorting.recently_created":"Recently Created","pages.collections.sorting.oldest_collection":"Oldest Collection","pages.collections.traits.description":"List of NFT traits by % of occurrence in the collection","pages.collections.traits.no_traits":"No Properties can be found for this NFT","pages.collections.menu.collection":"Collection","pages.collections.menu.articles":"Articles","pages.collections.menu.activity":"Activity","pages.collections.hidden_modal.collection_hidden":"Collection Hidden","pages.collections.hidden_modal.description":"This collection is currently set to Hidden. Are you sure you want to unhide this collection? You can\n reset the collection to hidden from the collection menu.","pages.collections.hidden_modal.unhide":"Unhide","pages.collections.hidden_modal.error":"Something went wrong. Please try again.","pages.collections.external_modal.you_wish_continue":"You are about to leave Dashbrd to an external website. Dashbrd has no control over the content of\n this site. Are you sure you wish to continue?","pages.collections.external_modal.not_show":"Do not show this message again.","pages.collections.refresh.title":"Refresh your collection","pages.collections.refresh.notice":"You can refresh data every 15 minutes.","pages.collections.refresh.notice_wait":"Please wait. You can refresh data every 15 minutes.","pages.collections.refresh.toast":"We're updating information for your collection.","pages.collections.featured.title":"Featured Collections","pages.collections.featured.button":"Explore Collection","pages.collections.footer.heading_broken.0":"Connect with MetaMask","pages.collections.footer.heading_broken.1":"& Manage Your Collection","pages.collections.footer.subtitle":"Explore, Filter, & Share your favorite NFTs with Dashbrd.","pages.collections.footer.button":"Manage Collections","pages.nfts.nft":"nft","pages.nfts.about_nft":"About NFT","pages.nfts.owned_by":"Owned by","pages.nfts.collection_image":"collection image","pages.nfts.menu.properties":"Properties","pages.nfts.menu.activity":"Activity","pages.reports.title":"Submit a Report","pages.reports.description":"Thanks for looking out by reporting things that break the rules. Let us know what's happening and we'll receive the report.","pages.reports.success":"Thank you for your report. We'll review it and see if it breaks our ToS.","pages.reports.failed":"Something went wrong. Please try again.","pages.reports.throttle":"You have made too many requests. Please wait {{time}} before reporting again.","pages.reports.reported":"You have already reported this {{model}}.","pages.reports.reasons.spam":"Spam","pages.reports.reasons.violence":"Promoting Violence","pages.reports.reasons.hate":"Hate","pages.reports.reasons.inappropriate_content":"Inappropriate Content","pages.reports.reasons.impersonation":"Impersonation","pages.reports.reasons.trademark":"Trademark or Copyright","pages.reports.reasons.selfharm":"Self-Harm","pages.reports.reasons.harassment":"Harassment","pages.galleries.title":"Galleries","pages.galleries.empty_title":"No galleries have been published yet. Once they do they will appear here.","pages.galleries.search.loading_results":"Loading results...","pages.galleries.search.no_results":"We could not find anything matching your search criteria, please try again!","pages.galleries.search.placeholder":"Search by name or curator address","pages.galleries.search.placeholder_nfts":"Search by NFTs","pages.galleries.search.error":"Could not load search results. Please try again later.","pages.galleries.my_galleries.title":"My Galleries","pages.galleries.my_galleries.subtitle":"Manage your galleries","pages.galleries.my_galleries.new_gallery":"New Gallery","pages.galleries.my_galleries.no_galleries":"You have not created any galleries yet. To create a gallery, click on the \"Create Gallery\" button.","pages.galleries.my_galleries.no_available_collections":"You have hidden all your collections. If you want to create a gallery, make sure you have at least 1 collection available.","pages.galleries.my_galleries.no_draft_galleries":"You have no draft galleries yet. To create a gallery, click on the \"Create Gallery\" button.","pages.galleries.my_galleries.succesfully_deleted":"Gallery has been successfully removed","pages.galleries.my_galleries.draft_succesfully_deleted":"Draft has been successfully removed","pages.galleries.my_galleries.successfully_created":"Gallery has been successfully created","pages.galleries.my_galleries.successfully_updated":"Gallery has been successfully updated","pages.galleries.my_galleries.new_gallery_no_nfts":"Creating a Gallery requires you to own an NFT.","pages.galleries.my_galleries.new_gallery_all_collections_hidden":"Creating a Gallery requires you to have at least 1 collection available.","pages.galleries.my_galleries.delete_modal.title":"Delete Draft","pages.galleries.my_galleries.delete_modal.text":"Are you sure you want to delete the draft? Everything you've done will be deleted and you won't be able to get it back.","pages.galleries.my_galleries.nfts_no_longer_owned":"NFTs no longer owned by this wallet have been removed from the draft”","pages.galleries.copy_gallery_link":"Copy Gallery Link","pages.galleries.my_nfts":"My NFTs","pages.galleries.show_hidden_collections":"Show hidden collections","pages.galleries.value":"Value","pages.galleries.floor_price":"Floor Price","pages.galleries.nfts":"NFTs","pages.galleries.collections":"Collections","pages.galleries.galleries_count_simple":"{0} galleries|{1} gallery|[2,*] galleries","pages.galleries.galleries_count":"{0} {{count}} Galleries|{1} {{count}} Gallery|[2,*] {{count}} Galleries","pages.galleries.collections_count_simple":"{0} collections|{1} collection|[2,*] collections","pages.galleries.collections_count":"{0} {{count}} Collections|{1} {{count}} Collection|[2,*] {{count}} Collections","pages.galleries.nfts_count_simple":"{0} NFTs|{1} NFT|[2,*] NFTs","pages.galleries.nfts_count":"{0} {{count}} NFTs|{1} {{count}} NFT|[2,*] {{count}} NFTs","pages.galleries.users_count_simple":"{0} users|{1} user|[2,*] users","pages.galleries.users_count":"{0} {{count}} Users|{1} {{count}} User|[2,*] {{count}} Users","pages.galleries.featuring":"Featuring","pages.galleries.curated_by":"Curated by","pages.galleries.worth_about":"Worth About","pages.galleries.valued_at":"valued at","pages.galleries.from":"From","pages.galleries.most_popular_galleries":"Most Popular Galleries","pages.galleries.newest_galleries":"Newest Galleries","pages.galleries.most_valuable_galleries":"Most Valuable Galleries","pages.galleries.most_popular":"Most Popular","pages.galleries.newest":"Newest","pages.galleries.most_valuable":"Most Valuable","pages.galleries.create.search_by_nfts":"Search by NFTs","pages.galleries.create.input_placeholder":"Enter gallery name","pages.galleries.create.title_too_long":"Gallery name must not exceed {{max}} characters.","pages.galleries.create.already_selected_nft":"NFT already exists in this gallery","pages.galleries.create.nft_missing_image":"Only NFTs with images can be added to galleries","pages.galleries.create.nft_gallery_limit":"You can only add 16 NFTs per gallery","pages.galleries.create.gallery_cover":"Gallery Cover","pages.galleries.create.gallery_cover_description":"The cover is used for the card on the gallery list page. While the cover is not a requirement it will allow you to add personality and stand out from the crowd.","pages.galleries.create.gallery_cover_information":"Image dimensions must be at least 287px x 190px, with a max size of 2 MB (JPG, PNG or GIF)","pages.galleries.create.no_results":"We could not find anything matching your search criteria, please try again!","pages.galleries.create.templates.cover":"Cover","pages.galleries.create.templates.template":"Template","pages.galleries.create.templates.select":"Select Gallery Template","pages.galleries.create.templates.basic":"Basic Gallery","pages.galleries.create.templates.coming_soon":"More Coming Soon","pages.galleries.create.load_more_collections_one":"Load {{count}} More Collection","pages.galleries.create.load_more_collections_other":"Load {{count}} More Collections","pages.galleries.create.load_more_nfts":"Load More NFTs","pages.galleries.create.can_purchase":"You can purchase NFTs with these top NFT Marketplaces:","pages.galleries.create.must_own_one_nft":"You must own at least one (1) NFT in order to create a gallery.","pages.galleries.create.back_to_galleries":"Back to Galleries","pages.galleries.create.draft_saved":"Draft Saved","pages.galleries.create.saving_to_draft":"Saving to draft","pages.galleries.create.drafts_limit_modal_title":"Draft Gallery Limit","pages.galleries.create.drafts_limit_modal_message":"You’ve hit your limit for draft galleries. While you can still make new galleries and publish them, they won’t be saved as drafts. To Free up space, you can either delete existing drafts or publish them.","pages.galleries.create.drafts_limit_modal_cancel":"Go to Drafts","pages.galleries.delete_modal.title":"Delete Gallery","pages.galleries.delete_modal.confirmation_text":"Are you sure you want to delete the gallery? Deleting a Gallery is permanent, all associated views and likes will be lost.","pages.galleries.consists_of_collections":"{0} This gallery consists of {{count}} collections|{1} This gallery consists of {{count}} collection|[2,*] This gallery consists of {{count}} collections","pages.galleries.guest_banner.title":"Craft the ultimate","pages.galleries.guest_banner.subtitle":"Pick your favorites, curate your gallery, & share it with the world.","pages.profile.title":"Profile","pages.token_panel.balance_tooltip":"Total percentage of the portfolio held in this token","pages.token_panel.insufficient_funds":"Insufficient Balance","pages.token_panel.error":"Dashbrd has failed to load token information. Please try again later.","pages.token_panel.failed_to_retrieve_transactions":"We were unable to fetch your transactions.","pages.token_panel.tabs.transaction_history":"Transaction History","pages.token_panel.tabs.history":"History","pages.token_panel.tabs.market_data":"Market Data","pages.token_panel.details.current_price":"Current Price","pages.token_panel.details.title":"Token Details","pages.token_panel.details.market_cap":"Market Cap","pages.token_panel.details.volume":"Daily Volume","pages.token_panel.details.supply":"Minted Supply","pages.token_panel.details.ath":"All-Time High","pages.token_panel.details.atl":"All-Time Low","pages.token_panel.chart.failed":"Dashbrd has failed to load chart information. Please try again later.","pages.transaction_details_panel.title":"Transaction Details","pages.transaction_details_panel.details.blockchain":"Blockchain","pages.transaction_details_panel.details.timestamp":"Timestamp","pages.transaction_details_panel.details.transaction_hash":"Transaction Hash","pages.transaction_details_panel.details.transaction_fee":"Transaction Fee","pages.transaction_details_panel.details.gas_price":"Gas Price","pages.transaction_details_panel.details.gas_used":"Gas Used","pages.transaction_details_panel.details.nonce":"Nonce","pages.send_receive_panel.send.labels.token_and_amount":"Token and Amount","pages.send_receive_panel.send.labels.destination_address":"Destination Address","pages.send_receive_panel.send.labels.projected_fee":"Projected Fee","pages.send_receive_panel.send.placeholders.enter_amount":"Enter Amount","pages.send_receive_panel.send.placeholders.insert_recipient_address":"Insert Recipient Address","pages.send_receive_panel.send.placeholders.projected_fee":"Projected Fee","pages.send_receive_panel.send.errors.amount":"Insufficient Funds: You do not have enough to cover the amount + fee.","pages.send_receive_panel.send.errors.destination":"Destination address is not correct. Check and input again.","pages.send_receive_panel.send.hints.token_price":"Token Price","pages.send_receive_panel.send.fees.Fast":"Fast","pages.send_receive_panel.send.fees.Avg":"Avg","pages.send_receive_panel.send.fees.Slow":"Slow","pages.send_receive_panel.send.search_dropdown.placeholder":"Search token","pages.send_receive_panel.send.search_dropdown.no_results":"No Results","pages.send_receive_panel.send.search_dropdown.error":"Error occurred while searching tokens.","pages.send_receive_panel.send.transaction_time":"Transaction Time: ~{{ time }} minutes","pages.send_receive_panel.send.from":"From","pages.send_receive_panel.send.to":"To","pages.send_receive_panel.send.amount":"Amount","pages.send_receive_panel.send.fee":"Fee","pages.send_receive_panel.send.total_amount":"Total Amount","pages.send_receive_panel.send.waiting_message":"Review and verify the information on your MetaMask. Sign to send the transaction.","pages.send_receive_panel.send.waiting_spinner_text":"Waiting for confirmation...","pages.send_receive_panel.send.failed_message":"It looks like something went wrong while sending your transaction. Press 'Retry' to make another attempt.","pages.send_receive_panel.receive.alert":"Send only Polygon or Ethereum Network compatible tokens to this address or you could permanently lose your funds!","pages.settings.title":"Settings","pages.settings.sidebar.general":"General","pages.settings.sidebar.notifications":"Notifications","pages.settings.sidebar.session_history":"Sessions History","pages.settings.general.title":"Settings","pages.settings.general.subtitle":"Customize your App Experience","pages.settings.general.currency":"Currency","pages.settings.general.currency_subtitle":"Select your default currency which will be used throughout the app.","pages.settings.general.time_date":"Time & Date","pages.settings.general.time_date_subtitle":"Select how you want time and date be shown inside app.","pages.settings.general.date_format":"Date Format","pages.settings.general.time_format":"Time Format","pages.settings.general.timezone":"Timezone","pages.settings.general.set_defaults":"Set Defaults","pages.settings.general.set_defaults_content":"Reverting to the default settings will remove any customizations previously made. Are you sure?","pages.settings.general.save":"Save Settings","pages.settings.general.saved":"Your settings have been successfully saved","pages.wallet.title":"Wallet","pages.privacy_policy.title":"Privacy Policy","pages.terms_of_service.title":"Terms of Service","pagination.previous":"« Previous","pagination.next":"Next »","passwords.reset":"Your password has been reset!","passwords.sent":"We have emailed your password reset link!","passwords.throttled":"Please wait before retrying.","passwords.token":"This password reset token is invalid.","passwords.user":"We can't find a user with that email address.","urls.landing":"https://dashbrd.com","urls.cookie_policy":"https://dashbrd.com/cookie-policy","urls.privacy_policy":"https://dashbrd.com/privacy-policy","urls.terms_of_service":"https://dashbrd.com/terms-of-service","urls.twitter":"https://x.com/DashbrdApp","urls.discord":"https://discord.gg/MJyWKkCJ5k","urls.github":"https://github.com/ArdentHQ/dashbrd","urls.coingecko":"https://www.coingecko.com","urls.etherscan":"https://etherscan.io","urls.polygonscan":"https://polygonscan.com","urls.alchemy":"https://www.alchemy.com","urls.moralis":"https://moralis.io","urls.mnemonic":"https://www.mnemonichq.com","urls.opensea":"https://opensea.io/","urls.explorers.etherscan.token_transactions":"https://etherscan.io/token/{{token}}?a={{address}}","urls.explorers.etherscan.addresses":"https://etherscan.io/address/{{address}}","urls.explorers.etherscan.transactions":"https://etherscan.io/tx/{{id}}","urls.explorers.etherscan.nft":"https://etherscan.io/nft/{{address}}/{{nftId}}","urls.explorers.polygonscan.token_transactions":"https://polygonscan.com/token/{{token}}?a={{address}}","urls.explorers.polygonscan.addresses":"https://polygonscan.com/address/{{address}}","urls.explorers.polygonscan.transactions":"https://polygonscan.com/tx/{{id}}","urls.explorers.polygonscan.nft":"https://polygonscan.com/nft/{{address}}/{{nftId}}","urls.explorers.mumbai.token_transactions":"https://mumbai.polygonscan.com/token/{{token}}?a={{address}}","urls.explorers.mumbai.addresses":"https://mumbai.polygonscan.com/address/{{address}}","urls.explorers.mumbai.transactions":"https://mumbai.polygonscan.com/tx/{{id}}","urls.explorers.mumbai.nft":"https://mumbai.polygonscan.com/nft/{{address}}/{{nftId}}","urls.explorers.goerli.token_transactions":"https://goerli.etherscan.io/token/{{token}}?a={{address}}","urls.explorers.goerli.addresses":"https://goerli.etherscan.io/address/{{address}}","urls.explorers.goerli.transactions":"https://goerli.etherscan.io/tx/{{id}}","urls.explorers.goerli.nft":"https://goerli.etherscan.io/nft/{{address}}/{{nftId}}","urls.marketplaces.opensea.collection":"https://opensea.io/assets/{{network}}/{{address}}","urls.marketplaces.opensea.nft":"https://opensea.io/assets/{{network}}/{{address}}/{{nftId}}","urls.marketplaces.rarible.collection":"https://rarible.com/collection/{{address}}/items","urls.marketplaces.rarible.nft":"https://rarible.com/token/{{address}}:{{nftId}}","urls.marketplaces.blur.collection":"https://blur.io/collection/{{address}}","urls.marketplaces.blur.nft":"https://blur.io/asset/{{address}}/{{nftId}}","urls.marketplaces.looksrare.collection":"https://looksrare.org/collections/{{address}}","urls.marketplaces.looksrare.nft":"https://looksrare.org/collections/{{address}}/{{nftId}}","validation.accepted":"The {{attribute}} must be accepted.","validation.accepted_if":"The {{attribute}} must be accepted when {{other}} is {{value}}.","validation.active_url":"The {{attribute}} is not a valid URL.","validation.after":"The {{attribute}} must be a date after {{date}}.","validation.after_or_equal":"The {{attribute}} must be a date after or equal to {{date}}.","validation.alpha":"The {{attribute}} must only contain letters.","validation.alpha_dash":"The {{attribute}} must only contain letters, numbers, dashes and underscores.","validation.alpha_num":"The {{attribute}} must only contain letters and numbers.","validation.array":"The {{attribute}} must be an array.","validation.ascii":"The {{attribute}} must only contain single-byte alphanumeric characters and symbols.","validation.before":"The {{attribute}} must be a date before {{date}}.","validation.before_or_equal":"The {{attribute}} must be a date before or equal to {{date}}.","validation.between.array":"The {{attribute}} must have between {{min}} and {{max}} items.","validation.between.file":"The {{attribute}} must be between {{min}} and {{max}} kilobytes.","validation.between.numeric":"The {{attribute}} must be between {{min}} and {{max}}.","validation.between.string":"The {{attribute}} must be between {{min}} and {{max}} characters.","validation.boolean":"The {{attribute}} field must be true or false.","validation.confirmed":"The {{attribute}} confirmation does not match.","validation.current_password":"The password is incorrect.","validation.date":"The {{attribute}} is not a valid date.","validation.date_equals":"The {{attribute}} must be a date equal to {{date}}.","validation.date_format":"The {{attribute}} does not match the format {{format}}.","validation.decimal":"The {{attribute}} must have {{decimal}} decimal places.","validation.declined":"The {{attribute}} must be declined.","validation.declined_if":"The {{attribute}} must be declined when {{other}} is {{value}}.","validation.different":"The {{attribute}} and {{other}} must be different.","validation.digits":"The {{attribute}} must be {{digits}} digits.","validation.digits_between":"The {{attribute}} must be between {{min}} and {{max}} digits.","validation.dimensions":"The {{attribute}} has invalid image dimensions.","validation.distinct":"The {{attribute}} field has a duplicate value.","validation.doesnt_end_with":"The {{attribute}} may not end with one of the following: {{values}}.","validation.doesnt_start_with":"The {{attribute}} may not start with one of the following: {{values}}.","validation.email":"The {{attribute}} must be a valid email address.","validation.ends_with":"The {{attribute}} must end with one of the following: {{values}}.","validation.enum":"The selected {{attribute}} is invalid.","validation.exists":"The selected {{attribute}} is invalid.","validation.file":"The {{attribute}} must be a file.","validation.filled":"The {{attribute}} field must have a value.","validation.gt.array":"The {{attribute}} must have more than {{value}} items.","validation.gt.file":"The {{attribute}} must be greater than {{value}} kilobytes.","validation.gt.numeric":"The {{attribute}} must be greater than {{value}}.","validation.gt.string":"The {{attribute}} must be greater than {{value}} characters.","validation.gte.array":"The {{attribute}} must have {{value}} items or more.","validation.gte.file":"The {{attribute}} must be greater than or equal to {{value}} kilobytes.","validation.gte.numeric":"The {{attribute}} must be greater than or equal to {{value}}.","validation.gte.string":"The {{attribute}} must be greater than or equal to {{value}} characters.","validation.image":"The {{attribute}} must be an image.","validation.in":"The selected {{attribute}} is invalid.","validation.in_array":"The {{attribute}} field does not exist in {{other}}.","validation.integer":"The {{attribute}} must be an integer.","validation.ip":"The {{attribute}} must be a valid IP address.","validation.ipv4":"The {{attribute}} must be a valid IPv4 address.","validation.ipv6":"The {{attribute}} must be a valid IPv6 address.","validation.json":"The {{attribute}} must be a valid JSON string.","validation.lowercase":"The {{attribute}} must be lowercase.","validation.lt.array":"The {{attribute}} must have less than {{value}} items.","validation.lt.file":"The {{attribute}} must be less than {{value}} kilobytes.","validation.lt.numeric":"The {{attribute}} must be less than {{value}}.","validation.lt.string":"The {{attribute}} must be less than {{value}} characters.","validation.lte.array":"The {{attribute}} must not have more than {{value}} items.","validation.lte.file":"The {{attribute}} must be less than or equal to {{value}} kilobytes.","validation.lte.numeric":"The {{attribute}} must be less than or equal to {{value}}.","validation.lte.string":"The {{attribute}} must be less than or equal to {{value}} characters.","validation.mac_address":"The {{attribute}} must be a valid MAC address.","validation.max.array":"The {{attribute}} must not have more than {{max}} items.","validation.max.file":"The {{attribute}} must not be greater than {{max}} kilobytes.","validation.max.numeric":"The {{attribute}} must not be greater than {{max}}.","validation.max.string":"The {{attribute}} must not be greater than {{max}} characters.","validation.max_digits":"The {{attribute}} must not have more than {{max}} digits.","validation.mimes":"The {{attribute}} must be a file of type: {{values}}.","validation.mimetypes":"The {{attribute}} must be a file of type: {{values}}.","validation.min.array":"The {{attribute}} must have at least {{min}} items.","validation.min.file":"The {{attribute}} must be at least {{min}} kilobytes.","validation.min.numeric":"The {{attribute}} must be at least {{min}}.","validation.min.string":"The {{attribute}} must be at least {{min}} characters.","validation.min_digits":"The {{attribute}} must have at least {{min}} digits.","validation.missing":"The {{attribute}} field must be missing.","validation.missing_if":"The {{attribute}} field must be missing when {{other}} is {{value}}.","validation.missing_unless":"The {{attribute}} field must be missing unless {{other}} is {{value}}.","validation.missing_with":"The {{attribute}} field must be missing when {{values}} is present.","validation.missing_with_all":"The {{attribute}} field must be missing when {{values}} are present.","validation.multiple_of":"The {{attribute}} must be a multiple of {{value}}.","validation.not_in":"The selected {{attribute}} is invalid.","validation.not_regex":"The {{attribute}} format is invalid.","validation.numeric":"The {{attribute}} must be a number.","validation.password.letters":"The {{attribute}} must contain at least one letter.","validation.password.mixed":"The {{attribute}} must contain at least one uppercase and one lowercase letter.","validation.password.numbers":"The {{attribute}} must contain at least one number.","validation.password.symbols":"The {{attribute}} must contain at least one symbol.","validation.password.uncompromised":"The given {{attribute}} has appeared in a data leak. Please choose a different {{attribute}}.","validation.present":"The {{attribute}} field must be present.","validation.prohibited":"The {{attribute}} field is prohibited.","validation.prohibited_if":"The {{attribute}} field is prohibited when {{other}} is {{value}}.","validation.prohibited_unless":"The {{attribute}} field is prohibited unless {{other}} is in {{values}}.","validation.prohibits":"The {{attribute}} field prohibits {{other}} from being present.","validation.regex":"The {{attribute}} format is invalid.","validation.required":"The {{attribute}} field is required.","validation.required_array_keys":"The {{attribute}} field must contain entries for: {{values}}.","validation.required_if":"The {{attribute}} field is required when {{other}} is {{value}}.","validation.required_if_accepted":"The {{attribute}} field is required when {{other}} is accepted.","validation.required_unless":"The {{attribute}} field is required unless {{other}} is in {{values}}.","validation.required_with":"The {{attribute}} field is required when {{values}} is present.","validation.required_with_all":"The {{attribute}} field is required when {{values}} are present.","validation.required_without":"The {{attribute}} field is required when {{values}} is not present.","validation.required_without_all":"The {{attribute}} field is required when none of {{values}} are present.","validation.same":"The {{attribute}} and {{other}} must match.","validation.size.array":"The {{attribute}} must contain {{size}} items.","validation.size.file":"The {{attribute}} must be {{size}} kilobytes.","validation.size.numeric":"The {{attribute}} must be {{size}}.","validation.size.string":"The {{attribute}} must be {{size}} characters.","validation.starts_with":"The {{attribute}} must start with one of the following: {{values}}.","validation.string":"The {{attribute}} must be a string.","validation.timezone":"The {{attribute}} must be a valid timezone.","validation.unique":"The {{attribute}} has already been taken.","validation.uploaded":"The {{attribute}} failed to upload.","validation.uppercase":"The {{attribute}} must be uppercase.","validation.url":"The {{attribute}} must be a valid URL.","validation.ulid":"The {{attribute}} must be a valid ULID.","validation.uuid":"The {{attribute}} must be a valid UUID.","validation.custom.attribute-name.rule-name":"custom-message","validation.unsupported_currency_code":"The currency code you provided is invalid or not supported.","validation.unsupported_period":"The period you provided is invalid or not supported.","validation.unsupported_token_symbol":"The token symbol you provided is invalid or not supported.","validation.gallery_title_required":"Gallery name is required.","validation.gallery_title_max_characters":"The gallery name should not exceed 50 characters.","validation.gallery_title_invalid":"The gallery name is invalid.","validation.nfts_required":"Please add at least one NFT.","validation.nfts_max_size":"Galleries can contain no more than {{limit}} NFTs","validation.invalid_nfts":"The NFT in position {{position}} is invalid, please select another one.","validation.invalid_cover":"You have selected an invalid cover image, please try another one."} \ No newline at end of file diff --git a/resources/js/Pages/Collections/Components/CollectionsVoteReceivedModal/CollectionsVoteReceivedModal.tsx b/resources/js/Pages/Collections/Components/CollectionsVoteReceivedModal/CollectionsVoteReceivedModal.tsx new file mode 100644 index 000000000..22dc5a232 --- /dev/null +++ b/resources/js/Pages/Collections/Components/CollectionsVoteReceivedModal/CollectionsVoteReceivedModal.tsx @@ -0,0 +1,76 @@ +import { useTranslation } from "react-i18next"; +import { ButtonLink } from "@/Components/Buttons/ButtonLink"; +import { Dialog } from "@/Components/Dialog"; +import { isTruthy } from "@/Utils/is-truthy"; +import { toTwitterHashtag } from "@/Utils/to-twitter-hashtag"; + +// @TODO: use a real collection +export interface TemporalVotableCollection { + name: string; + twitterUsername: string | null; +} + +export const CollectionsVoteReceivedModal = ({ + onClose, + collection, +}: { + onClose: () => void; + collection?: TemporalVotableCollection; +}): JSX.Element => { + const { t } = useTranslation(); + + const twitterUrl = (): string => { + if (!isTruthy(collection)) { + return ""; + } + + const url = new URL("https://twitter.com/intent/tweet"); + + const collectionName = + collection.twitterUsername !== null ? `@${collection.twitterUsername}` : toTwitterHashtag(collection.name); + + url.searchParams.set( + "text", + t("pages.collections.collection_of_the_month.vote_received_modal.x_text", { collection: collectionName }), + ); + + url.searchParams.set("url", `${route("collections")}#votes`); + + return url.toString(); + }; + + return ( +

    + + {t("pages.collections.collection_of_the_month.vote_received_modal.share_vote")} + +
    + } + > +

    + {t("pages.collections.collection_of_the_month.vote_received_modal.description")} +

    +
    + {t("pages.collections.collection_of_the_month.vote_received_modal.img_alt")} +
    + + ); +}; diff --git a/resources/js/Pages/Collections/Components/CollectionsVoteReceivedModal/index.tsx b/resources/js/Pages/Collections/Components/CollectionsVoteReceivedModal/index.tsx new file mode 100644 index 000000000..1eaaa6957 --- /dev/null +++ b/resources/js/Pages/Collections/Components/CollectionsVoteReceivedModal/index.tsx @@ -0,0 +1 @@ +export * from "./CollectionsVoteReceivedModal"; diff --git a/resources/js/Pages/Collections/Index.tsx b/resources/js/Pages/Collections/Index.tsx index 0398ce440..8da00a337 100644 --- a/resources/js/Pages/Collections/Index.tsx +++ b/resources/js/Pages/Collections/Index.tsx @@ -5,9 +5,14 @@ import { useEffect, useState } from "react"; import { useTranslation } from "react-i18next"; import { CollectionsArticles } from "./Components/CollectionsArticles"; import { CollectionsCallToAction } from "./Components/CollectionsCallToAction"; +import { + CollectionsVoteReceivedModal, + type TemporalVotableCollection, +} from "./Components/CollectionsVoteReceivedModal"; import { FeaturedCollectionsCarousel } from "./Components/FeaturedCollections"; import { PopularCollectionsFilterPopover } from "./Components/PopularCollectionsFilterPopover"; import { type PopularCollectionsSortBy, PopularCollectionsSorting } from "./Components/PopularCollectionsSorting"; +import { Button } from "@/Components/Buttons"; import { ButtonLink } from "@/Components/Buttons/ButtonLink"; import { CollectionOfTheMonthWinners } from "@/Components/Collections/CollectionOfTheMonthWinners"; import { PopularCollectionsTable } from "@/Components/Collections/PopularCollectionsTable"; @@ -67,6 +72,8 @@ const CollectionsIndex = ({ const [currentFilters, setCurrentFilters] = useState(filters); + const [votedCollection, setVotedCollection] = useState(); + const isFirstRender = useIsFirstRender(); useEffect(() => { @@ -157,7 +164,10 @@ const CollectionsIndex = ({ -
    +
    + + {/* @TODO: remove this */} +
    + + + +
    + + { + setVotedCollection(undefined); + }} + /> ); }; diff --git a/resources/js/Utils/to-twitter-hashtag.test.ts b/resources/js/Utils/to-twitter-hashtag.test.ts new file mode 100644 index 000000000..d8f285de4 --- /dev/null +++ b/resources/js/Utils/to-twitter-hashtag.test.ts @@ -0,0 +1,17 @@ +import { toTwitterHashtag } from "./to-twitter-hashtag"; + +describe("toTwitterHashtag", () => { + it.each(["", null, undefined])("returns empty string for %s", (value) => { + expect(toTwitterHashtag(value)).toEqual(""); + }); + + it.each([ + ["Los 3 Mosqueteros", "#los3mosqueteros"], + ["Moonbirds", "#moonbirds"], + ["CrypToadz by GREMPLIN", "#cryptoadzbygremplin"], + ["tyny dinos", "#tynydinos"], + ["@*.", ""], + ])("returns %s for %s", (value, expected) => { + expect(toTwitterHashtag(value)).toEqual(expected); + }); +}); diff --git a/resources/js/Utils/to-twitter-hashtag.ts b/resources/js/Utils/to-twitter-hashtag.ts new file mode 100644 index 000000000..4ecc8606e --- /dev/null +++ b/resources/js/Utils/to-twitter-hashtag.ts @@ -0,0 +1,13 @@ +export const toTwitterHashtag = (value: string | undefined | null): string => { + if (value === undefined || value === null || value === "") { + return ""; + } + + const result = value.toLowerCase().replace(/[^a-zA-Z0-9]/g, ""); + + if (result === "") { + return ""; + } + + return `#${result}`; +}; From 0a575fbed643cb9d1f9f3d495bf35475cc48c486 Mon Sep 17 00:00:00 2001 From: shahin-hq <132887516+shahin-hq@users.noreply.github.com> Date: Fri, 8 Dec 2023 12:05:34 +0400 Subject: [PATCH 032/145] feat: handle previous winner collection in the nominate modal (#544) --- lang/en/pages.php | 1 + resources/css/_tables.css | 14 ++- .../CollectionName/NominateCollectionName.tsx | 11 +- resources/js/I18n/Locales/en.json | 2 +- .../CollectionVoting/NomineeCollection.tsx | 113 ++++++++++-------- 5 files changed, 88 insertions(+), 53 deletions(-) diff --git a/lang/en/pages.php b/lang/en/pages.php index e21decc82..e0939fa6e 100644 --- a/lang/en/pages.php +++ b/lang/en/pages.php @@ -88,6 +88,7 @@ 'x_text' => 'I voted for :collection for collection of the month @dashbrdapp! Go show your support!', ], 'vote_success' => 'Your vote has been successfully submitted', + 'has_won_already' => 'This collection has already
    won Collection of the Month.', ], 'articles' => [ 'heading' => 'Latest NFT News & Features', diff --git a/resources/css/_tables.css b/resources/css/_tables.css index edd6527fa..30f6c1001 100644 --- a/resources/css/_tables.css +++ b/resources/css/_tables.css @@ -67,10 +67,10 @@ .table-list tbody tr::after { content: ""; - @apply transition-default pointer-events-none absolute inset-0 -mx-3 rounded-xl outline outline-3 outline-transparent dark:hover:outline-theme-dark-500; + @apply transition-default pointer-events-none absolute inset-0 -mx-3 rounded-xl outline outline-3 outline-transparent; } -.table-list tbody tr:hover::after { +.table-list tbody tr:not(.disabled-row):hover::after { content: ""; @apply outline-theme-primary-100 dark:outline-theme-dark-500; } @@ -119,3 +119,13 @@ .table-list tbody tr.selected-candidate td.custom-table-cell:after { @apply border-y-2; } + +.table-list tbody tr.disabled-row td:first-child::before, +.table-list tbody tr.disabled-row td:last-child::before { + @apply bg-theme-secondary-50 dark:bg-theme-dark-800; +} + +.table-list tbody tr.disabled-row td.custom-table-cell div, +.table-list tbody tr.disabled-row td.custom-table-cell p { + @apply text-theme-secondary-500 dark:text-theme-dark-400; +} diff --git a/resources/js/Components/Collections/CollectionName/NominateCollectionName.tsx b/resources/js/Components/Collections/CollectionName/NominateCollectionName.tsx index ad1c476f0..d4e88b699 100644 --- a/resources/js/Components/Collections/CollectionName/NominateCollectionName.tsx +++ b/resources/js/Components/Collections/CollectionName/NominateCollectionName.tsx @@ -1,3 +1,4 @@ +import cn from "classnames"; import { useRef } from "react"; import { Img } from "@/Components/Image"; import { Tooltip } from "@/Components/Tooltip"; @@ -5,7 +6,13 @@ import { useIsTruncated } from "@/Hooks/useIsTruncated"; import { type VoteCollectionProperties } from "@/Pages/Collections/Components/CollectionVoting"; import { FormatCrypto } from "@/Utils/Currency"; -export const NominateCollectionName = ({ collection }: { collection: VoteCollectionProperties }): JSX.Element => { +export const NominateCollectionName = ({ + collection, + isDisabled, +}: { + collection: VoteCollectionProperties; + isDisabled?: boolean; +}): JSX.Element => { const collectionNameReference = useRef(null); const isTruncated = useIsTruncated({ reference: collectionNameReference }); @@ -18,7 +25,7 @@ export const NominateCollectionName = ({ collection }: { collection: VoteCollect
    diff --git a/resources/js/I18n/Locales/en.json b/resources/js/I18n/Locales/en.json index 6e2dadd98..157b708bd 100644 --- a/resources/js/I18n/Locales/en.json +++ b/resources/js/I18n/Locales/en.json @@ -1 +1 @@ -{"auth.welcome":"Welcome to Dashbrd","auth.logged_in":"You're logged in!","auth.log_out":"Log out","auth.failed":"These credentials do not match our records.","auth.session_timeout":"Your session has timed out. Please refresh the page and try connecting your account again.","auth.session_timeout_modal":"Seems like your session has timed out. Please connnect your wallet again.","auth.password":"The provided password is incorrect.","auth.throttle":"Too many login attempts. Please try again in {{seconds}} seconds.","auth.wallet.connecting":"Connecting …","auth.wallet.waiting_for_signature":"Waiting for Signature …","auth.wallet.switching_wallet":"Switching Wallet …","auth.wallet.connect":"Connect Wallet","auth.wallet.connect_long":"Connect Your Wallet to Get Started","auth.wallet.sign_subtitle":"Connect Your Wallet to Continue","auth.wallet.disconnect":"Disconnect Wallet","auth.wallet.install":"Install MetaMask","auth.wallet.install_long":"Install MetaMask to Get Started","auth.wallet.sign":"Sign Message","auth.wallet.sign_message":"Welcome to Dashbrd. In order to login, sign this message with your wallet. It doesn't cost you anything!\n\nSigning ID (you can ignore this): {{nonce}}","auth.wallet.connect_subtitle":"Click on the MetaMask icon in your browser to confirm the action and connect your wallet.","auth.wallet.requires_signature":"In order to prevent impersonation, we require a signature to perform this action. This signature is only a signed message and does not give any access to your wallet.","auth.errors.metamask.no_account":"No account found. Please connect your wallet and try again.","auth.errors.metamask.generic":"Connection attempt error. Please retry and follow the steps to connect your wallet.","auth.errors.metamask.invalid_network":"Please switch to Polygon or Ethereum Mainnet in your MetaMask plugin to connect to Dashbrd.","auth.errors.metamask.provider_missing":"You don't have MetaMask installed in your browser. Please install and try again.","auth.errors.metamask.user_rejected":"It looks like you cancelled signing of the authentication message. Please try again.","auth.errors.metamask.provider_not_set":"Ethereum provider is not set","auth.validation.wallet_login_failed":"There was a problem trying to verify your signature. Please try again.","auth.validation.invalid_address":"Your wallet address is invalid. Please try again.","auth.validation.invalid_signature":"Signature is invalid. Please try again.","auth.validation.invalid_network":"Please switch to Polygon or Ethereum Mainnet in your MetaMask plugin to connect to Dashbrd.","common.author":"Author","common.add":"Add","common.amount":"Amount","common.balance":"Balance","common.cancel":"Cancel","common.delete":"Delete","common.edit":"Edit","common.confirm":"Confirm","common.connect":"Connect","common.continue":"Continue","common.done":"Done","common.filter":"Filter","common.items":"Items","common.receive":"Receive","common.received":"Received","common.retry":"Retry","common.records":"Records","common.save":"Save","common.send":"Send","common.sent":"Sent","common.show":"Show","common.searching":"Searching...","common.other":"Other","common.owned":"Owned","common.token":"Token","common.tokens":"Tokens","common.wallet":"Wallet","common.pending":"Pending","common.publish":"Publish","common.published":"Published","common.empty":"Empty","common.your_address":"Your Address","common.warning":"Warning","common.my_address":"My Address","common.my_wallet":"My Wallet","common.my_collections":"My Collections","common.my_balance":"My Balance","common.na":"N/A","common.simple_plural_without_data":"One comment|Many comments","common.simple_plural_with_data":"{{count}} comment|{{count}} comments","common.advanced_plural_without_data":"{0} no comments yet|{1} 1 comment|[2,*] Many comments","common.advanced_plural_with_data":"{0} no comments yet|{1} 1 comment|[2,*] {{count}} comments","common.copy_clipboard":"Copy to Clipboard","common.copy":"Copy","common.download":"Download","common.zoom":"Zoom","common.my_collection":"My Collection","common.max":"Max","common.chain":"Chain","common.copied":"Copied!","common.coming_soon":"Coming Soon","common.more_details":"More Details","common.close":"Close","common.close_toast":"Close toast","common.loading":"Loading","common.price":"Price","common.articles":"Articles","common.most_popular":"Most Popular","common.market_cap":"Market Cap","common.volume":"Volume","common.volume_frequency":"Volume {{frequency}}","common.value":"Value","common.last_n_days":"Last {{count}} Days","common.details":"Details","common.view_all":"View All","common.view_more_on_polygonscan":"View More on Polygonscan","common.view_more_on_etherscan":"View More on Etherscan","common.view_nft_on_etherscan":"View NFT on Etherscan","common.view_nft_on_polygonscan":"View NFT on Polygonscan","common.view_nft_on_goerli_tesnet":"View NFT on Goerli Testnet Explorer","common.view_nft_on_mumbai_tesnet":"View NFT on Mumbai Testnet Explorer","common.polygonscan":"Polygonscan","common.etherscan":"Etherscan","common.featured":"Featured","common.floor_price":"Floor Price","common.floor":"Floor","common.supply":"Supply","common.owners":"Owners","common.created":"Created","common.nft":"NFT","common.collection":"Collection","common.collections":"Collections","common.gallery":"Gallery","common.basic_gallery":"Basic Gallery","common.gallery_name":"Gallery Name","common.create_gallery":"Create Gallery","common.external_link":"External Link","common.follow_link":"Follow Link","common.cover":"Cover","common.template":"Template","common.page":"Page","common.polygon":"Polygon","common.ethereum":"Ethereum","common.mumbai":"Mumbai","common.goerli":"Goerli","common.of":"of","common.pagination_input_placeholder":"Enter the page number","common.pagination_input_placeholder_mobile":"Page number","common.nft_count":"{0} {{count}} NFTs|{1} {{count}} NFT|[2,*] {{count}} NFTs","common.nft_gallery":"NFT Gallery","common.unable_to_retrieve_image":"Unable to retrieve your NFT image at this time","common.optional":"Optional","common.selected":"Selected","common.select":"Select","common.preview":"Preview","common.image_size_error":"Image size must not exceed 2MB","common.image_dimensions_error":"Image dimensions must exceed 287px x 190px","common.write_to_confirm":"Write {{word}} to confirm","common.n_hours":"{0} {{count}} hour|{1} {{count}} hour|[2,*] {{count}} hours","common.n_minutes":"{0} {{count}} minute|{1} {{count}} minute|[2,*] {{count}} minutes","common.report":"Report","common.nfts":"NFTs","common.n_nfts":"{0}NFTs|{1}NFT|[2,*]NFTs","common.n_collections":"{0}collections|{1}collection|[2,*]collections","common.back":"Back","common.back_to":"Back to","common.name":"Name","common.type":"Type","common.from":"From","common.to":"To","common.sale_price":"Sale Price","common.recent_activity":"Recent Activity","common.time":"Time","common.datetime.few_seconds_ago":"A few seconds ago","common.datetime.minutes_ago":"{0} Less than a minute ago|{1} A minute ago|[2,*] {{count}} minutes ago","common.datetime.hours_ago":"{0} Less than an hour ago|{1} An hour ago|[2,*] {{count}} hours ago","common.datetime.days_ago":"{0} Less than a day ago|{1} A day ago|[2,*] {{count}} days ago","common.datetime.weeks_ago":"{0} Less than a week ago|{1} A week ago|[2,*] {{count}} weeks ago","common.datetime.months_ago":"{0} Less than a month ago|{1} A month ago|[2,*] {{count}} months ago","common.datetime.years_ago":"{0} Less than a year ago|{1} A year ago|[2,*] {{count}} years ago","common.no_traits_found":"No traits found.","common.empty_transactions":"You don't have any transactions yet. Once transactions have been made, they will show up here.","common.error":"Error","common.refresh":"Refresh","common.refresh_metadata":"Refresh Metadata","common.refreshing_metadata":"Refreshing Metadata... Please check back later.","common.refreshing_activity":"Refreshing Activity... Please check back later.","common.pending_confirmation":"Pending Confirmation","common.confirmed_transaction":"Confirmed Transaction","common.transaction_error":"Transaction Error","common.transaction_error_description_first_part":"Your transaction encountered an error. View this transaction on","common.transaction_error_description_second_part":"for more details.","common.home":"Home","common.contact":"Contact","common.menu":"Menu","common.website":"Website","common.twitter":"Twitter","common.discord":"Discord","common.facebook":"Facebook","common.reddit":"Reddit","common.x":"X","common.sort":"Sort","common.drafts":"Drafts","common.draft":"Draft","common.delete_draft":"Delete Draft","common.share_on":"Share on {{platform}}","common.top":"Top","common.all_chains":"All chains","common.votes":"Votes","common.vote":"Vote","common.vol":"Vol","footer.copyright":"{{year}} © Dashbrd. All rights reserved.","footer.all_rights_reserved":"All rights reserved","footer.privacy_policy":"Privacy Policy","footer.terms_of_service":"Terms of Service","footer.powered_by":"Powered by","format.fiat":"{{ value, currency }}","format.number":"{{ value, number }}","metatags.home.title":"Dashbrd | Web3 Portfolio Management Made Simple","metatags.home.description":"Simplify your Web3 journey with Dashbrd. Manage your portfolio of tokens, NFTs, and other digital collectibles across the Ethereum and Polygon blockchains.","metatags.home.image":"/images/meta/home.png","metatags.error.title":"Error {{code}} | Dashbrd","metatags.wallet.title":"My Wallet | Dashbrd","metatags.galleries.title":"Top NFT Galleries | Dashbrd","metatags.galleries.image":"/images/meta/nft-galleries.png","metatags.galleries.description":"Explore user published NFT galleries to find custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.most_popular.title":"Most Popular Galleries | Dashbrd","metatags.galleries.most_popular.image":"/images/meta/most-popular-nft-galleries.png","metatags.galleries.most_popular.description":"Explore and discover Most Popular NFT Galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.newest.title":"Newest Galleries | Dashbrd","metatags.galleries.newest.image":"/images/meta/newest-nft-galleries.png","metatags.galleries.newest.description":"Explore and discover most recent NFT galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More","metatags.galleries.most_valuable.title":"Most Valuable Galleries | Dashbrd","metatags.galleries.most_valuable.image":"/images/meta/most-valuable-nft-galleries.png","metatags.galleries.most_valuable.description":"Explore and discover Most Valuable NFT Galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.view.title":"{{name}} | Dashbrd","metatags.galleries.view.description":"{{name}} | A Curated NFT Gallery at Dashbrd","metatags.galleries.view.image":"/images/meta/nft-gallery.png","metatags.my_galleries.title":"My Galleries | Dashbrd","metatags.my_galleries.title_draft":"My Draft Galleries | Dashbrd","metatags.my_galleries.create.title":"Create Gallery | Dashbrd","metatags.my_galleries.edit.title":"Edit {{name}} | Dashbrd","metatags.collections.title":"Collections | Dashbrd","metatags.collections.view.title":"{{name}} Collection | Dashbrd","metatags.collections.view.description":"Immerse yourself in the intricate details of {{name}} collection, featuring remarkable digital assets. Start your NFT journey today!","metatags.collections.view.image":"/images/meta/nft-collection.png","metatags.my-collections.title":"My Collections | Dashbrd","metatags.nfts.view.title":"{{nft}} NFT | Dashbrd","metatags.nfts.view.description":"Uncover the complete story of {{nft}} NFT from the {{collection}} collection, delving into its unique attributes and distinctive features.","metatags.nfts.view.image":"/images/meta/nft-details.png","metatags.settings.title":"Settings | Dashbrd","metatags.articles.title":"Articles | Dashbrd","metatags.articles.view.title":"{{title}} | Dashbrd","metatags.login.title":"Login | Dashbrd","metatags.privacy_policy.title":"Privacy Policy | Dashbrd","metatags.privacy_policy.description":"Dashbrd’s privacy policy outlines the information we collect and explains your choices surrounding how we use information about you.","metatags.terms_of_service.title":"Terms of Service | Dashbrd","metatags.terms_of_service.description":"These Terms of Service cover your use and access to services, products or websites of Dashbrd.","metatags.cookie_policy.title":"Cookie Policy | Dashbrd","metatags.cookie_policy.description":"Dashbrd uses cookies to make the website more user-friendly. Find out about the main types of cookies we use, and what we use them for.","metatags.welcome.title":"Welcome to Dashbrd | Web3 Simplified","pages.onboarding.title":"Get Started","pages.onboarding.heading":"Your monkeys were bored and ran off, we are trying to round them up.","pages.onboarding.message":"We are setting up your account. This process usually takes just a few minutes, but can take up to 15 minutes.","pages.error.heading":"Oops, something went wrong ...","pages.error.message":"Please try again or get in touch if the issue persists.","pages.maintenance.title":"Dashbrd is currently down for scheduled maintenance.","pages.maintenance.description":"We expect to be back soon. Thanks for your patience.","pages.dashboard.title":"My Wallet","pages.dashboard.breakdown.title":"Portfolio Breakdown","pages.dashboard.line_chart.data_error":"Could not load chart data","pages.articles.title":"Articles","pages.articles.featured_collections":"Featured Collections","pages.articles.placeholder_more_soon":"More Soon","pages.articles.no_articles":"No articles have been published yet. Please check back later!","pages.articles.header_title":"Explore our collection of","pages.articles.header_suffix_one":"published article","pages.articles.header_suffix_other":"published articles","pages.articles.audio_version":"Audio version","pages.articles.consists_of_collections":"{0} This article highlights {{count}} collections|{1} This article highlights {{count}} collection|[2,*] This article highlights {{count}} collections","pages.collections.title":"Collections","pages.collections.collections":"Collections","pages.collections.popular_collections":"Popular Collections","pages.collections.collection_value":"Collection Value","pages.collections.nfts_owned":"NFTs Owned","pages.collections.header_title":"You own <0>{{nftsCount}} {{nfts}} across <0>{{collectionsCount}} {{collections}}, worth about <0><1>{{worth}}","pages.collections.search_placeholder":"Search by Collection","pages.collections.properties":"Properties","pages.collections.collections_network":"Collections Network","pages.collections.property_search_placeholder":"Feature Search","pages.collections.floor_price":"Floor Price","pages.collections.value":"Value","pages.collections.rarity":"Rarity","pages.collections.report":"Report","pages.collections.hide_collection":"Hide Collection","pages.collections.unhide_collection":"Unhide Collection","pages.collections.no_collections":"You do not own any NFTs yet. Once you do they will be shown here.","pages.collections.all_collections_hidden":"You have hidden all your collections. Unhide and they will appear here.","pages.collections.about_collection":"About Collection","pages.collections.show_hidden":"Show Hidden","pages.collections.show_my_collection":"Show My Collection","pages.collections.owned":"Owned","pages.collections.activities.loading_activities":"We're fetching Activity for this NFT, please hang tight, this can take a while.","pages.collections.activities.loading_activities_collection":"We're fetching Activity for this collection, please hang tight, this can take a while.","pages.collections.activities.ignores_activities":"We don't support activity history for this collection yet.","pages.collections.activities.no_activity":"This collection does not have any activity yet.","pages.collections.activities.types.LABEL_MINT":"Mint","pages.collections.activities.types.LABEL_TRANSFER":"Transfer","pages.collections.activities.types.LABEL_SALE":"Sale","pages.collections.activities.types.LABEL_BURN":"Burn","pages.collections.collection_of_the_month.winners_month":"Winners: {{month}}","pages.collections.collection_of_the_month.vote_for_next_months_winners":"Vote now for next month's winners","pages.collections.collection_of_the_month.view_previous_winners":"View Previous Winners","pages.collections.collection_of_the_month.vote_received_modal.title":"Vote Received","pages.collections.collection_of_the_month.vote_received_modal.description":"Your vote has been recorded. Share your vote on X and let everyone know!","pages.collections.collection_of_the_month.vote_received_modal.share_vote":"Share Vote","pages.collections.collection_of_the_month.vote_received_modal.img_alt":"I voted for Dashbrd Project of the Month","pages.collections.collection_of_the_month.vote_received_modal.x_text":"I voted for {{collection}} for collection of the month @dashbrdapp! Go show your support!","pages.collections.collection_of_the_month.vote_success":"Your vote has been successfully submitted","pages.collections.articles.heading":"Latest NFT News & Features","pages.collections.articles.no_articles":"No articles have been linked to this collection as of now.","pages.collections.articles.no_articles_with_filters":"We could not find any articles matching your search criteria, please try again!","pages.collections.articles.search_placeholder":"Search in Articles","pages.collections.articles.sort_latest":"Latest","pages.collections.articles.sort_popularity":"Most Popular","pages.collections.search.loading_results":"Loading results...","pages.collections.search.no_results":"We could not find anything matching your search criteria, please try again!","pages.collections.search.no_results_with_filters":"We could not find anything matching your filters, please try again!","pages.collections.search.no_results_ownership":"You do not own any NFTs in this collection","pages.collections.search.error":"Could not load search results. Please try again later.","pages.collections.vote.vote_for_top_collection":"Vote for Top Collection of the Month","pages.collections.vote.vote":"Vote","pages.collections.vote.time_left":"Time Left","pages.collections.vote.or_nominate_collection":"Or nominate a collection","pages.collections.vote.nominate_collection":"Nominate a collection","pages.collections.vote.vote_to_reveal":"Vote to reveal data","pages.collections.vote.already_voted":"You’ve already nominated. Come back next month!","pages.collections.sorting.token_number":"Token Number","pages.collections.sorting.recently_received":"Recently Received","pages.collections.sorting.recently_created":"Recently Created","pages.collections.sorting.oldest_collection":"Oldest Collection","pages.collections.traits.description":"List of NFT traits by % of occurrence in the collection","pages.collections.traits.no_traits":"No Properties can be found for this NFT","pages.collections.menu.collection":"Collection","pages.collections.menu.articles":"Articles","pages.collections.menu.activity":"Activity","pages.collections.hidden_modal.collection_hidden":"Collection Hidden","pages.collections.hidden_modal.description":"This collection is currently set to Hidden. Are you sure you want to unhide this collection? You can\n reset the collection to hidden from the collection menu.","pages.collections.hidden_modal.unhide":"Unhide","pages.collections.hidden_modal.error":"Something went wrong. Please try again.","pages.collections.external_modal.you_wish_continue":"You are about to leave Dashbrd to an external website. Dashbrd has no control over the content of\n this site. Are you sure you wish to continue?","pages.collections.external_modal.not_show":"Do not show this message again.","pages.collections.refresh.title":"Refresh your collection","pages.collections.refresh.notice":"You can refresh data every 15 minutes.","pages.collections.refresh.notice_wait":"Please wait. You can refresh data every 15 minutes.","pages.collections.refresh.toast":"We're updating information for your collection.","pages.collections.featured.title":"Featured Collections","pages.collections.featured.button":"Explore Collection","pages.collections.footer.heading_broken.0":"Connect with MetaMask","pages.collections.footer.heading_broken.1":"& Manage Your Collection","pages.collections.footer.subtitle":"Explore, Filter, & Share your favorite NFTs with Dashbrd.","pages.collections.footer.button":"Manage Collections","pages.nfts.nft":"nft","pages.nfts.about_nft":"About NFT","pages.nfts.owned_by":"Owned by","pages.nfts.collection_image":"collection image","pages.nfts.menu.properties":"Properties","pages.nfts.menu.activity":"Activity","pages.reports.title":"Submit a Report","pages.reports.description":"Thanks for looking out by reporting things that break the rules. Let us know what's happening and we'll receive the report.","pages.reports.success":"Thank you for your report. We'll review it and see if it breaks our ToS.","pages.reports.failed":"Something went wrong. Please try again.","pages.reports.throttle":"You have made too many requests. Please wait {{time}} before reporting again.","pages.reports.reported":"You have already reported this {{model}}.","pages.reports.reasons.spam":"Spam","pages.reports.reasons.violence":"Promoting Violence","pages.reports.reasons.hate":"Hate","pages.reports.reasons.inappropriate_content":"Inappropriate Content","pages.reports.reasons.impersonation":"Impersonation","pages.reports.reasons.trademark":"Trademark or Copyright","pages.reports.reasons.selfharm":"Self-Harm","pages.reports.reasons.harassment":"Harassment","pages.galleries.title":"Galleries","pages.galleries.empty_title":"No galleries have been published yet. Once they do they will appear here.","pages.galleries.search.loading_results":"Loading results...","pages.galleries.search.no_results":"We could not find anything matching your search criteria, please try again!","pages.galleries.search.placeholder":"Search by name or curator address","pages.galleries.search.placeholder_nfts":"Search by NFTs","pages.galleries.search.error":"Could not load search results. Please try again later.","pages.galleries.my_galleries.title":"My Galleries","pages.galleries.my_galleries.subtitle":"Manage your galleries","pages.galleries.my_galleries.new_gallery":"New Gallery","pages.galleries.my_galleries.no_galleries":"You have not created any galleries yet. To create a gallery, click on the \"Create Gallery\" button.","pages.galleries.my_galleries.no_available_collections":"You have hidden all your collections. If you want to create a gallery, make sure you have at least 1 collection available.","pages.galleries.my_galleries.no_draft_galleries":"You have no draft galleries yet. To create a gallery, click on the \"Create Gallery\" button.","pages.galleries.my_galleries.succesfully_deleted":"Gallery has been successfully removed","pages.galleries.my_galleries.draft_succesfully_deleted":"Draft has been successfully removed","pages.galleries.my_galleries.successfully_created":"Gallery has been successfully created","pages.galleries.my_galleries.successfully_updated":"Gallery has been successfully updated","pages.galleries.my_galleries.new_gallery_no_nfts":"Creating a Gallery requires you to own an NFT.","pages.galleries.my_galleries.new_gallery_all_collections_hidden":"Creating a Gallery requires you to have at least 1 collection available.","pages.galleries.my_galleries.delete_modal.title":"Delete Draft","pages.galleries.my_galleries.delete_modal.text":"Are you sure you want to delete the draft? Everything you've done will be deleted and you won't be able to get it back.","pages.galleries.my_galleries.nfts_no_longer_owned":"NFTs no longer owned by this wallet have been removed from the draft”","pages.galleries.copy_gallery_link":"Copy Gallery Link","pages.galleries.my_nfts":"My NFTs","pages.galleries.show_hidden_collections":"Show hidden collections","pages.galleries.value":"Value","pages.galleries.floor_price":"Floor Price","pages.galleries.nfts":"NFTs","pages.galleries.collections":"Collections","pages.galleries.galleries_count_simple":"{0} galleries|{1} gallery|[2,*] galleries","pages.galleries.galleries_count":"{0} {{count}} Galleries|{1} {{count}} Gallery|[2,*] {{count}} Galleries","pages.galleries.collections_count_simple":"{0} collections|{1} collection|[2,*] collections","pages.galleries.collections_count":"{0} {{count}} Collections|{1} {{count}} Collection|[2,*] {{count}} Collections","pages.galleries.nfts_count_simple":"{0} NFTs|{1} NFT|[2,*] NFTs","pages.galleries.nfts_count":"{0} {{count}} NFTs|{1} {{count}} NFT|[2,*] {{count}} NFTs","pages.galleries.users_count_simple":"{0} users|{1} user|[2,*] users","pages.galleries.users_count":"{0} {{count}} Users|{1} {{count}} User|[2,*] {{count}} Users","pages.galleries.featuring":"Featuring","pages.galleries.curated_by":"Curated by","pages.galleries.worth_about":"Worth About","pages.galleries.valued_at":"valued at","pages.galleries.from":"From","pages.galleries.most_popular_galleries":"Most Popular Galleries","pages.galleries.newest_galleries":"Newest Galleries","pages.galleries.most_valuable_galleries":"Most Valuable Galleries","pages.galleries.most_popular":"Most Popular","pages.galleries.newest":"Newest","pages.galleries.most_valuable":"Most Valuable","pages.galleries.create.search_by_nfts":"Search by NFTs","pages.galleries.create.input_placeholder":"Enter gallery name","pages.galleries.create.title_too_long":"Gallery name must not exceed {{max}} characters.","pages.galleries.create.already_selected_nft":"NFT already exists in this gallery","pages.galleries.create.nft_missing_image":"Only NFTs with images can be added to galleries","pages.galleries.create.nft_gallery_limit":"You can only add 16 NFTs per gallery","pages.galleries.create.gallery_cover":"Gallery Cover","pages.galleries.create.gallery_cover_description":"The cover is used for the card on the gallery list page. While the cover is not a requirement it will allow you to add personality and stand out from the crowd.","pages.galleries.create.gallery_cover_information":"Image dimensions must be at least 287px x 190px, with a max size of 2 MB (JPG, PNG or GIF)","pages.galleries.create.no_results":"We could not find anything matching your search criteria, please try again!","pages.galleries.create.templates.cover":"Cover","pages.galleries.create.templates.template":"Template","pages.galleries.create.templates.select":"Select Gallery Template","pages.galleries.create.templates.basic":"Basic Gallery","pages.galleries.create.templates.coming_soon":"More Coming Soon","pages.galleries.create.load_more_collections_one":"Load {{count}} More Collection","pages.galleries.create.load_more_collections_other":"Load {{count}} More Collections","pages.galleries.create.load_more_nfts":"Load More NFTs","pages.galleries.create.can_purchase":"You can purchase NFTs with these top NFT Marketplaces:","pages.galleries.create.must_own_one_nft":"You must own at least one (1) NFT in order to create a gallery.","pages.galleries.create.back_to_galleries":"Back to Galleries","pages.galleries.create.draft_saved":"Draft Saved","pages.galleries.create.saving_to_draft":"Saving to draft","pages.galleries.create.drafts_limit_modal_title":"Draft Gallery Limit","pages.galleries.create.drafts_limit_modal_message":"You’ve hit your limit for draft galleries. While you can still make new galleries and publish them, they won’t be saved as drafts. To Free up space, you can either delete existing drafts or publish them.","pages.galleries.create.drafts_limit_modal_cancel":"Go to Drafts","pages.galleries.delete_modal.title":"Delete Gallery","pages.galleries.delete_modal.confirmation_text":"Are you sure you want to delete the gallery? Deleting a Gallery is permanent, all associated views and likes will be lost.","pages.galleries.consists_of_collections":"{0} This gallery consists of {{count}} collections|{1} This gallery consists of {{count}} collection|[2,*] This gallery consists of {{count}} collections","pages.galleries.guest_banner.title":"Craft the ultimate","pages.galleries.guest_banner.subtitle":"Pick your favorites, curate your gallery, & share it with the world.","pages.profile.title":"Profile","pages.token_panel.balance_tooltip":"Total percentage of the portfolio held in this token","pages.token_panel.insufficient_funds":"Insufficient Balance","pages.token_panel.error":"Dashbrd has failed to load token information. Please try again later.","pages.token_panel.failed_to_retrieve_transactions":"We were unable to fetch your transactions.","pages.token_panel.tabs.transaction_history":"Transaction History","pages.token_panel.tabs.history":"History","pages.token_panel.tabs.market_data":"Market Data","pages.token_panel.details.current_price":"Current Price","pages.token_panel.details.title":"Token Details","pages.token_panel.details.market_cap":"Market Cap","pages.token_panel.details.volume":"Daily Volume","pages.token_panel.details.supply":"Minted Supply","pages.token_panel.details.ath":"All-Time High","pages.token_panel.details.atl":"All-Time Low","pages.token_panel.chart.failed":"Dashbrd has failed to load chart information. Please try again later.","pages.transaction_details_panel.title":"Transaction Details","pages.transaction_details_panel.details.blockchain":"Blockchain","pages.transaction_details_panel.details.timestamp":"Timestamp","pages.transaction_details_panel.details.transaction_hash":"Transaction Hash","pages.transaction_details_panel.details.transaction_fee":"Transaction Fee","pages.transaction_details_panel.details.gas_price":"Gas Price","pages.transaction_details_panel.details.gas_used":"Gas Used","pages.transaction_details_panel.details.nonce":"Nonce","pages.send_receive_panel.send.labels.token_and_amount":"Token and Amount","pages.send_receive_panel.send.labels.destination_address":"Destination Address","pages.send_receive_panel.send.labels.projected_fee":"Projected Fee","pages.send_receive_panel.send.placeholders.enter_amount":"Enter Amount","pages.send_receive_panel.send.placeholders.insert_recipient_address":"Insert Recipient Address","pages.send_receive_panel.send.placeholders.projected_fee":"Projected Fee","pages.send_receive_panel.send.errors.amount":"Insufficient Funds: You do not have enough to cover the amount + fee.","pages.send_receive_panel.send.errors.destination":"Destination address is not correct. Check and input again.","pages.send_receive_panel.send.hints.token_price":"Token Price","pages.send_receive_panel.send.fees.Fast":"Fast","pages.send_receive_panel.send.fees.Avg":"Avg","pages.send_receive_panel.send.fees.Slow":"Slow","pages.send_receive_panel.send.search_dropdown.placeholder":"Search token","pages.send_receive_panel.send.search_dropdown.no_results":"No Results","pages.send_receive_panel.send.search_dropdown.error":"Error occurred while searching tokens.","pages.send_receive_panel.send.transaction_time":"Transaction Time: ~{{ time }} minutes","pages.send_receive_panel.send.from":"From","pages.send_receive_panel.send.to":"To","pages.send_receive_panel.send.amount":"Amount","pages.send_receive_panel.send.fee":"Fee","pages.send_receive_panel.send.total_amount":"Total Amount","pages.send_receive_panel.send.waiting_message":"Review and verify the information on your MetaMask. Sign to send the transaction.","pages.send_receive_panel.send.waiting_spinner_text":"Waiting for confirmation...","pages.send_receive_panel.send.failed_message":"It looks like something went wrong while sending your transaction. Press 'Retry' to make another attempt.","pages.send_receive_panel.receive.alert":"Send only Polygon or Ethereum Network compatible tokens to this address or you could permanently lose your funds!","pages.settings.title":"Settings","pages.settings.sidebar.general":"General","pages.settings.sidebar.notifications":"Notifications","pages.settings.sidebar.session_history":"Sessions History","pages.settings.general.title":"Settings","pages.settings.general.subtitle":"Customize your App Experience","pages.settings.general.currency":"Currency","pages.settings.general.currency_subtitle":"Select your default currency which will be used throughout the app.","pages.settings.general.time_date":"Time & Date","pages.settings.general.time_date_subtitle":"Select how you want time and date be shown inside app.","pages.settings.general.date_format":"Date Format","pages.settings.general.time_format":"Time Format","pages.settings.general.timezone":"Timezone","pages.settings.general.set_defaults":"Set Defaults","pages.settings.general.set_defaults_content":"Reverting to the default settings will remove any customizations previously made. Are you sure?","pages.settings.general.save":"Save Settings","pages.settings.general.saved":"Your settings have been successfully saved","pages.wallet.title":"Wallet","pages.privacy_policy.title":"Privacy Policy","pages.terms_of_service.title":"Terms of Service","pagination.previous":"« Previous","pagination.next":"Next »","passwords.reset":"Your password has been reset!","passwords.sent":"We have emailed your password reset link!","passwords.throttled":"Please wait before retrying.","passwords.token":"This password reset token is invalid.","passwords.user":"We can't find a user with that email address.","urls.landing":"https://dashbrd.com","urls.cookie_policy":"https://dashbrd.com/cookie-policy","urls.privacy_policy":"https://dashbrd.com/privacy-policy","urls.terms_of_service":"https://dashbrd.com/terms-of-service","urls.twitter":"https://x.com/DashbrdApp","urls.discord":"https://discord.gg/MJyWKkCJ5k","urls.github":"https://github.com/ArdentHQ/dashbrd","urls.coingecko":"https://www.coingecko.com","urls.etherscan":"https://etherscan.io","urls.polygonscan":"https://polygonscan.com","urls.alchemy":"https://www.alchemy.com","urls.moralis":"https://moralis.io","urls.mnemonic":"https://www.mnemonichq.com","urls.opensea":"https://opensea.io/","urls.explorers.etherscan.token_transactions":"https://etherscan.io/token/{{token}}?a={{address}}","urls.explorers.etherscan.addresses":"https://etherscan.io/address/{{address}}","urls.explorers.etherscan.transactions":"https://etherscan.io/tx/{{id}}","urls.explorers.etherscan.nft":"https://etherscan.io/nft/{{address}}/{{nftId}}","urls.explorers.polygonscan.token_transactions":"https://polygonscan.com/token/{{token}}?a={{address}}","urls.explorers.polygonscan.addresses":"https://polygonscan.com/address/{{address}}","urls.explorers.polygonscan.transactions":"https://polygonscan.com/tx/{{id}}","urls.explorers.polygonscan.nft":"https://polygonscan.com/nft/{{address}}/{{nftId}}","urls.explorers.mumbai.token_transactions":"https://mumbai.polygonscan.com/token/{{token}}?a={{address}}","urls.explorers.mumbai.addresses":"https://mumbai.polygonscan.com/address/{{address}}","urls.explorers.mumbai.transactions":"https://mumbai.polygonscan.com/tx/{{id}}","urls.explorers.mumbai.nft":"https://mumbai.polygonscan.com/nft/{{address}}/{{nftId}}","urls.explorers.goerli.token_transactions":"https://goerli.etherscan.io/token/{{token}}?a={{address}}","urls.explorers.goerli.addresses":"https://goerli.etherscan.io/address/{{address}}","urls.explorers.goerli.transactions":"https://goerli.etherscan.io/tx/{{id}}","urls.explorers.goerli.nft":"https://goerli.etherscan.io/nft/{{address}}/{{nftId}}","urls.marketplaces.opensea.collection":"https://opensea.io/assets/{{network}}/{{address}}","urls.marketplaces.opensea.nft":"https://opensea.io/assets/{{network}}/{{address}}/{{nftId}}","urls.marketplaces.rarible.collection":"https://rarible.com/collection/{{address}}/items","urls.marketplaces.rarible.nft":"https://rarible.com/token/{{address}}:{{nftId}}","urls.marketplaces.blur.collection":"https://blur.io/collection/{{address}}","urls.marketplaces.blur.nft":"https://blur.io/asset/{{address}}/{{nftId}}","urls.marketplaces.looksrare.collection":"https://looksrare.org/collections/{{address}}","urls.marketplaces.looksrare.nft":"https://looksrare.org/collections/{{address}}/{{nftId}}","validation.accepted":"The {{attribute}} must be accepted.","validation.accepted_if":"The {{attribute}} must be accepted when {{other}} is {{value}}.","validation.active_url":"The {{attribute}} is not a valid URL.","validation.after":"The {{attribute}} must be a date after {{date}}.","validation.after_or_equal":"The {{attribute}} must be a date after or equal to {{date}}.","validation.alpha":"The {{attribute}} must only contain letters.","validation.alpha_dash":"The {{attribute}} must only contain letters, numbers, dashes and underscores.","validation.alpha_num":"The {{attribute}} must only contain letters and numbers.","validation.array":"The {{attribute}} must be an array.","validation.ascii":"The {{attribute}} must only contain single-byte alphanumeric characters and symbols.","validation.before":"The {{attribute}} must be a date before {{date}}.","validation.before_or_equal":"The {{attribute}} must be a date before or equal to {{date}}.","validation.between.array":"The {{attribute}} must have between {{min}} and {{max}} items.","validation.between.file":"The {{attribute}} must be between {{min}} and {{max}} kilobytes.","validation.between.numeric":"The {{attribute}} must be between {{min}} and {{max}}.","validation.between.string":"The {{attribute}} must be between {{min}} and {{max}} characters.","validation.boolean":"The {{attribute}} field must be true or false.","validation.confirmed":"The {{attribute}} confirmation does not match.","validation.current_password":"The password is incorrect.","validation.date":"The {{attribute}} is not a valid date.","validation.date_equals":"The {{attribute}} must be a date equal to {{date}}.","validation.date_format":"The {{attribute}} does not match the format {{format}}.","validation.decimal":"The {{attribute}} must have {{decimal}} decimal places.","validation.declined":"The {{attribute}} must be declined.","validation.declined_if":"The {{attribute}} must be declined when {{other}} is {{value}}.","validation.different":"The {{attribute}} and {{other}} must be different.","validation.digits":"The {{attribute}} must be {{digits}} digits.","validation.digits_between":"The {{attribute}} must be between {{min}} and {{max}} digits.","validation.dimensions":"The {{attribute}} has invalid image dimensions.","validation.distinct":"The {{attribute}} field has a duplicate value.","validation.doesnt_end_with":"The {{attribute}} may not end with one of the following: {{values}}.","validation.doesnt_start_with":"The {{attribute}} may not start with one of the following: {{values}}.","validation.email":"The {{attribute}} must be a valid email address.","validation.ends_with":"The {{attribute}} must end with one of the following: {{values}}.","validation.enum":"The selected {{attribute}} is invalid.","validation.exists":"The selected {{attribute}} is invalid.","validation.file":"The {{attribute}} must be a file.","validation.filled":"The {{attribute}} field must have a value.","validation.gt.array":"The {{attribute}} must have more than {{value}} items.","validation.gt.file":"The {{attribute}} must be greater than {{value}} kilobytes.","validation.gt.numeric":"The {{attribute}} must be greater than {{value}}.","validation.gt.string":"The {{attribute}} must be greater than {{value}} characters.","validation.gte.array":"The {{attribute}} must have {{value}} items or more.","validation.gte.file":"The {{attribute}} must be greater than or equal to {{value}} kilobytes.","validation.gte.numeric":"The {{attribute}} must be greater than or equal to {{value}}.","validation.gte.string":"The {{attribute}} must be greater than or equal to {{value}} characters.","validation.image":"The {{attribute}} must be an image.","validation.in":"The selected {{attribute}} is invalid.","validation.in_array":"The {{attribute}} field does not exist in {{other}}.","validation.integer":"The {{attribute}} must be an integer.","validation.ip":"The {{attribute}} must be a valid IP address.","validation.ipv4":"The {{attribute}} must be a valid IPv4 address.","validation.ipv6":"The {{attribute}} must be a valid IPv6 address.","validation.json":"The {{attribute}} must be a valid JSON string.","validation.lowercase":"The {{attribute}} must be lowercase.","validation.lt.array":"The {{attribute}} must have less than {{value}} items.","validation.lt.file":"The {{attribute}} must be less than {{value}} kilobytes.","validation.lt.numeric":"The {{attribute}} must be less than {{value}}.","validation.lt.string":"The {{attribute}} must be less than {{value}} characters.","validation.lte.array":"The {{attribute}} must not have more than {{value}} items.","validation.lte.file":"The {{attribute}} must be less than or equal to {{value}} kilobytes.","validation.lte.numeric":"The {{attribute}} must be less than or equal to {{value}}.","validation.lte.string":"The {{attribute}} must be less than or equal to {{value}} characters.","validation.mac_address":"The {{attribute}} must be a valid MAC address.","validation.max.array":"The {{attribute}} must not have more than {{max}} items.","validation.max.file":"The {{attribute}} must not be greater than {{max}} kilobytes.","validation.max.numeric":"The {{attribute}} must not be greater than {{max}}.","validation.max.string":"The {{attribute}} must not be greater than {{max}} characters.","validation.max_digits":"The {{attribute}} must not have more than {{max}} digits.","validation.mimes":"The {{attribute}} must be a file of type: {{values}}.","validation.mimetypes":"The {{attribute}} must be a file of type: {{values}}.","validation.min.array":"The {{attribute}} must have at least {{min}} items.","validation.min.file":"The {{attribute}} must be at least {{min}} kilobytes.","validation.min.numeric":"The {{attribute}} must be at least {{min}}.","validation.min.string":"The {{attribute}} must be at least {{min}} characters.","validation.min_digits":"The {{attribute}} must have at least {{min}} digits.","validation.missing":"The {{attribute}} field must be missing.","validation.missing_if":"The {{attribute}} field must be missing when {{other}} is {{value}}.","validation.missing_unless":"The {{attribute}} field must be missing unless {{other}} is {{value}}.","validation.missing_with":"The {{attribute}} field must be missing when {{values}} is present.","validation.missing_with_all":"The {{attribute}} field must be missing when {{values}} are present.","validation.multiple_of":"The {{attribute}} must be a multiple of {{value}}.","validation.not_in":"The selected {{attribute}} is invalid.","validation.not_regex":"The {{attribute}} format is invalid.","validation.numeric":"The {{attribute}} must be a number.","validation.password.letters":"The {{attribute}} must contain at least one letter.","validation.password.mixed":"The {{attribute}} must contain at least one uppercase and one lowercase letter.","validation.password.numbers":"The {{attribute}} must contain at least one number.","validation.password.symbols":"The {{attribute}} must contain at least one symbol.","validation.password.uncompromised":"The given {{attribute}} has appeared in a data leak. Please choose a different {{attribute}}.","validation.present":"The {{attribute}} field must be present.","validation.prohibited":"The {{attribute}} field is prohibited.","validation.prohibited_if":"The {{attribute}} field is prohibited when {{other}} is {{value}}.","validation.prohibited_unless":"The {{attribute}} field is prohibited unless {{other}} is in {{values}}.","validation.prohibits":"The {{attribute}} field prohibits {{other}} from being present.","validation.regex":"The {{attribute}} format is invalid.","validation.required":"The {{attribute}} field is required.","validation.required_array_keys":"The {{attribute}} field must contain entries for: {{values}}.","validation.required_if":"The {{attribute}} field is required when {{other}} is {{value}}.","validation.required_if_accepted":"The {{attribute}} field is required when {{other}} is accepted.","validation.required_unless":"The {{attribute}} field is required unless {{other}} is in {{values}}.","validation.required_with":"The {{attribute}} field is required when {{values}} is present.","validation.required_with_all":"The {{attribute}} field is required when {{values}} are present.","validation.required_without":"The {{attribute}} field is required when {{values}} is not present.","validation.required_without_all":"The {{attribute}} field is required when none of {{values}} are present.","validation.same":"The {{attribute}} and {{other}} must match.","validation.size.array":"The {{attribute}} must contain {{size}} items.","validation.size.file":"The {{attribute}} must be {{size}} kilobytes.","validation.size.numeric":"The {{attribute}} must be {{size}}.","validation.size.string":"The {{attribute}} must be {{size}} characters.","validation.starts_with":"The {{attribute}} must start with one of the following: {{values}}.","validation.string":"The {{attribute}} must be a string.","validation.timezone":"The {{attribute}} must be a valid timezone.","validation.unique":"The {{attribute}} has already been taken.","validation.uploaded":"The {{attribute}} failed to upload.","validation.uppercase":"The {{attribute}} must be uppercase.","validation.url":"The {{attribute}} must be a valid URL.","validation.ulid":"The {{attribute}} must be a valid ULID.","validation.uuid":"The {{attribute}} must be a valid UUID.","validation.custom.attribute-name.rule-name":"custom-message","validation.unsupported_currency_code":"The currency code you provided is invalid or not supported.","validation.unsupported_period":"The period you provided is invalid or not supported.","validation.unsupported_token_symbol":"The token symbol you provided is invalid or not supported.","validation.gallery_title_required":"Gallery name is required.","validation.gallery_title_max_characters":"The gallery name should not exceed 50 characters.","validation.gallery_title_invalid":"The gallery name is invalid.","validation.nfts_required":"Please add at least one NFT.","validation.nfts_max_size":"Galleries can contain no more than {{limit}} NFTs","validation.invalid_nfts":"The NFT in position {{position}} is invalid, please select another one.","validation.invalid_cover":"You have selected an invalid cover image, please try another one."} \ No newline at end of file +{"auth.welcome":"Welcome to Dashbrd","auth.logged_in":"You're logged in!","auth.log_out":"Log out","auth.failed":"These credentials do not match our records.","auth.session_timeout":"Your session has timed out. Please refresh the page and try connecting your account again.","auth.session_timeout_modal":"Seems like your session has timed out. Please connnect your wallet again.","auth.password":"The provided password is incorrect.","auth.throttle":"Too many login attempts. Please try again in {{seconds}} seconds.","auth.wallet.connecting":"Connecting …","auth.wallet.waiting_for_signature":"Waiting for Signature …","auth.wallet.switching_wallet":"Switching Wallet …","auth.wallet.connect":"Connect Wallet","auth.wallet.connect_long":"Connect Your Wallet to Get Started","auth.wallet.sign_subtitle":"Connect Your Wallet to Continue","auth.wallet.disconnect":"Disconnect Wallet","auth.wallet.install":"Install MetaMask","auth.wallet.install_long":"Install MetaMask to Get Started","auth.wallet.sign":"Sign Message","auth.wallet.sign_message":"Welcome to Dashbrd. In order to login, sign this message with your wallet. It doesn't cost you anything!\n\nSigning ID (you can ignore this): {{nonce}}","auth.wallet.connect_subtitle":"Click on the MetaMask icon in your browser to confirm the action and connect your wallet.","auth.wallet.requires_signature":"In order to prevent impersonation, we require a signature to perform this action. This signature is only a signed message and does not give any access to your wallet.","auth.errors.metamask.no_account":"No account found. Please connect your wallet and try again.","auth.errors.metamask.generic":"Connection attempt error. Please retry and follow the steps to connect your wallet.","auth.errors.metamask.invalid_network":"Please switch to Polygon or Ethereum Mainnet in your MetaMask plugin to connect to Dashbrd.","auth.errors.metamask.provider_missing":"You don't have MetaMask installed in your browser. Please install and try again.","auth.errors.metamask.user_rejected":"It looks like you cancelled signing of the authentication message. Please try again.","auth.errors.metamask.provider_not_set":"Ethereum provider is not set","auth.validation.wallet_login_failed":"There was a problem trying to verify your signature. Please try again.","auth.validation.invalid_address":"Your wallet address is invalid. Please try again.","auth.validation.invalid_signature":"Signature is invalid. Please try again.","auth.validation.invalid_network":"Please switch to Polygon or Ethereum Mainnet in your MetaMask plugin to connect to Dashbrd.","common.author":"Author","common.add":"Add","common.amount":"Amount","common.balance":"Balance","common.cancel":"Cancel","common.delete":"Delete","common.edit":"Edit","common.confirm":"Confirm","common.connect":"Connect","common.continue":"Continue","common.done":"Done","common.filter":"Filter","common.items":"Items","common.receive":"Receive","common.received":"Received","common.retry":"Retry","common.records":"Records","common.save":"Save","common.send":"Send","common.sent":"Sent","common.show":"Show","common.searching":"Searching...","common.other":"Other","common.owned":"Owned","common.token":"Token","common.tokens":"Tokens","common.wallet":"Wallet","common.pending":"Pending","common.publish":"Publish","common.published":"Published","common.empty":"Empty","common.your_address":"Your Address","common.warning":"Warning","common.my_address":"My Address","common.my_wallet":"My Wallet","common.my_collections":"My Collections","common.my_balance":"My Balance","common.na":"N/A","common.simple_plural_without_data":"One comment|Many comments","common.simple_plural_with_data":"{{count}} comment|{{count}} comments","common.advanced_plural_without_data":"{0} no comments yet|{1} 1 comment|[2,*] Many comments","common.advanced_plural_with_data":"{0} no comments yet|{1} 1 comment|[2,*] {{count}} comments","common.copy_clipboard":"Copy to Clipboard","common.copy":"Copy","common.download":"Download","common.zoom":"Zoom","common.my_collection":"My Collection","common.max":"Max","common.chain":"Chain","common.copied":"Copied!","common.coming_soon":"Coming Soon","common.more_details":"More Details","common.close":"Close","common.close_toast":"Close toast","common.loading":"Loading","common.price":"Price","common.articles":"Articles","common.most_popular":"Most Popular","common.market_cap":"Market Cap","common.volume":"Volume","common.volume_frequency":"Volume {{frequency}}","common.value":"Value","common.last_n_days":"Last {{count}} Days","common.details":"Details","common.view_all":"View All","common.view_more_on_polygonscan":"View More on Polygonscan","common.view_more_on_etherscan":"View More on Etherscan","common.view_nft_on_etherscan":"View NFT on Etherscan","common.view_nft_on_polygonscan":"View NFT on Polygonscan","common.view_nft_on_goerli_tesnet":"View NFT on Goerli Testnet Explorer","common.view_nft_on_mumbai_tesnet":"View NFT on Mumbai Testnet Explorer","common.polygonscan":"Polygonscan","common.etherscan":"Etherscan","common.featured":"Featured","common.floor_price":"Floor Price","common.floor":"Floor","common.supply":"Supply","common.owners":"Owners","common.created":"Created","common.nft":"NFT","common.collection":"Collection","common.collections":"Collections","common.gallery":"Gallery","common.basic_gallery":"Basic Gallery","common.gallery_name":"Gallery Name","common.create_gallery":"Create Gallery","common.external_link":"External Link","common.follow_link":"Follow Link","common.cover":"Cover","common.template":"Template","common.page":"Page","common.polygon":"Polygon","common.ethereum":"Ethereum","common.mumbai":"Mumbai","common.goerli":"Goerli","common.of":"of","common.pagination_input_placeholder":"Enter the page number","common.pagination_input_placeholder_mobile":"Page number","common.nft_count":"{0} {{count}} NFTs|{1} {{count}} NFT|[2,*] {{count}} NFTs","common.nft_gallery":"NFT Gallery","common.unable_to_retrieve_image":"Unable to retrieve your NFT image at this time","common.optional":"Optional","common.selected":"Selected","common.select":"Select","common.preview":"Preview","common.image_size_error":"Image size must not exceed 2MB","common.image_dimensions_error":"Image dimensions must exceed 287px x 190px","common.write_to_confirm":"Write {{word}} to confirm","common.n_hours":"{0} {{count}} hour|{1} {{count}} hour|[2,*] {{count}} hours","common.n_minutes":"{0} {{count}} minute|{1} {{count}} minute|[2,*] {{count}} minutes","common.report":"Report","common.nfts":"NFTs","common.n_nfts":"{0}NFTs|{1}NFT|[2,*]NFTs","common.n_collections":"{0}collections|{1}collection|[2,*]collections","common.back":"Back","common.back_to":"Back to","common.name":"Name","common.type":"Type","common.from":"From","common.to":"To","common.sale_price":"Sale Price","common.recent_activity":"Recent Activity","common.time":"Time","common.datetime.few_seconds_ago":"A few seconds ago","common.datetime.minutes_ago":"{0} Less than a minute ago|{1} A minute ago|[2,*] {{count}} minutes ago","common.datetime.hours_ago":"{0} Less than an hour ago|{1} An hour ago|[2,*] {{count}} hours ago","common.datetime.days_ago":"{0} Less than a day ago|{1} A day ago|[2,*] {{count}} days ago","common.datetime.weeks_ago":"{0} Less than a week ago|{1} A week ago|[2,*] {{count}} weeks ago","common.datetime.months_ago":"{0} Less than a month ago|{1} A month ago|[2,*] {{count}} months ago","common.datetime.years_ago":"{0} Less than a year ago|{1} A year ago|[2,*] {{count}} years ago","common.no_traits_found":"No traits found.","common.empty_transactions":"You don't have any transactions yet. Once transactions have been made, they will show up here.","common.error":"Error","common.refresh":"Refresh","common.refresh_metadata":"Refresh Metadata","common.refreshing_metadata":"Refreshing Metadata... Please check back later.","common.refreshing_activity":"Refreshing Activity... Please check back later.","common.pending_confirmation":"Pending Confirmation","common.confirmed_transaction":"Confirmed Transaction","common.transaction_error":"Transaction Error","common.transaction_error_description_first_part":"Your transaction encountered an error. View this transaction on","common.transaction_error_description_second_part":"for more details.","common.home":"Home","common.contact":"Contact","common.menu":"Menu","common.website":"Website","common.twitter":"Twitter","common.discord":"Discord","common.facebook":"Facebook","common.reddit":"Reddit","common.x":"X","common.sort":"Sort","common.drafts":"Drafts","common.draft":"Draft","common.delete_draft":"Delete Draft","common.share_on":"Share on {{platform}}","common.top":"Top","common.all_chains":"All chains","common.votes":"Votes","common.vote":"Vote","common.vol":"Vol","footer.copyright":"{{year}} © Dashbrd. All rights reserved.","footer.all_rights_reserved":"All rights reserved","footer.privacy_policy":"Privacy Policy","footer.terms_of_service":"Terms of Service","footer.powered_by":"Powered by","format.fiat":"{{ value, currency }}","format.number":"{{ value, number }}","metatags.home.title":"Dashbrd | Web3 Portfolio Management Made Simple","metatags.home.description":"Simplify your Web3 journey with Dashbrd. Manage your portfolio of tokens, NFTs, and other digital collectibles across the Ethereum and Polygon blockchains.","metatags.home.image":"/images/meta/home.png","metatags.error.title":"Error {{code}} | Dashbrd","metatags.wallet.title":"My Wallet | Dashbrd","metatags.galleries.title":"Top NFT Galleries | Dashbrd","metatags.galleries.image":"/images/meta/nft-galleries.png","metatags.galleries.description":"Explore user published NFT galleries to find custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.most_popular.title":"Most Popular Galleries | Dashbrd","metatags.galleries.most_popular.image":"/images/meta/most-popular-nft-galleries.png","metatags.galleries.most_popular.description":"Explore and discover Most Popular NFT Galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.newest.title":"Newest Galleries | Dashbrd","metatags.galleries.newest.image":"/images/meta/newest-nft-galleries.png","metatags.galleries.newest.description":"Explore and discover most recent NFT galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More","metatags.galleries.most_valuable.title":"Most Valuable Galleries | Dashbrd","metatags.galleries.most_valuable.image":"/images/meta/most-valuable-nft-galleries.png","metatags.galleries.most_valuable.description":"Explore and discover Most Valuable NFT Galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.view.title":"{{name}} | Dashbrd","metatags.galleries.view.description":"{{name}} | A Curated NFT Gallery at Dashbrd","metatags.galleries.view.image":"/images/meta/nft-gallery.png","metatags.my_galleries.title":"My Galleries | Dashbrd","metatags.my_galleries.title_draft":"My Draft Galleries | Dashbrd","metatags.my_galleries.create.title":"Create Gallery | Dashbrd","metatags.my_galleries.edit.title":"Edit {{name}} | Dashbrd","metatags.collections.title":"Collections | Dashbrd","metatags.collections.view.title":"{{name}} Collection | Dashbrd","metatags.collections.view.description":"Immerse yourself in the intricate details of {{name}} collection, featuring remarkable digital assets. Start your NFT journey today!","metatags.collections.view.image":"/images/meta/nft-collection.png","metatags.my-collections.title":"My Collections | Dashbrd","metatags.nfts.view.title":"{{nft}} NFT | Dashbrd","metatags.nfts.view.description":"Uncover the complete story of {{nft}} NFT from the {{collection}} collection, delving into its unique attributes and distinctive features.","metatags.nfts.view.image":"/images/meta/nft-details.png","metatags.settings.title":"Settings | Dashbrd","metatags.articles.title":"Articles | Dashbrd","metatags.articles.view.title":"{{title}} | Dashbrd","metatags.login.title":"Login | Dashbrd","metatags.privacy_policy.title":"Privacy Policy | Dashbrd","metatags.privacy_policy.description":"Dashbrd’s privacy policy outlines the information we collect and explains your choices surrounding how we use information about you.","metatags.terms_of_service.title":"Terms of Service | Dashbrd","metatags.terms_of_service.description":"These Terms of Service cover your use and access to services, products or websites of Dashbrd.","metatags.cookie_policy.title":"Cookie Policy | Dashbrd","metatags.cookie_policy.description":"Dashbrd uses cookies to make the website more user-friendly. Find out about the main types of cookies we use, and what we use them for.","metatags.welcome.title":"Welcome to Dashbrd | Web3 Simplified","pages.onboarding.title":"Get Started","pages.onboarding.heading":"Your monkeys were bored and ran off, we are trying to round them up.","pages.onboarding.message":"We are setting up your account. This process usually takes just a few minutes, but can take up to 15 minutes.","pages.error.heading":"Oops, something went wrong ...","pages.error.message":"Please try again or get in touch if the issue persists.","pages.maintenance.title":"Dashbrd is currently down for scheduled maintenance.","pages.maintenance.description":"We expect to be back soon. Thanks for your patience.","pages.dashboard.title":"My Wallet","pages.dashboard.breakdown.title":"Portfolio Breakdown","pages.dashboard.line_chart.data_error":"Could not load chart data","pages.articles.title":"Articles","pages.articles.featured_collections":"Featured Collections","pages.articles.placeholder_more_soon":"More Soon","pages.articles.no_articles":"No articles have been published yet. Please check back later!","pages.articles.header_title":"Explore our collection of","pages.articles.header_suffix_one":"published article","pages.articles.header_suffix_other":"published articles","pages.articles.audio_version":"Audio version","pages.articles.consists_of_collections":"{0} This article highlights {{count}} collections|{1} This article highlights {{count}} collection|[2,*] This article highlights {{count}} collections","pages.collections.title":"Collections","pages.collections.collections":"Collections","pages.collections.popular_collections":"Popular Collections","pages.collections.collection_value":"Collection Value","pages.collections.nfts_owned":"NFTs Owned","pages.collections.header_title":"You own <0>{{nftsCount}} {{nfts}} across <0>{{collectionsCount}} {{collections}}, worth about <0><1>{{worth}}","pages.collections.search_placeholder":"Search by Collection","pages.collections.properties":"Properties","pages.collections.collections_network":"Collections Network","pages.collections.property_search_placeholder":"Feature Search","pages.collections.floor_price":"Floor Price","pages.collections.value":"Value","pages.collections.rarity":"Rarity","pages.collections.report":"Report","pages.collections.hide_collection":"Hide Collection","pages.collections.unhide_collection":"Unhide Collection","pages.collections.no_collections":"You do not own any NFTs yet. Once you do they will be shown here.","pages.collections.all_collections_hidden":"You have hidden all your collections. Unhide and they will appear here.","pages.collections.about_collection":"About Collection","pages.collections.show_hidden":"Show Hidden","pages.collections.show_my_collection":"Show My Collection","pages.collections.owned":"Owned","pages.collections.activities.loading_activities":"We're fetching Activity for this NFT, please hang tight, this can take a while.","pages.collections.activities.loading_activities_collection":"We're fetching Activity for this collection, please hang tight, this can take a while.","pages.collections.activities.ignores_activities":"We don't support activity history for this collection yet.","pages.collections.activities.no_activity":"This collection does not have any activity yet.","pages.collections.activities.types.LABEL_MINT":"Mint","pages.collections.activities.types.LABEL_TRANSFER":"Transfer","pages.collections.activities.types.LABEL_SALE":"Sale","pages.collections.activities.types.LABEL_BURN":"Burn","pages.collections.collection_of_the_month.winners_month":"Winners: {{month}}","pages.collections.collection_of_the_month.vote_for_next_months_winners":"Vote now for next month's winners","pages.collections.collection_of_the_month.view_previous_winners":"View Previous Winners","pages.collections.collection_of_the_month.vote_received_modal.title":"Vote Received","pages.collections.collection_of_the_month.vote_received_modal.description":"Your vote has been recorded. Share your vote on X and let everyone know!","pages.collections.collection_of_the_month.vote_received_modal.share_vote":"Share Vote","pages.collections.collection_of_the_month.vote_received_modal.img_alt":"I voted for Dashbrd Project of the Month","pages.collections.collection_of_the_month.vote_received_modal.x_text":"I voted for {{collection}} for collection of the month @dashbrdapp! Go show your support!","pages.collections.collection_of_the_month.vote_success":"Your vote has been successfully submitted","pages.collections.collection_of_the_month.has_won_already":"This collection has already
    won Collection of the Month.","pages.collections.articles.heading":"Latest NFT News & Features","pages.collections.articles.no_articles":"No articles have been linked to this collection as of now.","pages.collections.articles.no_articles_with_filters":"We could not find any articles matching your search criteria, please try again!","pages.collections.articles.search_placeholder":"Search in Articles","pages.collections.articles.sort_latest":"Latest","pages.collections.articles.sort_popularity":"Most Popular","pages.collections.search.loading_results":"Loading results...","pages.collections.search.no_results":"We could not find anything matching your search criteria, please try again!","pages.collections.search.no_results_with_filters":"We could not find anything matching your filters, please try again!","pages.collections.search.no_results_ownership":"You do not own any NFTs in this collection","pages.collections.search.error":"Could not load search results. Please try again later.","pages.collections.vote.vote_for_top_collection":"Vote for Top Collection of the Month","pages.collections.vote.vote":"Vote","pages.collections.vote.time_left":"Time Left","pages.collections.vote.or_nominate_collection":"Or nominate a collection","pages.collections.vote.nominate_collection":"Nominate a collection","pages.collections.vote.vote_to_reveal":"Vote to reveal data","pages.collections.vote.already_voted":"You’ve already nominated. Come back next month!","pages.collections.sorting.token_number":"Token Number","pages.collections.sorting.recently_received":"Recently Received","pages.collections.sorting.recently_created":"Recently Created","pages.collections.sorting.oldest_collection":"Oldest Collection","pages.collections.traits.description":"List of NFT traits by % of occurrence in the collection","pages.collections.traits.no_traits":"No Properties can be found for this NFT","pages.collections.menu.collection":"Collection","pages.collections.menu.articles":"Articles","pages.collections.menu.activity":"Activity","pages.collections.hidden_modal.collection_hidden":"Collection Hidden","pages.collections.hidden_modal.description":"This collection is currently set to Hidden. Are you sure you want to unhide this collection? You can\n reset the collection to hidden from the collection menu.","pages.collections.hidden_modal.unhide":"Unhide","pages.collections.hidden_modal.error":"Something went wrong. Please try again.","pages.collections.external_modal.you_wish_continue":"You are about to leave Dashbrd to an external website. Dashbrd has no control over the content of\n this site. Are you sure you wish to continue?","pages.collections.external_modal.not_show":"Do not show this message again.","pages.collections.refresh.title":"Refresh your collection","pages.collections.refresh.notice":"You can refresh data every 15 minutes.","pages.collections.refresh.notice_wait":"Please wait. You can refresh data every 15 minutes.","pages.collections.refresh.toast":"We're updating information for your collection.","pages.collections.featured.title":"Featured Collections","pages.collections.featured.button":"Explore Collection","pages.collections.footer.heading_broken.0":"Connect with MetaMask","pages.collections.footer.heading_broken.1":"& Manage Your Collection","pages.collections.footer.subtitle":"Explore, Filter, & Share your favorite NFTs with Dashbrd.","pages.collections.footer.button":"Manage Collections","pages.nfts.nft":"nft","pages.nfts.about_nft":"About NFT","pages.nfts.owned_by":"Owned by","pages.nfts.collection_image":"collection image","pages.nfts.menu.properties":"Properties","pages.nfts.menu.activity":"Activity","pages.reports.title":"Submit a Report","pages.reports.description":"Thanks for looking out by reporting things that break the rules. Let us know what's happening and we'll receive the report.","pages.reports.success":"Thank you for your report. We'll review it and see if it breaks our ToS.","pages.reports.failed":"Something went wrong. Please try again.","pages.reports.throttle":"You have made too many requests. Please wait {{time}} before reporting again.","pages.reports.reported":"You have already reported this {{model}}.","pages.reports.reasons.spam":"Spam","pages.reports.reasons.violence":"Promoting Violence","pages.reports.reasons.hate":"Hate","pages.reports.reasons.inappropriate_content":"Inappropriate Content","pages.reports.reasons.impersonation":"Impersonation","pages.reports.reasons.trademark":"Trademark or Copyright","pages.reports.reasons.selfharm":"Self-Harm","pages.reports.reasons.harassment":"Harassment","pages.galleries.title":"Galleries","pages.galleries.empty_title":"No galleries have been published yet. Once they do they will appear here.","pages.galleries.search.loading_results":"Loading results...","pages.galleries.search.no_results":"We could not find anything matching your search criteria, please try again!","pages.galleries.search.placeholder":"Search by name or curator address","pages.galleries.search.placeholder_nfts":"Search by NFTs","pages.galleries.search.error":"Could not load search results. Please try again later.","pages.galleries.my_galleries.title":"My Galleries","pages.galleries.my_galleries.subtitle":"Manage your galleries","pages.galleries.my_galleries.new_gallery":"New Gallery","pages.galleries.my_galleries.no_galleries":"You have not created any galleries yet. To create a gallery, click on the \"Create Gallery\" button.","pages.galleries.my_galleries.no_available_collections":"You have hidden all your collections. If you want to create a gallery, make sure you have at least 1 collection available.","pages.galleries.my_galleries.no_draft_galleries":"You have no draft galleries yet. To create a gallery, click on the \"Create Gallery\" button.","pages.galleries.my_galleries.succesfully_deleted":"Gallery has been successfully removed","pages.galleries.my_galleries.draft_succesfully_deleted":"Draft has been successfully removed","pages.galleries.my_galleries.successfully_created":"Gallery has been successfully created","pages.galleries.my_galleries.successfully_updated":"Gallery has been successfully updated","pages.galleries.my_galleries.new_gallery_no_nfts":"Creating a Gallery requires you to own an NFT.","pages.galleries.my_galleries.new_gallery_all_collections_hidden":"Creating a Gallery requires you to have at least 1 collection available.","pages.galleries.my_galleries.delete_modal.title":"Delete Draft","pages.galleries.my_galleries.delete_modal.text":"Are you sure you want to delete the draft? Everything you've done will be deleted and you won't be able to get it back.","pages.galleries.my_galleries.nfts_no_longer_owned":"NFTs no longer owned by this wallet have been removed from the draft”","pages.galleries.copy_gallery_link":"Copy Gallery Link","pages.galleries.my_nfts":"My NFTs","pages.galleries.show_hidden_collections":"Show hidden collections","pages.galleries.value":"Value","pages.galleries.floor_price":"Floor Price","pages.galleries.nfts":"NFTs","pages.galleries.collections":"Collections","pages.galleries.galleries_count_simple":"{0} galleries|{1} gallery|[2,*] galleries","pages.galleries.galleries_count":"{0} {{count}} Galleries|{1} {{count}} Gallery|[2,*] {{count}} Galleries","pages.galleries.collections_count_simple":"{0} collections|{1} collection|[2,*] collections","pages.galleries.collections_count":"{0} {{count}} Collections|{1} {{count}} Collection|[2,*] {{count}} Collections","pages.galleries.nfts_count_simple":"{0} NFTs|{1} NFT|[2,*] NFTs","pages.galleries.nfts_count":"{0} {{count}} NFTs|{1} {{count}} NFT|[2,*] {{count}} NFTs","pages.galleries.users_count_simple":"{0} users|{1} user|[2,*] users","pages.galleries.users_count":"{0} {{count}} Users|{1} {{count}} User|[2,*] {{count}} Users","pages.galleries.featuring":"Featuring","pages.galleries.curated_by":"Curated by","pages.galleries.worth_about":"Worth About","pages.galleries.valued_at":"valued at","pages.galleries.from":"From","pages.galleries.most_popular_galleries":"Most Popular Galleries","pages.galleries.newest_galleries":"Newest Galleries","pages.galleries.most_valuable_galleries":"Most Valuable Galleries","pages.galleries.most_popular":"Most Popular","pages.galleries.newest":"Newest","pages.galleries.most_valuable":"Most Valuable","pages.galleries.create.search_by_nfts":"Search by NFTs","pages.galleries.create.input_placeholder":"Enter gallery name","pages.galleries.create.title_too_long":"Gallery name must not exceed {{max}} characters.","pages.galleries.create.already_selected_nft":"NFT already exists in this gallery","pages.galleries.create.nft_missing_image":"Only NFTs with images can be added to galleries","pages.galleries.create.nft_gallery_limit":"You can only add 16 NFTs per gallery","pages.galleries.create.gallery_cover":"Gallery Cover","pages.galleries.create.gallery_cover_description":"The cover is used for the card on the gallery list page. While the cover is not a requirement it will allow you to add personality and stand out from the crowd.","pages.galleries.create.gallery_cover_information":"Image dimensions must be at least 287px x 190px, with a max size of 2 MB (JPG, PNG or GIF)","pages.galleries.create.no_results":"We could not find anything matching your search criteria, please try again!","pages.galleries.create.templates.cover":"Cover","pages.galleries.create.templates.template":"Template","pages.galleries.create.templates.select":"Select Gallery Template","pages.galleries.create.templates.basic":"Basic Gallery","pages.galleries.create.templates.coming_soon":"More Coming Soon","pages.galleries.create.load_more_collections_one":"Load {{count}} More Collection","pages.galleries.create.load_more_collections_other":"Load {{count}} More Collections","pages.galleries.create.load_more_nfts":"Load More NFTs","pages.galleries.create.can_purchase":"You can purchase NFTs with these top NFT Marketplaces:","pages.galleries.create.must_own_one_nft":"You must own at least one (1) NFT in order to create a gallery.","pages.galleries.create.back_to_galleries":"Back to Galleries","pages.galleries.create.draft_saved":"Draft Saved","pages.galleries.create.saving_to_draft":"Saving to draft","pages.galleries.create.drafts_limit_modal_title":"Draft Gallery Limit","pages.galleries.create.drafts_limit_modal_message":"You’ve hit your limit for draft galleries. While you can still make new galleries and publish them, they won’t be saved as drafts. To Free up space, you can either delete existing drafts or publish them.","pages.galleries.create.drafts_limit_modal_cancel":"Go to Drafts","pages.galleries.delete_modal.title":"Delete Gallery","pages.galleries.delete_modal.confirmation_text":"Are you sure you want to delete the gallery? Deleting a Gallery is permanent, all associated views and likes will be lost.","pages.galleries.consists_of_collections":"{0} This gallery consists of {{count}} collections|{1} This gallery consists of {{count}} collection|[2,*] This gallery consists of {{count}} collections","pages.galleries.guest_banner.title":"Craft the ultimate","pages.galleries.guest_banner.subtitle":"Pick your favorites, curate your gallery, & share it with the world.","pages.profile.title":"Profile","pages.token_panel.balance_tooltip":"Total percentage of the portfolio held in this token","pages.token_panel.insufficient_funds":"Insufficient Balance","pages.token_panel.error":"Dashbrd has failed to load token information. Please try again later.","pages.token_panel.failed_to_retrieve_transactions":"We were unable to fetch your transactions.","pages.token_panel.tabs.transaction_history":"Transaction History","pages.token_panel.tabs.history":"History","pages.token_panel.tabs.market_data":"Market Data","pages.token_panel.details.current_price":"Current Price","pages.token_panel.details.title":"Token Details","pages.token_panel.details.market_cap":"Market Cap","pages.token_panel.details.volume":"Daily Volume","pages.token_panel.details.supply":"Minted Supply","pages.token_panel.details.ath":"All-Time High","pages.token_panel.details.atl":"All-Time Low","pages.token_panel.chart.failed":"Dashbrd has failed to load chart information. Please try again later.","pages.transaction_details_panel.title":"Transaction Details","pages.transaction_details_panel.details.blockchain":"Blockchain","pages.transaction_details_panel.details.timestamp":"Timestamp","pages.transaction_details_panel.details.transaction_hash":"Transaction Hash","pages.transaction_details_panel.details.transaction_fee":"Transaction Fee","pages.transaction_details_panel.details.gas_price":"Gas Price","pages.transaction_details_panel.details.gas_used":"Gas Used","pages.transaction_details_panel.details.nonce":"Nonce","pages.send_receive_panel.send.labels.token_and_amount":"Token and Amount","pages.send_receive_panel.send.labels.destination_address":"Destination Address","pages.send_receive_panel.send.labels.projected_fee":"Projected Fee","pages.send_receive_panel.send.placeholders.enter_amount":"Enter Amount","pages.send_receive_panel.send.placeholders.insert_recipient_address":"Insert Recipient Address","pages.send_receive_panel.send.placeholders.projected_fee":"Projected Fee","pages.send_receive_panel.send.errors.amount":"Insufficient Funds: You do not have enough to cover the amount + fee.","pages.send_receive_panel.send.errors.destination":"Destination address is not correct. Check and input again.","pages.send_receive_panel.send.hints.token_price":"Token Price","pages.send_receive_panel.send.fees.Fast":"Fast","pages.send_receive_panel.send.fees.Avg":"Avg","pages.send_receive_panel.send.fees.Slow":"Slow","pages.send_receive_panel.send.search_dropdown.placeholder":"Search token","pages.send_receive_panel.send.search_dropdown.no_results":"No Results","pages.send_receive_panel.send.search_dropdown.error":"Error occurred while searching tokens.","pages.send_receive_panel.send.transaction_time":"Transaction Time: ~{{ time }} minutes","pages.send_receive_panel.send.from":"From","pages.send_receive_panel.send.to":"To","pages.send_receive_panel.send.amount":"Amount","pages.send_receive_panel.send.fee":"Fee","pages.send_receive_panel.send.total_amount":"Total Amount","pages.send_receive_panel.send.waiting_message":"Review and verify the information on your MetaMask. Sign to send the transaction.","pages.send_receive_panel.send.waiting_spinner_text":"Waiting for confirmation...","pages.send_receive_panel.send.failed_message":"It looks like something went wrong while sending your transaction. Press 'Retry' to make another attempt.","pages.send_receive_panel.receive.alert":"Send only Polygon or Ethereum Network compatible tokens to this address or you could permanently lose your funds!","pages.settings.title":"Settings","pages.settings.sidebar.general":"General","pages.settings.sidebar.notifications":"Notifications","pages.settings.sidebar.session_history":"Sessions History","pages.settings.general.title":"Settings","pages.settings.general.subtitle":"Customize your App Experience","pages.settings.general.currency":"Currency","pages.settings.general.currency_subtitle":"Select your default currency which will be used throughout the app.","pages.settings.general.time_date":"Time & Date","pages.settings.general.time_date_subtitle":"Select how you want time and date be shown inside app.","pages.settings.general.date_format":"Date Format","pages.settings.general.time_format":"Time Format","pages.settings.general.timezone":"Timezone","pages.settings.general.set_defaults":"Set Defaults","pages.settings.general.set_defaults_content":"Reverting to the default settings will remove any customizations previously made. Are you sure?","pages.settings.general.save":"Save Settings","pages.settings.general.saved":"Your settings have been successfully saved","pages.wallet.title":"Wallet","pages.privacy_policy.title":"Privacy Policy","pages.terms_of_service.title":"Terms of Service","pagination.previous":"« Previous","pagination.next":"Next »","passwords.reset":"Your password has been reset!","passwords.sent":"We have emailed your password reset link!","passwords.throttled":"Please wait before retrying.","passwords.token":"This password reset token is invalid.","passwords.user":"We can't find a user with that email address.","urls.landing":"https://dashbrd.com","urls.cookie_policy":"https://dashbrd.com/cookie-policy","urls.privacy_policy":"https://dashbrd.com/privacy-policy","urls.terms_of_service":"https://dashbrd.com/terms-of-service","urls.twitter":"https://x.com/DashbrdApp","urls.discord":"https://discord.gg/MJyWKkCJ5k","urls.github":"https://github.com/ArdentHQ/dashbrd","urls.coingecko":"https://www.coingecko.com","urls.etherscan":"https://etherscan.io","urls.polygonscan":"https://polygonscan.com","urls.alchemy":"https://www.alchemy.com","urls.moralis":"https://moralis.io","urls.mnemonic":"https://www.mnemonichq.com","urls.opensea":"https://opensea.io/","urls.explorers.etherscan.token_transactions":"https://etherscan.io/token/{{token}}?a={{address}}","urls.explorers.etherscan.addresses":"https://etherscan.io/address/{{address}}","urls.explorers.etherscan.transactions":"https://etherscan.io/tx/{{id}}","urls.explorers.etherscan.nft":"https://etherscan.io/nft/{{address}}/{{nftId}}","urls.explorers.polygonscan.token_transactions":"https://polygonscan.com/token/{{token}}?a={{address}}","urls.explorers.polygonscan.addresses":"https://polygonscan.com/address/{{address}}","urls.explorers.polygonscan.transactions":"https://polygonscan.com/tx/{{id}}","urls.explorers.polygonscan.nft":"https://polygonscan.com/nft/{{address}}/{{nftId}}","urls.explorers.mumbai.token_transactions":"https://mumbai.polygonscan.com/token/{{token}}?a={{address}}","urls.explorers.mumbai.addresses":"https://mumbai.polygonscan.com/address/{{address}}","urls.explorers.mumbai.transactions":"https://mumbai.polygonscan.com/tx/{{id}}","urls.explorers.mumbai.nft":"https://mumbai.polygonscan.com/nft/{{address}}/{{nftId}}","urls.explorers.goerli.token_transactions":"https://goerli.etherscan.io/token/{{token}}?a={{address}}","urls.explorers.goerli.addresses":"https://goerli.etherscan.io/address/{{address}}","urls.explorers.goerli.transactions":"https://goerli.etherscan.io/tx/{{id}}","urls.explorers.goerli.nft":"https://goerli.etherscan.io/nft/{{address}}/{{nftId}}","urls.marketplaces.opensea.collection":"https://opensea.io/assets/{{network}}/{{address}}","urls.marketplaces.opensea.nft":"https://opensea.io/assets/{{network}}/{{address}}/{{nftId}}","urls.marketplaces.rarible.collection":"https://rarible.com/collection/{{address}}/items","urls.marketplaces.rarible.nft":"https://rarible.com/token/{{address}}:{{nftId}}","urls.marketplaces.blur.collection":"https://blur.io/collection/{{address}}","urls.marketplaces.blur.nft":"https://blur.io/asset/{{address}}/{{nftId}}","urls.marketplaces.looksrare.collection":"https://looksrare.org/collections/{{address}}","urls.marketplaces.looksrare.nft":"https://looksrare.org/collections/{{address}}/{{nftId}}","validation.accepted":"The {{attribute}} must be accepted.","validation.accepted_if":"The {{attribute}} must be accepted when {{other}} is {{value}}.","validation.active_url":"The {{attribute}} is not a valid URL.","validation.after":"The {{attribute}} must be a date after {{date}}.","validation.after_or_equal":"The {{attribute}} must be a date after or equal to {{date}}.","validation.alpha":"The {{attribute}} must only contain letters.","validation.alpha_dash":"The {{attribute}} must only contain letters, numbers, dashes and underscores.","validation.alpha_num":"The {{attribute}} must only contain letters and numbers.","validation.array":"The {{attribute}} must be an array.","validation.ascii":"The {{attribute}} must only contain single-byte alphanumeric characters and symbols.","validation.before":"The {{attribute}} must be a date before {{date}}.","validation.before_or_equal":"The {{attribute}} must be a date before or equal to {{date}}.","validation.between.array":"The {{attribute}} must have between {{min}} and {{max}} items.","validation.between.file":"The {{attribute}} must be between {{min}} and {{max}} kilobytes.","validation.between.numeric":"The {{attribute}} must be between {{min}} and {{max}}.","validation.between.string":"The {{attribute}} must be between {{min}} and {{max}} characters.","validation.boolean":"The {{attribute}} field must be true or false.","validation.confirmed":"The {{attribute}} confirmation does not match.","validation.current_password":"The password is incorrect.","validation.date":"The {{attribute}} is not a valid date.","validation.date_equals":"The {{attribute}} must be a date equal to {{date}}.","validation.date_format":"The {{attribute}} does not match the format {{format}}.","validation.decimal":"The {{attribute}} must have {{decimal}} decimal places.","validation.declined":"The {{attribute}} must be declined.","validation.declined_if":"The {{attribute}} must be declined when {{other}} is {{value}}.","validation.different":"The {{attribute}} and {{other}} must be different.","validation.digits":"The {{attribute}} must be {{digits}} digits.","validation.digits_between":"The {{attribute}} must be between {{min}} and {{max}} digits.","validation.dimensions":"The {{attribute}} has invalid image dimensions.","validation.distinct":"The {{attribute}} field has a duplicate value.","validation.doesnt_end_with":"The {{attribute}} may not end with one of the following: {{values}}.","validation.doesnt_start_with":"The {{attribute}} may not start with one of the following: {{values}}.","validation.email":"The {{attribute}} must be a valid email address.","validation.ends_with":"The {{attribute}} must end with one of the following: {{values}}.","validation.enum":"The selected {{attribute}} is invalid.","validation.exists":"The selected {{attribute}} is invalid.","validation.file":"The {{attribute}} must be a file.","validation.filled":"The {{attribute}} field must have a value.","validation.gt.array":"The {{attribute}} must have more than {{value}} items.","validation.gt.file":"The {{attribute}} must be greater than {{value}} kilobytes.","validation.gt.numeric":"The {{attribute}} must be greater than {{value}}.","validation.gt.string":"The {{attribute}} must be greater than {{value}} characters.","validation.gte.array":"The {{attribute}} must have {{value}} items or more.","validation.gte.file":"The {{attribute}} must be greater than or equal to {{value}} kilobytes.","validation.gte.numeric":"The {{attribute}} must be greater than or equal to {{value}}.","validation.gte.string":"The {{attribute}} must be greater than or equal to {{value}} characters.","validation.image":"The {{attribute}} must be an image.","validation.in":"The selected {{attribute}} is invalid.","validation.in_array":"The {{attribute}} field does not exist in {{other}}.","validation.integer":"The {{attribute}} must be an integer.","validation.ip":"The {{attribute}} must be a valid IP address.","validation.ipv4":"The {{attribute}} must be a valid IPv4 address.","validation.ipv6":"The {{attribute}} must be a valid IPv6 address.","validation.json":"The {{attribute}} must be a valid JSON string.","validation.lowercase":"The {{attribute}} must be lowercase.","validation.lt.array":"The {{attribute}} must have less than {{value}} items.","validation.lt.file":"The {{attribute}} must be less than {{value}} kilobytes.","validation.lt.numeric":"The {{attribute}} must be less than {{value}}.","validation.lt.string":"The {{attribute}} must be less than {{value}} characters.","validation.lte.array":"The {{attribute}} must not have more than {{value}} items.","validation.lte.file":"The {{attribute}} must be less than or equal to {{value}} kilobytes.","validation.lte.numeric":"The {{attribute}} must be less than or equal to {{value}}.","validation.lte.string":"The {{attribute}} must be less than or equal to {{value}} characters.","validation.mac_address":"The {{attribute}} must be a valid MAC address.","validation.max.array":"The {{attribute}} must not have more than {{max}} items.","validation.max.file":"The {{attribute}} must not be greater than {{max}} kilobytes.","validation.max.numeric":"The {{attribute}} must not be greater than {{max}}.","validation.max.string":"The {{attribute}} must not be greater than {{max}} characters.","validation.max_digits":"The {{attribute}} must not have more than {{max}} digits.","validation.mimes":"The {{attribute}} must be a file of type: {{values}}.","validation.mimetypes":"The {{attribute}} must be a file of type: {{values}}.","validation.min.array":"The {{attribute}} must have at least {{min}} items.","validation.min.file":"The {{attribute}} must be at least {{min}} kilobytes.","validation.min.numeric":"The {{attribute}} must be at least {{min}}.","validation.min.string":"The {{attribute}} must be at least {{min}} characters.","validation.min_digits":"The {{attribute}} must have at least {{min}} digits.","validation.missing":"The {{attribute}} field must be missing.","validation.missing_if":"The {{attribute}} field must be missing when {{other}} is {{value}}.","validation.missing_unless":"The {{attribute}} field must be missing unless {{other}} is {{value}}.","validation.missing_with":"The {{attribute}} field must be missing when {{values}} is present.","validation.missing_with_all":"The {{attribute}} field must be missing when {{values}} are present.","validation.multiple_of":"The {{attribute}} must be a multiple of {{value}}.","validation.not_in":"The selected {{attribute}} is invalid.","validation.not_regex":"The {{attribute}} format is invalid.","validation.numeric":"The {{attribute}} must be a number.","validation.password.letters":"The {{attribute}} must contain at least one letter.","validation.password.mixed":"The {{attribute}} must contain at least one uppercase and one lowercase letter.","validation.password.numbers":"The {{attribute}} must contain at least one number.","validation.password.symbols":"The {{attribute}} must contain at least one symbol.","validation.password.uncompromised":"The given {{attribute}} has appeared in a data leak. Please choose a different {{attribute}}.","validation.present":"The {{attribute}} field must be present.","validation.prohibited":"The {{attribute}} field is prohibited.","validation.prohibited_if":"The {{attribute}} field is prohibited when {{other}} is {{value}}.","validation.prohibited_unless":"The {{attribute}} field is prohibited unless {{other}} is in {{values}}.","validation.prohibits":"The {{attribute}} field prohibits {{other}} from being present.","validation.regex":"The {{attribute}} format is invalid.","validation.required":"The {{attribute}} field is required.","validation.required_array_keys":"The {{attribute}} field must contain entries for: {{values}}.","validation.required_if":"The {{attribute}} field is required when {{other}} is {{value}}.","validation.required_if_accepted":"The {{attribute}} field is required when {{other}} is accepted.","validation.required_unless":"The {{attribute}} field is required unless {{other}} is in {{values}}.","validation.required_with":"The {{attribute}} field is required when {{values}} is present.","validation.required_with_all":"The {{attribute}} field is required when {{values}} are present.","validation.required_without":"The {{attribute}} field is required when {{values}} is not present.","validation.required_without_all":"The {{attribute}} field is required when none of {{values}} are present.","validation.same":"The {{attribute}} and {{other}} must match.","validation.size.array":"The {{attribute}} must contain {{size}} items.","validation.size.file":"The {{attribute}} must be {{size}} kilobytes.","validation.size.numeric":"The {{attribute}} must be {{size}}.","validation.size.string":"The {{attribute}} must be {{size}} characters.","validation.starts_with":"The {{attribute}} must start with one of the following: {{values}}.","validation.string":"The {{attribute}} must be a string.","validation.timezone":"The {{attribute}} must be a valid timezone.","validation.unique":"The {{attribute}} has already been taken.","validation.uploaded":"The {{attribute}} failed to upload.","validation.uppercase":"The {{attribute}} must be uppercase.","validation.url":"The {{attribute}} must be a valid URL.","validation.ulid":"The {{attribute}} must be a valid ULID.","validation.uuid":"The {{attribute}} must be a valid UUID.","validation.custom.attribute-name.rule-name":"custom-message","validation.unsupported_currency_code":"The currency code you provided is invalid or not supported.","validation.unsupported_period":"The period you provided is invalid or not supported.","validation.unsupported_token_symbol":"The token symbol you provided is invalid or not supported.","validation.gallery_title_required":"Gallery name is required.","validation.gallery_title_max_characters":"The gallery name should not exceed 50 characters.","validation.gallery_title_invalid":"The gallery name is invalid.","validation.nfts_required":"Please add at least one NFT.","validation.nfts_max_size":"Galleries can contain no more than {{limit}} NFTs","validation.invalid_nfts":"The NFT in position {{position}} is invalid, please select another one.","validation.invalid_cover":"You have selected an invalid cover image, please try another one."} \ No newline at end of file diff --git a/resources/js/Pages/Collections/Components/CollectionVoting/NomineeCollection.tsx b/resources/js/Pages/Collections/Components/CollectionVoting/NomineeCollection.tsx index 15b1de49c..364e15b3b 100644 --- a/resources/js/Pages/Collections/Components/CollectionVoting/NomineeCollection.tsx +++ b/resources/js/Pages/Collections/Components/CollectionVoting/NomineeCollection.tsx @@ -1,5 +1,6 @@ import cn from "classnames"; import React, { useRef } from "react"; +import { Trans } from "react-i18next"; import { NominateCollectionName } from "@/Components/Collections/CollectionName"; import { PopularCollectionFloorPrice, @@ -7,6 +8,7 @@ import { } from "@/Components/Collections/PopularCollectionsTable/PopularCollectionsTable.blocks"; import { Radio } from "@/Components/Form/Radio"; import { TableCell, TableRow } from "@/Components/Table"; +import { Tooltip } from "@/Components/Tooltip"; import { type VoteCollectionProperties } from "@/Pages/Collections/Components/CollectionVoting/VoteCollections"; export const NomineeCollection = ({ @@ -24,59 +26,74 @@ export const NomineeCollection = ({ }): JSX.Element => { const reference = useRef(null); + // @TODO hook up with real data + const isDisabled = collection.id === 9; + + const selectHandler = isDisabled + ? undefined + : (): void => { + setSelectedCollection(collection.id); + }; + return ( - { - setSelectedCollection(collection.id); - }} + } + disabled={!isDisabled} > - - - + + + - - - + + + - - - + + + - - { - setSelectedCollection(collection.id); - }} - /> - - + + + + + ); }; From a6eb2c7599b530b938dfecf56ea1af339641ad90 Mon Sep 17 00:00:00 2001 From: Alfonso Bribiesca Date: Fri, 8 Dec 2023 04:22:06 -0600 Subject: [PATCH 033/145] feat: collection of the month overview placeholder (#534) --- .../CollectionOfTheMonthController.php | 41 +++ app/Jobs/FetchCollectionBannerBatch.php | 2 +- app/Models/Collection.php | 13 +- lang/en/metatags.php | 3 + lang/en/pages.php | 5 + resources/css/_collection.css | 10 + resources/images/collections/com-bg-dark.svg | 1 + resources/images/collections/com-bg.svg | 1 + .../images/collections/one-bar-chart-dark.svg | 2 +- .../collections/one-bar-chart-lg-dark.svg | 1 + .../images/collections/one-bar-chart-lg.svg | 1 + .../images/collections/one-bar-chart.svg | 2 +- .../collections/three-bar-chart-dark.svg | 2 +- .../collections/three-bar-chart-lg-dark.svg | 1 + .../images/collections/three-bar-chart-lg.svg | 1 + .../images/collections/three-bar-chart.svg | 2 +- .../images/collections/two-bar-chart-dark.svg | 2 +- .../collections/two-bar-chart-lg-dark.svg | 1 + .../images/collections/two-bar-chart-lg.svg | 1 + .../images/collections/two-bar-chart.svg | 2 +- .../CollectionOfTheMonthWinners.blocks.tsx | 344 ++++++++++++++++++ .../CollectionOfTheMonthWinners.test.tsx | 93 +++++ .../CollectionOfTheMonthWinners.tsx | 186 +--------- resources/js/I18n/Locales/en.json | 2 +- .../Collections/CollectionOfTheMonth.tsx | 99 +++++ resources/js/images.ts | 12 + routes/web.php | 2 + .../CollectionOfTheMonthControllerTest.php | 27 ++ 28 files changed, 672 insertions(+), 187 deletions(-) create mode 100644 app/Http/Controllers/CollectionOfTheMonthController.php create mode 100644 resources/images/collections/com-bg-dark.svg create mode 100644 resources/images/collections/com-bg.svg create mode 100644 resources/images/collections/one-bar-chart-lg-dark.svg create mode 100644 resources/images/collections/one-bar-chart-lg.svg create mode 100644 resources/images/collections/three-bar-chart-lg-dark.svg create mode 100644 resources/images/collections/three-bar-chart-lg.svg create mode 100644 resources/images/collections/two-bar-chart-lg-dark.svg create mode 100644 resources/images/collections/two-bar-chart-lg.svg create mode 100644 resources/js/Components/Collections/CollectionOfTheMonthWinners/CollectionOfTheMonthWinners.blocks.tsx create mode 100644 resources/js/Pages/Collections/CollectionOfTheMonth.tsx create mode 100644 tests/App/Http/Controllers/CollectionOfTheMonthControllerTest.php diff --git a/app/Http/Controllers/CollectionOfTheMonthController.php b/app/Http/Controllers/CollectionOfTheMonthController.php new file mode 100644 index 000000000..81cdfda0f --- /dev/null +++ b/app/Http/Controllers/CollectionOfTheMonthController.php @@ -0,0 +1,41 @@ + fn () => $this->getCollections(), + 'allowsGuests' => true, + 'title' => fn () => trans('metatags.collections.of-the-month.title', [ + 'month' => Carbon::now()->startOfMonth()->subMonth()->format('F Y'), + ]), + ]); + } + + /** + * @return DataCollection + */ + private function getCollections(): DataCollection + { + // @TODO: use real data (see https://github.com/ArdentHQ/dashbrd/pull/540) + $collections = CollectionOfTheMonthData::collection(Collection::query()->inRandomOrder()->limit(3)->get()); + + if ($collections->count() === 0) { + abort(404); + } + + return $collections; + } +} diff --git a/app/Jobs/FetchCollectionBannerBatch.php b/app/Jobs/FetchCollectionBannerBatch.php index 2e45fa201..4c6fcd3f5 100644 --- a/app/Jobs/FetchCollectionBannerBatch.php +++ b/app/Jobs/FetchCollectionBannerBatch.php @@ -51,7 +51,7 @@ public function handle(): void $collections = Collection::query() ->whereIn('address', $metadata->pluck('contractAddress')) - ->select(['id', 'address', 'extra_attributes']) + ->select(['id', 'name', 'address', 'extra_attributes']) ->get(); $metadata diff --git a/app/Models/Collection.php b/app/Models/Collection.php index dec540a5a..b7274dd43 100644 --- a/app/Models/Collection.php +++ b/app/Models/Collection.php @@ -90,10 +90,21 @@ public function floorPriceToken(): HasOne public function getSlugOptions(): SlugOptions { return SlugOptions::create() - ->generateSlugsFrom('name') + ->generateSlugsFrom(fn (self $model) => $this->preventForbiddenSlugs($model)) ->saveSlugsTo('slug'); } + private function preventForbiddenSlugs(self $model): string + { + $forbidden = ['collection-of-the-month']; + + if (in_array(Str::slug($model->name), $forbidden, true)) { + return $model->name.' Collection'; + } + + return $model->name; + } + /** * @return HasMany */ diff --git a/lang/en/metatags.php b/lang/en/metatags.php index b6e7ee6dc..9ea342057 100644 --- a/lang/en/metatags.php +++ b/lang/en/metatags.php @@ -61,6 +61,9 @@ 'description' => 'Immerse yourself in the intricate details of :name collection, featuring remarkable digital assets. Start your NFT journey today!', 'image' => '/images/meta/nft-collection.png', ], + 'of-the-month' => [ + 'title' => 'Collection of the Month :month | Dashbrd', + ], ], 'my-collections' => [ diff --git a/lang/en/pages.php b/lang/en/pages.php index e0939fa6e..136ec58fa 100644 --- a/lang/en/pages.php +++ b/lang/en/pages.php @@ -77,6 +77,7 @@ ], ], 'collection_of_the_month' => [ + 'title' => 'Collection of the Month :month', 'winners_month' => 'Winners: :month', 'vote_for_next_months_winners' => 'Vote now for next month\'s winners', 'view_previous_winners' => 'View Previous Winners', @@ -88,6 +89,10 @@ 'x_text' => 'I voted for :collection for collection of the month @dashbrdapp! Go show your support!', ], 'vote_success' => 'Your vote has been successfully submitted', + 'content_to_be_added' => [ + 'title' => 'Content to be added', + 'description' => 'There will be a list of previous month winners here soon!', + ], 'has_won_already' => 'This collection has already
    won Collection of the Month.', ], 'articles' => [ diff --git a/resources/css/_collection.css b/resources/css/_collection.css index 1870ebfb0..0c684bf99 100644 --- a/resources/css/_collection.css +++ b/resources/css/_collection.css @@ -39,3 +39,13 @@ .dark .collection-of-the-month-mobile { @apply bg-theme-dark-800 bg-none; } + +.collection-of-the-month-overview { + background-image: url("../images/collections/com-bg.svg"); + @apply bg-theme-hint-50 bg-cover bg-center bg-no-repeat; +} + +.dark .collection-of-the-month-overview { + background-image: url("../images/collections/com-bg-dark.svg"); + @apply bg-theme-dark-800; +} diff --git a/resources/images/collections/com-bg-dark.svg b/resources/images/collections/com-bg-dark.svg new file mode 100644 index 000000000..87aca9c25 --- /dev/null +++ b/resources/images/collections/com-bg-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/images/collections/com-bg.svg b/resources/images/collections/com-bg.svg new file mode 100644 index 000000000..cde294763 --- /dev/null +++ b/resources/images/collections/com-bg.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/images/collections/one-bar-chart-dark.svg b/resources/images/collections/one-bar-chart-dark.svg index da0af20a1..e26e327b0 100644 --- a/resources/images/collections/one-bar-chart-dark.svg +++ b/resources/images/collections/one-bar-chart-dark.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/resources/images/collections/one-bar-chart-lg-dark.svg b/resources/images/collections/one-bar-chart-lg-dark.svg new file mode 100644 index 000000000..6cdaca824 --- /dev/null +++ b/resources/images/collections/one-bar-chart-lg-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/images/collections/one-bar-chart-lg.svg b/resources/images/collections/one-bar-chart-lg.svg new file mode 100644 index 000000000..46c29af87 --- /dev/null +++ b/resources/images/collections/one-bar-chart-lg.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/images/collections/one-bar-chart.svg b/resources/images/collections/one-bar-chart.svg index f5528e442..d73943321 100644 --- a/resources/images/collections/one-bar-chart.svg +++ b/resources/images/collections/one-bar-chart.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/resources/images/collections/three-bar-chart-dark.svg b/resources/images/collections/three-bar-chart-dark.svg index 5e79b07a4..37240ee28 100644 --- a/resources/images/collections/three-bar-chart-dark.svg +++ b/resources/images/collections/three-bar-chart-dark.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/resources/images/collections/three-bar-chart-lg-dark.svg b/resources/images/collections/three-bar-chart-lg-dark.svg new file mode 100644 index 000000000..3d05491e9 --- /dev/null +++ b/resources/images/collections/three-bar-chart-lg-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/images/collections/three-bar-chart-lg.svg b/resources/images/collections/three-bar-chart-lg.svg new file mode 100644 index 000000000..d220320c5 --- /dev/null +++ b/resources/images/collections/three-bar-chart-lg.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/images/collections/three-bar-chart.svg b/resources/images/collections/three-bar-chart.svg index c69125f9d..55d1cefa2 100644 --- a/resources/images/collections/three-bar-chart.svg +++ b/resources/images/collections/three-bar-chart.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/resources/images/collections/two-bar-chart-dark.svg b/resources/images/collections/two-bar-chart-dark.svg index fbec0ad97..ade07c1d1 100644 --- a/resources/images/collections/two-bar-chart-dark.svg +++ b/resources/images/collections/two-bar-chart-dark.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/resources/images/collections/two-bar-chart-lg-dark.svg b/resources/images/collections/two-bar-chart-lg-dark.svg new file mode 100644 index 000000000..d5a64dc7d --- /dev/null +++ b/resources/images/collections/two-bar-chart-lg-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/images/collections/two-bar-chart-lg.svg b/resources/images/collections/two-bar-chart-lg.svg new file mode 100644 index 000000000..d581ad6e6 --- /dev/null +++ b/resources/images/collections/two-bar-chart-lg.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/images/collections/two-bar-chart.svg b/resources/images/collections/two-bar-chart.svg index 61b1eacc2..276dd4932 100644 --- a/resources/images/collections/two-bar-chart.svg +++ b/resources/images/collections/two-bar-chart.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/resources/js/Components/Collections/CollectionOfTheMonthWinners/CollectionOfTheMonthWinners.blocks.tsx b/resources/js/Components/Collections/CollectionOfTheMonthWinners/CollectionOfTheMonthWinners.blocks.tsx new file mode 100644 index 000000000..9a80aaace --- /dev/null +++ b/resources/js/Components/Collections/CollectionOfTheMonthWinners/CollectionOfTheMonthWinners.blocks.tsx @@ -0,0 +1,344 @@ +import cn from "classnames"; +import React from "react"; +import { useTranslation } from "react-i18next"; +import { Img } from "@/Components/Image"; +import { Link } from "@/Components/Link"; +import { useDarkModeContext } from "@/Contexts/DarkModeContext"; +import { + CrownBadge, + CrownBadgeDark, + OneBarChart, + OneBarChartDark, + OneBarChartLg, + OneBarChartLgDark, + ThreeBarChart, + ThreeBarChartDark, + ThreeBarChartLg, + ThreeBarChartLgDark, + TwoBarChart, + TwoBarChartDark, + TwoBarChartLg, + TwoBarChartLgDark, + VoteNextMonthWinners, + VoteNextMonthWinnersDark, +} from "@/images"; +import { formatNumbershort } from "@/Utils/format-number"; + +export const CollectionOfTheMonthWinnersChartWrapper = ({ + children, + chart, + className, +}: { + children: JSX.Element[] | JSX.Element; + chart: JSX.Element; + className?: string; +}): JSX.Element => ( +
    +
    {chart}
    +
    {children}
    +
    +); +export const CollectionOfTheMonthWinnersWinnerWrapper = ({ + children, + className, +}: { + children: JSX.Element[] | JSX.Element; + className?: string; +}): JSX.Element =>
    {children}
    ; + +export const CollectionOfTheMonthWinnersCollectionAvatar = ({ + image, + large, +}: { + image: string | null; + large: boolean; +}): JSX.Element => ( + +); + +export const CollectionOfTheMonthWinnersChart = ({ + large, + totalWinners, +}: { + large: boolean; + totalWinners: 1 | 2 | 3; +}): JSX.Element => { + const { isDark } = useDarkModeContext(); + + const charts = { + 1: { + large: { + dark: , + light: , + }, + small: { + dark: , + light: , + }, + }, + 2: { + large: { + dark: , + light: , + }, + small: { + dark: , + light: , + }, + }, + 3: { + large: { + dark: , + light: , + }, + small: { + dark: , + light: , + }, + }, + }; + + if (large) { + return charts[totalWinners].large[isDark ? "dark" : "light"]; + } + + return charts[totalWinners].small[isDark ? "dark" : "light"]; +}; + +export const CollectionOfTheMonthWinnersVotesLabel = ({ + large, + votes, + className, +}: { + large: boolean; + votes: number; + className?: string; +}): JSX.Element => { + const { t } = useTranslation(); + + return ( + + {formatNumbershort(votes)} +
    {t("common.votes")} +
    + ); +}; + +export const WinnersChart = ({ + winners, + large = false, +}: { + winners: App.Data.Collections.CollectionOfTheMonthData[]; + large?: boolean; +}): JSX.Element => { + const { isDark } = useDarkModeContext(); + + if (winners.length === 0) { + if (isDark) { + return ; + } + + return ; + } + + const totalWinners: 1 | 2 | 3 = winners.length as 1 | 2 | 3; + + const chart = ( + + ); + + if (totalWinners === 1) { + return ( + + + + + + + + ); + } + + if (totalWinners === 2) { + return ( + + {winners.map((winner, index) => ( + + + + + + ))} + + ); + } + + return ( + + {[winners[1], winners[0], winners[2]].map((winner, index) => ( + + + + + + ))} + + ); +}; + +export const WinnersChartMobile = ({ + winner, + currentMonth, +}: { + winner: App.Data.Collections.CollectionOfTheMonthData; + currentMonth?: string; +}): JSX.Element => { + const { isDark } = useDarkModeContext(); + const { t } = useTranslation(); + + return ( +
    +
    +
    +
    +
    + +
    + +
    + {isDark ? : } +
    +
    + + + {t("pages.collections.collection_of_the_month.winners_month", { + month: currentMonth, + })} + +
    + + + {t("pages.collections.collection_of_the_month.view_previous_winners")} + +
    +
    + ); +}; diff --git a/resources/js/Components/Collections/CollectionOfTheMonthWinners/CollectionOfTheMonthWinners.test.tsx b/resources/js/Components/Collections/CollectionOfTheMonthWinners/CollectionOfTheMonthWinners.test.tsx index 38c545368..1a1fafc11 100644 --- a/resources/js/Components/Collections/CollectionOfTheMonthWinners/CollectionOfTheMonthWinners.test.tsx +++ b/resources/js/Components/Collections/CollectionOfTheMonthWinners/CollectionOfTheMonthWinners.test.tsx @@ -1,5 +1,6 @@ import React from "react"; import { CollectionOfTheMonthWinners } from "./CollectionOfTheMonthWinners"; +import { WinnersChart } from "./CollectionOfTheMonthWinners.blocks"; import * as useDarkModeContext from "@/Contexts/DarkModeContext"; import CollectionOfTheMonthFactory from "@/Tests/Factories/Collections/CollectionOfTheMonthFactory"; import { render, screen } from "@/Tests/testing-library"; @@ -57,3 +58,95 @@ describe("CollectionOfTheMonthWinners", () => { useDarkModeContextSpy.mockRestore(); }); }); + +describe("WinnersChart", () => { + it("should render without winners", () => { + const useDarkModeContextSpy = vi + .spyOn(useDarkModeContext, "useDarkModeContext") + .mockReturnValue({ isDark: false, toggleDarkMode: vi.fn() }); + + render(); + + expect(screen.queryByTestId("WinnersChart")).not.toBeInTheDocument(); + + useDarkModeContextSpy.mockRestore(); + }); + + it("should render without winners in dark mode", () => { + const useDarkModeContextSpy = vi + .spyOn(useDarkModeContext, "useDarkModeContext") + .mockReturnValue({ isDark: true, toggleDarkMode: vi.fn() }); + + render(); + + expect(screen.queryByTestId("WinnersChart")).not.toBeInTheDocument(); + + useDarkModeContextSpy.mockRestore(); + }); + + it.each([1, 2, 3])("should render with %s winners", (amount) => { + const collections = new CollectionOfTheMonthFactory().createMany(amount); + + const useDarkModeContextSpy = vi + .spyOn(useDarkModeContext, "useDarkModeContext") + .mockReturnValue({ isDark: false, toggleDarkMode: vi.fn() }); + + render(); + + expect(screen.getByTestId("WinnersChart")).toBeInTheDocument(); + + useDarkModeContextSpy.mockRestore(); + }); + + it.each([1, 2, 3])("should render with %s winners in dark mode", (amount) => { + const collections = new CollectionOfTheMonthFactory().createMany(amount); + + const useDarkModeContextSpy = vi + .spyOn(useDarkModeContext, "useDarkModeContext") + .mockReturnValue({ isDark: true, toggleDarkMode: vi.fn() }); + + render(); + + expect(screen.getByTestId("WinnersChart")).toBeInTheDocument(); + + useDarkModeContextSpy.mockRestore(); + }); + + it.each([1, 2, 3])("should render large version with %s winners", (amount) => { + const collections = new CollectionOfTheMonthFactory().createMany(amount); + + const useDarkModeContextSpy = vi + .spyOn(useDarkModeContext, "useDarkModeContext") + .mockReturnValue({ isDark: false, toggleDarkMode: vi.fn() }); + + render( + , + ); + + expect(screen.getByTestId("WinnersChart")).toBeInTheDocument(); + + useDarkModeContextSpy.mockRestore(); + }); + + it.each([1, 2, 3])("should render large version with %s winners in dark mode", (amount) => { + const collections = new CollectionOfTheMonthFactory().createMany(amount); + + const useDarkModeContextSpy = vi + .spyOn(useDarkModeContext, "useDarkModeContext") + .mockReturnValue({ isDark: true, toggleDarkMode: vi.fn() }); + + render( + , + ); + + expect(screen.getByTestId("WinnersChart")).toBeInTheDocument(); + + useDarkModeContextSpy.mockRestore(); + }); +}); diff --git a/resources/js/Components/Collections/CollectionOfTheMonthWinners/CollectionOfTheMonthWinners.tsx b/resources/js/Components/Collections/CollectionOfTheMonthWinners/CollectionOfTheMonthWinners.tsx index cb9f9495c..08b5e96cd 100644 --- a/resources/js/Components/Collections/CollectionOfTheMonthWinners/CollectionOfTheMonthWinners.tsx +++ b/resources/js/Components/Collections/CollectionOfTheMonthWinners/CollectionOfTheMonthWinners.tsx @@ -2,184 +2,9 @@ import cn from "classnames"; import React from "react"; import { useTranslation } from "react-i18next"; +import { WinnersChart, WinnersChartMobile } from "./CollectionOfTheMonthWinners.blocks"; import { Heading } from "@/Components/Heading"; -import { Img } from "@/Components/Image"; import { Link } from "@/Components/Link"; -import { useDarkModeContext } from "@/Contexts/DarkModeContext"; -import { - CrownBadge, - CrownBadgeDark, - OneBarChart, - OneBarChartDark, - ThreeBarChart, - ThreeBarChartDark, - TwoBarChart, - TwoBarChartDark, - VoteNextMonthWinners, - VoteNextMonthWinnersDark, -} from "@/images"; -import { formatNumbershort } from "@/Utils/format-number"; - -const WinnersChartWrapper = ({ - children, - chart, - className, -}: { - children: JSX.Element[] | JSX.Element; - chart: JSX.Element; - className?: string; -}): JSX.Element => ( -
    -
    {chart}
    -
    {children}
    -
    -); - -const WinnersChart = ({ winners }: { winners: App.Data.Collections.CollectionOfTheMonthData[] }): JSX.Element => { - const { t } = useTranslation(); - const { isDark } = useDarkModeContext(); - - if (winners.length === 1) { - return ( - : } - > -
    - - - - {formatNumbershort(winners[0].votes)} -
    {t("common.votes")} -
    -
    -
    - ); - } - - if (winners.length === 2) { - return ( - : } - > - {winners.map((winner, index) => ( -
    - - - - {formatNumbershort(winner.votes)} -
    {t("common.votes")} -
    -
    - ))} -
    - ); - } - - if (winners.length === 3) { - return ( - : } - > - {[winners[1], winners[0], winners[2]].map((winner, index) => ( -
    - - - - {formatNumbershort(winner.votes)} -
    {t("common.votes")} -
    -
    - ))} -
    - ); - } - - if (isDark) { - return ; - } - - return ; -}; - -const WinnersChartMobile = ({ - winner, - currentMonth, -}: { - winner: App.Data.Collections.CollectionOfTheMonthData; - currentMonth?: string; -}): JSX.Element => { - const { isDark } = useDarkModeContext(); - const { t } = useTranslation(); - - return ( -
    -
    -
    -
    -
    - -
    - -
    - {isDark ? : } -
    -
    - - - {t("pages.collections.collection_of_the_month.winners_month", { - month: currentMonth, - })} - -
    - - - {t("pages.collections.collection_of_the_month.view_previous_winners")} - -
    -
    - ); -}; export const CollectionOfTheMonthWinners = ({ className, @@ -224,7 +49,12 @@ export const CollectionOfTheMonthWinners = ({
    -
    +
    0, + "items-center": winners.length === 0, + })} + >
    @@ -233,7 +63,7 @@ export const CollectionOfTheMonthWinners = ({ {t("pages.collections.collection_of_the_month.view_previous_winners")} diff --git a/resources/js/I18n/Locales/en.json b/resources/js/I18n/Locales/en.json index 157b708bd..0197a8933 100644 --- a/resources/js/I18n/Locales/en.json +++ b/resources/js/I18n/Locales/en.json @@ -1 +1 @@ -{"auth.welcome":"Welcome to Dashbrd","auth.logged_in":"You're logged in!","auth.log_out":"Log out","auth.failed":"These credentials do not match our records.","auth.session_timeout":"Your session has timed out. Please refresh the page and try connecting your account again.","auth.session_timeout_modal":"Seems like your session has timed out. Please connnect your wallet again.","auth.password":"The provided password is incorrect.","auth.throttle":"Too many login attempts. Please try again in {{seconds}} seconds.","auth.wallet.connecting":"Connecting …","auth.wallet.waiting_for_signature":"Waiting for Signature …","auth.wallet.switching_wallet":"Switching Wallet …","auth.wallet.connect":"Connect Wallet","auth.wallet.connect_long":"Connect Your Wallet to Get Started","auth.wallet.sign_subtitle":"Connect Your Wallet to Continue","auth.wallet.disconnect":"Disconnect Wallet","auth.wallet.install":"Install MetaMask","auth.wallet.install_long":"Install MetaMask to Get Started","auth.wallet.sign":"Sign Message","auth.wallet.sign_message":"Welcome to Dashbrd. In order to login, sign this message with your wallet. It doesn't cost you anything!\n\nSigning ID (you can ignore this): {{nonce}}","auth.wallet.connect_subtitle":"Click on the MetaMask icon in your browser to confirm the action and connect your wallet.","auth.wallet.requires_signature":"In order to prevent impersonation, we require a signature to perform this action. This signature is only a signed message and does not give any access to your wallet.","auth.errors.metamask.no_account":"No account found. Please connect your wallet and try again.","auth.errors.metamask.generic":"Connection attempt error. Please retry and follow the steps to connect your wallet.","auth.errors.metamask.invalid_network":"Please switch to Polygon or Ethereum Mainnet in your MetaMask plugin to connect to Dashbrd.","auth.errors.metamask.provider_missing":"You don't have MetaMask installed in your browser. Please install and try again.","auth.errors.metamask.user_rejected":"It looks like you cancelled signing of the authentication message. Please try again.","auth.errors.metamask.provider_not_set":"Ethereum provider is not set","auth.validation.wallet_login_failed":"There was a problem trying to verify your signature. Please try again.","auth.validation.invalid_address":"Your wallet address is invalid. Please try again.","auth.validation.invalid_signature":"Signature is invalid. Please try again.","auth.validation.invalid_network":"Please switch to Polygon or Ethereum Mainnet in your MetaMask plugin to connect to Dashbrd.","common.author":"Author","common.add":"Add","common.amount":"Amount","common.balance":"Balance","common.cancel":"Cancel","common.delete":"Delete","common.edit":"Edit","common.confirm":"Confirm","common.connect":"Connect","common.continue":"Continue","common.done":"Done","common.filter":"Filter","common.items":"Items","common.receive":"Receive","common.received":"Received","common.retry":"Retry","common.records":"Records","common.save":"Save","common.send":"Send","common.sent":"Sent","common.show":"Show","common.searching":"Searching...","common.other":"Other","common.owned":"Owned","common.token":"Token","common.tokens":"Tokens","common.wallet":"Wallet","common.pending":"Pending","common.publish":"Publish","common.published":"Published","common.empty":"Empty","common.your_address":"Your Address","common.warning":"Warning","common.my_address":"My Address","common.my_wallet":"My Wallet","common.my_collections":"My Collections","common.my_balance":"My Balance","common.na":"N/A","common.simple_plural_without_data":"One comment|Many comments","common.simple_plural_with_data":"{{count}} comment|{{count}} comments","common.advanced_plural_without_data":"{0} no comments yet|{1} 1 comment|[2,*] Many comments","common.advanced_plural_with_data":"{0} no comments yet|{1} 1 comment|[2,*] {{count}} comments","common.copy_clipboard":"Copy to Clipboard","common.copy":"Copy","common.download":"Download","common.zoom":"Zoom","common.my_collection":"My Collection","common.max":"Max","common.chain":"Chain","common.copied":"Copied!","common.coming_soon":"Coming Soon","common.more_details":"More Details","common.close":"Close","common.close_toast":"Close toast","common.loading":"Loading","common.price":"Price","common.articles":"Articles","common.most_popular":"Most Popular","common.market_cap":"Market Cap","common.volume":"Volume","common.volume_frequency":"Volume {{frequency}}","common.value":"Value","common.last_n_days":"Last {{count}} Days","common.details":"Details","common.view_all":"View All","common.view_more_on_polygonscan":"View More on Polygonscan","common.view_more_on_etherscan":"View More on Etherscan","common.view_nft_on_etherscan":"View NFT on Etherscan","common.view_nft_on_polygonscan":"View NFT on Polygonscan","common.view_nft_on_goerli_tesnet":"View NFT on Goerli Testnet Explorer","common.view_nft_on_mumbai_tesnet":"View NFT on Mumbai Testnet Explorer","common.polygonscan":"Polygonscan","common.etherscan":"Etherscan","common.featured":"Featured","common.floor_price":"Floor Price","common.floor":"Floor","common.supply":"Supply","common.owners":"Owners","common.created":"Created","common.nft":"NFT","common.collection":"Collection","common.collections":"Collections","common.gallery":"Gallery","common.basic_gallery":"Basic Gallery","common.gallery_name":"Gallery Name","common.create_gallery":"Create Gallery","common.external_link":"External Link","common.follow_link":"Follow Link","common.cover":"Cover","common.template":"Template","common.page":"Page","common.polygon":"Polygon","common.ethereum":"Ethereum","common.mumbai":"Mumbai","common.goerli":"Goerli","common.of":"of","common.pagination_input_placeholder":"Enter the page number","common.pagination_input_placeholder_mobile":"Page number","common.nft_count":"{0} {{count}} NFTs|{1} {{count}} NFT|[2,*] {{count}} NFTs","common.nft_gallery":"NFT Gallery","common.unable_to_retrieve_image":"Unable to retrieve your NFT image at this time","common.optional":"Optional","common.selected":"Selected","common.select":"Select","common.preview":"Preview","common.image_size_error":"Image size must not exceed 2MB","common.image_dimensions_error":"Image dimensions must exceed 287px x 190px","common.write_to_confirm":"Write {{word}} to confirm","common.n_hours":"{0} {{count}} hour|{1} {{count}} hour|[2,*] {{count}} hours","common.n_minutes":"{0} {{count}} minute|{1} {{count}} minute|[2,*] {{count}} minutes","common.report":"Report","common.nfts":"NFTs","common.n_nfts":"{0}NFTs|{1}NFT|[2,*]NFTs","common.n_collections":"{0}collections|{1}collection|[2,*]collections","common.back":"Back","common.back_to":"Back to","common.name":"Name","common.type":"Type","common.from":"From","common.to":"To","common.sale_price":"Sale Price","common.recent_activity":"Recent Activity","common.time":"Time","common.datetime.few_seconds_ago":"A few seconds ago","common.datetime.minutes_ago":"{0} Less than a minute ago|{1} A minute ago|[2,*] {{count}} minutes ago","common.datetime.hours_ago":"{0} Less than an hour ago|{1} An hour ago|[2,*] {{count}} hours ago","common.datetime.days_ago":"{0} Less than a day ago|{1} A day ago|[2,*] {{count}} days ago","common.datetime.weeks_ago":"{0} Less than a week ago|{1} A week ago|[2,*] {{count}} weeks ago","common.datetime.months_ago":"{0} Less than a month ago|{1} A month ago|[2,*] {{count}} months ago","common.datetime.years_ago":"{0} Less than a year ago|{1} A year ago|[2,*] {{count}} years ago","common.no_traits_found":"No traits found.","common.empty_transactions":"You don't have any transactions yet. Once transactions have been made, they will show up here.","common.error":"Error","common.refresh":"Refresh","common.refresh_metadata":"Refresh Metadata","common.refreshing_metadata":"Refreshing Metadata... Please check back later.","common.refreshing_activity":"Refreshing Activity... Please check back later.","common.pending_confirmation":"Pending Confirmation","common.confirmed_transaction":"Confirmed Transaction","common.transaction_error":"Transaction Error","common.transaction_error_description_first_part":"Your transaction encountered an error. View this transaction on","common.transaction_error_description_second_part":"for more details.","common.home":"Home","common.contact":"Contact","common.menu":"Menu","common.website":"Website","common.twitter":"Twitter","common.discord":"Discord","common.facebook":"Facebook","common.reddit":"Reddit","common.x":"X","common.sort":"Sort","common.drafts":"Drafts","common.draft":"Draft","common.delete_draft":"Delete Draft","common.share_on":"Share on {{platform}}","common.top":"Top","common.all_chains":"All chains","common.votes":"Votes","common.vote":"Vote","common.vol":"Vol","footer.copyright":"{{year}} © Dashbrd. All rights reserved.","footer.all_rights_reserved":"All rights reserved","footer.privacy_policy":"Privacy Policy","footer.terms_of_service":"Terms of Service","footer.powered_by":"Powered by","format.fiat":"{{ value, currency }}","format.number":"{{ value, number }}","metatags.home.title":"Dashbrd | Web3 Portfolio Management Made Simple","metatags.home.description":"Simplify your Web3 journey with Dashbrd. Manage your portfolio of tokens, NFTs, and other digital collectibles across the Ethereum and Polygon blockchains.","metatags.home.image":"/images/meta/home.png","metatags.error.title":"Error {{code}} | Dashbrd","metatags.wallet.title":"My Wallet | Dashbrd","metatags.galleries.title":"Top NFT Galleries | Dashbrd","metatags.galleries.image":"/images/meta/nft-galleries.png","metatags.galleries.description":"Explore user published NFT galleries to find custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.most_popular.title":"Most Popular Galleries | Dashbrd","metatags.galleries.most_popular.image":"/images/meta/most-popular-nft-galleries.png","metatags.galleries.most_popular.description":"Explore and discover Most Popular NFT Galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.newest.title":"Newest Galleries | Dashbrd","metatags.galleries.newest.image":"/images/meta/newest-nft-galleries.png","metatags.galleries.newest.description":"Explore and discover most recent NFT galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More","metatags.galleries.most_valuable.title":"Most Valuable Galleries | Dashbrd","metatags.galleries.most_valuable.image":"/images/meta/most-valuable-nft-galleries.png","metatags.galleries.most_valuable.description":"Explore and discover Most Valuable NFT Galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.view.title":"{{name}} | Dashbrd","metatags.galleries.view.description":"{{name}} | A Curated NFT Gallery at Dashbrd","metatags.galleries.view.image":"/images/meta/nft-gallery.png","metatags.my_galleries.title":"My Galleries | Dashbrd","metatags.my_galleries.title_draft":"My Draft Galleries | Dashbrd","metatags.my_galleries.create.title":"Create Gallery | Dashbrd","metatags.my_galleries.edit.title":"Edit {{name}} | Dashbrd","metatags.collections.title":"Collections | Dashbrd","metatags.collections.view.title":"{{name}} Collection | Dashbrd","metatags.collections.view.description":"Immerse yourself in the intricate details of {{name}} collection, featuring remarkable digital assets. Start your NFT journey today!","metatags.collections.view.image":"/images/meta/nft-collection.png","metatags.my-collections.title":"My Collections | Dashbrd","metatags.nfts.view.title":"{{nft}} NFT | Dashbrd","metatags.nfts.view.description":"Uncover the complete story of {{nft}} NFT from the {{collection}} collection, delving into its unique attributes and distinctive features.","metatags.nfts.view.image":"/images/meta/nft-details.png","metatags.settings.title":"Settings | Dashbrd","metatags.articles.title":"Articles | Dashbrd","metatags.articles.view.title":"{{title}} | Dashbrd","metatags.login.title":"Login | Dashbrd","metatags.privacy_policy.title":"Privacy Policy | Dashbrd","metatags.privacy_policy.description":"Dashbrd’s privacy policy outlines the information we collect and explains your choices surrounding how we use information about you.","metatags.terms_of_service.title":"Terms of Service | Dashbrd","metatags.terms_of_service.description":"These Terms of Service cover your use and access to services, products or websites of Dashbrd.","metatags.cookie_policy.title":"Cookie Policy | Dashbrd","metatags.cookie_policy.description":"Dashbrd uses cookies to make the website more user-friendly. Find out about the main types of cookies we use, and what we use them for.","metatags.welcome.title":"Welcome to Dashbrd | Web3 Simplified","pages.onboarding.title":"Get Started","pages.onboarding.heading":"Your monkeys were bored and ran off, we are trying to round them up.","pages.onboarding.message":"We are setting up your account. This process usually takes just a few minutes, but can take up to 15 minutes.","pages.error.heading":"Oops, something went wrong ...","pages.error.message":"Please try again or get in touch if the issue persists.","pages.maintenance.title":"Dashbrd is currently down for scheduled maintenance.","pages.maintenance.description":"We expect to be back soon. Thanks for your patience.","pages.dashboard.title":"My Wallet","pages.dashboard.breakdown.title":"Portfolio Breakdown","pages.dashboard.line_chart.data_error":"Could not load chart data","pages.articles.title":"Articles","pages.articles.featured_collections":"Featured Collections","pages.articles.placeholder_more_soon":"More Soon","pages.articles.no_articles":"No articles have been published yet. Please check back later!","pages.articles.header_title":"Explore our collection of","pages.articles.header_suffix_one":"published article","pages.articles.header_suffix_other":"published articles","pages.articles.audio_version":"Audio version","pages.articles.consists_of_collections":"{0} This article highlights {{count}} collections|{1} This article highlights {{count}} collection|[2,*] This article highlights {{count}} collections","pages.collections.title":"Collections","pages.collections.collections":"Collections","pages.collections.popular_collections":"Popular Collections","pages.collections.collection_value":"Collection Value","pages.collections.nfts_owned":"NFTs Owned","pages.collections.header_title":"You own <0>{{nftsCount}} {{nfts}} across <0>{{collectionsCount}} {{collections}}, worth about <0><1>{{worth}}","pages.collections.search_placeholder":"Search by Collection","pages.collections.properties":"Properties","pages.collections.collections_network":"Collections Network","pages.collections.property_search_placeholder":"Feature Search","pages.collections.floor_price":"Floor Price","pages.collections.value":"Value","pages.collections.rarity":"Rarity","pages.collections.report":"Report","pages.collections.hide_collection":"Hide Collection","pages.collections.unhide_collection":"Unhide Collection","pages.collections.no_collections":"You do not own any NFTs yet. Once you do they will be shown here.","pages.collections.all_collections_hidden":"You have hidden all your collections. Unhide and they will appear here.","pages.collections.about_collection":"About Collection","pages.collections.show_hidden":"Show Hidden","pages.collections.show_my_collection":"Show My Collection","pages.collections.owned":"Owned","pages.collections.activities.loading_activities":"We're fetching Activity for this NFT, please hang tight, this can take a while.","pages.collections.activities.loading_activities_collection":"We're fetching Activity for this collection, please hang tight, this can take a while.","pages.collections.activities.ignores_activities":"We don't support activity history for this collection yet.","pages.collections.activities.no_activity":"This collection does not have any activity yet.","pages.collections.activities.types.LABEL_MINT":"Mint","pages.collections.activities.types.LABEL_TRANSFER":"Transfer","pages.collections.activities.types.LABEL_SALE":"Sale","pages.collections.activities.types.LABEL_BURN":"Burn","pages.collections.collection_of_the_month.winners_month":"Winners: {{month}}","pages.collections.collection_of_the_month.vote_for_next_months_winners":"Vote now for next month's winners","pages.collections.collection_of_the_month.view_previous_winners":"View Previous Winners","pages.collections.collection_of_the_month.vote_received_modal.title":"Vote Received","pages.collections.collection_of_the_month.vote_received_modal.description":"Your vote has been recorded. Share your vote on X and let everyone know!","pages.collections.collection_of_the_month.vote_received_modal.share_vote":"Share Vote","pages.collections.collection_of_the_month.vote_received_modal.img_alt":"I voted for Dashbrd Project of the Month","pages.collections.collection_of_the_month.vote_received_modal.x_text":"I voted for {{collection}} for collection of the month @dashbrdapp! Go show your support!","pages.collections.collection_of_the_month.vote_success":"Your vote has been successfully submitted","pages.collections.collection_of_the_month.has_won_already":"This collection has already
    won Collection of the Month.","pages.collections.articles.heading":"Latest NFT News & Features","pages.collections.articles.no_articles":"No articles have been linked to this collection as of now.","pages.collections.articles.no_articles_with_filters":"We could not find any articles matching your search criteria, please try again!","pages.collections.articles.search_placeholder":"Search in Articles","pages.collections.articles.sort_latest":"Latest","pages.collections.articles.sort_popularity":"Most Popular","pages.collections.search.loading_results":"Loading results...","pages.collections.search.no_results":"We could not find anything matching your search criteria, please try again!","pages.collections.search.no_results_with_filters":"We could not find anything matching your filters, please try again!","pages.collections.search.no_results_ownership":"You do not own any NFTs in this collection","pages.collections.search.error":"Could not load search results. Please try again later.","pages.collections.vote.vote_for_top_collection":"Vote for Top Collection of the Month","pages.collections.vote.vote":"Vote","pages.collections.vote.time_left":"Time Left","pages.collections.vote.or_nominate_collection":"Or nominate a collection","pages.collections.vote.nominate_collection":"Nominate a collection","pages.collections.vote.vote_to_reveal":"Vote to reveal data","pages.collections.vote.already_voted":"You’ve already nominated. Come back next month!","pages.collections.sorting.token_number":"Token Number","pages.collections.sorting.recently_received":"Recently Received","pages.collections.sorting.recently_created":"Recently Created","pages.collections.sorting.oldest_collection":"Oldest Collection","pages.collections.traits.description":"List of NFT traits by % of occurrence in the collection","pages.collections.traits.no_traits":"No Properties can be found for this NFT","pages.collections.menu.collection":"Collection","pages.collections.menu.articles":"Articles","pages.collections.menu.activity":"Activity","pages.collections.hidden_modal.collection_hidden":"Collection Hidden","pages.collections.hidden_modal.description":"This collection is currently set to Hidden. Are you sure you want to unhide this collection? You can\n reset the collection to hidden from the collection menu.","pages.collections.hidden_modal.unhide":"Unhide","pages.collections.hidden_modal.error":"Something went wrong. Please try again.","pages.collections.external_modal.you_wish_continue":"You are about to leave Dashbrd to an external website. Dashbrd has no control over the content of\n this site. Are you sure you wish to continue?","pages.collections.external_modal.not_show":"Do not show this message again.","pages.collections.refresh.title":"Refresh your collection","pages.collections.refresh.notice":"You can refresh data every 15 minutes.","pages.collections.refresh.notice_wait":"Please wait. You can refresh data every 15 minutes.","pages.collections.refresh.toast":"We're updating information for your collection.","pages.collections.featured.title":"Featured Collections","pages.collections.featured.button":"Explore Collection","pages.collections.footer.heading_broken.0":"Connect with MetaMask","pages.collections.footer.heading_broken.1":"& Manage Your Collection","pages.collections.footer.subtitle":"Explore, Filter, & Share your favorite NFTs with Dashbrd.","pages.collections.footer.button":"Manage Collections","pages.nfts.nft":"nft","pages.nfts.about_nft":"About NFT","pages.nfts.owned_by":"Owned by","pages.nfts.collection_image":"collection image","pages.nfts.menu.properties":"Properties","pages.nfts.menu.activity":"Activity","pages.reports.title":"Submit a Report","pages.reports.description":"Thanks for looking out by reporting things that break the rules. Let us know what's happening and we'll receive the report.","pages.reports.success":"Thank you for your report. We'll review it and see if it breaks our ToS.","pages.reports.failed":"Something went wrong. Please try again.","pages.reports.throttle":"You have made too many requests. Please wait {{time}} before reporting again.","pages.reports.reported":"You have already reported this {{model}}.","pages.reports.reasons.spam":"Spam","pages.reports.reasons.violence":"Promoting Violence","pages.reports.reasons.hate":"Hate","pages.reports.reasons.inappropriate_content":"Inappropriate Content","pages.reports.reasons.impersonation":"Impersonation","pages.reports.reasons.trademark":"Trademark or Copyright","pages.reports.reasons.selfharm":"Self-Harm","pages.reports.reasons.harassment":"Harassment","pages.galleries.title":"Galleries","pages.galleries.empty_title":"No galleries have been published yet. Once they do they will appear here.","pages.galleries.search.loading_results":"Loading results...","pages.galleries.search.no_results":"We could not find anything matching your search criteria, please try again!","pages.galleries.search.placeholder":"Search by name or curator address","pages.galleries.search.placeholder_nfts":"Search by NFTs","pages.galleries.search.error":"Could not load search results. Please try again later.","pages.galleries.my_galleries.title":"My Galleries","pages.galleries.my_galleries.subtitle":"Manage your galleries","pages.galleries.my_galleries.new_gallery":"New Gallery","pages.galleries.my_galleries.no_galleries":"You have not created any galleries yet. To create a gallery, click on the \"Create Gallery\" button.","pages.galleries.my_galleries.no_available_collections":"You have hidden all your collections. If you want to create a gallery, make sure you have at least 1 collection available.","pages.galleries.my_galleries.no_draft_galleries":"You have no draft galleries yet. To create a gallery, click on the \"Create Gallery\" button.","pages.galleries.my_galleries.succesfully_deleted":"Gallery has been successfully removed","pages.galleries.my_galleries.draft_succesfully_deleted":"Draft has been successfully removed","pages.galleries.my_galleries.successfully_created":"Gallery has been successfully created","pages.galleries.my_galleries.successfully_updated":"Gallery has been successfully updated","pages.galleries.my_galleries.new_gallery_no_nfts":"Creating a Gallery requires you to own an NFT.","pages.galleries.my_galleries.new_gallery_all_collections_hidden":"Creating a Gallery requires you to have at least 1 collection available.","pages.galleries.my_galleries.delete_modal.title":"Delete Draft","pages.galleries.my_galleries.delete_modal.text":"Are you sure you want to delete the draft? Everything you've done will be deleted and you won't be able to get it back.","pages.galleries.my_galleries.nfts_no_longer_owned":"NFTs no longer owned by this wallet have been removed from the draft”","pages.galleries.copy_gallery_link":"Copy Gallery Link","pages.galleries.my_nfts":"My NFTs","pages.galleries.show_hidden_collections":"Show hidden collections","pages.galleries.value":"Value","pages.galleries.floor_price":"Floor Price","pages.galleries.nfts":"NFTs","pages.galleries.collections":"Collections","pages.galleries.galleries_count_simple":"{0} galleries|{1} gallery|[2,*] galleries","pages.galleries.galleries_count":"{0} {{count}} Galleries|{1} {{count}} Gallery|[2,*] {{count}} Galleries","pages.galleries.collections_count_simple":"{0} collections|{1} collection|[2,*] collections","pages.galleries.collections_count":"{0} {{count}} Collections|{1} {{count}} Collection|[2,*] {{count}} Collections","pages.galleries.nfts_count_simple":"{0} NFTs|{1} NFT|[2,*] NFTs","pages.galleries.nfts_count":"{0} {{count}} NFTs|{1} {{count}} NFT|[2,*] {{count}} NFTs","pages.galleries.users_count_simple":"{0} users|{1} user|[2,*] users","pages.galleries.users_count":"{0} {{count}} Users|{1} {{count}} User|[2,*] {{count}} Users","pages.galleries.featuring":"Featuring","pages.galleries.curated_by":"Curated by","pages.galleries.worth_about":"Worth About","pages.galleries.valued_at":"valued at","pages.galleries.from":"From","pages.galleries.most_popular_galleries":"Most Popular Galleries","pages.galleries.newest_galleries":"Newest Galleries","pages.galleries.most_valuable_galleries":"Most Valuable Galleries","pages.galleries.most_popular":"Most Popular","pages.galleries.newest":"Newest","pages.galleries.most_valuable":"Most Valuable","pages.galleries.create.search_by_nfts":"Search by NFTs","pages.galleries.create.input_placeholder":"Enter gallery name","pages.galleries.create.title_too_long":"Gallery name must not exceed {{max}} characters.","pages.galleries.create.already_selected_nft":"NFT already exists in this gallery","pages.galleries.create.nft_missing_image":"Only NFTs with images can be added to galleries","pages.galleries.create.nft_gallery_limit":"You can only add 16 NFTs per gallery","pages.galleries.create.gallery_cover":"Gallery Cover","pages.galleries.create.gallery_cover_description":"The cover is used for the card on the gallery list page. While the cover is not a requirement it will allow you to add personality and stand out from the crowd.","pages.galleries.create.gallery_cover_information":"Image dimensions must be at least 287px x 190px, with a max size of 2 MB (JPG, PNG or GIF)","pages.galleries.create.no_results":"We could not find anything matching your search criteria, please try again!","pages.galleries.create.templates.cover":"Cover","pages.galleries.create.templates.template":"Template","pages.galleries.create.templates.select":"Select Gallery Template","pages.galleries.create.templates.basic":"Basic Gallery","pages.galleries.create.templates.coming_soon":"More Coming Soon","pages.galleries.create.load_more_collections_one":"Load {{count}} More Collection","pages.galleries.create.load_more_collections_other":"Load {{count}} More Collections","pages.galleries.create.load_more_nfts":"Load More NFTs","pages.galleries.create.can_purchase":"You can purchase NFTs with these top NFT Marketplaces:","pages.galleries.create.must_own_one_nft":"You must own at least one (1) NFT in order to create a gallery.","pages.galleries.create.back_to_galleries":"Back to Galleries","pages.galleries.create.draft_saved":"Draft Saved","pages.galleries.create.saving_to_draft":"Saving to draft","pages.galleries.create.drafts_limit_modal_title":"Draft Gallery Limit","pages.galleries.create.drafts_limit_modal_message":"You’ve hit your limit for draft galleries. While you can still make new galleries and publish them, they won’t be saved as drafts. To Free up space, you can either delete existing drafts or publish them.","pages.galleries.create.drafts_limit_modal_cancel":"Go to Drafts","pages.galleries.delete_modal.title":"Delete Gallery","pages.galleries.delete_modal.confirmation_text":"Are you sure you want to delete the gallery? Deleting a Gallery is permanent, all associated views and likes will be lost.","pages.galleries.consists_of_collections":"{0} This gallery consists of {{count}} collections|{1} This gallery consists of {{count}} collection|[2,*] This gallery consists of {{count}} collections","pages.galleries.guest_banner.title":"Craft the ultimate","pages.galleries.guest_banner.subtitle":"Pick your favorites, curate your gallery, & share it with the world.","pages.profile.title":"Profile","pages.token_panel.balance_tooltip":"Total percentage of the portfolio held in this token","pages.token_panel.insufficient_funds":"Insufficient Balance","pages.token_panel.error":"Dashbrd has failed to load token information. Please try again later.","pages.token_panel.failed_to_retrieve_transactions":"We were unable to fetch your transactions.","pages.token_panel.tabs.transaction_history":"Transaction History","pages.token_panel.tabs.history":"History","pages.token_panel.tabs.market_data":"Market Data","pages.token_panel.details.current_price":"Current Price","pages.token_panel.details.title":"Token Details","pages.token_panel.details.market_cap":"Market Cap","pages.token_panel.details.volume":"Daily Volume","pages.token_panel.details.supply":"Minted Supply","pages.token_panel.details.ath":"All-Time High","pages.token_panel.details.atl":"All-Time Low","pages.token_panel.chart.failed":"Dashbrd has failed to load chart information. Please try again later.","pages.transaction_details_panel.title":"Transaction Details","pages.transaction_details_panel.details.blockchain":"Blockchain","pages.transaction_details_panel.details.timestamp":"Timestamp","pages.transaction_details_panel.details.transaction_hash":"Transaction Hash","pages.transaction_details_panel.details.transaction_fee":"Transaction Fee","pages.transaction_details_panel.details.gas_price":"Gas Price","pages.transaction_details_panel.details.gas_used":"Gas Used","pages.transaction_details_panel.details.nonce":"Nonce","pages.send_receive_panel.send.labels.token_and_amount":"Token and Amount","pages.send_receive_panel.send.labels.destination_address":"Destination Address","pages.send_receive_panel.send.labels.projected_fee":"Projected Fee","pages.send_receive_panel.send.placeholders.enter_amount":"Enter Amount","pages.send_receive_panel.send.placeholders.insert_recipient_address":"Insert Recipient Address","pages.send_receive_panel.send.placeholders.projected_fee":"Projected Fee","pages.send_receive_panel.send.errors.amount":"Insufficient Funds: You do not have enough to cover the amount + fee.","pages.send_receive_panel.send.errors.destination":"Destination address is not correct. Check and input again.","pages.send_receive_panel.send.hints.token_price":"Token Price","pages.send_receive_panel.send.fees.Fast":"Fast","pages.send_receive_panel.send.fees.Avg":"Avg","pages.send_receive_panel.send.fees.Slow":"Slow","pages.send_receive_panel.send.search_dropdown.placeholder":"Search token","pages.send_receive_panel.send.search_dropdown.no_results":"No Results","pages.send_receive_panel.send.search_dropdown.error":"Error occurred while searching tokens.","pages.send_receive_panel.send.transaction_time":"Transaction Time: ~{{ time }} minutes","pages.send_receive_panel.send.from":"From","pages.send_receive_panel.send.to":"To","pages.send_receive_panel.send.amount":"Amount","pages.send_receive_panel.send.fee":"Fee","pages.send_receive_panel.send.total_amount":"Total Amount","pages.send_receive_panel.send.waiting_message":"Review and verify the information on your MetaMask. Sign to send the transaction.","pages.send_receive_panel.send.waiting_spinner_text":"Waiting for confirmation...","pages.send_receive_panel.send.failed_message":"It looks like something went wrong while sending your transaction. Press 'Retry' to make another attempt.","pages.send_receive_panel.receive.alert":"Send only Polygon or Ethereum Network compatible tokens to this address or you could permanently lose your funds!","pages.settings.title":"Settings","pages.settings.sidebar.general":"General","pages.settings.sidebar.notifications":"Notifications","pages.settings.sidebar.session_history":"Sessions History","pages.settings.general.title":"Settings","pages.settings.general.subtitle":"Customize your App Experience","pages.settings.general.currency":"Currency","pages.settings.general.currency_subtitle":"Select your default currency which will be used throughout the app.","pages.settings.general.time_date":"Time & Date","pages.settings.general.time_date_subtitle":"Select how you want time and date be shown inside app.","pages.settings.general.date_format":"Date Format","pages.settings.general.time_format":"Time Format","pages.settings.general.timezone":"Timezone","pages.settings.general.set_defaults":"Set Defaults","pages.settings.general.set_defaults_content":"Reverting to the default settings will remove any customizations previously made. Are you sure?","pages.settings.general.save":"Save Settings","pages.settings.general.saved":"Your settings have been successfully saved","pages.wallet.title":"Wallet","pages.privacy_policy.title":"Privacy Policy","pages.terms_of_service.title":"Terms of Service","pagination.previous":"« Previous","pagination.next":"Next »","passwords.reset":"Your password has been reset!","passwords.sent":"We have emailed your password reset link!","passwords.throttled":"Please wait before retrying.","passwords.token":"This password reset token is invalid.","passwords.user":"We can't find a user with that email address.","urls.landing":"https://dashbrd.com","urls.cookie_policy":"https://dashbrd.com/cookie-policy","urls.privacy_policy":"https://dashbrd.com/privacy-policy","urls.terms_of_service":"https://dashbrd.com/terms-of-service","urls.twitter":"https://x.com/DashbrdApp","urls.discord":"https://discord.gg/MJyWKkCJ5k","urls.github":"https://github.com/ArdentHQ/dashbrd","urls.coingecko":"https://www.coingecko.com","urls.etherscan":"https://etherscan.io","urls.polygonscan":"https://polygonscan.com","urls.alchemy":"https://www.alchemy.com","urls.moralis":"https://moralis.io","urls.mnemonic":"https://www.mnemonichq.com","urls.opensea":"https://opensea.io/","urls.explorers.etherscan.token_transactions":"https://etherscan.io/token/{{token}}?a={{address}}","urls.explorers.etherscan.addresses":"https://etherscan.io/address/{{address}}","urls.explorers.etherscan.transactions":"https://etherscan.io/tx/{{id}}","urls.explorers.etherscan.nft":"https://etherscan.io/nft/{{address}}/{{nftId}}","urls.explorers.polygonscan.token_transactions":"https://polygonscan.com/token/{{token}}?a={{address}}","urls.explorers.polygonscan.addresses":"https://polygonscan.com/address/{{address}}","urls.explorers.polygonscan.transactions":"https://polygonscan.com/tx/{{id}}","urls.explorers.polygonscan.nft":"https://polygonscan.com/nft/{{address}}/{{nftId}}","urls.explorers.mumbai.token_transactions":"https://mumbai.polygonscan.com/token/{{token}}?a={{address}}","urls.explorers.mumbai.addresses":"https://mumbai.polygonscan.com/address/{{address}}","urls.explorers.mumbai.transactions":"https://mumbai.polygonscan.com/tx/{{id}}","urls.explorers.mumbai.nft":"https://mumbai.polygonscan.com/nft/{{address}}/{{nftId}}","urls.explorers.goerli.token_transactions":"https://goerli.etherscan.io/token/{{token}}?a={{address}}","urls.explorers.goerli.addresses":"https://goerli.etherscan.io/address/{{address}}","urls.explorers.goerli.transactions":"https://goerli.etherscan.io/tx/{{id}}","urls.explorers.goerli.nft":"https://goerli.etherscan.io/nft/{{address}}/{{nftId}}","urls.marketplaces.opensea.collection":"https://opensea.io/assets/{{network}}/{{address}}","urls.marketplaces.opensea.nft":"https://opensea.io/assets/{{network}}/{{address}}/{{nftId}}","urls.marketplaces.rarible.collection":"https://rarible.com/collection/{{address}}/items","urls.marketplaces.rarible.nft":"https://rarible.com/token/{{address}}:{{nftId}}","urls.marketplaces.blur.collection":"https://blur.io/collection/{{address}}","urls.marketplaces.blur.nft":"https://blur.io/asset/{{address}}/{{nftId}}","urls.marketplaces.looksrare.collection":"https://looksrare.org/collections/{{address}}","urls.marketplaces.looksrare.nft":"https://looksrare.org/collections/{{address}}/{{nftId}}","validation.accepted":"The {{attribute}} must be accepted.","validation.accepted_if":"The {{attribute}} must be accepted when {{other}} is {{value}}.","validation.active_url":"The {{attribute}} is not a valid URL.","validation.after":"The {{attribute}} must be a date after {{date}}.","validation.after_or_equal":"The {{attribute}} must be a date after or equal to {{date}}.","validation.alpha":"The {{attribute}} must only contain letters.","validation.alpha_dash":"The {{attribute}} must only contain letters, numbers, dashes and underscores.","validation.alpha_num":"The {{attribute}} must only contain letters and numbers.","validation.array":"The {{attribute}} must be an array.","validation.ascii":"The {{attribute}} must only contain single-byte alphanumeric characters and symbols.","validation.before":"The {{attribute}} must be a date before {{date}}.","validation.before_or_equal":"The {{attribute}} must be a date before or equal to {{date}}.","validation.between.array":"The {{attribute}} must have between {{min}} and {{max}} items.","validation.between.file":"The {{attribute}} must be between {{min}} and {{max}} kilobytes.","validation.between.numeric":"The {{attribute}} must be between {{min}} and {{max}}.","validation.between.string":"The {{attribute}} must be between {{min}} and {{max}} characters.","validation.boolean":"The {{attribute}} field must be true or false.","validation.confirmed":"The {{attribute}} confirmation does not match.","validation.current_password":"The password is incorrect.","validation.date":"The {{attribute}} is not a valid date.","validation.date_equals":"The {{attribute}} must be a date equal to {{date}}.","validation.date_format":"The {{attribute}} does not match the format {{format}}.","validation.decimal":"The {{attribute}} must have {{decimal}} decimal places.","validation.declined":"The {{attribute}} must be declined.","validation.declined_if":"The {{attribute}} must be declined when {{other}} is {{value}}.","validation.different":"The {{attribute}} and {{other}} must be different.","validation.digits":"The {{attribute}} must be {{digits}} digits.","validation.digits_between":"The {{attribute}} must be between {{min}} and {{max}} digits.","validation.dimensions":"The {{attribute}} has invalid image dimensions.","validation.distinct":"The {{attribute}} field has a duplicate value.","validation.doesnt_end_with":"The {{attribute}} may not end with one of the following: {{values}}.","validation.doesnt_start_with":"The {{attribute}} may not start with one of the following: {{values}}.","validation.email":"The {{attribute}} must be a valid email address.","validation.ends_with":"The {{attribute}} must end with one of the following: {{values}}.","validation.enum":"The selected {{attribute}} is invalid.","validation.exists":"The selected {{attribute}} is invalid.","validation.file":"The {{attribute}} must be a file.","validation.filled":"The {{attribute}} field must have a value.","validation.gt.array":"The {{attribute}} must have more than {{value}} items.","validation.gt.file":"The {{attribute}} must be greater than {{value}} kilobytes.","validation.gt.numeric":"The {{attribute}} must be greater than {{value}}.","validation.gt.string":"The {{attribute}} must be greater than {{value}} characters.","validation.gte.array":"The {{attribute}} must have {{value}} items or more.","validation.gte.file":"The {{attribute}} must be greater than or equal to {{value}} kilobytes.","validation.gte.numeric":"The {{attribute}} must be greater than or equal to {{value}}.","validation.gte.string":"The {{attribute}} must be greater than or equal to {{value}} characters.","validation.image":"The {{attribute}} must be an image.","validation.in":"The selected {{attribute}} is invalid.","validation.in_array":"The {{attribute}} field does not exist in {{other}}.","validation.integer":"The {{attribute}} must be an integer.","validation.ip":"The {{attribute}} must be a valid IP address.","validation.ipv4":"The {{attribute}} must be a valid IPv4 address.","validation.ipv6":"The {{attribute}} must be a valid IPv6 address.","validation.json":"The {{attribute}} must be a valid JSON string.","validation.lowercase":"The {{attribute}} must be lowercase.","validation.lt.array":"The {{attribute}} must have less than {{value}} items.","validation.lt.file":"The {{attribute}} must be less than {{value}} kilobytes.","validation.lt.numeric":"The {{attribute}} must be less than {{value}}.","validation.lt.string":"The {{attribute}} must be less than {{value}} characters.","validation.lte.array":"The {{attribute}} must not have more than {{value}} items.","validation.lte.file":"The {{attribute}} must be less than or equal to {{value}} kilobytes.","validation.lte.numeric":"The {{attribute}} must be less than or equal to {{value}}.","validation.lte.string":"The {{attribute}} must be less than or equal to {{value}} characters.","validation.mac_address":"The {{attribute}} must be a valid MAC address.","validation.max.array":"The {{attribute}} must not have more than {{max}} items.","validation.max.file":"The {{attribute}} must not be greater than {{max}} kilobytes.","validation.max.numeric":"The {{attribute}} must not be greater than {{max}}.","validation.max.string":"The {{attribute}} must not be greater than {{max}} characters.","validation.max_digits":"The {{attribute}} must not have more than {{max}} digits.","validation.mimes":"The {{attribute}} must be a file of type: {{values}}.","validation.mimetypes":"The {{attribute}} must be a file of type: {{values}}.","validation.min.array":"The {{attribute}} must have at least {{min}} items.","validation.min.file":"The {{attribute}} must be at least {{min}} kilobytes.","validation.min.numeric":"The {{attribute}} must be at least {{min}}.","validation.min.string":"The {{attribute}} must be at least {{min}} characters.","validation.min_digits":"The {{attribute}} must have at least {{min}} digits.","validation.missing":"The {{attribute}} field must be missing.","validation.missing_if":"The {{attribute}} field must be missing when {{other}} is {{value}}.","validation.missing_unless":"The {{attribute}} field must be missing unless {{other}} is {{value}}.","validation.missing_with":"The {{attribute}} field must be missing when {{values}} is present.","validation.missing_with_all":"The {{attribute}} field must be missing when {{values}} are present.","validation.multiple_of":"The {{attribute}} must be a multiple of {{value}}.","validation.not_in":"The selected {{attribute}} is invalid.","validation.not_regex":"The {{attribute}} format is invalid.","validation.numeric":"The {{attribute}} must be a number.","validation.password.letters":"The {{attribute}} must contain at least one letter.","validation.password.mixed":"The {{attribute}} must contain at least one uppercase and one lowercase letter.","validation.password.numbers":"The {{attribute}} must contain at least one number.","validation.password.symbols":"The {{attribute}} must contain at least one symbol.","validation.password.uncompromised":"The given {{attribute}} has appeared in a data leak. Please choose a different {{attribute}}.","validation.present":"The {{attribute}} field must be present.","validation.prohibited":"The {{attribute}} field is prohibited.","validation.prohibited_if":"The {{attribute}} field is prohibited when {{other}} is {{value}}.","validation.prohibited_unless":"The {{attribute}} field is prohibited unless {{other}} is in {{values}}.","validation.prohibits":"The {{attribute}} field prohibits {{other}} from being present.","validation.regex":"The {{attribute}} format is invalid.","validation.required":"The {{attribute}} field is required.","validation.required_array_keys":"The {{attribute}} field must contain entries for: {{values}}.","validation.required_if":"The {{attribute}} field is required when {{other}} is {{value}}.","validation.required_if_accepted":"The {{attribute}} field is required when {{other}} is accepted.","validation.required_unless":"The {{attribute}} field is required unless {{other}} is in {{values}}.","validation.required_with":"The {{attribute}} field is required when {{values}} is present.","validation.required_with_all":"The {{attribute}} field is required when {{values}} are present.","validation.required_without":"The {{attribute}} field is required when {{values}} is not present.","validation.required_without_all":"The {{attribute}} field is required when none of {{values}} are present.","validation.same":"The {{attribute}} and {{other}} must match.","validation.size.array":"The {{attribute}} must contain {{size}} items.","validation.size.file":"The {{attribute}} must be {{size}} kilobytes.","validation.size.numeric":"The {{attribute}} must be {{size}}.","validation.size.string":"The {{attribute}} must be {{size}} characters.","validation.starts_with":"The {{attribute}} must start with one of the following: {{values}}.","validation.string":"The {{attribute}} must be a string.","validation.timezone":"The {{attribute}} must be a valid timezone.","validation.unique":"The {{attribute}} has already been taken.","validation.uploaded":"The {{attribute}} failed to upload.","validation.uppercase":"The {{attribute}} must be uppercase.","validation.url":"The {{attribute}} must be a valid URL.","validation.ulid":"The {{attribute}} must be a valid ULID.","validation.uuid":"The {{attribute}} must be a valid UUID.","validation.custom.attribute-name.rule-name":"custom-message","validation.unsupported_currency_code":"The currency code you provided is invalid or not supported.","validation.unsupported_period":"The period you provided is invalid or not supported.","validation.unsupported_token_symbol":"The token symbol you provided is invalid or not supported.","validation.gallery_title_required":"Gallery name is required.","validation.gallery_title_max_characters":"The gallery name should not exceed 50 characters.","validation.gallery_title_invalid":"The gallery name is invalid.","validation.nfts_required":"Please add at least one NFT.","validation.nfts_max_size":"Galleries can contain no more than {{limit}} NFTs","validation.invalid_nfts":"The NFT in position {{position}} is invalid, please select another one.","validation.invalid_cover":"You have selected an invalid cover image, please try another one."} \ No newline at end of file +{"auth.welcome":"Welcome to Dashbrd","auth.logged_in":"You're logged in!","auth.log_out":"Log out","auth.failed":"These credentials do not match our records.","auth.session_timeout":"Your session has timed out. Please refresh the page and try connecting your account again.","auth.session_timeout_modal":"Seems like your session has timed out. Please connnect your wallet again.","auth.password":"The provided password is incorrect.","auth.throttle":"Too many login attempts. Please try again in {{seconds}} seconds.","auth.wallet.connecting":"Connecting …","auth.wallet.waiting_for_signature":"Waiting for Signature …","auth.wallet.switching_wallet":"Switching Wallet …","auth.wallet.connect":"Connect Wallet","auth.wallet.connect_long":"Connect Your Wallet to Get Started","auth.wallet.sign_subtitle":"Connect Your Wallet to Continue","auth.wallet.disconnect":"Disconnect Wallet","auth.wallet.install":"Install MetaMask","auth.wallet.install_long":"Install MetaMask to Get Started","auth.wallet.sign":"Sign Message","auth.wallet.sign_message":"Welcome to Dashbrd. In order to login, sign this message with your wallet. It doesn't cost you anything!\n\nSigning ID (you can ignore this): {{nonce}}","auth.wallet.connect_subtitle":"Click on the MetaMask icon in your browser to confirm the action and connect your wallet.","auth.wallet.requires_signature":"In order to prevent impersonation, we require a signature to perform this action. This signature is only a signed message and does not give any access to your wallet.","auth.errors.metamask.no_account":"No account found. Please connect your wallet and try again.","auth.errors.metamask.generic":"Connection attempt error. Please retry and follow the steps to connect your wallet.","auth.errors.metamask.invalid_network":"Please switch to Polygon or Ethereum Mainnet in your MetaMask plugin to connect to Dashbrd.","auth.errors.metamask.provider_missing":"You don't have MetaMask installed in your browser. Please install and try again.","auth.errors.metamask.user_rejected":"It looks like you cancelled signing of the authentication message. Please try again.","auth.errors.metamask.provider_not_set":"Ethereum provider is not set","auth.validation.wallet_login_failed":"There was a problem trying to verify your signature. Please try again.","auth.validation.invalid_address":"Your wallet address is invalid. Please try again.","auth.validation.invalid_signature":"Signature is invalid. Please try again.","auth.validation.invalid_network":"Please switch to Polygon or Ethereum Mainnet in your MetaMask plugin to connect to Dashbrd.","common.author":"Author","common.add":"Add","common.amount":"Amount","common.balance":"Balance","common.cancel":"Cancel","common.delete":"Delete","common.edit":"Edit","common.confirm":"Confirm","common.connect":"Connect","common.continue":"Continue","common.done":"Done","common.filter":"Filter","common.items":"Items","common.receive":"Receive","common.received":"Received","common.retry":"Retry","common.records":"Records","common.save":"Save","common.send":"Send","common.sent":"Sent","common.show":"Show","common.searching":"Searching...","common.other":"Other","common.owned":"Owned","common.token":"Token","common.tokens":"Tokens","common.wallet":"Wallet","common.pending":"Pending","common.publish":"Publish","common.published":"Published","common.empty":"Empty","common.your_address":"Your Address","common.warning":"Warning","common.my_address":"My Address","common.my_wallet":"My Wallet","common.my_collections":"My Collections","common.my_balance":"My Balance","common.na":"N/A","common.simple_plural_without_data":"One comment|Many comments","common.simple_plural_with_data":"{{count}} comment|{{count}} comments","common.advanced_plural_without_data":"{0} no comments yet|{1} 1 comment|[2,*] Many comments","common.advanced_plural_with_data":"{0} no comments yet|{1} 1 comment|[2,*] {{count}} comments","common.copy_clipboard":"Copy to Clipboard","common.copy":"Copy","common.download":"Download","common.zoom":"Zoom","common.my_collection":"My Collection","common.max":"Max","common.chain":"Chain","common.copied":"Copied!","common.coming_soon":"Coming Soon","common.more_details":"More Details","common.close":"Close","common.close_toast":"Close toast","common.loading":"Loading","common.price":"Price","common.articles":"Articles","common.most_popular":"Most Popular","common.market_cap":"Market Cap","common.volume":"Volume","common.volume_frequency":"Volume {{frequency}}","common.value":"Value","common.last_n_days":"Last {{count}} Days","common.details":"Details","common.view_all":"View All","common.view_more_on_polygonscan":"View More on Polygonscan","common.view_more_on_etherscan":"View More on Etherscan","common.view_nft_on_etherscan":"View NFT on Etherscan","common.view_nft_on_polygonscan":"View NFT on Polygonscan","common.view_nft_on_goerli_tesnet":"View NFT on Goerli Testnet Explorer","common.view_nft_on_mumbai_tesnet":"View NFT on Mumbai Testnet Explorer","common.polygonscan":"Polygonscan","common.etherscan":"Etherscan","common.featured":"Featured","common.floor_price":"Floor Price","common.floor":"Floor","common.supply":"Supply","common.owners":"Owners","common.created":"Created","common.nft":"NFT","common.collection":"Collection","common.collections":"Collections","common.gallery":"Gallery","common.basic_gallery":"Basic Gallery","common.gallery_name":"Gallery Name","common.create_gallery":"Create Gallery","common.external_link":"External Link","common.follow_link":"Follow Link","common.cover":"Cover","common.template":"Template","common.page":"Page","common.polygon":"Polygon","common.ethereum":"Ethereum","common.mumbai":"Mumbai","common.goerli":"Goerli","common.of":"of","common.pagination_input_placeholder":"Enter the page number","common.pagination_input_placeholder_mobile":"Page number","common.nft_count":"{0} {{count}} NFTs|{1} {{count}} NFT|[2,*] {{count}} NFTs","common.nft_gallery":"NFT Gallery","common.unable_to_retrieve_image":"Unable to retrieve your NFT image at this time","common.optional":"Optional","common.selected":"Selected","common.select":"Select","common.preview":"Preview","common.image_size_error":"Image size must not exceed 2MB","common.image_dimensions_error":"Image dimensions must exceed 287px x 190px","common.write_to_confirm":"Write {{word}} to confirm","common.n_hours":"{0} {{count}} hour|{1} {{count}} hour|[2,*] {{count}} hours","common.n_minutes":"{0} {{count}} minute|{1} {{count}} minute|[2,*] {{count}} minutes","common.report":"Report","common.nfts":"NFTs","common.n_nfts":"{0}NFTs|{1}NFT|[2,*]NFTs","common.n_collections":"{0}collections|{1}collection|[2,*]collections","common.back":"Back","common.back_to":"Back to","common.name":"Name","common.type":"Type","common.from":"From","common.to":"To","common.sale_price":"Sale Price","common.recent_activity":"Recent Activity","common.time":"Time","common.datetime.few_seconds_ago":"A few seconds ago","common.datetime.minutes_ago":"{0} Less than a minute ago|{1} A minute ago|[2,*] {{count}} minutes ago","common.datetime.hours_ago":"{0} Less than an hour ago|{1} An hour ago|[2,*] {{count}} hours ago","common.datetime.days_ago":"{0} Less than a day ago|{1} A day ago|[2,*] {{count}} days ago","common.datetime.weeks_ago":"{0} Less than a week ago|{1} A week ago|[2,*] {{count}} weeks ago","common.datetime.months_ago":"{0} Less than a month ago|{1} A month ago|[2,*] {{count}} months ago","common.datetime.years_ago":"{0} Less than a year ago|{1} A year ago|[2,*] {{count}} years ago","common.no_traits_found":"No traits found.","common.empty_transactions":"You don't have any transactions yet. Once transactions have been made, they will show up here.","common.error":"Error","common.refresh":"Refresh","common.refresh_metadata":"Refresh Metadata","common.refreshing_metadata":"Refreshing Metadata... Please check back later.","common.refreshing_activity":"Refreshing Activity... Please check back later.","common.pending_confirmation":"Pending Confirmation","common.confirmed_transaction":"Confirmed Transaction","common.transaction_error":"Transaction Error","common.transaction_error_description_first_part":"Your transaction encountered an error. View this transaction on","common.transaction_error_description_second_part":"for more details.","common.home":"Home","common.contact":"Contact","common.menu":"Menu","common.website":"Website","common.twitter":"Twitter","common.discord":"Discord","common.facebook":"Facebook","common.reddit":"Reddit","common.x":"X","common.sort":"Sort","common.drafts":"Drafts","common.draft":"Draft","common.delete_draft":"Delete Draft","common.share_on":"Share on {{platform}}","common.top":"Top","common.all_chains":"All chains","common.votes":"Votes","common.vote":"Vote","common.vol":"Vol","footer.copyright":"{{year}} © Dashbrd. All rights reserved.","footer.all_rights_reserved":"All rights reserved","footer.privacy_policy":"Privacy Policy","footer.terms_of_service":"Terms of Service","footer.powered_by":"Powered by","format.fiat":"{{ value, currency }}","format.number":"{{ value, number }}","metatags.home.title":"Dashbrd | Web3 Portfolio Management Made Simple","metatags.home.description":"Simplify your Web3 journey with Dashbrd. Manage your portfolio of tokens, NFTs, and other digital collectibles across the Ethereum and Polygon blockchains.","metatags.home.image":"/images/meta/home.png","metatags.error.title":"Error {{code}} | Dashbrd","metatags.wallet.title":"My Wallet | Dashbrd","metatags.galleries.title":"Top NFT Galleries | Dashbrd","metatags.galleries.image":"/images/meta/nft-galleries.png","metatags.galleries.description":"Explore user published NFT galleries to find custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.most_popular.title":"Most Popular Galleries | Dashbrd","metatags.galleries.most_popular.image":"/images/meta/most-popular-nft-galleries.png","metatags.galleries.most_popular.description":"Explore and discover Most Popular NFT Galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.newest.title":"Newest Galleries | Dashbrd","metatags.galleries.newest.image":"/images/meta/newest-nft-galleries.png","metatags.galleries.newest.description":"Explore and discover most recent NFT galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More","metatags.galleries.most_valuable.title":"Most Valuable Galleries | Dashbrd","metatags.galleries.most_valuable.image":"/images/meta/most-valuable-nft-galleries.png","metatags.galleries.most_valuable.description":"Explore and discover Most Valuable NFT Galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.view.title":"{{name}} | Dashbrd","metatags.galleries.view.description":"{{name}} | A Curated NFT Gallery at Dashbrd","metatags.galleries.view.image":"/images/meta/nft-gallery.png","metatags.my_galleries.title":"My Galleries | Dashbrd","metatags.my_galleries.title_draft":"My Draft Galleries | Dashbrd","metatags.my_galleries.create.title":"Create Gallery | Dashbrd","metatags.my_galleries.edit.title":"Edit {{name}} | Dashbrd","metatags.collections.title":"Collections | Dashbrd","metatags.collections.view.title":"{{name}} Collection | Dashbrd","metatags.collections.view.description":"Immerse yourself in the intricate details of {{name}} collection, featuring remarkable digital assets. Start your NFT journey today!","metatags.collections.view.image":"/images/meta/nft-collection.png","metatags.collections.of-the-month.title":"Collection of the Month {{month}} | Dashbrd","metatags.my-collections.title":"My Collections | Dashbrd","metatags.nfts.view.title":"{{nft}} NFT | Dashbrd","metatags.nfts.view.description":"Uncover the complete story of {{nft}} NFT from the {{collection}} collection, delving into its unique attributes and distinctive features.","metatags.nfts.view.image":"/images/meta/nft-details.png","metatags.settings.title":"Settings | Dashbrd","metatags.articles.title":"Articles | Dashbrd","metatags.articles.view.title":"{{title}} | Dashbrd","metatags.login.title":"Login | Dashbrd","metatags.privacy_policy.title":"Privacy Policy | Dashbrd","metatags.privacy_policy.description":"Dashbrd’s privacy policy outlines the information we collect and explains your choices surrounding how we use information about you.","metatags.terms_of_service.title":"Terms of Service | Dashbrd","metatags.terms_of_service.description":"These Terms of Service cover your use and access to services, products or websites of Dashbrd.","metatags.cookie_policy.title":"Cookie Policy | Dashbrd","metatags.cookie_policy.description":"Dashbrd uses cookies to make the website more user-friendly. Find out about the main types of cookies we use, and what we use them for.","metatags.welcome.title":"Welcome to Dashbrd | Web3 Simplified","pages.onboarding.title":"Get Started","pages.onboarding.heading":"Your monkeys were bored and ran off, we are trying to round them up.","pages.onboarding.message":"We are setting up your account. This process usually takes just a few minutes, but can take up to 15 minutes.","pages.error.heading":"Oops, something went wrong ...","pages.error.message":"Please try again or get in touch if the issue persists.","pages.maintenance.title":"Dashbrd is currently down for scheduled maintenance.","pages.maintenance.description":"We expect to be back soon. Thanks for your patience.","pages.dashboard.title":"My Wallet","pages.dashboard.breakdown.title":"Portfolio Breakdown","pages.dashboard.line_chart.data_error":"Could not load chart data","pages.articles.title":"Articles","pages.articles.featured_collections":"Featured Collections","pages.articles.placeholder_more_soon":"More Soon","pages.articles.no_articles":"No articles have been published yet. Please check back later!","pages.articles.header_title":"Explore our collection of","pages.articles.header_suffix_one":"published article","pages.articles.header_suffix_other":"published articles","pages.articles.audio_version":"Audio version","pages.articles.consists_of_collections":"{0} This article highlights {{count}} collections|{1} This article highlights {{count}} collection|[2,*] This article highlights {{count}} collections","pages.collections.title":"Collections","pages.collections.collections":"Collections","pages.collections.popular_collections":"Popular Collections","pages.collections.collection_value":"Collection Value","pages.collections.nfts_owned":"NFTs Owned","pages.collections.header_title":"You own <0>{{nftsCount}} {{nfts}} across <0>{{collectionsCount}} {{collections}}, worth about <0><1>{{worth}}","pages.collections.search_placeholder":"Search by Collection","pages.collections.properties":"Properties","pages.collections.collections_network":"Collections Network","pages.collections.property_search_placeholder":"Feature Search","pages.collections.floor_price":"Floor Price","pages.collections.value":"Value","pages.collections.rarity":"Rarity","pages.collections.report":"Report","pages.collections.hide_collection":"Hide Collection","pages.collections.unhide_collection":"Unhide Collection","pages.collections.no_collections":"You do not own any NFTs yet. Once you do they will be shown here.","pages.collections.all_collections_hidden":"You have hidden all your collections. Unhide and they will appear here.","pages.collections.about_collection":"About Collection","pages.collections.show_hidden":"Show Hidden","pages.collections.show_my_collection":"Show My Collection","pages.collections.owned":"Owned","pages.collections.activities.loading_activities":"We're fetching Activity for this NFT, please hang tight, this can take a while.","pages.collections.activities.loading_activities_collection":"We're fetching Activity for this collection, please hang tight, this can take a while.","pages.collections.activities.ignores_activities":"We don't support activity history for this collection yet.","pages.collections.activities.no_activity":"This collection does not have any activity yet.","pages.collections.activities.types.LABEL_MINT":"Mint","pages.collections.activities.types.LABEL_TRANSFER":"Transfer","pages.collections.activities.types.LABEL_SALE":"Sale","pages.collections.activities.types.LABEL_BURN":"Burn","pages.collections.collection_of_the_month.title":"Collection of the Month {{month}}","pages.collections.collection_of_the_month.winners_month":"Winners: {{month}}","pages.collections.collection_of_the_month.vote_for_next_months_winners":"Vote now for next month's winners","pages.collections.collection_of_the_month.view_previous_winners":"View Previous Winners","pages.collections.collection_of_the_month.vote_received_modal.title":"Vote Received","pages.collections.collection_of_the_month.vote_received_modal.description":"Your vote has been recorded. Share your vote on X and let everyone know!","pages.collections.collection_of_the_month.vote_received_modal.share_vote":"Share Vote","pages.collections.collection_of_the_month.vote_received_modal.img_alt":"I voted for Dashbrd Project of the Month","pages.collections.collection_of_the_month.vote_received_modal.x_text":"I voted for {{collection}} for collection of the month @dashbrdapp! Go show your support!","pages.collections.collection_of_the_month.vote_success":"Your vote has been successfully submitted","pages.collections.collection_of_the_month.content_to_be_added.title":"Content to be added","pages.collections.collection_of_the_month.content_to_be_added.description":"There will be a list of previous month winners here soon!","pages.collections.collection_of_the_month.has_won_already":"This collection has already
    won Collection of the Month.","pages.collections.articles.heading":"Latest NFT News & Features","pages.collections.articles.no_articles":"No articles have been linked to this collection as of now.","pages.collections.articles.no_articles_with_filters":"We could not find any articles matching your search criteria, please try again!","pages.collections.articles.search_placeholder":"Search in Articles","pages.collections.articles.sort_latest":"Latest","pages.collections.articles.sort_popularity":"Most Popular","pages.collections.search.loading_results":"Loading results...","pages.collections.search.no_results":"We could not find anything matching your search criteria, please try again!","pages.collections.search.no_results_with_filters":"We could not find anything matching your filters, please try again!","pages.collections.search.no_results_ownership":"You do not own any NFTs in this collection","pages.collections.search.error":"Could not load search results. Please try again later.","pages.collections.vote.vote_for_top_collection":"Vote for Top Collection of the Month","pages.collections.vote.vote":"Vote","pages.collections.vote.time_left":"Time Left","pages.collections.vote.or_nominate_collection":"Or nominate a collection","pages.collections.vote.nominate_collection":"Nominate a collection","pages.collections.vote.vote_to_reveal":"Vote to reveal data","pages.collections.vote.already_voted":"You’ve already nominated. Come back next month!","pages.collections.sorting.token_number":"Token Number","pages.collections.sorting.recently_received":"Recently Received","pages.collections.sorting.recently_created":"Recently Created","pages.collections.sorting.oldest_collection":"Oldest Collection","pages.collections.traits.description":"List of NFT traits by % of occurrence in the collection","pages.collections.traits.no_traits":"No Properties can be found for this NFT","pages.collections.menu.collection":"Collection","pages.collections.menu.articles":"Articles","pages.collections.menu.activity":"Activity","pages.collections.hidden_modal.collection_hidden":"Collection Hidden","pages.collections.hidden_modal.description":"This collection is currently set to Hidden. Are you sure you want to unhide this collection? You can\n reset the collection to hidden from the collection menu.","pages.collections.hidden_modal.unhide":"Unhide","pages.collections.hidden_modal.error":"Something went wrong. Please try again.","pages.collections.external_modal.you_wish_continue":"You are about to leave Dashbrd to an external website. Dashbrd has no control over the content of\n this site. Are you sure you wish to continue?","pages.collections.external_modal.not_show":"Do not show this message again.","pages.collections.refresh.title":"Refresh your collection","pages.collections.refresh.notice":"You can refresh data every 15 minutes.","pages.collections.refresh.notice_wait":"Please wait. You can refresh data every 15 minutes.","pages.collections.refresh.toast":"We're updating information for your collection.","pages.collections.featured.title":"Featured Collections","pages.collections.featured.button":"Explore Collection","pages.collections.footer.heading_broken.0":"Connect with MetaMask","pages.collections.footer.heading_broken.1":"& Manage Your Collection","pages.collections.footer.subtitle":"Explore, Filter, & Share your favorite NFTs with Dashbrd.","pages.collections.footer.button":"Manage Collections","pages.nfts.nft":"nft","pages.nfts.about_nft":"About NFT","pages.nfts.owned_by":"Owned by","pages.nfts.collection_image":"collection image","pages.nfts.menu.properties":"Properties","pages.nfts.menu.activity":"Activity","pages.reports.title":"Submit a Report","pages.reports.description":"Thanks for looking out by reporting things that break the rules. Let us know what's happening and we'll receive the report.","pages.reports.success":"Thank you for your report. We'll review it and see if it breaks our ToS.","pages.reports.failed":"Something went wrong. Please try again.","pages.reports.throttle":"You have made too many requests. Please wait {{time}} before reporting again.","pages.reports.reported":"You have already reported this {{model}}.","pages.reports.reasons.spam":"Spam","pages.reports.reasons.violence":"Promoting Violence","pages.reports.reasons.hate":"Hate","pages.reports.reasons.inappropriate_content":"Inappropriate Content","pages.reports.reasons.impersonation":"Impersonation","pages.reports.reasons.trademark":"Trademark or Copyright","pages.reports.reasons.selfharm":"Self-Harm","pages.reports.reasons.harassment":"Harassment","pages.galleries.title":"Galleries","pages.galleries.empty_title":"No galleries have been published yet. Once they do they will appear here.","pages.galleries.search.loading_results":"Loading results...","pages.galleries.search.no_results":"We could not find anything matching your search criteria, please try again!","pages.galleries.search.placeholder":"Search by name or curator address","pages.galleries.search.placeholder_nfts":"Search by NFTs","pages.galleries.search.error":"Could not load search results. Please try again later.","pages.galleries.my_galleries.title":"My Galleries","pages.galleries.my_galleries.subtitle":"Manage your galleries","pages.galleries.my_galleries.new_gallery":"New Gallery","pages.galleries.my_galleries.no_galleries":"You have not created any galleries yet. To create a gallery, click on the \"Create Gallery\" button.","pages.galleries.my_galleries.no_available_collections":"You have hidden all your collections. If you want to create a gallery, make sure you have at least 1 collection available.","pages.galleries.my_galleries.no_draft_galleries":"You have no draft galleries yet. To create a gallery, click on the \"Create Gallery\" button.","pages.galleries.my_galleries.succesfully_deleted":"Gallery has been successfully removed","pages.galleries.my_galleries.draft_succesfully_deleted":"Draft has been successfully removed","pages.galleries.my_galleries.successfully_created":"Gallery has been successfully created","pages.galleries.my_galleries.successfully_updated":"Gallery has been successfully updated","pages.galleries.my_galleries.new_gallery_no_nfts":"Creating a Gallery requires you to own an NFT.","pages.galleries.my_galleries.new_gallery_all_collections_hidden":"Creating a Gallery requires you to have at least 1 collection available.","pages.galleries.my_galleries.delete_modal.title":"Delete Draft","pages.galleries.my_galleries.delete_modal.text":"Are you sure you want to delete the draft? Everything you've done will be deleted and you won't be able to get it back.","pages.galleries.my_galleries.nfts_no_longer_owned":"NFTs no longer owned by this wallet have been removed from the draft”","pages.galleries.copy_gallery_link":"Copy Gallery Link","pages.galleries.my_nfts":"My NFTs","pages.galleries.show_hidden_collections":"Show hidden collections","pages.galleries.value":"Value","pages.galleries.floor_price":"Floor Price","pages.galleries.nfts":"NFTs","pages.galleries.collections":"Collections","pages.galleries.galleries_count_simple":"{0} galleries|{1} gallery|[2,*] galleries","pages.galleries.galleries_count":"{0} {{count}} Galleries|{1} {{count}} Gallery|[2,*] {{count}} Galleries","pages.galleries.collections_count_simple":"{0} collections|{1} collection|[2,*] collections","pages.galleries.collections_count":"{0} {{count}} Collections|{1} {{count}} Collection|[2,*] {{count}} Collections","pages.galleries.nfts_count_simple":"{0} NFTs|{1} NFT|[2,*] NFTs","pages.galleries.nfts_count":"{0} {{count}} NFTs|{1} {{count}} NFT|[2,*] {{count}} NFTs","pages.galleries.users_count_simple":"{0} users|{1} user|[2,*] users","pages.galleries.users_count":"{0} {{count}} Users|{1} {{count}} User|[2,*] {{count}} Users","pages.galleries.featuring":"Featuring","pages.galleries.curated_by":"Curated by","pages.galleries.worth_about":"Worth About","pages.galleries.valued_at":"valued at","pages.galleries.from":"From","pages.galleries.most_popular_galleries":"Most Popular Galleries","pages.galleries.newest_galleries":"Newest Galleries","pages.galleries.most_valuable_galleries":"Most Valuable Galleries","pages.galleries.most_popular":"Most Popular","pages.galleries.newest":"Newest","pages.galleries.most_valuable":"Most Valuable","pages.galleries.create.search_by_nfts":"Search by NFTs","pages.galleries.create.input_placeholder":"Enter gallery name","pages.galleries.create.title_too_long":"Gallery name must not exceed {{max}} characters.","pages.galleries.create.already_selected_nft":"NFT already exists in this gallery","pages.galleries.create.nft_missing_image":"Only NFTs with images can be added to galleries","pages.galleries.create.nft_gallery_limit":"You can only add 16 NFTs per gallery","pages.galleries.create.gallery_cover":"Gallery Cover","pages.galleries.create.gallery_cover_description":"The cover is used for the card on the gallery list page. While the cover is not a requirement it will allow you to add personality and stand out from the crowd.","pages.galleries.create.gallery_cover_information":"Image dimensions must be at least 287px x 190px, with a max size of 2 MB (JPG, PNG or GIF)","pages.galleries.create.no_results":"We could not find anything matching your search criteria, please try again!","pages.galleries.create.templates.cover":"Cover","pages.galleries.create.templates.template":"Template","pages.galleries.create.templates.select":"Select Gallery Template","pages.galleries.create.templates.basic":"Basic Gallery","pages.galleries.create.templates.coming_soon":"More Coming Soon","pages.galleries.create.load_more_collections_one":"Load {{count}} More Collection","pages.galleries.create.load_more_collections_other":"Load {{count}} More Collections","pages.galleries.create.load_more_nfts":"Load More NFTs","pages.galleries.create.can_purchase":"You can purchase NFTs with these top NFT Marketplaces:","pages.galleries.create.must_own_one_nft":"You must own at least one (1) NFT in order to create a gallery.","pages.galleries.create.back_to_galleries":"Back to Galleries","pages.galleries.create.draft_saved":"Draft Saved","pages.galleries.create.saving_to_draft":"Saving to draft","pages.galleries.create.drafts_limit_modal_title":"Draft Gallery Limit","pages.galleries.create.drafts_limit_modal_message":"You’ve hit your limit for draft galleries. While you can still make new galleries and publish them, they won’t be saved as drafts. To Free up space, you can either delete existing drafts or publish them.","pages.galleries.create.drafts_limit_modal_cancel":"Go to Drafts","pages.galleries.delete_modal.title":"Delete Gallery","pages.galleries.delete_modal.confirmation_text":"Are you sure you want to delete the gallery? Deleting a Gallery is permanent, all associated views and likes will be lost.","pages.galleries.consists_of_collections":"{0} This gallery consists of {{count}} collections|{1} This gallery consists of {{count}} collection|[2,*] This gallery consists of {{count}} collections","pages.galleries.guest_banner.title":"Craft the ultimate","pages.galleries.guest_banner.subtitle":"Pick your favorites, curate your gallery, & share it with the world.","pages.profile.title":"Profile","pages.token_panel.balance_tooltip":"Total percentage of the portfolio held in this token","pages.token_panel.insufficient_funds":"Insufficient Balance","pages.token_panel.error":"Dashbrd has failed to load token information. Please try again later.","pages.token_panel.failed_to_retrieve_transactions":"We were unable to fetch your transactions.","pages.token_panel.tabs.transaction_history":"Transaction History","pages.token_panel.tabs.history":"History","pages.token_panel.tabs.market_data":"Market Data","pages.token_panel.details.current_price":"Current Price","pages.token_panel.details.title":"Token Details","pages.token_panel.details.market_cap":"Market Cap","pages.token_panel.details.volume":"Daily Volume","pages.token_panel.details.supply":"Minted Supply","pages.token_panel.details.ath":"All-Time High","pages.token_panel.details.atl":"All-Time Low","pages.token_panel.chart.failed":"Dashbrd has failed to load chart information. Please try again later.","pages.transaction_details_panel.title":"Transaction Details","pages.transaction_details_panel.details.blockchain":"Blockchain","pages.transaction_details_panel.details.timestamp":"Timestamp","pages.transaction_details_panel.details.transaction_hash":"Transaction Hash","pages.transaction_details_panel.details.transaction_fee":"Transaction Fee","pages.transaction_details_panel.details.gas_price":"Gas Price","pages.transaction_details_panel.details.gas_used":"Gas Used","pages.transaction_details_panel.details.nonce":"Nonce","pages.send_receive_panel.send.labels.token_and_amount":"Token and Amount","pages.send_receive_panel.send.labels.destination_address":"Destination Address","pages.send_receive_panel.send.labels.projected_fee":"Projected Fee","pages.send_receive_panel.send.placeholders.enter_amount":"Enter Amount","pages.send_receive_panel.send.placeholders.insert_recipient_address":"Insert Recipient Address","pages.send_receive_panel.send.placeholders.projected_fee":"Projected Fee","pages.send_receive_panel.send.errors.amount":"Insufficient Funds: You do not have enough to cover the amount + fee.","pages.send_receive_panel.send.errors.destination":"Destination address is not correct. Check and input again.","pages.send_receive_panel.send.hints.token_price":"Token Price","pages.send_receive_panel.send.fees.Fast":"Fast","pages.send_receive_panel.send.fees.Avg":"Avg","pages.send_receive_panel.send.fees.Slow":"Slow","pages.send_receive_panel.send.search_dropdown.placeholder":"Search token","pages.send_receive_panel.send.search_dropdown.no_results":"No Results","pages.send_receive_panel.send.search_dropdown.error":"Error occurred while searching tokens.","pages.send_receive_panel.send.transaction_time":"Transaction Time: ~{{ time }} minutes","pages.send_receive_panel.send.from":"From","pages.send_receive_panel.send.to":"To","pages.send_receive_panel.send.amount":"Amount","pages.send_receive_panel.send.fee":"Fee","pages.send_receive_panel.send.total_amount":"Total Amount","pages.send_receive_panel.send.waiting_message":"Review and verify the information on your MetaMask. Sign to send the transaction.","pages.send_receive_panel.send.waiting_spinner_text":"Waiting for confirmation...","pages.send_receive_panel.send.failed_message":"It looks like something went wrong while sending your transaction. Press 'Retry' to make another attempt.","pages.send_receive_panel.receive.alert":"Send only Polygon or Ethereum Network compatible tokens to this address or you could permanently lose your funds!","pages.settings.title":"Settings","pages.settings.sidebar.general":"General","pages.settings.sidebar.notifications":"Notifications","pages.settings.sidebar.session_history":"Sessions History","pages.settings.general.title":"Settings","pages.settings.general.subtitle":"Customize your App Experience","pages.settings.general.currency":"Currency","pages.settings.general.currency_subtitle":"Select your default currency which will be used throughout the app.","pages.settings.general.time_date":"Time & Date","pages.settings.general.time_date_subtitle":"Select how you want time and date be shown inside app.","pages.settings.general.date_format":"Date Format","pages.settings.general.time_format":"Time Format","pages.settings.general.timezone":"Timezone","pages.settings.general.set_defaults":"Set Defaults","pages.settings.general.set_defaults_content":"Reverting to the default settings will remove any customizations previously made. Are you sure?","pages.settings.general.save":"Save Settings","pages.settings.general.saved":"Your settings have been successfully saved","pages.wallet.title":"Wallet","pages.privacy_policy.title":"Privacy Policy","pages.terms_of_service.title":"Terms of Service","pagination.previous":"« Previous","pagination.next":"Next »","passwords.reset":"Your password has been reset!","passwords.sent":"We have emailed your password reset link!","passwords.throttled":"Please wait before retrying.","passwords.token":"This password reset token is invalid.","passwords.user":"We can't find a user with that email address.","urls.landing":"https://dashbrd.com","urls.cookie_policy":"https://dashbrd.com/cookie-policy","urls.privacy_policy":"https://dashbrd.com/privacy-policy","urls.terms_of_service":"https://dashbrd.com/terms-of-service","urls.twitter":"https://x.com/DashbrdApp","urls.discord":"https://discord.gg/MJyWKkCJ5k","urls.github":"https://github.com/ArdentHQ/dashbrd","urls.coingecko":"https://www.coingecko.com","urls.etherscan":"https://etherscan.io","urls.polygonscan":"https://polygonscan.com","urls.alchemy":"https://www.alchemy.com","urls.moralis":"https://moralis.io","urls.mnemonic":"https://www.mnemonichq.com","urls.opensea":"https://opensea.io/","urls.explorers.etherscan.token_transactions":"https://etherscan.io/token/{{token}}?a={{address}}","urls.explorers.etherscan.addresses":"https://etherscan.io/address/{{address}}","urls.explorers.etherscan.transactions":"https://etherscan.io/tx/{{id}}","urls.explorers.etherscan.nft":"https://etherscan.io/nft/{{address}}/{{nftId}}","urls.explorers.polygonscan.token_transactions":"https://polygonscan.com/token/{{token}}?a={{address}}","urls.explorers.polygonscan.addresses":"https://polygonscan.com/address/{{address}}","urls.explorers.polygonscan.transactions":"https://polygonscan.com/tx/{{id}}","urls.explorers.polygonscan.nft":"https://polygonscan.com/nft/{{address}}/{{nftId}}","urls.explorers.mumbai.token_transactions":"https://mumbai.polygonscan.com/token/{{token}}?a={{address}}","urls.explorers.mumbai.addresses":"https://mumbai.polygonscan.com/address/{{address}}","urls.explorers.mumbai.transactions":"https://mumbai.polygonscan.com/tx/{{id}}","urls.explorers.mumbai.nft":"https://mumbai.polygonscan.com/nft/{{address}}/{{nftId}}","urls.explorers.goerli.token_transactions":"https://goerli.etherscan.io/token/{{token}}?a={{address}}","urls.explorers.goerli.addresses":"https://goerli.etherscan.io/address/{{address}}","urls.explorers.goerli.transactions":"https://goerli.etherscan.io/tx/{{id}}","urls.explorers.goerli.nft":"https://goerli.etherscan.io/nft/{{address}}/{{nftId}}","urls.marketplaces.opensea.collection":"https://opensea.io/assets/{{network}}/{{address}}","urls.marketplaces.opensea.nft":"https://opensea.io/assets/{{network}}/{{address}}/{{nftId}}","urls.marketplaces.rarible.collection":"https://rarible.com/collection/{{address}}/items","urls.marketplaces.rarible.nft":"https://rarible.com/token/{{address}}:{{nftId}}","urls.marketplaces.blur.collection":"https://blur.io/collection/{{address}}","urls.marketplaces.blur.nft":"https://blur.io/asset/{{address}}/{{nftId}}","urls.marketplaces.looksrare.collection":"https://looksrare.org/collections/{{address}}","urls.marketplaces.looksrare.nft":"https://looksrare.org/collections/{{address}}/{{nftId}}","validation.accepted":"The {{attribute}} must be accepted.","validation.accepted_if":"The {{attribute}} must be accepted when {{other}} is {{value}}.","validation.active_url":"The {{attribute}} is not a valid URL.","validation.after":"The {{attribute}} must be a date after {{date}}.","validation.after_or_equal":"The {{attribute}} must be a date after or equal to {{date}}.","validation.alpha":"The {{attribute}} must only contain letters.","validation.alpha_dash":"The {{attribute}} must only contain letters, numbers, dashes and underscores.","validation.alpha_num":"The {{attribute}} must only contain letters and numbers.","validation.array":"The {{attribute}} must be an array.","validation.ascii":"The {{attribute}} must only contain single-byte alphanumeric characters and symbols.","validation.before":"The {{attribute}} must be a date before {{date}}.","validation.before_or_equal":"The {{attribute}} must be a date before or equal to {{date}}.","validation.between.array":"The {{attribute}} must have between {{min}} and {{max}} items.","validation.between.file":"The {{attribute}} must be between {{min}} and {{max}} kilobytes.","validation.between.numeric":"The {{attribute}} must be between {{min}} and {{max}}.","validation.between.string":"The {{attribute}} must be between {{min}} and {{max}} characters.","validation.boolean":"The {{attribute}} field must be true or false.","validation.confirmed":"The {{attribute}} confirmation does not match.","validation.current_password":"The password is incorrect.","validation.date":"The {{attribute}} is not a valid date.","validation.date_equals":"The {{attribute}} must be a date equal to {{date}}.","validation.date_format":"The {{attribute}} does not match the format {{format}}.","validation.decimal":"The {{attribute}} must have {{decimal}} decimal places.","validation.declined":"The {{attribute}} must be declined.","validation.declined_if":"The {{attribute}} must be declined when {{other}} is {{value}}.","validation.different":"The {{attribute}} and {{other}} must be different.","validation.digits":"The {{attribute}} must be {{digits}} digits.","validation.digits_between":"The {{attribute}} must be between {{min}} and {{max}} digits.","validation.dimensions":"The {{attribute}} has invalid image dimensions.","validation.distinct":"The {{attribute}} field has a duplicate value.","validation.doesnt_end_with":"The {{attribute}} may not end with one of the following: {{values}}.","validation.doesnt_start_with":"The {{attribute}} may not start with one of the following: {{values}}.","validation.email":"The {{attribute}} must be a valid email address.","validation.ends_with":"The {{attribute}} must end with one of the following: {{values}}.","validation.enum":"The selected {{attribute}} is invalid.","validation.exists":"The selected {{attribute}} is invalid.","validation.file":"The {{attribute}} must be a file.","validation.filled":"The {{attribute}} field must have a value.","validation.gt.array":"The {{attribute}} must have more than {{value}} items.","validation.gt.file":"The {{attribute}} must be greater than {{value}} kilobytes.","validation.gt.numeric":"The {{attribute}} must be greater than {{value}}.","validation.gt.string":"The {{attribute}} must be greater than {{value}} characters.","validation.gte.array":"The {{attribute}} must have {{value}} items or more.","validation.gte.file":"The {{attribute}} must be greater than or equal to {{value}} kilobytes.","validation.gte.numeric":"The {{attribute}} must be greater than or equal to {{value}}.","validation.gte.string":"The {{attribute}} must be greater than or equal to {{value}} characters.","validation.image":"The {{attribute}} must be an image.","validation.in":"The selected {{attribute}} is invalid.","validation.in_array":"The {{attribute}} field does not exist in {{other}}.","validation.integer":"The {{attribute}} must be an integer.","validation.ip":"The {{attribute}} must be a valid IP address.","validation.ipv4":"The {{attribute}} must be a valid IPv4 address.","validation.ipv6":"The {{attribute}} must be a valid IPv6 address.","validation.json":"The {{attribute}} must be a valid JSON string.","validation.lowercase":"The {{attribute}} must be lowercase.","validation.lt.array":"The {{attribute}} must have less than {{value}} items.","validation.lt.file":"The {{attribute}} must be less than {{value}} kilobytes.","validation.lt.numeric":"The {{attribute}} must be less than {{value}}.","validation.lt.string":"The {{attribute}} must be less than {{value}} characters.","validation.lte.array":"The {{attribute}} must not have more than {{value}} items.","validation.lte.file":"The {{attribute}} must be less than or equal to {{value}} kilobytes.","validation.lte.numeric":"The {{attribute}} must be less than or equal to {{value}}.","validation.lte.string":"The {{attribute}} must be less than or equal to {{value}} characters.","validation.mac_address":"The {{attribute}} must be a valid MAC address.","validation.max.array":"The {{attribute}} must not have more than {{max}} items.","validation.max.file":"The {{attribute}} must not be greater than {{max}} kilobytes.","validation.max.numeric":"The {{attribute}} must not be greater than {{max}}.","validation.max.string":"The {{attribute}} must not be greater than {{max}} characters.","validation.max_digits":"The {{attribute}} must not have more than {{max}} digits.","validation.mimes":"The {{attribute}} must be a file of type: {{values}}.","validation.mimetypes":"The {{attribute}} must be a file of type: {{values}}.","validation.min.array":"The {{attribute}} must have at least {{min}} items.","validation.min.file":"The {{attribute}} must be at least {{min}} kilobytes.","validation.min.numeric":"The {{attribute}} must be at least {{min}}.","validation.min.string":"The {{attribute}} must be at least {{min}} characters.","validation.min_digits":"The {{attribute}} must have at least {{min}} digits.","validation.missing":"The {{attribute}} field must be missing.","validation.missing_if":"The {{attribute}} field must be missing when {{other}} is {{value}}.","validation.missing_unless":"The {{attribute}} field must be missing unless {{other}} is {{value}}.","validation.missing_with":"The {{attribute}} field must be missing when {{values}} is present.","validation.missing_with_all":"The {{attribute}} field must be missing when {{values}} are present.","validation.multiple_of":"The {{attribute}} must be a multiple of {{value}}.","validation.not_in":"The selected {{attribute}} is invalid.","validation.not_regex":"The {{attribute}} format is invalid.","validation.numeric":"The {{attribute}} must be a number.","validation.password.letters":"The {{attribute}} must contain at least one letter.","validation.password.mixed":"The {{attribute}} must contain at least one uppercase and one lowercase letter.","validation.password.numbers":"The {{attribute}} must contain at least one number.","validation.password.symbols":"The {{attribute}} must contain at least one symbol.","validation.password.uncompromised":"The given {{attribute}} has appeared in a data leak. Please choose a different {{attribute}}.","validation.present":"The {{attribute}} field must be present.","validation.prohibited":"The {{attribute}} field is prohibited.","validation.prohibited_if":"The {{attribute}} field is prohibited when {{other}} is {{value}}.","validation.prohibited_unless":"The {{attribute}} field is prohibited unless {{other}} is in {{values}}.","validation.prohibits":"The {{attribute}} field prohibits {{other}} from being present.","validation.regex":"The {{attribute}} format is invalid.","validation.required":"The {{attribute}} field is required.","validation.required_array_keys":"The {{attribute}} field must contain entries for: {{values}}.","validation.required_if":"The {{attribute}} field is required when {{other}} is {{value}}.","validation.required_if_accepted":"The {{attribute}} field is required when {{other}} is accepted.","validation.required_unless":"The {{attribute}} field is required unless {{other}} is in {{values}}.","validation.required_with":"The {{attribute}} field is required when {{values}} is present.","validation.required_with_all":"The {{attribute}} field is required when {{values}} are present.","validation.required_without":"The {{attribute}} field is required when {{values}} is not present.","validation.required_without_all":"The {{attribute}} field is required when none of {{values}} are present.","validation.same":"The {{attribute}} and {{other}} must match.","validation.size.array":"The {{attribute}} must contain {{size}} items.","validation.size.file":"The {{attribute}} must be {{size}} kilobytes.","validation.size.numeric":"The {{attribute}} must be {{size}}.","validation.size.string":"The {{attribute}} must be {{size}} characters.","validation.starts_with":"The {{attribute}} must start with one of the following: {{values}}.","validation.string":"The {{attribute}} must be a string.","validation.timezone":"The {{attribute}} must be a valid timezone.","validation.unique":"The {{attribute}} has already been taken.","validation.uploaded":"The {{attribute}} failed to upload.","validation.uppercase":"The {{attribute}} must be uppercase.","validation.url":"The {{attribute}} must be a valid URL.","validation.ulid":"The {{attribute}} must be a valid ULID.","validation.uuid":"The {{attribute}} must be a valid UUID.","validation.custom.attribute-name.rule-name":"custom-message","validation.unsupported_currency_code":"The currency code you provided is invalid or not supported.","validation.unsupported_period":"The period you provided is invalid or not supported.","validation.unsupported_token_symbol":"The token symbol you provided is invalid or not supported.","validation.gallery_title_required":"Gallery name is required.","validation.gallery_title_max_characters":"The gallery name should not exceed 50 characters.","validation.gallery_title_invalid":"The gallery name is invalid.","validation.nfts_required":"Please add at least one NFT.","validation.nfts_max_size":"Galleries can contain no more than {{limit}} NFTs","validation.invalid_nfts":"The NFT in position {{position}} is invalid, please select another one.","validation.invalid_cover":"You have selected an invalid cover image, please try another one."} \ No newline at end of file diff --git a/resources/js/Pages/Collections/CollectionOfTheMonth.tsx b/resources/js/Pages/Collections/CollectionOfTheMonth.tsx new file mode 100644 index 000000000..aea4d1098 --- /dev/null +++ b/resources/js/Pages/Collections/CollectionOfTheMonth.tsx @@ -0,0 +1,99 @@ +import { type PageProps, router } from "@inertiajs/core"; +import { Head } from "@inertiajs/react"; +import cn from "classnames"; +import { useTranslation } from "react-i18next"; +import { IconButton } from "@/Components/Buttons"; +import { WinnersChart } from "@/Components/Collections/CollectionOfTheMonthWinners/CollectionOfTheMonthWinners.blocks"; +import { Heading } from "@/Components/Heading"; +import { Icon } from "@/Components/Icon"; +import { Link } from "@/Components/Link"; +import { DefaultLayout } from "@/Layouts/DefaultLayout"; + +interface CollectionOfTheMonthProperties extends PageProps { + title: string; + collections: App.Data.Collections.CollectionOfTheMonthData[]; +} + +const CollectionOfTheMonth = ({ title, collections }: CollectionOfTheMonthProperties): JSX.Element => { + const { t } = useTranslation(); + + const date = new Date(); + date.setMonth(date.getMonth() - 1); + const previousMonth = `${date.toLocaleString("default", { month: "long" })} ${date.getFullYear()}`; + + return ( + + + +
    +
    + { + router.get(route("collections")); + }} + iconSize="xs" + className="mr-3 h-6 w-6 bg-transparent text-theme-dark-300 lg:h-10 lg:w-10" + /> + + + + {t("common.back_to")}{" "} + + + {t("common.collections")} + + +
    + +
    +
    + + {t("pages.collections.collection_of_the_month.winners_month", { + month: previousMonth, + })} + +
    + +
    +
    + +
    +
    +
    + +
    + + {t("pages.collections.collection_of_the_month.content_to_be_added.title")} + + +

    + {t("pages.collections.collection_of_the_month.content_to_be_added.description")} +

    +
    +
    +
    +
    +
    + ); +}; + +export default CollectionOfTheMonth; diff --git a/resources/js/images.ts b/resources/js/images.ts index 38d16acf3..ea0f614c3 100644 --- a/resources/js/images.ts +++ b/resources/js/images.ts @@ -5,10 +5,16 @@ import { ReactComponent as AuthInstallWallet } from "@images/auth-install-wallet import { ReactComponent as CrownBadgeDark } from "@images/collections/crown-badge-dark.svg"; import { ReactComponent as CrownBadge } from "@images/collections/crown-badge.svg"; import { ReactComponent as OneBarChartDark } from "@images/collections/one-bar-chart-dark.svg"; +import { ReactComponent as OneBarChartLgDark } from "@images/collections/one-bar-chart-lg-dark.svg"; +import { ReactComponent as OneBarChartLg } from "@images/collections/one-bar-chart-lg.svg"; import { ReactComponent as OneBarChart } from "@images/collections/one-bar-chart.svg"; import { ReactComponent as ThreeBarChartDark } from "@images/collections/three-bar-chart-dark.svg"; +import { ReactComponent as ThreeBarChartLgDark } from "@images/collections/three-bar-chart-lg-dark.svg"; +import { ReactComponent as ThreeBarChartLg } from "@images/collections/three-bar-chart-lg.svg"; import { ReactComponent as ThreeBarChart } from "@images/collections/three-bar-chart.svg"; import { ReactComponent as TwoBarChartDark } from "@images/collections/two-bar-chart-dark.svg"; +import { ReactComponent as TwoBarChartLgDark } from "@images/collections/two-bar-chart-lg-dark.svg"; +import { ReactComponent as TwoBarChartLg } from "@images/collections/two-bar-chart-lg.svg"; import { ReactComponent as TwoBarChart } from "@images/collections/two-bar-chart.svg"; import { ReactComponent as VoteNextMonthWinnersDark } from "@images/collections/vote-next-month-winners-dark.svg"; import { ReactComponent as VoteNextMonthWinners } from "@images/collections/vote-next-month-winners.svg"; @@ -75,5 +81,11 @@ export { TwoBarChartDark, OneBarChart, OneBarChartDark, + OneBarChartLgDark, + OneBarChartLg, + ThreeBarChartLgDark, + ThreeBarChartLg, + TwoBarChartLgDark, + TwoBarChartLg, CollectionsGrid, }; diff --git a/routes/web.php b/routes/web.php index b9d0fdc81..c4ab80bd3 100644 --- a/routes/web.php +++ b/routes/web.php @@ -4,6 +4,7 @@ use App\Http\Controllers\ArticleController; use App\Http\Controllers\CollectionController; +use App\Http\Controllers\CollectionOfTheMonthController; use App\Http\Controllers\CollectionReportController; use App\Http\Controllers\CollectionVoteController; use App\Http\Controllers\DashboardController; @@ -99,6 +100,7 @@ Route::group(['prefix' => 'collections'], function () { Route::get('', [CollectionController::class, 'index'])->name('collections'); + Route::get('collection-of-the-month', CollectionOfTheMonthController::class)->name('collection-of-the-month'); Route::get('{collection:slug}', [CollectionController::class, 'show'])->name('collections.view'); Route::get('{collection:slug}/articles', [CollectionController::class, 'articles'])->name('collections.articles'); Route::get('{collection:slug}/{nft:token_number}', [NftController::class, 'show'])->name('collection-nfts.view'); diff --git a/tests/App/Http/Controllers/CollectionOfTheMonthControllerTest.php b/tests/App/Http/Controllers/CollectionOfTheMonthControllerTest.php new file mode 100644 index 000000000..49eb2f5ee --- /dev/null +++ b/tests/App/Http/Controllers/CollectionOfTheMonthControllerTest.php @@ -0,0 +1,27 @@ +create(); + + CollectionVote::factory()->create(['collection_id' => $collection->id]); + + $this->get(route('collection-of-the-month'))->assertOk(); +}); +it('shows a 404 page if no collections', function () { + $this->get(route('collection-of-the-month'))->assertNotFound(); +}); + +it('prevents having a collection with `collection-of-the-month` as slug', function () { + $collection = Collection::factory()->create(['name' => 'Collection Of The Month']); + + expect($collection->slug)->toBe('collection-of-the-month-collection'); + + $collection2 = Collection::factory()->create(['name' => 'Collection Of The Month']); + + expect($collection2->slug)->toBe('collection-of-the-month-collection-1'); +}); From bc816eecb783a4393dce5b1bb47189cde39fb8c6 Mon Sep 17 00:00:00 2001 From: Alfonso Bribiesca Date: Fri, 8 Dec 2023 05:07:51 -0600 Subject: [PATCH 034/145] feat: hook up collections overview to actual data (#540) --- .../Collections/CollectionOfTheMonthData.php | 3 +- .../Collections/PopularCollectionData.php | 9 +- .../Collections/VotableCollectionData.php | 59 +++++++ app/Http/Controllers/CollectionController.php | 140 +++++++++++++---- app/Models/Collection.php | 81 ++++++++++ app/Models/CollectionVote.php | 12 ++ .../NominateCollectionName.test.tsx | 30 +--- .../CollectionName/NominateCollectionName.tsx | 9 +- .../CollectionOfTheMonthWinners.blocks.tsx | 6 +- .../CollectionOfTheMonthWinners.tsx | 7 +- .../CollectionVoting/NominationDialog.tsx | 3 +- .../CollectionVoting/NomineeCollection.tsx | 3 +- .../CollectionVoting/NomineeCollections.tsx | 9 +- .../CollectionVoting/VoteCollections.test.tsx | 32 ++-- .../CollectionVoting/VoteCollections.tsx | 102 +++++++------ resources/js/Pages/Collections/Index.tsx | 44 ++---- .../VotableCollectionDataFactory.ts | 23 +++ resources/types/generated.d.ts | 16 ++ .../Controllers/CollectionControllerTest.php | 5 + tests/App/Models/CollectionTest.php | 144 ++++++++++++++++++ tests/App/Models/CollectionVoteTest.php | 29 +++- 21 files changed, 595 insertions(+), 171 deletions(-) create mode 100644 app/Data/Collections/VotableCollectionData.php create mode 100644 resources/js/Tests/Factories/Collections/VotableCollectionDataFactory.ts diff --git a/app/Data/Collections/CollectionOfTheMonthData.php b/app/Data/Collections/CollectionOfTheMonthData.php index a4664a929..48b5b6297 100644 --- a/app/Data/Collections/CollectionOfTheMonthData.php +++ b/app/Data/Collections/CollectionOfTheMonthData.php @@ -17,7 +17,6 @@ public function __construct( #[WithTransformer(IpfsGatewayUrlTransformer::class)] public ?string $image, public int $votes, - ) { } @@ -25,7 +24,7 @@ public static function fromModel(Collection $collection): self { return new self( image: $collection->extra_attributes->get('image'), - votes: $collection->votes()->inCurrentMonth()->count(), + votes: $collection->votes()->inPreviousMonth()->count(), ); } } diff --git a/app/Data/Collections/PopularCollectionData.php b/app/Data/Collections/PopularCollectionData.php index a8749cd2e..192a29d34 100644 --- a/app/Data/Collections/PopularCollectionData.php +++ b/app/Data/Collections/PopularCollectionData.php @@ -36,6 +36,7 @@ public function __construct( public static function fromModel(Collection $collection, CurrencyCode $currency): self { + /** @var mixed $collection (volume_fiat is add with the `scopeSelectVolumeFiat`) */ return new self( id: $collection->id, name: $collection->name, @@ -44,10 +45,10 @@ public static function fromModel(Collection $collection, CurrencyCode $currency) floorPrice: $collection->floor_price, floorPriceCurrency: $collection->floorPriceToken ? Str::lower($collection->floorPriceToken->symbol) : null, floorPriceDecimals: $collection->floorPriceToken?->decimals, - // @TODO: makey this dynamic - volume: '19000000000000000000', - volumeFiat: 35380.4, - volumeCurrency: 'eth', + volume: $collection->volume, + volumeFiat: (float) $collection->volume_fiat, + // Volume is normalized to `ETH` + volumeCurrency: 'ETH', volumeDecimals: 18, image: $collection->extra_attributes->get('image'), ); diff --git a/app/Data/Collections/VotableCollectionData.php b/app/Data/Collections/VotableCollectionData.php new file mode 100644 index 000000000..303f0c6b4 --- /dev/null +++ b/app/Data/Collections/VotableCollectionData.php @@ -0,0 +1,59 @@ +id, + rank: $collection->rank, + name: $collection->name, + image: $collection->extra_attributes->get('image'), + votes: $showVotes ? $collection->votes_count : null, + floorPrice: $collection->floor_price, + floorPriceFiat: (float) $collection->fiatValue($currency), + floorPriceCurrency: $collection->floor_price_symbol, + floorPriceDecimals: $collection->floor_price_decimals, + volume: $collection->volume, + volumeFiat: (float) $collection->volume_fiat, + // Volume is normalized to `ETH` + volumeCurrency: 'ETH', + volumeDecimals: 18, + nftsCount: $collection->nfts_count, + ); + } +} diff --git a/app/Http/Controllers/CollectionController.php b/app/Http/Controllers/CollectionController.php index b9ef24038..34af23606 100644 --- a/app/Http/Controllers/CollectionController.php +++ b/app/Http/Controllers/CollectionController.php @@ -11,6 +11,7 @@ use App\Data\Collections\CollectionOfTheMonthData; use App\Data\Collections\CollectionTraitFilterData; use App\Data\Collections\PopularCollectionData; +use App\Data\Collections\VotableCollectionData; use App\Data\Gallery\GalleryNftData; use App\Data\Gallery\GalleryNftsData; use App\Data\Nfts\NftActivitiesData; @@ -32,19 +33,82 @@ use Illuminate\Http\JsonResponse; use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; -use Illuminate\Pagination\LengthAwarePaginator; +use Illuminate\Pagination\Paginator; +use Illuminate\Support\Collection as SupportCollection; use Illuminate\Support\Facades\Cache; use Inertia\Inertia; use Inertia\Response; +use Spatie\LaravelData\DataCollection; use Spatie\LaravelData\PaginatedDataCollection; class CollectionController extends Controller { public function index(Request $request): Response|JsonResponse|RedirectResponse + { + return Inertia::render('Collections/Index', [ + 'allowsGuests' => true, + 'filters' => fn () => $this->getFilters($request), + 'title' => fn () => trans('metatags.collections.title'), + 'collectionsOfTheMonth' => fn () => $this->getCollectionsOfTheMonth(), + 'collections' => fn () => $this->getPopularCollections($request), + 'featuredCollections' => fn () => $this->getFeaturedCollections($request), + 'votedCollection' => fn () => $this->getVotedCollection($request), + 'votableCollections' => fn () => $this->getVotableCollections($request), + 'latestArticles' => fn () => $this->getLatestArticles(), + 'popularArticles' => fn () => $this->getPopularArticles(), + ]); + } + + /** + * @return DataCollection + */ + private function getCollectionsOfTheMonth(): DataCollection + { + return CollectionOfTheMonthData::collection(Collection::winnersOfThePreviousMonth()->limit(3)->get()); + } + + private function getVotedCollection(Request $request): ?VotableCollectionData + { + $user = $request->user(); + + if ($user === null) { + return null; + } + + $collection = Collection::votableWithRank($user->currency())->votedByUserInCurrentMonth($user)->first(); + + return $collection !== null ? VotableCollectionData::fromModel($collection, $user->currency(), showVotes: true) : null; + } + + /** + * @return SupportCollection + */ + private function getVotableCollections(Request $request): SupportCollection + { + $user = $request->user(); + + $currency = $user?->currency() ?? CurrencyCode::USD; + + $userVoted = $user !== null ? Collection::votedByUserInCurrentMonth($user)->exists() : false; + + // 8 collections on the vote table + 5 collections to nominate + $collections = Collection::votable($currency)->limit(13)->get(); + + return $collections->map(function (Collection $collection) use ($userVoted, $currency) { + return VotableCollectionData::fromModel($collection, $currency, showVotes: $userVoted); + }); + } + + /** + * @return SupportCollection + */ + private function getFeaturedCollections(Request $request): SupportCollection { $user = $request->user(); - $featuredCollections = Collection::where('is_featured', true) + $currency = $user ? $user->currency() : CurrencyCode::USD; + + $featuredCollections = Collection::featured() ->withCount(['nfts']) ->get(); @@ -54,7 +118,17 @@ public function index(Request $request): Response|JsonResponse|RedirectResponse }); }); - $currency = $user ? $user->currency() : CurrencyCode::USD; + return $featuredCollections->map(function (Collection $collection) use ($currency) { + return CollectionFeaturedData::fromModel($collection, $currency); + }); + } + + /** + * @return Paginator + */ + private function getPopularCollections(Request $request): Paginator + { + $user = $request->user(); $chainId = match ($request->query('chain')) { 'polygon' => Chain::Polygon->value, @@ -62,7 +136,9 @@ public function index(Request $request): Response|JsonResponse|RedirectResponse default => null, }; - /** @var LengthAwarePaginator $collections */ + $currency = $user ? $user->currency() : CurrencyCode::USD; + + /** @var Paginator $collections */ $collections = Collection::query() ->when($request->query('sort') !== 'floor-price', fn ($q) => $q->orderBy('volume', 'desc')) // TODO: order by top... ->filterByChainId($chainId) @@ -71,32 +147,40 @@ public function index(Request $request): Response|JsonResponse|RedirectResponse 'network', 'floorPriceToken', ]) + ->selectVolumeFiat($currency) + ->addSelect('collections.*') + ->groupBy('collections.id') ->simplePaginate(12); - return Inertia::render('Collections/Index', [ - 'allowsGuests' => true, - 'filters' => fn () => $this->getFilters($request), - 'title' => fn () => trans('metatags.collections.title'), - 'latestArticles' => fn () => ArticleData::collection(Article::isPublished() - ->with('media', 'user.media') - ->withRelatedCollections() - ->sortByPublishedDate() - ->limit(8) - ->get()), - 'popularArticles' => fn () => ArticleData::collection(Article::isPublished() - ->with('media', 'user.media') - ->withRelatedCollections() - ->sortByPopularity() - ->limit(8) - ->get()), - 'topCollections' => fn () => CollectionOfTheMonthData::collection(Collection::query()->inRandomOrder()->limit(3)->get()), - 'collections' => fn () => PopularCollectionData::collection( - $collections->through(fn ($collection) => PopularCollectionData::fromModel($collection, $currency)) - ), - 'featuredCollections' => fn () => $featuredCollections->map(function (Collection $collection) use ($user) { - return CollectionFeaturedData::fromModel($collection, $user ? $user->currency() : CurrencyCode::USD); - }), - ]); + return $collections->through(fn ($collection) => PopularCollectionData::fromModel($collection, $currency)); + } + + /** + * @return DataCollection + */ + private function getLatestArticles(): DataCollection + { + return ArticleData::collection(Article::isPublished() + ->with('media', 'user.media') + ->withRelatedCollections() + ->sortByPublishedDate() + ->limit(8) + ->get()); + + } + + /** + * @return DataCollection + */ + private function getPopularArticles() + { + return ArticleData::collection(Article::isPublished() + ->with('media', 'user.media') + ->withRelatedCollections() + ->sortByPopularity() + ->limit(8) + ->get()); + } /** diff --git a/app/Models/Collection.php b/app/Models/Collection.php index b7274dd43..fc43aeaa3 100644 --- a/app/Models/Collection.php +++ b/app/Models/Collection.php @@ -11,6 +11,7 @@ use App\Models\Traits\Reportable; use App\Notifications\CollectionReport; use App\Support\BlacklistedCollections; +use Carbon\Carbon; use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; @@ -588,4 +589,84 @@ public function scopeFeatured(Builder $query): Builder { return $query->where('is_featured', true); } + + /** + * @param Builder $query + * @return Builder + */ + public function scopeVotableWithRank(Builder $query, CurrencyCode $currency): Builder + { + $subQuery = Collection::query() + ->votable($currency) + ->addSelect([ + DB::raw('ROW_NUMBER() OVER (ORDER BY COUNT(DISTINCT collection_votes.id) DESC, volume DESC NULLS LAST) as rank'), + ]); + + return $query->fromSub($subQuery, 'collections'); + } + + /** + * @param Builder $query + * @return Builder + */ + public function scopeVotable(Builder $query, CurrencyCode $currency): Builder + { + return $query + ->selectVolumeFiat($currency) + ->addSelect([ + 'collections.*', + DB::raw('MIN(floor_price_token.symbol) as floor_price_symbol'), + DB::raw('MIN(floor_price_token.decimals) as floor_price_decimals'), + DB::raw('COUNT(Distinct collection_votes.id) as votes_count'), + ]) + ->leftJoin('collection_votes', function ($join) { + $join->on('collection_votes.collection_id', '=', 'collections.id') + ->whereBetween('collection_votes.voted_at', [ + Carbon::now()->startOfMonth(), + Carbon::now()->endOfMonth(), + ]); + }) + ->leftJoin('tokens as floor_price_token', 'collections.floor_price_token_id', '=', 'floor_price_token.id') + ->withCount('nfts') + ->groupBy('collections.id') + ->orderBy('votes_count', 'desc') + ->orderByRaw('volume DESC NULLS LAST'); + } + + /** + * @param Builder $query + * @return Builder + */ + public function scopeSelectVolumeFiat(Builder $query, CurrencyCode $currency): Builder + { + $currencyCode = Str::lower($currency->value); + + return $query->addSelect( + DB::raw(" + (MIN(eth_token.extra_attributes -> 'market_data' -> 'current_prices' ->> '{$currencyCode}')::numeric * collections.volume::numeric / (10 ^ MAX(eth_token.decimals))) + AS volume_fiat") + )->leftJoin('tokens as eth_token', 'eth_token.symbol', '=', DB::raw("'ETH'")); + } + + /** + * @param Builder $query + * @return Builder + */ + public function scopeVotedByUserInCurrentMonth(Builder $query, User $user): Builder + { + return $query->whereHas('votes', fn ($q) => $q->inCurrentMonth()->where('wallet_id', $user->wallet_id)); + } + + /** + * @param Builder $query + * @return Builder + */ + public function scopeWinnersOfThePreviousMonth(Builder $query): Builder + { + return $query + ->withCount(['votes' => fn ($query) => $query->inPreviousMonth()]) + // order by votes count excluding nulls + ->whereHas('votes', fn ($query) => $query->inPreviousMonth()) + ->orderBy('votes_count', 'desc'); + } } diff --git a/app/Models/CollectionVote.php b/app/Models/CollectionVote.php index 31a4c0456..7573e533e 100644 --- a/app/Models/CollectionVote.php +++ b/app/Models/CollectionVote.php @@ -35,4 +35,16 @@ public function scopeinCurrentMonth(Builder $query): Builder Carbon::now()->endOfMonth(), ]); } + + /** + * @param Builder $query + * @return Builder + */ + public function scopeInPreviousMonth(Builder $query): Builder + { + return $query->whereBetween('voted_at', [ + Carbon::now()->subMonth()->startOfMonth(), + Carbon::now()->subMonth()->endOfMonth(), + ]); + } } diff --git a/resources/js/Components/Collections/CollectionName/NominateCollectionName.test.tsx b/resources/js/Components/Collections/CollectionName/NominateCollectionName.test.tsx index b9aae1c87..aabe0d855 100644 --- a/resources/js/Components/Collections/CollectionName/NominateCollectionName.test.tsx +++ b/resources/js/Components/Collections/CollectionName/NominateCollectionName.test.tsx @@ -1,16 +1,15 @@ import React from "react"; import { NominateCollectionName } from "./NominateCollectionName"; -import { type VoteCollectionProperties } from "@/Pages/Collections/Components/CollectionVoting"; +import VotableCollectionDataFactory from "@/Tests/Factories/Collections/VotableCollectionDataFactory"; import { render, screen } from "@/Tests/testing-library"; -const demoCollection: VoteCollectionProperties = { - floorPriceFiat: "45.25", +const demoCollection = new VotableCollectionDataFactory().create({ + floorPriceFiat: 45.25, floorPrice: "0", floorPriceCurrency: "ETH", floorPriceDecimals: 18, volumeFiat: 45.12, id: 1, - index: 1, name: "AlphaDogs", image: "https://i.seadn.io/gcs/files/4ef4a60496c335d66eba069423c0af90.png?w=500&auto=format", volume: "0", @@ -18,7 +17,7 @@ const demoCollection: VoteCollectionProperties = { volumeDecimals: 18, votes: 45, nftsCount: 5, -}; +}); describe("NominateCollectionName", () => { it("should render", () => { @@ -27,12 +26,6 @@ describe("NominateCollectionName", () => { expect(screen.getByTestId("NominateCollectionName")).toBeInTheDocument(); }); - it("should use ETH as default volume currency", () => { - render(); - - expect(screen.getByTestId("CollectionName__volume")).toHaveTextContent("0 ETH"); - }); - it("should render the volume with the selected currency", () => { render(); @@ -45,21 +38,6 @@ describe("NominateCollectionName", () => { expect(screen.getByTestId("CollectionName__volume")).toHaveTextContent("0 BTC"); }); - it("should render the volume using 18 decimals to format by default", () => { - render( - , - ); - - expect(screen.getByTestId("CollectionName__volume")).toHaveTextContent("1 ETH"); - }); - it("should render the volume using the specified decimals", () => { render( { const collectionNameReference = useRef(null); @@ -52,9 +51,9 @@ export const NominateCollectionName = ({

    diff --git a/resources/js/Components/Collections/CollectionOfTheMonthWinners/CollectionOfTheMonthWinners.blocks.tsx b/resources/js/Components/Collections/CollectionOfTheMonthWinners/CollectionOfTheMonthWinners.blocks.tsx index 9a80aaace..9aa0e73dc 100644 --- a/resources/js/Components/Collections/CollectionOfTheMonthWinners/CollectionOfTheMonthWinners.blocks.tsx +++ b/resources/js/Components/Collections/CollectionOfTheMonthWinners/CollectionOfTheMonthWinners.blocks.tsx @@ -296,10 +296,10 @@ export const WinnersChart = ({ export const WinnersChartMobile = ({ winner, - currentMonth, + previousMonth, }: { winner: App.Data.Collections.CollectionOfTheMonthData; - currentMonth?: string; + previousMonth?: string; }): JSX.Element => { const { isDark } = useDarkModeContext(); const { t } = useTranslation(); @@ -325,7 +325,7 @@ export const WinnersChartMobile = ({ {t("pages.collections.collection_of_the_month.winners_month", { - month: currentMonth, + month: previousMonth, })}
    diff --git a/resources/js/Components/Collections/CollectionOfTheMonthWinners/CollectionOfTheMonthWinners.tsx b/resources/js/Components/Collections/CollectionOfTheMonthWinners/CollectionOfTheMonthWinners.tsx index 08b5e96cd..0e36da033 100644 --- a/resources/js/Components/Collections/CollectionOfTheMonthWinners/CollectionOfTheMonthWinners.tsx +++ b/resources/js/Components/Collections/CollectionOfTheMonthWinners/CollectionOfTheMonthWinners.tsx @@ -18,14 +18,15 @@ export const CollectionOfTheMonthWinners = ({ const showWinners = winners.length > 0; const date = new Date(); - const currentMonth = `${date.toLocaleString("default", { month: "long" })} ${date.getFullYear()}`; + date.setMonth(date.getMonth() - 1); + const previousMonth = `${date.toLocaleString("default", { month: "long" })} ${date.getFullYear()}`; return ( <> {winners.length > 0 && ( )} @@ -43,7 +44,7 @@ export const CollectionOfTheMonthWinners = ({ > {showWinners ? t("pages.collections.collection_of_the_month.winners_month", { - month: currentMonth, + month: previousMonth, }) : t("pages.collections.collection_of_the_month.vote_for_next_months_winners")} diff --git a/resources/js/Pages/Collections/Components/CollectionVoting/NominationDialog.tsx b/resources/js/Pages/Collections/Components/CollectionVoting/NominationDialog.tsx index f331a9e37..d20a8c7da 100644 --- a/resources/js/Pages/Collections/Components/CollectionVoting/NominationDialog.tsx +++ b/resources/js/Pages/Collections/Components/CollectionVoting/NominationDialog.tsx @@ -4,7 +4,6 @@ import { NomineeCollections } from "./NomineeCollections"; import { Button } from "@/Components/Buttons"; import { Dialog } from "@/Components/Dialog"; import { SearchInput } from "@/Components/Form/SearchInput"; -import { type VoteCollectionProperties } from "@/Pages/Collections/Components/CollectionVoting/VoteCollections"; const NominationDialogFooter = ({ setIsOpen, @@ -54,7 +53,7 @@ export const NominationDialog = ({ }: { isOpen: boolean; setIsOpen: (isOpen: boolean) => void; - collections: VoteCollectionProperties[]; + collections: App.Data.Collections.VotableCollectionData[]; user: App.Data.UserData | null; }): JSX.Element => { const { t } = useTranslation(); diff --git a/resources/js/Pages/Collections/Components/CollectionVoting/NomineeCollection.tsx b/resources/js/Pages/Collections/Components/CollectionVoting/NomineeCollection.tsx index 364e15b3b..24915480c 100644 --- a/resources/js/Pages/Collections/Components/CollectionVoting/NomineeCollection.tsx +++ b/resources/js/Pages/Collections/Components/CollectionVoting/NomineeCollection.tsx @@ -9,7 +9,6 @@ import { import { Radio } from "@/Components/Form/Radio"; import { TableCell, TableRow } from "@/Components/Table"; import { Tooltip } from "@/Components/Tooltip"; -import { type VoteCollectionProperties } from "@/Pages/Collections/Components/CollectionVoting/VoteCollections"; export const NomineeCollection = ({ collection, @@ -18,7 +17,7 @@ export const NomineeCollection = ({ selectedCollection, setSelectedCollection, }: { - collection: VoteCollectionProperties; + collection: App.Data.Collections.VotableCollectionData; uniqueKey: string; user: App.Data.UserData | null; selectedCollection: number; diff --git a/resources/js/Pages/Collections/Components/CollectionVoting/NomineeCollections.tsx b/resources/js/Pages/Collections/Components/CollectionVoting/NomineeCollections.tsx index 40ff11c1a..b8b106918 100644 --- a/resources/js/Pages/Collections/Components/CollectionVoting/NomineeCollections.tsx +++ b/resources/js/Pages/Collections/Components/CollectionVoting/NomineeCollections.tsx @@ -5,7 +5,6 @@ import { type Column, type TableState } from "react-table"; import { NomineeCollection } from "./NomineeCollection"; import { Table } from "@/Components/Table"; import { useBreakpoint } from "@/Hooks/useBreakpoint"; -import { type VoteCollectionProperties } from "@/Pages/Collections/Components/CollectionVoting/VoteCollections"; export const NomineeCollections = ({ collections, @@ -14,7 +13,7 @@ export const NomineeCollections = ({ selectedCollection, setSelectedCollection, }: { - collections: VoteCollectionProperties[]; + collections: App.Data.Collections.VotableCollectionData[]; activeSort: string; user: App.Data.UserData | null; selectedCollection: number; @@ -23,7 +22,7 @@ export const NomineeCollections = ({ const { t } = useTranslation(); const { isMdAndAbove, isLgAndAbove } = useBreakpoint(); - const initialState = useMemo>>( + const initialState = useMemo>>( () => ({ sortBy: [ { @@ -36,7 +35,7 @@ export const NomineeCollections = ({ ); const columns = useMemo(() => { - const columns: Array> = [ + const columns: Array> = [ { Header: t("pages.collections.popular_collections").toString(), id: "name", @@ -90,7 +89,7 @@ export const NomineeCollections = ({ initialState={initialState} sortDirection="desc" manualSortBy={false} - row={(collection: VoteCollectionProperties) => ( + row={(collection: App.Data.Collections.VotableCollectionData) => ( { const user = new UserDataFactory().create(); @@ -35,6 +27,7 @@ describe("VoteCollections", () => { render( , ); @@ -53,6 +46,7 @@ describe("VoteCollection", () => { collection={demoCollection} votedId={1} setSelectedCollectionId={vi.fn()} + index={1} />, ); @@ -65,6 +59,7 @@ describe("VoteCollection", () => { collection={demoCollection} votedId={1} setSelectedCollectionId={vi.fn()} + index={1} />, ); @@ -78,6 +73,7 @@ describe("VoteCollection", () => { votedId={1} setSelectedCollectionId={vi.fn()} variant="voted" + index={1} />, ); @@ -93,6 +89,7 @@ describe("VoteCollection", () => { votedId={1} setSelectedCollectionId={selectCollectionMock} variant="voted" + index={1} />, ); @@ -106,6 +103,7 @@ describe("VoteCollection", () => { , ); @@ -118,7 +116,7 @@ describe("VoteCount", () => { it("should render without vote count", () => { render( , ); diff --git a/resources/js/Pages/Collections/Components/CollectionVoting/VoteCollections.tsx b/resources/js/Pages/Collections/Components/CollectionVoting/VoteCollections.tsx index caa7afa9b..e481cb0ee 100644 --- a/resources/js/Pages/Collections/Components/CollectionVoting/VoteCollections.tsx +++ b/resources/js/Pages/Collections/Components/CollectionVoting/VoteCollections.tsx @@ -1,5 +1,5 @@ import cn from "classnames"; -import React, { useState } from "react"; +import React, { useMemo, useState } from "react"; import { useTranslation } from "react-i18next"; import { twMerge } from "tailwind-merge"; import { NominationDialog } from "./NominationDialog"; @@ -9,41 +9,55 @@ import { Icon } from "@/Components/Icon"; import { Img } from "@/Components/Image"; import { LinkButton } from "@/Components/Link"; import { Tooltip } from "@/Components/Tooltip"; +import { useBreakpoint } from "@/Hooks/useBreakpoint"; import { FormatCrypto } from "@/Utils/Currency"; import { isTruthy } from "@/Utils/is-truthy"; - -export interface VoteCollectionProperties { - id: number; - name: string; - image: string | null; - votes?: number; - index: number; - floorPrice: string | null; - floorPriceCurrency: string | null; - floorPriceFiat: string | null; - floorPriceDecimals: number | null; - volume: string | null; - volumeFiat: number | null; - volumeCurrency: string | null; - volumeDecimals: number | null; - nftsCount: number | null; -} +type VoteCollectionVariants = "selected" | "voted" | undefined; export const VoteCollections = ({ collections, + votedCollection, user, - votedCollectionId, }: { - collections: VoteCollectionProperties[]; + collections: App.Data.Collections.VotableCollectionData[]; + votedCollection: App.Data.Collections.VotableCollectionData | null; user: App.Data.UserData | null; - votedCollectionId?: number; }): JSX.Element => { const { t } = useTranslation(); const [selectedCollectionId, setSelectedCollectionId] = useState(undefined); + const { isSmAndAbove } = useBreakpoint(); const getVariant = (collectionId: number): VoteCollectionVariants => - votedCollectionId === collectionId ? "voted" : selectedCollectionId === collectionId ? "selected" : undefined; + votedCollection?.id === collectionId ? "voted" : selectedCollectionId === collectionId ? "selected" : undefined; + + const collectionsWithVote = useMemo(() => { + const shouldMergeUserVote = + votedCollection !== null && + !collections.slice(0, 8).some((collection) => collection.id === votedCollection.id); + + if (shouldMergeUserVote) { + if (isSmAndAbove) { + return [...collections.slice(0, 7), votedCollection]; + } else { + return [...collections.slice(0, 3), votedCollection]; + } + } + + if (isSmAndAbove) { + return collections.slice(0, 8); + } + + return collections.slice(0, 4); + }, [isSmAndAbove, collections, votedCollection]); + + const nominatableCollections = useMemo(() => { + if (isSmAndAbove) { + return collections.slice(8, 13); + } + + return collections.slice(4, 9); + }, [isSmAndAbove, collections]); const [isDialogOpen, setIsDialogOpen] = useState(false); @@ -61,13 +75,14 @@ export const VoteCollections = ({ className="max-w-full flex-1 space-y-2" data-testid="VoteCollections_Left" > - {collections.slice(0, 4).map((collection, index) => ( + {collectionsWithVote.slice(0, 4).map((collection, index) => ( ))}
    @@ -75,20 +90,21 @@ export const VoteCollections = ({ className="hidden flex-1 space-y-2 sm:block" data-testid="VoteCollections_Right" > - {collections.slice(4, 8).map((collection, index) => ( + {collectionsWithVote.slice(4, 8).map((collection, index) => ( ))}
    - + { @@ -106,26 +122,22 @@ export const VoteCollections = ({ ({ - ...collection, - index: index + 8, - id: index + 8, - }))} + collections={nominatableCollections} user={user} />
    ); }; -type VoteCollectionVariants = "selected" | "voted" | undefined; - export const VoteCollection = ({ collection, votedId, variant, setSelectedCollectionId, + index, }: { - collection: VoteCollectionProperties; + collection: App.Data.Collections.VotableCollectionData; + index: number; votedId?: number; variant?: VoteCollectionVariants; setSelectedCollectionId: (collectionId: number) => void; @@ -175,14 +187,14 @@ export const VoteCollection = ({ )} > - {collection.index} + {collection.rank ?? index}

    @@ -243,7 +255,7 @@ export const VoteCount = ({ }: { iconClass?: string; textClass?: string; - voteCount?: number; + voteCount: number | null; showVoteCount: boolean; }): JSX.Element => { const { t } = useTranslation(); diff --git a/resources/js/Pages/Collections/Index.tsx b/resources/js/Pages/Collections/Index.tsx index 8da00a337..2aad538bc 100644 --- a/resources/js/Pages/Collections/Index.tsx +++ b/resources/js/Pages/Collections/Index.tsx @@ -20,7 +20,7 @@ import { Heading } from "@/Components/Heading"; import { type PaginationData } from "@/Components/Pagination/Pagination.contracts"; import { useIsFirstRender } from "@/Hooks/useIsFirstRender"; import { DefaultLayout } from "@/Layouts/DefaultLayout"; -import { type VoteCollectionProperties, VoteCollections } from "@/Pages/Collections/Components/CollectionVoting"; +import { VoteCollections } from "@/Pages/Collections/Components/CollectionVoting"; import { type ChainFilter, ChainFilters } from "@/Pages/Collections/Components/PopularCollectionsFilters"; interface Filters extends Record { @@ -32,35 +32,22 @@ interface CollectionsIndexProperties extends PageProps { title: string; collections: PaginationData; featuredCollections: App.Data.Collections.CollectionFeaturedData[]; - topCollections: App.Data.Collections.CollectionOfTheMonthData[]; + collectionsOfTheMonth: App.Data.Collections.CollectionOfTheMonthData[]; + votableCollections: App.Data.Collections.VotableCollectionData[]; filters: Filters; collectionsTableResults: App.Data.Collections.CollectionData[]; latestArticles: App.Data.Articles.ArticleData[]; popularArticles: App.Data.Articles.ArticleData[]; + votedCollection: App.Data.Collections.VotableCollectionData | null; } -const demoCollection: VoteCollectionProperties = { - floorPriceFiat: "45.25", - floorPrice: "0", - floorPriceCurrency: "ETH", - floorPriceDecimals: 18, - volumeFiat: 45.12, - id: 1, - index: 1, - name: "AlphaDogs", - image: "https://i.seadn.io/gcs/files/4ef4a60496c335d66eba069423c0af90.png?w=500&auto=format", - volume: "256.000000000000000000", - volumeCurrency: "ETH", - volumeDecimals: 18, - votes: 45, - nftsCount: 5, -}; - const CollectionsIndex = ({ title, featuredCollections, collections: { data: collections }, - topCollections, + collectionsOfTheMonth, + votableCollections, + votedCollection, auth, filters, latestArticles, @@ -72,7 +59,7 @@ const CollectionsIndex = ({ const [currentFilters, setCurrentFilters] = useState(filters); - const [votedCollection, setVotedCollection] = useState(); + const [recentlyVotedCollection, setRecentlyVotedCollection] = useState(); const isFirstRender = useIsFirstRender(); @@ -169,12 +156,13 @@ const CollectionsIndex = ({ className="mt-12 flex w-full flex-col gap-4 xl:flex-row" > +
    @@ -191,7 +179,7 @@ const CollectionsIndex = ({
    0 ? initialState : {}} + activeSort={activeSort} + sortDirection={sortDirection} + manualSortBy={true} + onSort={ + onSort != null + ? (column) => { + const direction = + column.id === activeSort ? (sortDirection === "asc" ? "desc" : "asc") : "asc"; + + onSort({ sortBy: column.id, direction, selectedChainIds }); + } + : undefined + } + data={collections} + row={(collection: App.Data.Collections.CollectionData) => ( + + )} + /> + ); +}; diff --git a/resources/js/Components/Collections/CollectionsFullTable/CollectionsFullTableItem.tsx b/resources/js/Components/Collections/CollectionsFullTable/CollectionsFullTableItem.tsx new file mode 100644 index 000000000..711f042f9 --- /dev/null +++ b/resources/js/Components/Collections/CollectionsFullTable/CollectionsFullTableItem.tsx @@ -0,0 +1,156 @@ +import { BigNumber } from "@ardenthq/sdk-helpers"; +import { router } from "@inertiajs/react"; +import React, { useMemo, useRef } from "react"; +import { useTranslation } from "react-i18next"; +import { type CollectionTableItemProperties } from "./CollectionsFullTable.contracts"; +import { CollectionPortfolioValue } from "@/Components/Collections//CollectionPortfolioValue"; +import { CollectionFloorPrice } from "@/Components/Collections/CollectionFloorPrice"; +import { CollectionImages } from "@/Components/Collections/CollectionImages"; +import { CollectionName } from "@/Components/Collections/CollectionsFullTable/CollectionName"; +import { NetworkIcon } from "@/Components/Networks/NetworkIcon"; +import { TableCell, TableRow } from "@/Components/Table"; +import { useBreakpoint } from "@/Hooks/useBreakpoint"; +import { formatNumbershort } from "@/Utils/format-number"; + +export const CollectionsFullTableItem = ({ + collection, + uniqueKey, + user, +}: CollectionTableItemProperties): JSX.Element => { + const { isMdAndAbove, isLgAndAbove, isXlAndAbove, isSmAndAbove } = useBreakpoint(); + const { t } = useTranslation(); + + const reference = useRef(null); + + const nftsToShow = useMemo((): number => { + if (isLgAndAbove) { + return 3; + } + + if (isSmAndAbove) { + return 2; + } + + return 1; + }, [isXlAndAbove, isLgAndAbove]); + + const token = { + symbol: collection.floorPriceCurrency ?? "ETH", + name: collection.floorPriceCurrency ?? "ETH", + decimals: collection.floorPriceDecimals ?? 18, + }; + + return ( + { + router.visit( + route("collections.view", { + slug: collection.slug, + }), + ); + }} + > + + + + + {isLgAndAbove && ( + + {collection.floorPrice === null || user === null ? ( + + {t("common.na")} + + ) : ( + + )} + + )} + + + {collection.floorPrice === null || user === null ? ( + + {t("common.na")} + + ) : ( + + )} + + + {isMdAndAbove && ( + +
    + {formatNumbershort(collection.nftsCount)} +
    +
    + )} + + {isLgAndAbove && ( + +
    + +
    +
    + )} + + {isMdAndAbove && ( + + nftsToShow ? nftsToShow : collection.nftsCount} + maxItems={nftsToShow} + /> + + )} +
    + ); +}; diff --git a/resources/js/Components/Collections/CollectionsFullTable/index.tsx b/resources/js/Components/Collections/CollectionsFullTable/index.tsx new file mode 100644 index 000000000..8c3b3a925 --- /dev/null +++ b/resources/js/Components/Collections/CollectionsFullTable/index.tsx @@ -0,0 +1 @@ +export * from "./CollectionsFullTable"; diff --git a/resources/js/I18n/Locales/en.json b/resources/js/I18n/Locales/en.json index 0197a8933..681fad8e5 100644 --- a/resources/js/I18n/Locales/en.json +++ b/resources/js/I18n/Locales/en.json @@ -1 +1 @@ -{"auth.welcome":"Welcome to Dashbrd","auth.logged_in":"You're logged in!","auth.log_out":"Log out","auth.failed":"These credentials do not match our records.","auth.session_timeout":"Your session has timed out. Please refresh the page and try connecting your account again.","auth.session_timeout_modal":"Seems like your session has timed out. Please connnect your wallet again.","auth.password":"The provided password is incorrect.","auth.throttle":"Too many login attempts. Please try again in {{seconds}} seconds.","auth.wallet.connecting":"Connecting …","auth.wallet.waiting_for_signature":"Waiting for Signature …","auth.wallet.switching_wallet":"Switching Wallet …","auth.wallet.connect":"Connect Wallet","auth.wallet.connect_long":"Connect Your Wallet to Get Started","auth.wallet.sign_subtitle":"Connect Your Wallet to Continue","auth.wallet.disconnect":"Disconnect Wallet","auth.wallet.install":"Install MetaMask","auth.wallet.install_long":"Install MetaMask to Get Started","auth.wallet.sign":"Sign Message","auth.wallet.sign_message":"Welcome to Dashbrd. In order to login, sign this message with your wallet. It doesn't cost you anything!\n\nSigning ID (you can ignore this): {{nonce}}","auth.wallet.connect_subtitle":"Click on the MetaMask icon in your browser to confirm the action and connect your wallet.","auth.wallet.requires_signature":"In order to prevent impersonation, we require a signature to perform this action. This signature is only a signed message and does not give any access to your wallet.","auth.errors.metamask.no_account":"No account found. Please connect your wallet and try again.","auth.errors.metamask.generic":"Connection attempt error. Please retry and follow the steps to connect your wallet.","auth.errors.metamask.invalid_network":"Please switch to Polygon or Ethereum Mainnet in your MetaMask plugin to connect to Dashbrd.","auth.errors.metamask.provider_missing":"You don't have MetaMask installed in your browser. Please install and try again.","auth.errors.metamask.user_rejected":"It looks like you cancelled signing of the authentication message. Please try again.","auth.errors.metamask.provider_not_set":"Ethereum provider is not set","auth.validation.wallet_login_failed":"There was a problem trying to verify your signature. Please try again.","auth.validation.invalid_address":"Your wallet address is invalid. Please try again.","auth.validation.invalid_signature":"Signature is invalid. Please try again.","auth.validation.invalid_network":"Please switch to Polygon or Ethereum Mainnet in your MetaMask plugin to connect to Dashbrd.","common.author":"Author","common.add":"Add","common.amount":"Amount","common.balance":"Balance","common.cancel":"Cancel","common.delete":"Delete","common.edit":"Edit","common.confirm":"Confirm","common.connect":"Connect","common.continue":"Continue","common.done":"Done","common.filter":"Filter","common.items":"Items","common.receive":"Receive","common.received":"Received","common.retry":"Retry","common.records":"Records","common.save":"Save","common.send":"Send","common.sent":"Sent","common.show":"Show","common.searching":"Searching...","common.other":"Other","common.owned":"Owned","common.token":"Token","common.tokens":"Tokens","common.wallet":"Wallet","common.pending":"Pending","common.publish":"Publish","common.published":"Published","common.empty":"Empty","common.your_address":"Your Address","common.warning":"Warning","common.my_address":"My Address","common.my_wallet":"My Wallet","common.my_collections":"My Collections","common.my_balance":"My Balance","common.na":"N/A","common.simple_plural_without_data":"One comment|Many comments","common.simple_plural_with_data":"{{count}} comment|{{count}} comments","common.advanced_plural_without_data":"{0} no comments yet|{1} 1 comment|[2,*] Many comments","common.advanced_plural_with_data":"{0} no comments yet|{1} 1 comment|[2,*] {{count}} comments","common.copy_clipboard":"Copy to Clipboard","common.copy":"Copy","common.download":"Download","common.zoom":"Zoom","common.my_collection":"My Collection","common.max":"Max","common.chain":"Chain","common.copied":"Copied!","common.coming_soon":"Coming Soon","common.more_details":"More Details","common.close":"Close","common.close_toast":"Close toast","common.loading":"Loading","common.price":"Price","common.articles":"Articles","common.most_popular":"Most Popular","common.market_cap":"Market Cap","common.volume":"Volume","common.volume_frequency":"Volume {{frequency}}","common.value":"Value","common.last_n_days":"Last {{count}} Days","common.details":"Details","common.view_all":"View All","common.view_more_on_polygonscan":"View More on Polygonscan","common.view_more_on_etherscan":"View More on Etherscan","common.view_nft_on_etherscan":"View NFT on Etherscan","common.view_nft_on_polygonscan":"View NFT on Polygonscan","common.view_nft_on_goerli_tesnet":"View NFT on Goerli Testnet Explorer","common.view_nft_on_mumbai_tesnet":"View NFT on Mumbai Testnet Explorer","common.polygonscan":"Polygonscan","common.etherscan":"Etherscan","common.featured":"Featured","common.floor_price":"Floor Price","common.floor":"Floor","common.supply":"Supply","common.owners":"Owners","common.created":"Created","common.nft":"NFT","common.collection":"Collection","common.collections":"Collections","common.gallery":"Gallery","common.basic_gallery":"Basic Gallery","common.gallery_name":"Gallery Name","common.create_gallery":"Create Gallery","common.external_link":"External Link","common.follow_link":"Follow Link","common.cover":"Cover","common.template":"Template","common.page":"Page","common.polygon":"Polygon","common.ethereum":"Ethereum","common.mumbai":"Mumbai","common.goerli":"Goerli","common.of":"of","common.pagination_input_placeholder":"Enter the page number","common.pagination_input_placeholder_mobile":"Page number","common.nft_count":"{0} {{count}} NFTs|{1} {{count}} NFT|[2,*] {{count}} NFTs","common.nft_gallery":"NFT Gallery","common.unable_to_retrieve_image":"Unable to retrieve your NFT image at this time","common.optional":"Optional","common.selected":"Selected","common.select":"Select","common.preview":"Preview","common.image_size_error":"Image size must not exceed 2MB","common.image_dimensions_error":"Image dimensions must exceed 287px x 190px","common.write_to_confirm":"Write {{word}} to confirm","common.n_hours":"{0} {{count}} hour|{1} {{count}} hour|[2,*] {{count}} hours","common.n_minutes":"{0} {{count}} minute|{1} {{count}} minute|[2,*] {{count}} minutes","common.report":"Report","common.nfts":"NFTs","common.n_nfts":"{0}NFTs|{1}NFT|[2,*]NFTs","common.n_collections":"{0}collections|{1}collection|[2,*]collections","common.back":"Back","common.back_to":"Back to","common.name":"Name","common.type":"Type","common.from":"From","common.to":"To","common.sale_price":"Sale Price","common.recent_activity":"Recent Activity","common.time":"Time","common.datetime.few_seconds_ago":"A few seconds ago","common.datetime.minutes_ago":"{0} Less than a minute ago|{1} A minute ago|[2,*] {{count}} minutes ago","common.datetime.hours_ago":"{0} Less than an hour ago|{1} An hour ago|[2,*] {{count}} hours ago","common.datetime.days_ago":"{0} Less than a day ago|{1} A day ago|[2,*] {{count}} days ago","common.datetime.weeks_ago":"{0} Less than a week ago|{1} A week ago|[2,*] {{count}} weeks ago","common.datetime.months_ago":"{0} Less than a month ago|{1} A month ago|[2,*] {{count}} months ago","common.datetime.years_ago":"{0} Less than a year ago|{1} A year ago|[2,*] {{count}} years ago","common.no_traits_found":"No traits found.","common.empty_transactions":"You don't have any transactions yet. Once transactions have been made, they will show up here.","common.error":"Error","common.refresh":"Refresh","common.refresh_metadata":"Refresh Metadata","common.refreshing_metadata":"Refreshing Metadata... Please check back later.","common.refreshing_activity":"Refreshing Activity... Please check back later.","common.pending_confirmation":"Pending Confirmation","common.confirmed_transaction":"Confirmed Transaction","common.transaction_error":"Transaction Error","common.transaction_error_description_first_part":"Your transaction encountered an error. View this transaction on","common.transaction_error_description_second_part":"for more details.","common.home":"Home","common.contact":"Contact","common.menu":"Menu","common.website":"Website","common.twitter":"Twitter","common.discord":"Discord","common.facebook":"Facebook","common.reddit":"Reddit","common.x":"X","common.sort":"Sort","common.drafts":"Drafts","common.draft":"Draft","common.delete_draft":"Delete Draft","common.share_on":"Share on {{platform}}","common.top":"Top","common.all_chains":"All chains","common.votes":"Votes","common.vote":"Vote","common.vol":"Vol","footer.copyright":"{{year}} © Dashbrd. All rights reserved.","footer.all_rights_reserved":"All rights reserved","footer.privacy_policy":"Privacy Policy","footer.terms_of_service":"Terms of Service","footer.powered_by":"Powered by","format.fiat":"{{ value, currency }}","format.number":"{{ value, number }}","metatags.home.title":"Dashbrd | Web3 Portfolio Management Made Simple","metatags.home.description":"Simplify your Web3 journey with Dashbrd. Manage your portfolio of tokens, NFTs, and other digital collectibles across the Ethereum and Polygon blockchains.","metatags.home.image":"/images/meta/home.png","metatags.error.title":"Error {{code}} | Dashbrd","metatags.wallet.title":"My Wallet | Dashbrd","metatags.galleries.title":"Top NFT Galleries | Dashbrd","metatags.galleries.image":"/images/meta/nft-galleries.png","metatags.galleries.description":"Explore user published NFT galleries to find custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.most_popular.title":"Most Popular Galleries | Dashbrd","metatags.galleries.most_popular.image":"/images/meta/most-popular-nft-galleries.png","metatags.galleries.most_popular.description":"Explore and discover Most Popular NFT Galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.newest.title":"Newest Galleries | Dashbrd","metatags.galleries.newest.image":"/images/meta/newest-nft-galleries.png","metatags.galleries.newest.description":"Explore and discover most recent NFT galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More","metatags.galleries.most_valuable.title":"Most Valuable Galleries | Dashbrd","metatags.galleries.most_valuable.image":"/images/meta/most-valuable-nft-galleries.png","metatags.galleries.most_valuable.description":"Explore and discover Most Valuable NFT Galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.view.title":"{{name}} | Dashbrd","metatags.galleries.view.description":"{{name}} | A Curated NFT Gallery at Dashbrd","metatags.galleries.view.image":"/images/meta/nft-gallery.png","metatags.my_galleries.title":"My Galleries | Dashbrd","metatags.my_galleries.title_draft":"My Draft Galleries | Dashbrd","metatags.my_galleries.create.title":"Create Gallery | Dashbrd","metatags.my_galleries.edit.title":"Edit {{name}} | Dashbrd","metatags.collections.title":"Collections | Dashbrd","metatags.collections.view.title":"{{name}} Collection | Dashbrd","metatags.collections.view.description":"Immerse yourself in the intricate details of {{name}} collection, featuring remarkable digital assets. Start your NFT journey today!","metatags.collections.view.image":"/images/meta/nft-collection.png","metatags.collections.of-the-month.title":"Collection of the Month {{month}} | Dashbrd","metatags.my-collections.title":"My Collections | Dashbrd","metatags.nfts.view.title":"{{nft}} NFT | Dashbrd","metatags.nfts.view.description":"Uncover the complete story of {{nft}} NFT from the {{collection}} collection, delving into its unique attributes and distinctive features.","metatags.nfts.view.image":"/images/meta/nft-details.png","metatags.settings.title":"Settings | Dashbrd","metatags.articles.title":"Articles | Dashbrd","metatags.articles.view.title":"{{title}} | Dashbrd","metatags.login.title":"Login | Dashbrd","metatags.privacy_policy.title":"Privacy Policy | Dashbrd","metatags.privacy_policy.description":"Dashbrd’s privacy policy outlines the information we collect and explains your choices surrounding how we use information about you.","metatags.terms_of_service.title":"Terms of Service | Dashbrd","metatags.terms_of_service.description":"These Terms of Service cover your use and access to services, products or websites of Dashbrd.","metatags.cookie_policy.title":"Cookie Policy | Dashbrd","metatags.cookie_policy.description":"Dashbrd uses cookies to make the website more user-friendly. Find out about the main types of cookies we use, and what we use them for.","metatags.welcome.title":"Welcome to Dashbrd | Web3 Simplified","pages.onboarding.title":"Get Started","pages.onboarding.heading":"Your monkeys were bored and ran off, we are trying to round them up.","pages.onboarding.message":"We are setting up your account. This process usually takes just a few minutes, but can take up to 15 minutes.","pages.error.heading":"Oops, something went wrong ...","pages.error.message":"Please try again or get in touch if the issue persists.","pages.maintenance.title":"Dashbrd is currently down for scheduled maintenance.","pages.maintenance.description":"We expect to be back soon. Thanks for your patience.","pages.dashboard.title":"My Wallet","pages.dashboard.breakdown.title":"Portfolio Breakdown","pages.dashboard.line_chart.data_error":"Could not load chart data","pages.articles.title":"Articles","pages.articles.featured_collections":"Featured Collections","pages.articles.placeholder_more_soon":"More Soon","pages.articles.no_articles":"No articles have been published yet. Please check back later!","pages.articles.header_title":"Explore our collection of","pages.articles.header_suffix_one":"published article","pages.articles.header_suffix_other":"published articles","pages.articles.audio_version":"Audio version","pages.articles.consists_of_collections":"{0} This article highlights {{count}} collections|{1} This article highlights {{count}} collection|[2,*] This article highlights {{count}} collections","pages.collections.title":"Collections","pages.collections.collections":"Collections","pages.collections.popular_collections":"Popular Collections","pages.collections.collection_value":"Collection Value","pages.collections.nfts_owned":"NFTs Owned","pages.collections.header_title":"You own <0>{{nftsCount}} {{nfts}} across <0>{{collectionsCount}} {{collections}}, worth about <0><1>{{worth}}","pages.collections.search_placeholder":"Search by Collection","pages.collections.properties":"Properties","pages.collections.collections_network":"Collections Network","pages.collections.property_search_placeholder":"Feature Search","pages.collections.floor_price":"Floor Price","pages.collections.value":"Value","pages.collections.rarity":"Rarity","pages.collections.report":"Report","pages.collections.hide_collection":"Hide Collection","pages.collections.unhide_collection":"Unhide Collection","pages.collections.no_collections":"You do not own any NFTs yet. Once you do they will be shown here.","pages.collections.all_collections_hidden":"You have hidden all your collections. Unhide and they will appear here.","pages.collections.about_collection":"About Collection","pages.collections.show_hidden":"Show Hidden","pages.collections.show_my_collection":"Show My Collection","pages.collections.owned":"Owned","pages.collections.activities.loading_activities":"We're fetching Activity for this NFT, please hang tight, this can take a while.","pages.collections.activities.loading_activities_collection":"We're fetching Activity for this collection, please hang tight, this can take a while.","pages.collections.activities.ignores_activities":"We don't support activity history for this collection yet.","pages.collections.activities.no_activity":"This collection does not have any activity yet.","pages.collections.activities.types.LABEL_MINT":"Mint","pages.collections.activities.types.LABEL_TRANSFER":"Transfer","pages.collections.activities.types.LABEL_SALE":"Sale","pages.collections.activities.types.LABEL_BURN":"Burn","pages.collections.collection_of_the_month.title":"Collection of the Month {{month}}","pages.collections.collection_of_the_month.winners_month":"Winners: {{month}}","pages.collections.collection_of_the_month.vote_for_next_months_winners":"Vote now for next month's winners","pages.collections.collection_of_the_month.view_previous_winners":"View Previous Winners","pages.collections.collection_of_the_month.vote_received_modal.title":"Vote Received","pages.collections.collection_of_the_month.vote_received_modal.description":"Your vote has been recorded. Share your vote on X and let everyone know!","pages.collections.collection_of_the_month.vote_received_modal.share_vote":"Share Vote","pages.collections.collection_of_the_month.vote_received_modal.img_alt":"I voted for Dashbrd Project of the Month","pages.collections.collection_of_the_month.vote_received_modal.x_text":"I voted for {{collection}} for collection of the month @dashbrdapp! Go show your support!","pages.collections.collection_of_the_month.vote_success":"Your vote has been successfully submitted","pages.collections.collection_of_the_month.content_to_be_added.title":"Content to be added","pages.collections.collection_of_the_month.content_to_be_added.description":"There will be a list of previous month winners here soon!","pages.collections.collection_of_the_month.has_won_already":"This collection has already
    won Collection of the Month.","pages.collections.articles.heading":"Latest NFT News & Features","pages.collections.articles.no_articles":"No articles have been linked to this collection as of now.","pages.collections.articles.no_articles_with_filters":"We could not find any articles matching your search criteria, please try again!","pages.collections.articles.search_placeholder":"Search in Articles","pages.collections.articles.sort_latest":"Latest","pages.collections.articles.sort_popularity":"Most Popular","pages.collections.search.loading_results":"Loading results...","pages.collections.search.no_results":"We could not find anything matching your search criteria, please try again!","pages.collections.search.no_results_with_filters":"We could not find anything matching your filters, please try again!","pages.collections.search.no_results_ownership":"You do not own any NFTs in this collection","pages.collections.search.error":"Could not load search results. Please try again later.","pages.collections.vote.vote_for_top_collection":"Vote for Top Collection of the Month","pages.collections.vote.vote":"Vote","pages.collections.vote.time_left":"Time Left","pages.collections.vote.or_nominate_collection":"Or nominate a collection","pages.collections.vote.nominate_collection":"Nominate a collection","pages.collections.vote.vote_to_reveal":"Vote to reveal data","pages.collections.vote.already_voted":"You’ve already nominated. Come back next month!","pages.collections.sorting.token_number":"Token Number","pages.collections.sorting.recently_received":"Recently Received","pages.collections.sorting.recently_created":"Recently Created","pages.collections.sorting.oldest_collection":"Oldest Collection","pages.collections.traits.description":"List of NFT traits by % of occurrence in the collection","pages.collections.traits.no_traits":"No Properties can be found for this NFT","pages.collections.menu.collection":"Collection","pages.collections.menu.articles":"Articles","pages.collections.menu.activity":"Activity","pages.collections.hidden_modal.collection_hidden":"Collection Hidden","pages.collections.hidden_modal.description":"This collection is currently set to Hidden. Are you sure you want to unhide this collection? You can\n reset the collection to hidden from the collection menu.","pages.collections.hidden_modal.unhide":"Unhide","pages.collections.hidden_modal.error":"Something went wrong. Please try again.","pages.collections.external_modal.you_wish_continue":"You are about to leave Dashbrd to an external website. Dashbrd has no control over the content of\n this site. Are you sure you wish to continue?","pages.collections.external_modal.not_show":"Do not show this message again.","pages.collections.refresh.title":"Refresh your collection","pages.collections.refresh.notice":"You can refresh data every 15 minutes.","pages.collections.refresh.notice_wait":"Please wait. You can refresh data every 15 minutes.","pages.collections.refresh.toast":"We're updating information for your collection.","pages.collections.featured.title":"Featured Collections","pages.collections.featured.button":"Explore Collection","pages.collections.footer.heading_broken.0":"Connect with MetaMask","pages.collections.footer.heading_broken.1":"& Manage Your Collection","pages.collections.footer.subtitle":"Explore, Filter, & Share your favorite NFTs with Dashbrd.","pages.collections.footer.button":"Manage Collections","pages.nfts.nft":"nft","pages.nfts.about_nft":"About NFT","pages.nfts.owned_by":"Owned by","pages.nfts.collection_image":"collection image","pages.nfts.menu.properties":"Properties","pages.nfts.menu.activity":"Activity","pages.reports.title":"Submit a Report","pages.reports.description":"Thanks for looking out by reporting things that break the rules. Let us know what's happening and we'll receive the report.","pages.reports.success":"Thank you for your report. We'll review it and see if it breaks our ToS.","pages.reports.failed":"Something went wrong. Please try again.","pages.reports.throttle":"You have made too many requests. Please wait {{time}} before reporting again.","pages.reports.reported":"You have already reported this {{model}}.","pages.reports.reasons.spam":"Spam","pages.reports.reasons.violence":"Promoting Violence","pages.reports.reasons.hate":"Hate","pages.reports.reasons.inappropriate_content":"Inappropriate Content","pages.reports.reasons.impersonation":"Impersonation","pages.reports.reasons.trademark":"Trademark or Copyright","pages.reports.reasons.selfharm":"Self-Harm","pages.reports.reasons.harassment":"Harassment","pages.galleries.title":"Galleries","pages.galleries.empty_title":"No galleries have been published yet. Once they do they will appear here.","pages.galleries.search.loading_results":"Loading results...","pages.galleries.search.no_results":"We could not find anything matching your search criteria, please try again!","pages.galleries.search.placeholder":"Search by name or curator address","pages.galleries.search.placeholder_nfts":"Search by NFTs","pages.galleries.search.error":"Could not load search results. Please try again later.","pages.galleries.my_galleries.title":"My Galleries","pages.galleries.my_galleries.subtitle":"Manage your galleries","pages.galleries.my_galleries.new_gallery":"New Gallery","pages.galleries.my_galleries.no_galleries":"You have not created any galleries yet. To create a gallery, click on the \"Create Gallery\" button.","pages.galleries.my_galleries.no_available_collections":"You have hidden all your collections. If you want to create a gallery, make sure you have at least 1 collection available.","pages.galleries.my_galleries.no_draft_galleries":"You have no draft galleries yet. To create a gallery, click on the \"Create Gallery\" button.","pages.galleries.my_galleries.succesfully_deleted":"Gallery has been successfully removed","pages.galleries.my_galleries.draft_succesfully_deleted":"Draft has been successfully removed","pages.galleries.my_galleries.successfully_created":"Gallery has been successfully created","pages.galleries.my_galleries.successfully_updated":"Gallery has been successfully updated","pages.galleries.my_galleries.new_gallery_no_nfts":"Creating a Gallery requires you to own an NFT.","pages.galleries.my_galleries.new_gallery_all_collections_hidden":"Creating a Gallery requires you to have at least 1 collection available.","pages.galleries.my_galleries.delete_modal.title":"Delete Draft","pages.galleries.my_galleries.delete_modal.text":"Are you sure you want to delete the draft? Everything you've done will be deleted and you won't be able to get it back.","pages.galleries.my_galleries.nfts_no_longer_owned":"NFTs no longer owned by this wallet have been removed from the draft”","pages.galleries.copy_gallery_link":"Copy Gallery Link","pages.galleries.my_nfts":"My NFTs","pages.galleries.show_hidden_collections":"Show hidden collections","pages.galleries.value":"Value","pages.galleries.floor_price":"Floor Price","pages.galleries.nfts":"NFTs","pages.galleries.collections":"Collections","pages.galleries.galleries_count_simple":"{0} galleries|{1} gallery|[2,*] galleries","pages.galleries.galleries_count":"{0} {{count}} Galleries|{1} {{count}} Gallery|[2,*] {{count}} Galleries","pages.galleries.collections_count_simple":"{0} collections|{1} collection|[2,*] collections","pages.galleries.collections_count":"{0} {{count}} Collections|{1} {{count}} Collection|[2,*] {{count}} Collections","pages.galleries.nfts_count_simple":"{0} NFTs|{1} NFT|[2,*] NFTs","pages.galleries.nfts_count":"{0} {{count}} NFTs|{1} {{count}} NFT|[2,*] {{count}} NFTs","pages.galleries.users_count_simple":"{0} users|{1} user|[2,*] users","pages.galleries.users_count":"{0} {{count}} Users|{1} {{count}} User|[2,*] {{count}} Users","pages.galleries.featuring":"Featuring","pages.galleries.curated_by":"Curated by","pages.galleries.worth_about":"Worth About","pages.galleries.valued_at":"valued at","pages.galleries.from":"From","pages.galleries.most_popular_galleries":"Most Popular Galleries","pages.galleries.newest_galleries":"Newest Galleries","pages.galleries.most_valuable_galleries":"Most Valuable Galleries","pages.galleries.most_popular":"Most Popular","pages.galleries.newest":"Newest","pages.galleries.most_valuable":"Most Valuable","pages.galleries.create.search_by_nfts":"Search by NFTs","pages.galleries.create.input_placeholder":"Enter gallery name","pages.galleries.create.title_too_long":"Gallery name must not exceed {{max}} characters.","pages.galleries.create.already_selected_nft":"NFT already exists in this gallery","pages.galleries.create.nft_missing_image":"Only NFTs with images can be added to galleries","pages.galleries.create.nft_gallery_limit":"You can only add 16 NFTs per gallery","pages.galleries.create.gallery_cover":"Gallery Cover","pages.galleries.create.gallery_cover_description":"The cover is used for the card on the gallery list page. While the cover is not a requirement it will allow you to add personality and stand out from the crowd.","pages.galleries.create.gallery_cover_information":"Image dimensions must be at least 287px x 190px, with a max size of 2 MB (JPG, PNG or GIF)","pages.galleries.create.no_results":"We could not find anything matching your search criteria, please try again!","pages.galleries.create.templates.cover":"Cover","pages.galleries.create.templates.template":"Template","pages.galleries.create.templates.select":"Select Gallery Template","pages.galleries.create.templates.basic":"Basic Gallery","pages.galleries.create.templates.coming_soon":"More Coming Soon","pages.galleries.create.load_more_collections_one":"Load {{count}} More Collection","pages.galleries.create.load_more_collections_other":"Load {{count}} More Collections","pages.galleries.create.load_more_nfts":"Load More NFTs","pages.galleries.create.can_purchase":"You can purchase NFTs with these top NFT Marketplaces:","pages.galleries.create.must_own_one_nft":"You must own at least one (1) NFT in order to create a gallery.","pages.galleries.create.back_to_galleries":"Back to Galleries","pages.galleries.create.draft_saved":"Draft Saved","pages.galleries.create.saving_to_draft":"Saving to draft","pages.galleries.create.drafts_limit_modal_title":"Draft Gallery Limit","pages.galleries.create.drafts_limit_modal_message":"You’ve hit your limit for draft galleries. While you can still make new galleries and publish them, they won’t be saved as drafts. To Free up space, you can either delete existing drafts or publish them.","pages.galleries.create.drafts_limit_modal_cancel":"Go to Drafts","pages.galleries.delete_modal.title":"Delete Gallery","pages.galleries.delete_modal.confirmation_text":"Are you sure you want to delete the gallery? Deleting a Gallery is permanent, all associated views and likes will be lost.","pages.galleries.consists_of_collections":"{0} This gallery consists of {{count}} collections|{1} This gallery consists of {{count}} collection|[2,*] This gallery consists of {{count}} collections","pages.galleries.guest_banner.title":"Craft the ultimate","pages.galleries.guest_banner.subtitle":"Pick your favorites, curate your gallery, & share it with the world.","pages.profile.title":"Profile","pages.token_panel.balance_tooltip":"Total percentage of the portfolio held in this token","pages.token_panel.insufficient_funds":"Insufficient Balance","pages.token_panel.error":"Dashbrd has failed to load token information. Please try again later.","pages.token_panel.failed_to_retrieve_transactions":"We were unable to fetch your transactions.","pages.token_panel.tabs.transaction_history":"Transaction History","pages.token_panel.tabs.history":"History","pages.token_panel.tabs.market_data":"Market Data","pages.token_panel.details.current_price":"Current Price","pages.token_panel.details.title":"Token Details","pages.token_panel.details.market_cap":"Market Cap","pages.token_panel.details.volume":"Daily Volume","pages.token_panel.details.supply":"Minted Supply","pages.token_panel.details.ath":"All-Time High","pages.token_panel.details.atl":"All-Time Low","pages.token_panel.chart.failed":"Dashbrd has failed to load chart information. Please try again later.","pages.transaction_details_panel.title":"Transaction Details","pages.transaction_details_panel.details.blockchain":"Blockchain","pages.transaction_details_panel.details.timestamp":"Timestamp","pages.transaction_details_panel.details.transaction_hash":"Transaction Hash","pages.transaction_details_panel.details.transaction_fee":"Transaction Fee","pages.transaction_details_panel.details.gas_price":"Gas Price","pages.transaction_details_panel.details.gas_used":"Gas Used","pages.transaction_details_panel.details.nonce":"Nonce","pages.send_receive_panel.send.labels.token_and_amount":"Token and Amount","pages.send_receive_panel.send.labels.destination_address":"Destination Address","pages.send_receive_panel.send.labels.projected_fee":"Projected Fee","pages.send_receive_panel.send.placeholders.enter_amount":"Enter Amount","pages.send_receive_panel.send.placeholders.insert_recipient_address":"Insert Recipient Address","pages.send_receive_panel.send.placeholders.projected_fee":"Projected Fee","pages.send_receive_panel.send.errors.amount":"Insufficient Funds: You do not have enough to cover the amount + fee.","pages.send_receive_panel.send.errors.destination":"Destination address is not correct. Check and input again.","pages.send_receive_panel.send.hints.token_price":"Token Price","pages.send_receive_panel.send.fees.Fast":"Fast","pages.send_receive_panel.send.fees.Avg":"Avg","pages.send_receive_panel.send.fees.Slow":"Slow","pages.send_receive_panel.send.search_dropdown.placeholder":"Search token","pages.send_receive_panel.send.search_dropdown.no_results":"No Results","pages.send_receive_panel.send.search_dropdown.error":"Error occurred while searching tokens.","pages.send_receive_panel.send.transaction_time":"Transaction Time: ~{{ time }} minutes","pages.send_receive_panel.send.from":"From","pages.send_receive_panel.send.to":"To","pages.send_receive_panel.send.amount":"Amount","pages.send_receive_panel.send.fee":"Fee","pages.send_receive_panel.send.total_amount":"Total Amount","pages.send_receive_panel.send.waiting_message":"Review and verify the information on your MetaMask. Sign to send the transaction.","pages.send_receive_panel.send.waiting_spinner_text":"Waiting for confirmation...","pages.send_receive_panel.send.failed_message":"It looks like something went wrong while sending your transaction. Press 'Retry' to make another attempt.","pages.send_receive_panel.receive.alert":"Send only Polygon or Ethereum Network compatible tokens to this address or you could permanently lose your funds!","pages.settings.title":"Settings","pages.settings.sidebar.general":"General","pages.settings.sidebar.notifications":"Notifications","pages.settings.sidebar.session_history":"Sessions History","pages.settings.general.title":"Settings","pages.settings.general.subtitle":"Customize your App Experience","pages.settings.general.currency":"Currency","pages.settings.general.currency_subtitle":"Select your default currency which will be used throughout the app.","pages.settings.general.time_date":"Time & Date","pages.settings.general.time_date_subtitle":"Select how you want time and date be shown inside app.","pages.settings.general.date_format":"Date Format","pages.settings.general.time_format":"Time Format","pages.settings.general.timezone":"Timezone","pages.settings.general.set_defaults":"Set Defaults","pages.settings.general.set_defaults_content":"Reverting to the default settings will remove any customizations previously made. Are you sure?","pages.settings.general.save":"Save Settings","pages.settings.general.saved":"Your settings have been successfully saved","pages.wallet.title":"Wallet","pages.privacy_policy.title":"Privacy Policy","pages.terms_of_service.title":"Terms of Service","pagination.previous":"« Previous","pagination.next":"Next »","passwords.reset":"Your password has been reset!","passwords.sent":"We have emailed your password reset link!","passwords.throttled":"Please wait before retrying.","passwords.token":"This password reset token is invalid.","passwords.user":"We can't find a user with that email address.","urls.landing":"https://dashbrd.com","urls.cookie_policy":"https://dashbrd.com/cookie-policy","urls.privacy_policy":"https://dashbrd.com/privacy-policy","urls.terms_of_service":"https://dashbrd.com/terms-of-service","urls.twitter":"https://x.com/DashbrdApp","urls.discord":"https://discord.gg/MJyWKkCJ5k","urls.github":"https://github.com/ArdentHQ/dashbrd","urls.coingecko":"https://www.coingecko.com","urls.etherscan":"https://etherscan.io","urls.polygonscan":"https://polygonscan.com","urls.alchemy":"https://www.alchemy.com","urls.moralis":"https://moralis.io","urls.mnemonic":"https://www.mnemonichq.com","urls.opensea":"https://opensea.io/","urls.explorers.etherscan.token_transactions":"https://etherscan.io/token/{{token}}?a={{address}}","urls.explorers.etherscan.addresses":"https://etherscan.io/address/{{address}}","urls.explorers.etherscan.transactions":"https://etherscan.io/tx/{{id}}","urls.explorers.etherscan.nft":"https://etherscan.io/nft/{{address}}/{{nftId}}","urls.explorers.polygonscan.token_transactions":"https://polygonscan.com/token/{{token}}?a={{address}}","urls.explorers.polygonscan.addresses":"https://polygonscan.com/address/{{address}}","urls.explorers.polygonscan.transactions":"https://polygonscan.com/tx/{{id}}","urls.explorers.polygonscan.nft":"https://polygonscan.com/nft/{{address}}/{{nftId}}","urls.explorers.mumbai.token_transactions":"https://mumbai.polygonscan.com/token/{{token}}?a={{address}}","urls.explorers.mumbai.addresses":"https://mumbai.polygonscan.com/address/{{address}}","urls.explorers.mumbai.transactions":"https://mumbai.polygonscan.com/tx/{{id}}","urls.explorers.mumbai.nft":"https://mumbai.polygonscan.com/nft/{{address}}/{{nftId}}","urls.explorers.goerli.token_transactions":"https://goerli.etherscan.io/token/{{token}}?a={{address}}","urls.explorers.goerli.addresses":"https://goerli.etherscan.io/address/{{address}}","urls.explorers.goerli.transactions":"https://goerli.etherscan.io/tx/{{id}}","urls.explorers.goerli.nft":"https://goerli.etherscan.io/nft/{{address}}/{{nftId}}","urls.marketplaces.opensea.collection":"https://opensea.io/assets/{{network}}/{{address}}","urls.marketplaces.opensea.nft":"https://opensea.io/assets/{{network}}/{{address}}/{{nftId}}","urls.marketplaces.rarible.collection":"https://rarible.com/collection/{{address}}/items","urls.marketplaces.rarible.nft":"https://rarible.com/token/{{address}}:{{nftId}}","urls.marketplaces.blur.collection":"https://blur.io/collection/{{address}}","urls.marketplaces.blur.nft":"https://blur.io/asset/{{address}}/{{nftId}}","urls.marketplaces.looksrare.collection":"https://looksrare.org/collections/{{address}}","urls.marketplaces.looksrare.nft":"https://looksrare.org/collections/{{address}}/{{nftId}}","validation.accepted":"The {{attribute}} must be accepted.","validation.accepted_if":"The {{attribute}} must be accepted when {{other}} is {{value}}.","validation.active_url":"The {{attribute}} is not a valid URL.","validation.after":"The {{attribute}} must be a date after {{date}}.","validation.after_or_equal":"The {{attribute}} must be a date after or equal to {{date}}.","validation.alpha":"The {{attribute}} must only contain letters.","validation.alpha_dash":"The {{attribute}} must only contain letters, numbers, dashes and underscores.","validation.alpha_num":"The {{attribute}} must only contain letters and numbers.","validation.array":"The {{attribute}} must be an array.","validation.ascii":"The {{attribute}} must only contain single-byte alphanumeric characters and symbols.","validation.before":"The {{attribute}} must be a date before {{date}}.","validation.before_or_equal":"The {{attribute}} must be a date before or equal to {{date}}.","validation.between.array":"The {{attribute}} must have between {{min}} and {{max}} items.","validation.between.file":"The {{attribute}} must be between {{min}} and {{max}} kilobytes.","validation.between.numeric":"The {{attribute}} must be between {{min}} and {{max}}.","validation.between.string":"The {{attribute}} must be between {{min}} and {{max}} characters.","validation.boolean":"The {{attribute}} field must be true or false.","validation.confirmed":"The {{attribute}} confirmation does not match.","validation.current_password":"The password is incorrect.","validation.date":"The {{attribute}} is not a valid date.","validation.date_equals":"The {{attribute}} must be a date equal to {{date}}.","validation.date_format":"The {{attribute}} does not match the format {{format}}.","validation.decimal":"The {{attribute}} must have {{decimal}} decimal places.","validation.declined":"The {{attribute}} must be declined.","validation.declined_if":"The {{attribute}} must be declined when {{other}} is {{value}}.","validation.different":"The {{attribute}} and {{other}} must be different.","validation.digits":"The {{attribute}} must be {{digits}} digits.","validation.digits_between":"The {{attribute}} must be between {{min}} and {{max}} digits.","validation.dimensions":"The {{attribute}} has invalid image dimensions.","validation.distinct":"The {{attribute}} field has a duplicate value.","validation.doesnt_end_with":"The {{attribute}} may not end with one of the following: {{values}}.","validation.doesnt_start_with":"The {{attribute}} may not start with one of the following: {{values}}.","validation.email":"The {{attribute}} must be a valid email address.","validation.ends_with":"The {{attribute}} must end with one of the following: {{values}}.","validation.enum":"The selected {{attribute}} is invalid.","validation.exists":"The selected {{attribute}} is invalid.","validation.file":"The {{attribute}} must be a file.","validation.filled":"The {{attribute}} field must have a value.","validation.gt.array":"The {{attribute}} must have more than {{value}} items.","validation.gt.file":"The {{attribute}} must be greater than {{value}} kilobytes.","validation.gt.numeric":"The {{attribute}} must be greater than {{value}}.","validation.gt.string":"The {{attribute}} must be greater than {{value}} characters.","validation.gte.array":"The {{attribute}} must have {{value}} items or more.","validation.gte.file":"The {{attribute}} must be greater than or equal to {{value}} kilobytes.","validation.gte.numeric":"The {{attribute}} must be greater than or equal to {{value}}.","validation.gte.string":"The {{attribute}} must be greater than or equal to {{value}} characters.","validation.image":"The {{attribute}} must be an image.","validation.in":"The selected {{attribute}} is invalid.","validation.in_array":"The {{attribute}} field does not exist in {{other}}.","validation.integer":"The {{attribute}} must be an integer.","validation.ip":"The {{attribute}} must be a valid IP address.","validation.ipv4":"The {{attribute}} must be a valid IPv4 address.","validation.ipv6":"The {{attribute}} must be a valid IPv6 address.","validation.json":"The {{attribute}} must be a valid JSON string.","validation.lowercase":"The {{attribute}} must be lowercase.","validation.lt.array":"The {{attribute}} must have less than {{value}} items.","validation.lt.file":"The {{attribute}} must be less than {{value}} kilobytes.","validation.lt.numeric":"The {{attribute}} must be less than {{value}}.","validation.lt.string":"The {{attribute}} must be less than {{value}} characters.","validation.lte.array":"The {{attribute}} must not have more than {{value}} items.","validation.lte.file":"The {{attribute}} must be less than or equal to {{value}} kilobytes.","validation.lte.numeric":"The {{attribute}} must be less than or equal to {{value}}.","validation.lte.string":"The {{attribute}} must be less than or equal to {{value}} characters.","validation.mac_address":"The {{attribute}} must be a valid MAC address.","validation.max.array":"The {{attribute}} must not have more than {{max}} items.","validation.max.file":"The {{attribute}} must not be greater than {{max}} kilobytes.","validation.max.numeric":"The {{attribute}} must not be greater than {{max}}.","validation.max.string":"The {{attribute}} must not be greater than {{max}} characters.","validation.max_digits":"The {{attribute}} must not have more than {{max}} digits.","validation.mimes":"The {{attribute}} must be a file of type: {{values}}.","validation.mimetypes":"The {{attribute}} must be a file of type: {{values}}.","validation.min.array":"The {{attribute}} must have at least {{min}} items.","validation.min.file":"The {{attribute}} must be at least {{min}} kilobytes.","validation.min.numeric":"The {{attribute}} must be at least {{min}}.","validation.min.string":"The {{attribute}} must be at least {{min}} characters.","validation.min_digits":"The {{attribute}} must have at least {{min}} digits.","validation.missing":"The {{attribute}} field must be missing.","validation.missing_if":"The {{attribute}} field must be missing when {{other}} is {{value}}.","validation.missing_unless":"The {{attribute}} field must be missing unless {{other}} is {{value}}.","validation.missing_with":"The {{attribute}} field must be missing when {{values}} is present.","validation.missing_with_all":"The {{attribute}} field must be missing when {{values}} are present.","validation.multiple_of":"The {{attribute}} must be a multiple of {{value}}.","validation.not_in":"The selected {{attribute}} is invalid.","validation.not_regex":"The {{attribute}} format is invalid.","validation.numeric":"The {{attribute}} must be a number.","validation.password.letters":"The {{attribute}} must contain at least one letter.","validation.password.mixed":"The {{attribute}} must contain at least one uppercase and one lowercase letter.","validation.password.numbers":"The {{attribute}} must contain at least one number.","validation.password.symbols":"The {{attribute}} must contain at least one symbol.","validation.password.uncompromised":"The given {{attribute}} has appeared in a data leak. Please choose a different {{attribute}}.","validation.present":"The {{attribute}} field must be present.","validation.prohibited":"The {{attribute}} field is prohibited.","validation.prohibited_if":"The {{attribute}} field is prohibited when {{other}} is {{value}}.","validation.prohibited_unless":"The {{attribute}} field is prohibited unless {{other}} is in {{values}}.","validation.prohibits":"The {{attribute}} field prohibits {{other}} from being present.","validation.regex":"The {{attribute}} format is invalid.","validation.required":"The {{attribute}} field is required.","validation.required_array_keys":"The {{attribute}} field must contain entries for: {{values}}.","validation.required_if":"The {{attribute}} field is required when {{other}} is {{value}}.","validation.required_if_accepted":"The {{attribute}} field is required when {{other}} is accepted.","validation.required_unless":"The {{attribute}} field is required unless {{other}} is in {{values}}.","validation.required_with":"The {{attribute}} field is required when {{values}} is present.","validation.required_with_all":"The {{attribute}} field is required when {{values}} are present.","validation.required_without":"The {{attribute}} field is required when {{values}} is not present.","validation.required_without_all":"The {{attribute}} field is required when none of {{values}} are present.","validation.same":"The {{attribute}} and {{other}} must match.","validation.size.array":"The {{attribute}} must contain {{size}} items.","validation.size.file":"The {{attribute}} must be {{size}} kilobytes.","validation.size.numeric":"The {{attribute}} must be {{size}}.","validation.size.string":"The {{attribute}} must be {{size}} characters.","validation.starts_with":"The {{attribute}} must start with one of the following: {{values}}.","validation.string":"The {{attribute}} must be a string.","validation.timezone":"The {{attribute}} must be a valid timezone.","validation.unique":"The {{attribute}} has already been taken.","validation.uploaded":"The {{attribute}} failed to upload.","validation.uppercase":"The {{attribute}} must be uppercase.","validation.url":"The {{attribute}} must be a valid URL.","validation.ulid":"The {{attribute}} must be a valid ULID.","validation.uuid":"The {{attribute}} must be a valid UUID.","validation.custom.attribute-name.rule-name":"custom-message","validation.unsupported_currency_code":"The currency code you provided is invalid or not supported.","validation.unsupported_period":"The period you provided is invalid or not supported.","validation.unsupported_token_symbol":"The token symbol you provided is invalid or not supported.","validation.gallery_title_required":"Gallery name is required.","validation.gallery_title_max_characters":"The gallery name should not exceed 50 characters.","validation.gallery_title_invalid":"The gallery name is invalid.","validation.nfts_required":"Please add at least one NFT.","validation.nfts_max_size":"Galleries can contain no more than {{limit}} NFTs","validation.invalid_nfts":"The NFT in position {{position}} is invalid, please select another one.","validation.invalid_cover":"You have selected an invalid cover image, please try another one."} \ No newline at end of file +{"auth.welcome":"Welcome to Dashbrd","auth.logged_in":"You're logged in!","auth.log_out":"Log out","auth.failed":"These credentials do not match our records.","auth.session_timeout":"Your session has timed out. Please refresh the page and try connecting your account again.","auth.session_timeout_modal":"Seems like your session has timed out. Please connnect your wallet again.","auth.password":"The provided password is incorrect.","auth.throttle":"Too many login attempts. Please try again in {{seconds}} seconds.","auth.wallet.connecting":"Connecting …","auth.wallet.waiting_for_signature":"Waiting for Signature …","auth.wallet.switching_wallet":"Switching Wallet …","auth.wallet.connect":"Connect Wallet","auth.wallet.connect_long":"Connect Your Wallet to Get Started","auth.wallet.sign_subtitle":"Connect Your Wallet to Continue","auth.wallet.disconnect":"Disconnect Wallet","auth.wallet.install":"Install MetaMask","auth.wallet.install_long":"Install MetaMask to Get Started","auth.wallet.sign":"Sign Message","auth.wallet.sign_message":"Welcome to Dashbrd. In order to login, sign this message with your wallet. It doesn't cost you anything!\n\nSigning ID (you can ignore this): {{nonce}}","auth.wallet.connect_subtitle":"Click on the MetaMask icon in your browser to confirm the action and connect your wallet.","auth.wallet.requires_signature":"In order to prevent impersonation, we require a signature to perform this action. This signature is only a signed message and does not give any access to your wallet.","auth.errors.metamask.no_account":"No account found. Please connect your wallet and try again.","auth.errors.metamask.generic":"Connection attempt error. Please retry and follow the steps to connect your wallet.","auth.errors.metamask.invalid_network":"Please switch to Polygon or Ethereum Mainnet in your MetaMask plugin to connect to Dashbrd.","auth.errors.metamask.provider_missing":"You don't have MetaMask installed in your browser. Please install and try again.","auth.errors.metamask.user_rejected":"It looks like you cancelled signing of the authentication message. Please try again.","auth.errors.metamask.provider_not_set":"Ethereum provider is not set","auth.validation.wallet_login_failed":"There was a problem trying to verify your signature. Please try again.","auth.validation.invalid_address":"Your wallet address is invalid. Please try again.","auth.validation.invalid_signature":"Signature is invalid. Please try again.","auth.validation.invalid_network":"Please switch to Polygon or Ethereum Mainnet in your MetaMask plugin to connect to Dashbrd.","common.author":"Author","common.add":"Add","common.amount":"Amount","common.balance":"Balance","common.cancel":"Cancel","common.delete":"Delete","common.edit":"Edit","common.confirm":"Confirm","common.connect":"Connect","common.continue":"Continue","common.done":"Done","common.filter":"Filter","common.items":"Items","common.receive":"Receive","common.received":"Received","common.retry":"Retry","common.records":"Records","common.save":"Save","common.send":"Send","common.sent":"Sent","common.show":"Show","common.searching":"Searching...","common.other":"Other","common.owned":"Owned","common.token":"Token","common.tokens":"Tokens","common.wallet":"Wallet","common.pending":"Pending","common.publish":"Publish","common.published":"Published","common.empty":"Empty","common.your_address":"Your Address","common.warning":"Warning","common.my_address":"My Address","common.my_wallet":"My Wallet","common.my_collections":"My Collections","common.my_balance":"My Balance","common.na":"N/A","common.simple_plural_without_data":"One comment|Many comments","common.simple_plural_with_data":"{{count}} comment|{{count}} comments","common.advanced_plural_without_data":"{0} no comments yet|{1} 1 comment|[2,*] Many comments","common.advanced_plural_with_data":"{0} no comments yet|{1} 1 comment|[2,*] {{count}} comments","common.copy_clipboard":"Copy to Clipboard","common.copy":"Copy","common.download":"Download","common.zoom":"Zoom","common.my_collection":"My Collection","common.max":"Max","common.chain":"Chain","common.copied":"Copied!","common.coming_soon":"Coming Soon","common.more_details":"More Details","common.close":"Close","common.close_toast":"Close toast","common.loading":"Loading","common.price":"Price","common.articles":"Articles","common.most_popular":"Most Popular","common.market_cap":"Market Cap","common.volume":"Volume","common.volume_frequency":"Volume {{frequency}}","common.value":"Value","common.last_n_days":"Last {{count}} Days","common.details":"Details","common.view_all":"View All","common.view_more_on_polygonscan":"View More on Polygonscan","common.view_more_on_etherscan":"View More on Etherscan","common.view_nft_on_etherscan":"View NFT on Etherscan","common.view_nft_on_polygonscan":"View NFT on Polygonscan","common.view_nft_on_goerli_tesnet":"View NFT on Goerli Testnet Explorer","common.view_nft_on_mumbai_tesnet":"View NFT on Mumbai Testnet Explorer","common.polygonscan":"Polygonscan","common.etherscan":"Etherscan","common.featured":"Featured","common.floor_price":"Floor Price","common.floor":"Floor","common.supply":"Supply","common.owners":"Owners","common.created":"Created","common.nft":"NFT","common.collection":"Collection","common.collections":"Collections","common.gallery":"Gallery","common.basic_gallery":"Basic Gallery","common.gallery_name":"Gallery Name","common.create_gallery":"Create Gallery","common.external_link":"External Link","common.follow_link":"Follow Link","common.cover":"Cover","common.template":"Template","common.page":"Page","common.polygon":"Polygon","common.ethereum":"Ethereum","common.mumbai":"Mumbai","common.goerli":"Goerli","common.of":"of","common.pagination_input_placeholder":"Enter the page number","common.pagination_input_placeholder_mobile":"Page number","common.nft_count":"{0} {{count}} NFTs|{1} {{count}} NFT|[2,*] {{count}} NFTs","common.nft_gallery":"NFT Gallery","common.unable_to_retrieve_image":"Unable to retrieve your NFT image at this time","common.optional":"Optional","common.selected":"Selected","common.select":"Select","common.preview":"Preview","common.image_size_error":"Image size must not exceed 2MB","common.image_dimensions_error":"Image dimensions must exceed 287px x 190px","common.write_to_confirm":"Write {{word}} to confirm","common.n_hours":"{0} {{count}} hour|{1} {{count}} hour|[2,*] {{count}} hours","common.n_minutes":"{0} {{count}} minute|{1} {{count}} minute|[2,*] {{count}} minutes","common.report":"Report","common.nfts":"NFTs","common.n_nfts":"{0}NFTs|{1}NFT|[2,*]NFTs","common.n_collections":"{0}collections|{1}collection|[2,*]collections","common.back":"Back","common.back_to":"Back to","common.name":"Name","common.type":"Type","common.from":"From","common.to":"To","common.sale_price":"Sale Price","common.recent_activity":"Recent Activity","common.time":"Time","common.datetime.few_seconds_ago":"A few seconds ago","common.datetime.minutes_ago":"{0} Less than a minute ago|{1} A minute ago|[2,*] {{count}} minutes ago","common.datetime.hours_ago":"{0} Less than an hour ago|{1} An hour ago|[2,*] {{count}} hours ago","common.datetime.days_ago":"{0} Less than a day ago|{1} A day ago|[2,*] {{count}} days ago","common.datetime.weeks_ago":"{0} Less than a week ago|{1} A week ago|[2,*] {{count}} weeks ago","common.datetime.months_ago":"{0} Less than a month ago|{1} A month ago|[2,*] {{count}} months ago","common.datetime.years_ago":"{0} Less than a year ago|{1} A year ago|[2,*] {{count}} years ago","common.no_traits_found":"No traits found.","common.empty_transactions":"You don't have any transactions yet. Once transactions have been made, they will show up here.","common.error":"Error","common.refresh":"Refresh","common.refresh_metadata":"Refresh Metadata","common.refreshing_metadata":"Refreshing Metadata... Please check back later.","common.refreshing_activity":"Refreshing Activity... Please check back later.","common.pending_confirmation":"Pending Confirmation","common.confirmed_transaction":"Confirmed Transaction","common.transaction_error":"Transaction Error","common.transaction_error_description_first_part":"Your transaction encountered an error. View this transaction on","common.transaction_error_description_second_part":"for more details.","common.home":"Home","common.contact":"Contact","common.menu":"Menu","common.website":"Website","common.twitter":"Twitter","common.discord":"Discord","common.facebook":"Facebook","common.reddit":"Reddit","common.x":"X","common.sort":"Sort","common.drafts":"Drafts","common.draft":"Draft","common.delete_draft":"Delete Draft","common.share_on":"Share on {{platform}}","common.top":"Top","common.all_chains":"All chains","common.votes":"Votes","common.vote":"Vote","common.vol":"Vol","common.collection_preview":"Collection Preview","footer.copyright":"{{year}} © Dashbrd. All rights reserved.","footer.all_rights_reserved":"All rights reserved","footer.privacy_policy":"Privacy Policy","footer.terms_of_service":"Terms of Service","footer.powered_by":"Powered by","format.fiat":"{{ value, currency }}","format.number":"{{ value, number }}","metatags.home.title":"Dashbrd | Web3 Portfolio Management Made Simple","metatags.home.description":"Simplify your Web3 journey with Dashbrd. Manage your portfolio of tokens, NFTs, and other digital collectibles across the Ethereum and Polygon blockchains.","metatags.home.image":"/images/meta/home.png","metatags.error.title":"Error {{code}} | Dashbrd","metatags.wallet.title":"My Wallet | Dashbrd","metatags.galleries.title":"Top NFT Galleries | Dashbrd","metatags.galleries.image":"/images/meta/nft-galleries.png","metatags.galleries.description":"Explore user published NFT galleries to find custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.most_popular.title":"Most Popular Galleries | Dashbrd","metatags.galleries.most_popular.image":"/images/meta/most-popular-nft-galleries.png","metatags.galleries.most_popular.description":"Explore and discover Most Popular NFT Galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.newest.title":"Newest Galleries | Dashbrd","metatags.galleries.newest.image":"/images/meta/newest-nft-galleries.png","metatags.galleries.newest.description":"Explore and discover most recent NFT galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More","metatags.galleries.most_valuable.title":"Most Valuable Galleries | Dashbrd","metatags.galleries.most_valuable.image":"/images/meta/most-valuable-nft-galleries.png","metatags.galleries.most_valuable.description":"Explore and discover Most Valuable NFT Galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.view.title":"{{name}} | Dashbrd","metatags.galleries.view.description":"{{name}} | A Curated NFT Gallery at Dashbrd","metatags.galleries.view.image":"/images/meta/nft-gallery.png","metatags.my_galleries.title":"My Galleries | Dashbrd","metatags.my_galleries.title_draft":"My Draft Galleries | Dashbrd","metatags.my_galleries.create.title":"Create Gallery | Dashbrd","metatags.my_galleries.edit.title":"Edit {{name}} | Dashbrd","metatags.collections.title":"Collections | Dashbrd","metatags.collections.view.title":"{{name}} Collection | Dashbrd","metatags.collections.view.description":"Immerse yourself in the intricate details of {{name}} collection, featuring remarkable digital assets. Start your NFT journey today!","metatags.collections.view.image":"/images/meta/nft-collection.png","metatags.collections.of-the-month.title":"Collection of the Month {{month}} | Dashbrd","metatags.my-collections.title":"My Collections | Dashbrd","metatags.popular-collections.title":"Popular NFT Collections | Dashbrd","metatags.nfts.view.title":"{{nft}} NFT | Dashbrd","metatags.nfts.view.description":"Uncover the complete story of {{nft}} NFT from the {{collection}} collection, delving into its unique attributes and distinctive features.","metatags.nfts.view.image":"/images/meta/nft-details.png","metatags.settings.title":"Settings | Dashbrd","metatags.articles.title":"Articles | Dashbrd","metatags.articles.view.title":"{{title}} | Dashbrd","metatags.login.title":"Login | Dashbrd","metatags.privacy_policy.title":"Privacy Policy | Dashbrd","metatags.privacy_policy.description":"Dashbrd’s privacy policy outlines the information we collect and explains your choices surrounding how we use information about you.","metatags.terms_of_service.title":"Terms of Service | Dashbrd","metatags.terms_of_service.description":"These Terms of Service cover your use and access to services, products or websites of Dashbrd.","metatags.cookie_policy.title":"Cookie Policy | Dashbrd","metatags.cookie_policy.description":"Dashbrd uses cookies to make the website more user-friendly. Find out about the main types of cookies we use, and what we use them for.","metatags.welcome.title":"Welcome to Dashbrd | Web3 Simplified","pages.onboarding.title":"Get Started","pages.onboarding.heading":"Your monkeys were bored and ran off, we are trying to round them up.","pages.onboarding.message":"We are setting up your account. This process usually takes just a few minutes, but can take up to 15 minutes.","pages.error.heading":"Oops, something went wrong ...","pages.error.message":"Please try again or get in touch if the issue persists.","pages.maintenance.title":"Dashbrd is currently down for scheduled maintenance.","pages.maintenance.description":"We expect to be back soon. Thanks for your patience.","pages.dashboard.title":"My Wallet","pages.dashboard.breakdown.title":"Portfolio Breakdown","pages.dashboard.line_chart.data_error":"Could not load chart data","pages.articles.title":"Articles","pages.articles.featured_collections":"Featured Collections","pages.articles.placeholder_more_soon":"More Soon","pages.articles.no_articles":"No articles have been published yet. Please check back later!","pages.articles.header_title":"Explore our collection of","pages.articles.header_suffix_one":"published article","pages.articles.header_suffix_other":"published articles","pages.articles.audio_version":"Audio version","pages.articles.consists_of_collections":"{0} This article highlights {{count}} collections|{1} This article highlights {{count}} collection|[2,*] This article highlights {{count}} collections","pages.collections.title":"Collections","pages.collections.collections":"Collections","pages.collections.popular_collections":"Popular Collections","pages.collections.collection_value":"Collection Value","pages.collections.nfts_owned":"NFTs Owned","pages.collections.header_title":"You own <0>{{nftsCount}} {{nfts}} across <0>{{collectionsCount}} {{collections}}, worth about <0><1>{{worth}}","pages.collections.search_placeholder":"Search by Collection","pages.collections.properties":"Properties","pages.collections.collections_network":"Collections Network","pages.collections.property_search_placeholder":"Feature Search","pages.collections.floor_price":"Floor Price","pages.collections.value":"Value","pages.collections.rarity":"Rarity","pages.collections.report":"Report","pages.collections.hide_collection":"Hide Collection","pages.collections.unhide_collection":"Unhide Collection","pages.collections.no_collections":"You do not own any NFTs yet. Once you do they will be shown here.","pages.collections.all_collections_hidden":"You have hidden all your collections. Unhide and they will appear here.","pages.collections.about_collection":"About Collection","pages.collections.show_hidden":"Show Hidden","pages.collections.show_my_collection":"Show My Collection","pages.collections.owned":"Owned","pages.collections.activities.loading_activities":"We're fetching Activity for this NFT, please hang tight, this can take a while.","pages.collections.activities.loading_activities_collection":"We're fetching Activity for this collection, please hang tight, this can take a while.","pages.collections.activities.ignores_activities":"We don't support activity history for this collection yet.","pages.collections.activities.no_activity":"This collection does not have any activity yet.","pages.collections.activities.types.LABEL_MINT":"Mint","pages.collections.activities.types.LABEL_TRANSFER":"Transfer","pages.collections.activities.types.LABEL_SALE":"Sale","pages.collections.activities.types.LABEL_BURN":"Burn","pages.collections.collection_of_the_month.title":"Collection of the Month {{month}}","pages.collections.collection_of_the_month.winners_month":"Winners: {{month}}","pages.collections.collection_of_the_month.vote_for_next_months_winners":"Vote now for next month's winners","pages.collections.collection_of_the_month.view_previous_winners":"View Previous Winners","pages.collections.collection_of_the_month.vote_received_modal.title":"Vote Received","pages.collections.collection_of_the_month.vote_received_modal.description":"Your vote has been recorded. Share your vote on X and let everyone know!","pages.collections.collection_of_the_month.vote_received_modal.share_vote":"Share Vote","pages.collections.collection_of_the_month.vote_received_modal.img_alt":"I voted for Dashbrd Project of the Month","pages.collections.collection_of_the_month.vote_received_modal.x_text":"I voted for {{collection}} for collection of the month @dashbrdapp! Go show your support!","pages.collections.collection_of_the_month.vote_success":"Your vote has been successfully submitted","pages.collections.collection_of_the_month.content_to_be_added.title":"Content to be added","pages.collections.collection_of_the_month.content_to_be_added.description":"There will be a list of previous month winners here soon!","pages.collections.collection_of_the_month.has_won_already":"This collection has already
    won Collection of the Month.","pages.collections.articles.heading":"Latest NFT News & Features","pages.collections.articles.no_articles":"No articles have been linked to this collection as of now.","pages.collections.articles.no_articles_with_filters":"We could not find any articles matching your search criteria, please try again!","pages.collections.articles.search_placeholder":"Search in Articles","pages.collections.articles.sort_latest":"Latest","pages.collections.articles.sort_popularity":"Most Popular","pages.collections.search.loading_results":"Loading results...","pages.collections.search.no_results":"We could not find anything matching your search criteria, please try again!","pages.collections.search.no_results_with_filters":"We could not find anything matching your filters, please try again!","pages.collections.search.no_results_ownership":"You do not own any NFTs in this collection","pages.collections.search.error":"Could not load search results. Please try again later.","pages.collections.vote.vote_for_top_collection":"Vote for Top Collection of the Month","pages.collections.vote.vote":"Vote","pages.collections.vote.time_left":"Time Left","pages.collections.vote.or_nominate_collection":"Or nominate a collection","pages.collections.vote.nominate_collection":"Nominate a collection","pages.collections.vote.vote_to_reveal":"Vote to reveal data","pages.collections.vote.already_voted":"You’ve already nominated. Come back next month!","pages.collections.sorting.token_number":"Token Number","pages.collections.sorting.recently_received":"Recently Received","pages.collections.sorting.recently_created":"Recently Created","pages.collections.sorting.oldest_collection":"Oldest Collection","pages.collections.traits.description":"List of NFT traits by % of occurrence in the collection","pages.collections.traits.no_traits":"No Properties can be found for this NFT","pages.collections.menu.collection":"Collection","pages.collections.menu.articles":"Articles","pages.collections.menu.activity":"Activity","pages.collections.hidden_modal.collection_hidden":"Collection Hidden","pages.collections.hidden_modal.description":"This collection is currently set to Hidden. Are you sure you want to unhide this collection? You can\n reset the collection to hidden from the collection menu.","pages.collections.hidden_modal.unhide":"Unhide","pages.collections.hidden_modal.error":"Something went wrong. Please try again.","pages.collections.external_modal.you_wish_continue":"You are about to leave Dashbrd to an external website. Dashbrd has no control over the content of\n this site. Are you sure you wish to continue?","pages.collections.external_modal.not_show":"Do not show this message again.","pages.collections.refresh.title":"Refresh your collection","pages.collections.refresh.notice":"You can refresh data every 15 minutes.","pages.collections.refresh.notice_wait":"Please wait. You can refresh data every 15 minutes.","pages.collections.refresh.toast":"We're updating information for your collection.","pages.collections.featured.title":"Featured Collections","pages.collections.featured.button":"Explore Collection","pages.collections.footer.heading_broken.0":"Connect with MetaMask","pages.collections.footer.heading_broken.1":"& Manage Your Collection","pages.collections.footer.subtitle":"Explore, Filter, & Share your favorite NFTs with Dashbrd.","pages.collections.footer.button":"Manage Collections","pages.nfts.nft":"nft","pages.nfts.about_nft":"About NFT","pages.nfts.owned_by":"Owned by","pages.nfts.collection_image":"collection image","pages.nfts.menu.properties":"Properties","pages.nfts.menu.activity":"Activity","pages.reports.title":"Submit a Report","pages.reports.description":"Thanks for looking out by reporting things that break the rules. Let us know what's happening and we'll receive the report.","pages.reports.success":"Thank you for your report. We'll review it and see if it breaks our ToS.","pages.reports.failed":"Something went wrong. Please try again.","pages.reports.throttle":"You have made too many requests. Please wait {{time}} before reporting again.","pages.reports.reported":"You have already reported this {{model}}.","pages.reports.reasons.spam":"Spam","pages.reports.reasons.violence":"Promoting Violence","pages.reports.reasons.hate":"Hate","pages.reports.reasons.inappropriate_content":"Inappropriate Content","pages.reports.reasons.impersonation":"Impersonation","pages.reports.reasons.trademark":"Trademark or Copyright","pages.reports.reasons.selfharm":"Self-Harm","pages.reports.reasons.harassment":"Harassment","pages.galleries.title":"Galleries","pages.galleries.empty_title":"No galleries have been published yet. Once they do they will appear here.","pages.galleries.search.loading_results":"Loading results...","pages.galleries.search.no_results":"We could not find anything matching your search criteria, please try again!","pages.galleries.search.placeholder":"Search by name or curator address","pages.galleries.search.placeholder_nfts":"Search by NFTs","pages.galleries.search.error":"Could not load search results. Please try again later.","pages.galleries.my_galleries.title":"My Galleries","pages.galleries.my_galleries.subtitle":"Manage your galleries","pages.galleries.my_galleries.new_gallery":"New Gallery","pages.galleries.my_galleries.no_galleries":"You have not created any galleries yet. To create a gallery, click on the \"Create Gallery\" button.","pages.galleries.my_galleries.no_available_collections":"You have hidden all your collections. If you want to create a gallery, make sure you have at least 1 collection available.","pages.galleries.my_galleries.no_draft_galleries":"You have no draft galleries yet. To create a gallery, click on the \"Create Gallery\" button.","pages.galleries.my_galleries.succesfully_deleted":"Gallery has been successfully removed","pages.galleries.my_galleries.draft_succesfully_deleted":"Draft has been successfully removed","pages.galleries.my_galleries.successfully_created":"Gallery has been successfully created","pages.galleries.my_galleries.successfully_updated":"Gallery has been successfully updated","pages.galleries.my_galleries.new_gallery_no_nfts":"Creating a Gallery requires you to own an NFT.","pages.galleries.my_galleries.new_gallery_all_collections_hidden":"Creating a Gallery requires you to have at least 1 collection available.","pages.galleries.my_galleries.delete_modal.title":"Delete Draft","pages.galleries.my_galleries.delete_modal.text":"Are you sure you want to delete the draft? Everything you've done will be deleted and you won't be able to get it back.","pages.galleries.my_galleries.nfts_no_longer_owned":"NFTs no longer owned by this wallet have been removed from the draft”","pages.galleries.copy_gallery_link":"Copy Gallery Link","pages.galleries.my_nfts":"My NFTs","pages.galleries.show_hidden_collections":"Show hidden collections","pages.galleries.value":"Value","pages.galleries.floor_price":"Floor Price","pages.galleries.nfts":"NFTs","pages.galleries.collections":"Collections","pages.galleries.galleries_count_simple":"{0} galleries|{1} gallery|[2,*] galleries","pages.galleries.galleries_count":"{0} {{count}} Galleries|{1} {{count}} Gallery|[2,*] {{count}} Galleries","pages.galleries.collections_count_simple":"{0} collections|{1} collection|[2,*] collections","pages.galleries.collections_count":"{0} {{count}} Collections|{1} {{count}} Collection|[2,*] {{count}} Collections","pages.galleries.nfts_count_simple":"{0} NFTs|{1} NFT|[2,*] NFTs","pages.galleries.nfts_count":"{0} {{count}} NFTs|{1} {{count}} NFT|[2,*] {{count}} NFTs","pages.galleries.users_count_simple":"{0} users|{1} user|[2,*] users","pages.galleries.users_count":"{0} {{count}} Users|{1} {{count}} User|[2,*] {{count}} Users","pages.galleries.featuring":"Featuring","pages.galleries.curated_by":"Curated by","pages.galleries.worth_about":"Worth About","pages.galleries.valued_at":"valued at","pages.galleries.from":"From","pages.galleries.most_popular_galleries":"Most Popular Galleries","pages.galleries.newest_galleries":"Newest Galleries","pages.galleries.most_valuable_galleries":"Most Valuable Galleries","pages.galleries.most_popular":"Most Popular","pages.galleries.newest":"Newest","pages.galleries.most_valuable":"Most Valuable","pages.galleries.create.search_by_nfts":"Search by NFTs","pages.galleries.create.input_placeholder":"Enter gallery name","pages.galleries.create.title_too_long":"Gallery name must not exceed {{max}} characters.","pages.galleries.create.already_selected_nft":"NFT already exists in this gallery","pages.galleries.create.nft_missing_image":"Only NFTs with images can be added to galleries","pages.galleries.create.nft_gallery_limit":"You can only add 16 NFTs per gallery","pages.galleries.create.gallery_cover":"Gallery Cover","pages.galleries.create.gallery_cover_description":"The cover is used for the card on the gallery list page. While the cover is not a requirement it will allow you to add personality and stand out from the crowd.","pages.galleries.create.gallery_cover_information":"Image dimensions must be at least 287px x 190px, with a max size of 2 MB (JPG, PNG or GIF)","pages.galleries.create.no_results":"We could not find anything matching your search criteria, please try again!","pages.galleries.create.templates.cover":"Cover","pages.galleries.create.templates.template":"Template","pages.galleries.create.templates.select":"Select Gallery Template","pages.galleries.create.templates.basic":"Basic Gallery","pages.galleries.create.templates.coming_soon":"More Coming Soon","pages.galleries.create.load_more_collections_one":"Load {{count}} More Collection","pages.galleries.create.load_more_collections_other":"Load {{count}} More Collections","pages.galleries.create.load_more_nfts":"Load More NFTs","pages.galleries.create.can_purchase":"You can purchase NFTs with these top NFT Marketplaces:","pages.galleries.create.must_own_one_nft":"You must own at least one (1) NFT in order to create a gallery.","pages.galleries.create.back_to_galleries":"Back to Galleries","pages.galleries.create.draft_saved":"Draft Saved","pages.galleries.create.saving_to_draft":"Saving to draft","pages.galleries.create.drafts_limit_modal_title":"Draft Gallery Limit","pages.galleries.create.drafts_limit_modal_message":"You’ve hit your limit for draft galleries. While you can still make new galleries and publish them, they won’t be saved as drafts. To Free up space, you can either delete existing drafts or publish them.","pages.galleries.create.drafts_limit_modal_cancel":"Go to Drafts","pages.galleries.delete_modal.title":"Delete Gallery","pages.galleries.delete_modal.confirmation_text":"Are you sure you want to delete the gallery? Deleting a Gallery is permanent, all associated views and likes will be lost.","pages.galleries.consists_of_collections":"{0} This gallery consists of {{count}} collections|{1} This gallery consists of {{count}} collection|[2,*] This gallery consists of {{count}} collections","pages.galleries.guest_banner.title":"Craft the ultimate","pages.galleries.guest_banner.subtitle":"Pick your favorites, curate your gallery, & share it with the world.","pages.profile.title":"Profile","pages.token_panel.balance_tooltip":"Total percentage of the portfolio held in this token","pages.token_panel.insufficient_funds":"Insufficient Balance","pages.token_panel.error":"Dashbrd has failed to load token information. Please try again later.","pages.token_panel.failed_to_retrieve_transactions":"We were unable to fetch your transactions.","pages.token_panel.tabs.transaction_history":"Transaction History","pages.token_panel.tabs.history":"History","pages.token_panel.tabs.market_data":"Market Data","pages.token_panel.details.current_price":"Current Price","pages.token_panel.details.title":"Token Details","pages.token_panel.details.market_cap":"Market Cap","pages.token_panel.details.volume":"Daily Volume","pages.token_panel.details.supply":"Minted Supply","pages.token_panel.details.ath":"All-Time High","pages.token_panel.details.atl":"All-Time Low","pages.token_panel.chart.failed":"Dashbrd has failed to load chart information. Please try again later.","pages.transaction_details_panel.title":"Transaction Details","pages.transaction_details_panel.details.blockchain":"Blockchain","pages.transaction_details_panel.details.timestamp":"Timestamp","pages.transaction_details_panel.details.transaction_hash":"Transaction Hash","pages.transaction_details_panel.details.transaction_fee":"Transaction Fee","pages.transaction_details_panel.details.gas_price":"Gas Price","pages.transaction_details_panel.details.gas_used":"Gas Used","pages.transaction_details_panel.details.nonce":"Nonce","pages.send_receive_panel.send.labels.token_and_amount":"Token and Amount","pages.send_receive_panel.send.labels.destination_address":"Destination Address","pages.send_receive_panel.send.labels.projected_fee":"Projected Fee","pages.send_receive_panel.send.placeholders.enter_amount":"Enter Amount","pages.send_receive_panel.send.placeholders.insert_recipient_address":"Insert Recipient Address","pages.send_receive_panel.send.placeholders.projected_fee":"Projected Fee","pages.send_receive_panel.send.errors.amount":"Insufficient Funds: You do not have enough to cover the amount + fee.","pages.send_receive_panel.send.errors.destination":"Destination address is not correct. Check and input again.","pages.send_receive_panel.send.hints.token_price":"Token Price","pages.send_receive_panel.send.fees.Fast":"Fast","pages.send_receive_panel.send.fees.Avg":"Avg","pages.send_receive_panel.send.fees.Slow":"Slow","pages.send_receive_panel.send.search_dropdown.placeholder":"Search token","pages.send_receive_panel.send.search_dropdown.no_results":"No Results","pages.send_receive_panel.send.search_dropdown.error":"Error occurred while searching tokens.","pages.send_receive_panel.send.transaction_time":"Transaction Time: ~{{ time }} minutes","pages.send_receive_panel.send.from":"From","pages.send_receive_panel.send.to":"To","pages.send_receive_panel.send.amount":"Amount","pages.send_receive_panel.send.fee":"Fee","pages.send_receive_panel.send.total_amount":"Total Amount","pages.send_receive_panel.send.waiting_message":"Review and verify the information on your MetaMask. Sign to send the transaction.","pages.send_receive_panel.send.waiting_spinner_text":"Waiting for confirmation...","pages.send_receive_panel.send.failed_message":"It looks like something went wrong while sending your transaction. Press 'Retry' to make another attempt.","pages.send_receive_panel.receive.alert":"Send only Polygon or Ethereum Network compatible tokens to this address or you could permanently lose your funds!","pages.settings.title":"Settings","pages.settings.sidebar.general":"General","pages.settings.sidebar.notifications":"Notifications","pages.settings.sidebar.session_history":"Sessions History","pages.settings.general.title":"Settings","pages.settings.general.subtitle":"Customize your App Experience","pages.settings.general.currency":"Currency","pages.settings.general.currency_subtitle":"Select your default currency which will be used throughout the app.","pages.settings.general.time_date":"Time & Date","pages.settings.general.time_date_subtitle":"Select how you want time and date be shown inside app.","pages.settings.general.date_format":"Date Format","pages.settings.general.time_format":"Time Format","pages.settings.general.timezone":"Timezone","pages.settings.general.set_defaults":"Set Defaults","pages.settings.general.set_defaults_content":"Reverting to the default settings will remove any customizations previously made. Are you sure?","pages.settings.general.save":"Save Settings","pages.settings.general.saved":"Your settings have been successfully saved","pages.wallet.title":"Wallet","pages.privacy_policy.title":"Privacy Policy","pages.terms_of_service.title":"Terms of Service","pages.popular_collections.title":"Popular NFT Collections","pages.popular_collections.header_title":"<0>{{nftsCount}} {{nfts}} from <0>{{collectionsCount}} {{collections}}, worth about <0><1>{{worth}}","pagination.previous":"« Previous","pagination.next":"Next »","passwords.reset":"Your password has been reset!","passwords.sent":"We have emailed your password reset link!","passwords.throttled":"Please wait before retrying.","passwords.token":"This password reset token is invalid.","passwords.user":"We can't find a user with that email address.","urls.landing":"https://dashbrd.com","urls.cookie_policy":"https://dashbrd.com/cookie-policy","urls.privacy_policy":"https://dashbrd.com/privacy-policy","urls.terms_of_service":"https://dashbrd.com/terms-of-service","urls.twitter":"https://x.com/DashbrdApp","urls.discord":"https://discord.gg/MJyWKkCJ5k","urls.github":"https://github.com/ArdentHQ/dashbrd","urls.coingecko":"https://www.coingecko.com","urls.etherscan":"https://etherscan.io","urls.polygonscan":"https://polygonscan.com","urls.alchemy":"https://www.alchemy.com","urls.moralis":"https://moralis.io","urls.mnemonic":"https://www.mnemonichq.com","urls.opensea":"https://opensea.io/","urls.explorers.etherscan.token_transactions":"https://etherscan.io/token/{{token}}?a={{address}}","urls.explorers.etherscan.addresses":"https://etherscan.io/address/{{address}}","urls.explorers.etherscan.transactions":"https://etherscan.io/tx/{{id}}","urls.explorers.etherscan.nft":"https://etherscan.io/nft/{{address}}/{{nftId}}","urls.explorers.polygonscan.token_transactions":"https://polygonscan.com/token/{{token}}?a={{address}}","urls.explorers.polygonscan.addresses":"https://polygonscan.com/address/{{address}}","urls.explorers.polygonscan.transactions":"https://polygonscan.com/tx/{{id}}","urls.explorers.polygonscan.nft":"https://polygonscan.com/nft/{{address}}/{{nftId}}","urls.explorers.mumbai.token_transactions":"https://mumbai.polygonscan.com/token/{{token}}?a={{address}}","urls.explorers.mumbai.addresses":"https://mumbai.polygonscan.com/address/{{address}}","urls.explorers.mumbai.transactions":"https://mumbai.polygonscan.com/tx/{{id}}","urls.explorers.mumbai.nft":"https://mumbai.polygonscan.com/nft/{{address}}/{{nftId}}","urls.explorers.goerli.token_transactions":"https://goerli.etherscan.io/token/{{token}}?a={{address}}","urls.explorers.goerli.addresses":"https://goerli.etherscan.io/address/{{address}}","urls.explorers.goerli.transactions":"https://goerli.etherscan.io/tx/{{id}}","urls.explorers.goerli.nft":"https://goerli.etherscan.io/nft/{{address}}/{{nftId}}","urls.marketplaces.opensea.collection":"https://opensea.io/assets/{{network}}/{{address}}","urls.marketplaces.opensea.nft":"https://opensea.io/assets/{{network}}/{{address}}/{{nftId}}","urls.marketplaces.rarible.collection":"https://rarible.com/collection/{{address}}/items","urls.marketplaces.rarible.nft":"https://rarible.com/token/{{address}}:{{nftId}}","urls.marketplaces.blur.collection":"https://blur.io/collection/{{address}}","urls.marketplaces.blur.nft":"https://blur.io/asset/{{address}}/{{nftId}}","urls.marketplaces.looksrare.collection":"https://looksrare.org/collections/{{address}}","urls.marketplaces.looksrare.nft":"https://looksrare.org/collections/{{address}}/{{nftId}}","validation.accepted":"The {{attribute}} must be accepted.","validation.accepted_if":"The {{attribute}} must be accepted when {{other}} is {{value}}.","validation.active_url":"The {{attribute}} is not a valid URL.","validation.after":"The {{attribute}} must be a date after {{date}}.","validation.after_or_equal":"The {{attribute}} must be a date after or equal to {{date}}.","validation.alpha":"The {{attribute}} must only contain letters.","validation.alpha_dash":"The {{attribute}} must only contain letters, numbers, dashes and underscores.","validation.alpha_num":"The {{attribute}} must only contain letters and numbers.","validation.array":"The {{attribute}} must be an array.","validation.ascii":"The {{attribute}} must only contain single-byte alphanumeric characters and symbols.","validation.before":"The {{attribute}} must be a date before {{date}}.","validation.before_or_equal":"The {{attribute}} must be a date before or equal to {{date}}.","validation.between.array":"The {{attribute}} must have between {{min}} and {{max}} items.","validation.between.file":"The {{attribute}} must be between {{min}} and {{max}} kilobytes.","validation.between.numeric":"The {{attribute}} must be between {{min}} and {{max}}.","validation.between.string":"The {{attribute}} must be between {{min}} and {{max}} characters.","validation.boolean":"The {{attribute}} field must be true or false.","validation.confirmed":"The {{attribute}} confirmation does not match.","validation.current_password":"The password is incorrect.","validation.date":"The {{attribute}} is not a valid date.","validation.date_equals":"The {{attribute}} must be a date equal to {{date}}.","validation.date_format":"The {{attribute}} does not match the format {{format}}.","validation.decimal":"The {{attribute}} must have {{decimal}} decimal places.","validation.declined":"The {{attribute}} must be declined.","validation.declined_if":"The {{attribute}} must be declined when {{other}} is {{value}}.","validation.different":"The {{attribute}} and {{other}} must be different.","validation.digits":"The {{attribute}} must be {{digits}} digits.","validation.digits_between":"The {{attribute}} must be between {{min}} and {{max}} digits.","validation.dimensions":"The {{attribute}} has invalid image dimensions.","validation.distinct":"The {{attribute}} field has a duplicate value.","validation.doesnt_end_with":"The {{attribute}} may not end with one of the following: {{values}}.","validation.doesnt_start_with":"The {{attribute}} may not start with one of the following: {{values}}.","validation.email":"The {{attribute}} must be a valid email address.","validation.ends_with":"The {{attribute}} must end with one of the following: {{values}}.","validation.enum":"The selected {{attribute}} is invalid.","validation.exists":"The selected {{attribute}} is invalid.","validation.file":"The {{attribute}} must be a file.","validation.filled":"The {{attribute}} field must have a value.","validation.gt.array":"The {{attribute}} must have more than {{value}} items.","validation.gt.file":"The {{attribute}} must be greater than {{value}} kilobytes.","validation.gt.numeric":"The {{attribute}} must be greater than {{value}}.","validation.gt.string":"The {{attribute}} must be greater than {{value}} characters.","validation.gte.array":"The {{attribute}} must have {{value}} items or more.","validation.gte.file":"The {{attribute}} must be greater than or equal to {{value}} kilobytes.","validation.gte.numeric":"The {{attribute}} must be greater than or equal to {{value}}.","validation.gte.string":"The {{attribute}} must be greater than or equal to {{value}} characters.","validation.image":"The {{attribute}} must be an image.","validation.in":"The selected {{attribute}} is invalid.","validation.in_array":"The {{attribute}} field does not exist in {{other}}.","validation.integer":"The {{attribute}} must be an integer.","validation.ip":"The {{attribute}} must be a valid IP address.","validation.ipv4":"The {{attribute}} must be a valid IPv4 address.","validation.ipv6":"The {{attribute}} must be a valid IPv6 address.","validation.json":"The {{attribute}} must be a valid JSON string.","validation.lowercase":"The {{attribute}} must be lowercase.","validation.lt.array":"The {{attribute}} must have less than {{value}} items.","validation.lt.file":"The {{attribute}} must be less than {{value}} kilobytes.","validation.lt.numeric":"The {{attribute}} must be less than {{value}}.","validation.lt.string":"The {{attribute}} must be less than {{value}} characters.","validation.lte.array":"The {{attribute}} must not have more than {{value}} items.","validation.lte.file":"The {{attribute}} must be less than or equal to {{value}} kilobytes.","validation.lte.numeric":"The {{attribute}} must be less than or equal to {{value}}.","validation.lte.string":"The {{attribute}} must be less than or equal to {{value}} characters.","validation.mac_address":"The {{attribute}} must be a valid MAC address.","validation.max.array":"The {{attribute}} must not have more than {{max}} items.","validation.max.file":"The {{attribute}} must not be greater than {{max}} kilobytes.","validation.max.numeric":"The {{attribute}} must not be greater than {{max}}.","validation.max.string":"The {{attribute}} must not be greater than {{max}} characters.","validation.max_digits":"The {{attribute}} must not have more than {{max}} digits.","validation.mimes":"The {{attribute}} must be a file of type: {{values}}.","validation.mimetypes":"The {{attribute}} must be a file of type: {{values}}.","validation.min.array":"The {{attribute}} must have at least {{min}} items.","validation.min.file":"The {{attribute}} must be at least {{min}} kilobytes.","validation.min.numeric":"The {{attribute}} must be at least {{min}}.","validation.min.string":"The {{attribute}} must be at least {{min}} characters.","validation.min_digits":"The {{attribute}} must have at least {{min}} digits.","validation.missing":"The {{attribute}} field must be missing.","validation.missing_if":"The {{attribute}} field must be missing when {{other}} is {{value}}.","validation.missing_unless":"The {{attribute}} field must be missing unless {{other}} is {{value}}.","validation.missing_with":"The {{attribute}} field must be missing when {{values}} is present.","validation.missing_with_all":"The {{attribute}} field must be missing when {{values}} are present.","validation.multiple_of":"The {{attribute}} must be a multiple of {{value}}.","validation.not_in":"The selected {{attribute}} is invalid.","validation.not_regex":"The {{attribute}} format is invalid.","validation.numeric":"The {{attribute}} must be a number.","validation.password.letters":"The {{attribute}} must contain at least one letter.","validation.password.mixed":"The {{attribute}} must contain at least one uppercase and one lowercase letter.","validation.password.numbers":"The {{attribute}} must contain at least one number.","validation.password.symbols":"The {{attribute}} must contain at least one symbol.","validation.password.uncompromised":"The given {{attribute}} has appeared in a data leak. Please choose a different {{attribute}}.","validation.present":"The {{attribute}} field must be present.","validation.prohibited":"The {{attribute}} field is prohibited.","validation.prohibited_if":"The {{attribute}} field is prohibited when {{other}} is {{value}}.","validation.prohibited_unless":"The {{attribute}} field is prohibited unless {{other}} is in {{values}}.","validation.prohibits":"The {{attribute}} field prohibits {{other}} from being present.","validation.regex":"The {{attribute}} format is invalid.","validation.required":"The {{attribute}} field is required.","validation.required_array_keys":"The {{attribute}} field must contain entries for: {{values}}.","validation.required_if":"The {{attribute}} field is required when {{other}} is {{value}}.","validation.required_if_accepted":"The {{attribute}} field is required when {{other}} is accepted.","validation.required_unless":"The {{attribute}} field is required unless {{other}} is in {{values}}.","validation.required_with":"The {{attribute}} field is required when {{values}} is present.","validation.required_with_all":"The {{attribute}} field is required when {{values}} are present.","validation.required_without":"The {{attribute}} field is required when {{values}} is not present.","validation.required_without_all":"The {{attribute}} field is required when none of {{values}} are present.","validation.same":"The {{attribute}} and {{other}} must match.","validation.size.array":"The {{attribute}} must contain {{size}} items.","validation.size.file":"The {{attribute}} must be {{size}} kilobytes.","validation.size.numeric":"The {{attribute}} must be {{size}}.","validation.size.string":"The {{attribute}} must be {{size}} characters.","validation.starts_with":"The {{attribute}} must start with one of the following: {{values}}.","validation.string":"The {{attribute}} must be a string.","validation.timezone":"The {{attribute}} must be a valid timezone.","validation.unique":"The {{attribute}} has already been taken.","validation.uploaded":"The {{attribute}} failed to upload.","validation.uppercase":"The {{attribute}} must be uppercase.","validation.url":"The {{attribute}} must be a valid URL.","validation.ulid":"The {{attribute}} must be a valid ULID.","validation.uuid":"The {{attribute}} must be a valid UUID.","validation.custom.attribute-name.rule-name":"custom-message","validation.unsupported_currency_code":"The currency code you provided is invalid or not supported.","validation.unsupported_period":"The period you provided is invalid or not supported.","validation.unsupported_token_symbol":"The token symbol you provided is invalid or not supported.","validation.gallery_title_required":"Gallery name is required.","validation.gallery_title_max_characters":"The gallery name should not exceed 50 characters.","validation.gallery_title_invalid":"The gallery name is invalid.","validation.nfts_required":"Please add at least one NFT.","validation.nfts_max_size":"Galleries can contain no more than {{limit}} NFTs","validation.invalid_nfts":"The NFT in position {{position}} is invalid, please select another one.","validation.invalid_cover":"You have selected an invalid cover image, please try another one."} \ No newline at end of file diff --git a/resources/js/Pages/Collections/Components/PopularCollections/CollectionsFullTablePagination.tsx b/resources/js/Pages/Collections/Components/PopularCollections/CollectionsFullTablePagination.tsx new file mode 100644 index 000000000..b1d597366 --- /dev/null +++ b/resources/js/Pages/Collections/Components/PopularCollections/CollectionsFullTablePagination.tsx @@ -0,0 +1,42 @@ +import { useTranslation } from "react-i18next"; +import { Pagination } from "@/Components/Pagination"; +import { type PaginationData } from "@/Components/Pagination/Pagination.contracts"; +import { SelectPageLimit } from "@/Components/Pagination/SelectPageLimit"; + +interface Properties { + pagination: PaginationData; + onPageLimitChange: (limit: number) => void; + onPageChange: (page: number) => void; +} + +export const CollectionsFullTablePagination = ({ + pagination, + onPageLimitChange, + onPageChange, +}: Properties): JSX.Element => { + const { t } = useTranslation(); + + if (pagination.meta.total < 12) { + return <>; + } + + return ( +
    + { + onPageLimitChange(Number(value)); + }} + /> + {pagination.meta.last_page > 1 && ( + + )} +
    + ); +}; diff --git a/resources/js/Pages/Collections/Components/PopularCollectionsHeading/PopularCollectionsHeading.tsx b/resources/js/Pages/Collections/Components/PopularCollectionsHeading/PopularCollectionsHeading.tsx new file mode 100644 index 000000000..d5655e035 --- /dev/null +++ b/resources/js/Pages/Collections/Components/PopularCollectionsHeading/PopularCollectionsHeading.tsx @@ -0,0 +1,50 @@ +import { Trans, useTranslation } from "react-i18next"; +import { Heading } from "@/Components/Heading"; +import { formatFiat } from "@/Utils/Currency"; +import { tp } from "@/Utils/TranslatePlural"; + +export const PopularCollectionsHeading = ({ + stats, + currency, +}: { + stats: App.Data.Collections.CollectionStatsData; + currency: string; +}): JSX.Element => { + const { t } = useTranslation(); + + return ( +
    +
    + + {t("pages.popular_collections.title")} + +
    + + + , + ]} + /> + +
    + ); +}; diff --git a/resources/js/Pages/Collections/Components/PopularCollectionsHeading/index.tsx b/resources/js/Pages/Collections/Components/PopularCollectionsHeading/index.tsx new file mode 100644 index 000000000..93686f996 --- /dev/null +++ b/resources/js/Pages/Collections/Components/PopularCollectionsHeading/index.tsx @@ -0,0 +1 @@ +export * from "./PopularCollectionsHeading"; diff --git a/resources/js/Pages/Collections/Index.tsx b/resources/js/Pages/Collections/Index.tsx index 2aad538bc..6c1bb5755 100644 --- a/resources/js/Pages/Collections/Index.tsx +++ b/resources/js/Pages/Collections/Index.tsx @@ -3,6 +3,7 @@ import { Head, router, usePage } from "@inertiajs/react"; import cn from "classnames"; import { useEffect, useState } from "react"; import { useTranslation } from "react-i18next"; +import { type RouteParams } from "ziggy-js"; import { CollectionsArticles } from "./Components/CollectionsArticles"; import { CollectionsCallToAction } from "./Components/CollectionsCallToAction"; import { @@ -23,7 +24,7 @@ import { DefaultLayout } from "@/Layouts/DefaultLayout"; import { VoteCollections } from "@/Pages/Collections/Components/CollectionVoting"; import { type ChainFilter, ChainFilters } from "@/Pages/Collections/Components/PopularCollectionsFilters"; -interface Filters extends Record { +export interface Filters extends Record { chain?: ChainFilter; sort?: PopularCollectionsSortBy; } @@ -108,7 +109,10 @@ const CollectionsIndex = ({ setChain={setChain} /> - + @@ -126,7 +130,7 @@ const CollectionsIndex = ({
    - +
    @@ -148,7 +152,7 @@ const CollectionsIndex = ({
    - +
    { +const ViewAllButton = ({ className, filters }: { className?: string; filters: Filters }): JSX.Element => { const { t } = useTranslation(); return ( {t("common.view_all")} diff --git a/resources/js/Pages/Collections/PopularCollections/Index.tsx b/resources/js/Pages/Collections/PopularCollections/Index.tsx new file mode 100644 index 000000000..8215e98d9 --- /dev/null +++ b/resources/js/Pages/Collections/PopularCollections/Index.tsx @@ -0,0 +1,126 @@ +import { type PageProps } from "@inertiajs/core"; +import { Head, router, usePage } from "@inertiajs/react"; +import { useEffect, useState } from "react"; +import { useTranslation } from "react-i18next"; +import { CollectionsFullTable } from "@/Components/Collections/CollectionsFullTable"; +import { EmptyBlock } from "@/Components/EmptyBlock/EmptyBlock"; +import { type PaginationData } from "@/Components/Pagination/Pagination.contracts"; +import { useIsFirstRender } from "@/Hooks/useIsFirstRender"; +import { DefaultLayout } from "@/Layouts/DefaultLayout"; +import { CollectionsFullTablePagination } from "@/Pages/Collections/Components/PopularCollections/CollectionsFullTablePagination"; +import { type ChainFilter, ChainFilters } from "@/Pages/Collections/Components/PopularCollectionsFilters"; +import { PopularCollectionsHeading } from "@/Pages/Collections/Components/PopularCollectionsHeading"; +import { + type PopularCollectionsSortBy, + PopularCollectionsSorting, +} from "@/Pages/Collections/Components/PopularCollectionsSorting"; +import { type Filters } from "@/Pages/Collections/Index"; + +const Index = ({ + auth, + stats, + title, + collections, + filters, +}: { + title: string; + auth: PageProps["auth"]; + stats: App.Data.Collections.CollectionStatsData; + sortBy: string | null; + sortDirection: "asc" | "desc"; + selectedChainIds?: string[]; + collections: PaginationData; + filters: Filters; +}): JSX.Element => { + const { props } = usePage(); + + const { t } = useTranslation(); + + // @TODO replace with real logic + const isSearching = Math.random() === 0; + const query = Math.random() === 0 ? "" : "1"; + + const [currentFilters, setCurrentFilters] = useState(filters); + + const isFirstRender = useIsFirstRender(); + + useEffect(() => { + if (isFirstRender) return; + + router.get(route("popular-collections"), currentFilters); + }, [currentFilters]); + + const setChain = (chain: ChainFilter | undefined): void => { + setCurrentFilters((filters) => ({ + ...filters, + chain, + })); + }; + + const setSortBy = (sort: PopularCollectionsSortBy | undefined): void => { + setCurrentFilters((filters) => ({ + ...filters, + sort, + })); + }; + + return ( + + +
    +
    + +
    +
    + + + +
    +
    +
    + +
    + {collections.data.length === 0 && ( +
    + {isSearching ? ( + {t("pages.collections.search.loading_results")} + ) : ( + <> + {query !== "" ? ( + {t("pages.collections.search.no_results")} + ) : ( + {t("pages.collections.no_collections")} + )} + + )} +
    + )} + + + +
    + 1} + onPageChange={() => 2} + /> +
    +
    +
    +
    + ); +}; + +export default Index; diff --git a/resources/js/Tests/Factories/Collections/SimpleNftDataFactory.ts b/resources/js/Tests/Factories/Collections/SimpleNftDataFactory.ts new file mode 100644 index 000000000..b100a31c3 --- /dev/null +++ b/resources/js/Tests/Factories/Collections/SimpleNftDataFactory.ts @@ -0,0 +1,13 @@ +import { faker } from "@faker-js/faker"; +import ModelFactory from "@/Tests/Factories/ModelFactory"; +import NftImagesDataFactory from "@/Tests/Factories/Nfts/NftImagesDataFactory"; + +export default class SimpleNftDataFactory extends ModelFactory { + protected factory(): App.Data.Collections.SimpleNftData { + return { + id: faker.datatype.number({ min: 1, max: 100000 }), + tokenNumber: faker.datatype.number({ min: 1, max: 100000 }).toString(), + images: new NftImagesDataFactory().withValues().create(), + }; + } +} diff --git a/routes/web.php b/routes/web.php index c4ab80bd3..11018af04 100644 --- a/routes/web.php +++ b/routes/web.php @@ -21,6 +21,7 @@ use App\Http\Controllers\NftController; use App\Http\Controllers\NftReportController; use App\Http\Controllers\OnboardingController; +use App\Http\Controllers\PopularCollectionController; use App\Http\Controllers\RefreshCsrfTokenController; use App\Http\Controllers\WalletController; use App\Http\Middleware\EnsureOnboarded; @@ -98,6 +99,10 @@ Route::get('', [MyCollectionsController::class, 'index'])->name('my-collections')->middleware(EnsureOnboarded::class); }); + Route::group(['prefix' => 'popular-collections'], function () { + Route::get('', [PopularCollectionController::class, 'index'])->name('popular-collections'); + }); + Route::group(['prefix' => 'collections'], function () { Route::get('', [CollectionController::class, 'index'])->name('collections'); Route::get('collection-of-the-month', CollectionOfTheMonthController::class)->name('collection-of-the-month'); diff --git a/tests/App/Http/Controllers/PopularCollectionControllerTest.php b/tests/App/Http/Controllers/PopularCollectionControllerTest.php new file mode 100644 index 000000000..ae835b813 --- /dev/null +++ b/tests/App/Http/Controllers/PopularCollectionControllerTest.php @@ -0,0 +1,16 @@ +actingAs($user) + ->get(route('popular-collections')) + ->assertStatus(200); +}); + +it('should render the collections overview page as guest', function () { + $this->get(route('popular-collections')) + ->assertStatus(200); +}); From 9973e492916384b327b9dc451eb7cca0dad3dd42 Mon Sep 17 00:00:00 2001 From: shahin-hq <132887516+shahin-hq@users.noreply.github.com> Date: Wed, 13 Dec 2023 16:01:47 +0400 Subject: [PATCH 042/145] feat: add popular collections search (#555) Co-authored-by: shahin-hq --- .../Api/NominatableCollectionController.php | 5 +- .../PopularCollectionController.php | 5 +- app/Models/Collection.php | 13 +++ lang/en/common.php | 1 + lang/en/pages.php | 1 + .../CollectionsFullTable.test.tsx | 11 -- .../CollectionsFullTable.tsx | 4 - .../Components/Form/TextInput/TextInput.tsx | 5 +- resources/js/I18n/Locales/en.json | 2 +- .../CollectionsFullTablePagination.tsx | 12 +-- .../Collections/Hooks/useCollectionFilters.ts | 76 +++++++++++++ resources/js/Pages/Collections/Index.tsx | 51 +++------ .../Collections/PopularCollections/Index.tsx | 100 +++++++----------- tests/App/Models/CollectionTest.php | 20 ++++ 14 files changed, 175 insertions(+), 131 deletions(-) rename resources/js/Pages/Collections/Components/{PopularCollections => CollectionsFullTablePagination}/CollectionsFullTablePagination.tsx (78%) create mode 100644 resources/js/Pages/Collections/Hooks/useCollectionFilters.ts diff --git a/app/Http/Controllers/Api/NominatableCollectionController.php b/app/Http/Controllers/Api/NominatableCollectionController.php index 0ed04b49a..186e1b467 100644 --- a/app/Http/Controllers/Api/NominatableCollectionController.php +++ b/app/Http/Controllers/Api/NominatableCollectionController.php @@ -18,11 +18,10 @@ public function index(Request $request): JsonResponse 'query' => 'nullable|string', ]); - /** @var string|null */ - $query = $request->query('query'); $currency = $request->user()->currency(); - $collections = Collection::search($request->user(), $query) + $collections = Collection::query() + ->searchByName($request->get('query')) ->limit(15) ->votable($currency, orderByVotes: false) ->orderBy('name', 'asc') diff --git a/app/Http/Controllers/PopularCollectionController.php b/app/Http/Controllers/PopularCollectionController.php index 07e7b20f9..6055c0f4e 100644 --- a/app/Http/Controllers/PopularCollectionController.php +++ b/app/Http/Controllers/PopularCollectionController.php @@ -30,6 +30,7 @@ public function index(Request $request): Response|JsonResponse|RedirectResponse $currency = $user ? $user->currency() : CurrencyCode::USD; $collections = Collection::query() + ->searchByName($request->get('query')) ->when($request->query('sort') !== 'floor-price', fn ($q) => $q->orderBy('volume', 'desc')) // TODO: order by top... ->filterByChainId($chainId) ->orderByFloorPrice('desc', $currency) @@ -42,7 +43,8 @@ public function index(Request $request): Response|JsonResponse|RedirectResponse ->selectVolumeFiat($currency) ->addSelect('collections.*') ->groupBy('collections.id') - ->paginate(25); + ->paginate(25) + ->withQueryString(); return Inertia::render('Collections/PopularCollections/Index', [ 'title' => trans('metatags.popular-collections.title'), @@ -67,6 +69,7 @@ private function getFilters(Request $request): object $filter = [ 'chain' => $this->getValidValue($request->get('chain'), ['polygon', 'ethereum']), 'sort' => $this->getValidValue($request->get('sort'), ['floor-price']), + 'query' => $request->get('query'), ]; // If value is not defined (or invalid), remove it from the array since diff --git a/app/Models/Collection.php b/app/Models/Collection.php index 8a601a077..b56edf119 100644 --- a/app/Models/Collection.php +++ b/app/Models/Collection.php @@ -370,6 +370,19 @@ public function scopeSearch(Builder $query, User $user, ?string $searchQuery): B }); } + /** + * @param Builder $query + * @return Builder + */ + public function scopeSearchByName(Builder $query, ?string $searchQuery): Builder + { + if ($searchQuery === null || $searchQuery === '') { + return $query; + } + + return $query->where('collections.name', 'ilike', sprintf('%%%s%%', $searchQuery)); + } + /** * @param Builder $query * @return Builder diff --git a/lang/en/common.php b/lang/en/common.php index fc2b28161..060abd9cf 100644 --- a/lang/en/common.php +++ b/lang/en/common.php @@ -52,6 +52,7 @@ 'my_collection' => 'My Collection', 'max' => 'Max', 'chain' => 'Chain', + 'search' => 'Search', 'copied' => 'Copied!', 'coming_soon' => 'Coming Soon', 'more_details' => 'More Details', diff --git a/lang/en/pages.php b/lang/en/pages.php index e694643ff..5a26fdaaf 100644 --- a/lang/en/pages.php +++ b/lang/en/pages.php @@ -56,6 +56,7 @@ 'value' => 'Value', 'rarity' => 'Rarity', 'report' => 'Report', + 'search_by_name' => 'Search by Collection Name', 'hide_collection' => 'Hide Collection', 'unhide_collection' => 'Unhide Collection', 'no_collections' => 'You do not own any NFTs yet. Once you do they will be shown here.', diff --git a/resources/js/Components/Collections/CollectionsFullTable/CollectionsFullTable.test.tsx b/resources/js/Components/Collections/CollectionsFullTable/CollectionsFullTable.test.tsx index ebb5c01a7..bff9d1fd6 100644 --- a/resources/js/Components/Collections/CollectionsFullTable/CollectionsFullTable.test.tsx +++ b/resources/js/Components/Collections/CollectionsFullTable/CollectionsFullTable.test.tsx @@ -59,17 +59,6 @@ describe("CollectionsFullTable", () => { expect(getByTestId("CollectionsTable")).toBeInTheDocument(); }); - it("should not render if there are no collections", () => { - render( - , - ); - - expect(screen.queryByTestId("CollectionsTable")).not.toBeInTheDocument(); - }); - it("should visit the collection page on row click", async () => { const function_ = vi.fn(); const routerSpy = vi.spyOn(router, "visit").mockImplementation(function_); diff --git a/resources/js/Components/Collections/CollectionsFullTable/CollectionsFullTable.tsx b/resources/js/Components/Collections/CollectionsFullTable/CollectionsFullTable.tsx index 583d3dbe6..384e4bc38 100644 --- a/resources/js/Components/Collections/CollectionsFullTable/CollectionsFullTable.tsx +++ b/resources/js/Components/Collections/CollectionsFullTable/CollectionsFullTable.tsx @@ -85,10 +85,6 @@ export const CollectionsFullTable = ({ return columns; }, [t, isMdAndAbove, isLgAndAbove]); - if (collections.length === 0) { - return <>; - } - return (
    ( onFocus={focusHandler} onBlur={blurHandler} type={type} - className={cn( - "relative block h-full w-full rounded-xl border-0 px-0 py-3 ring-0 transition placeholder:text-theme-secondary-500 focus:outline-none focus:ring-0 enabled:text-theme-secondary-900 dark:bg-theme-dark-900 dark:text-theme-dark-50 dark:placeholder:text-theme-dark-400", + className={twMerge( + "relative block h-full w-full rounded-xl border-0 py-3 pl-0 pr-0 ring-0 transition placeholder:text-theme-secondary-500 focus:outline-none focus:ring-0 enabled:text-theme-secondary-900 dark:bg-theme-dark-900 dark:text-theme-dark-50 dark:placeholder:text-theme-dark-400", "disabled:cursor-not-allowed disabled:bg-theme-secondary-50 disabled:text-theme-secondary-700 dark:disabled:bg-theme-dark-900 dark:disabled:text-theme-dark-200", className, )} diff --git a/resources/js/I18n/Locales/en.json b/resources/js/I18n/Locales/en.json index 681fad8e5..86d6d80b6 100644 --- a/resources/js/I18n/Locales/en.json +++ b/resources/js/I18n/Locales/en.json @@ -1 +1 @@ -{"auth.welcome":"Welcome to Dashbrd","auth.logged_in":"You're logged in!","auth.log_out":"Log out","auth.failed":"These credentials do not match our records.","auth.session_timeout":"Your session has timed out. Please refresh the page and try connecting your account again.","auth.session_timeout_modal":"Seems like your session has timed out. Please connnect your wallet again.","auth.password":"The provided password is incorrect.","auth.throttle":"Too many login attempts. Please try again in {{seconds}} seconds.","auth.wallet.connecting":"Connecting …","auth.wallet.waiting_for_signature":"Waiting for Signature …","auth.wallet.switching_wallet":"Switching Wallet …","auth.wallet.connect":"Connect Wallet","auth.wallet.connect_long":"Connect Your Wallet to Get Started","auth.wallet.sign_subtitle":"Connect Your Wallet to Continue","auth.wallet.disconnect":"Disconnect Wallet","auth.wallet.install":"Install MetaMask","auth.wallet.install_long":"Install MetaMask to Get Started","auth.wallet.sign":"Sign Message","auth.wallet.sign_message":"Welcome to Dashbrd. In order to login, sign this message with your wallet. It doesn't cost you anything!\n\nSigning ID (you can ignore this): {{nonce}}","auth.wallet.connect_subtitle":"Click on the MetaMask icon in your browser to confirm the action and connect your wallet.","auth.wallet.requires_signature":"In order to prevent impersonation, we require a signature to perform this action. This signature is only a signed message and does not give any access to your wallet.","auth.errors.metamask.no_account":"No account found. Please connect your wallet and try again.","auth.errors.metamask.generic":"Connection attempt error. Please retry and follow the steps to connect your wallet.","auth.errors.metamask.invalid_network":"Please switch to Polygon or Ethereum Mainnet in your MetaMask plugin to connect to Dashbrd.","auth.errors.metamask.provider_missing":"You don't have MetaMask installed in your browser. Please install and try again.","auth.errors.metamask.user_rejected":"It looks like you cancelled signing of the authentication message. Please try again.","auth.errors.metamask.provider_not_set":"Ethereum provider is not set","auth.validation.wallet_login_failed":"There was a problem trying to verify your signature. Please try again.","auth.validation.invalid_address":"Your wallet address is invalid. Please try again.","auth.validation.invalid_signature":"Signature is invalid. Please try again.","auth.validation.invalid_network":"Please switch to Polygon or Ethereum Mainnet in your MetaMask plugin to connect to Dashbrd.","common.author":"Author","common.add":"Add","common.amount":"Amount","common.balance":"Balance","common.cancel":"Cancel","common.delete":"Delete","common.edit":"Edit","common.confirm":"Confirm","common.connect":"Connect","common.continue":"Continue","common.done":"Done","common.filter":"Filter","common.items":"Items","common.receive":"Receive","common.received":"Received","common.retry":"Retry","common.records":"Records","common.save":"Save","common.send":"Send","common.sent":"Sent","common.show":"Show","common.searching":"Searching...","common.other":"Other","common.owned":"Owned","common.token":"Token","common.tokens":"Tokens","common.wallet":"Wallet","common.pending":"Pending","common.publish":"Publish","common.published":"Published","common.empty":"Empty","common.your_address":"Your Address","common.warning":"Warning","common.my_address":"My Address","common.my_wallet":"My Wallet","common.my_collections":"My Collections","common.my_balance":"My Balance","common.na":"N/A","common.simple_plural_without_data":"One comment|Many comments","common.simple_plural_with_data":"{{count}} comment|{{count}} comments","common.advanced_plural_without_data":"{0} no comments yet|{1} 1 comment|[2,*] Many comments","common.advanced_plural_with_data":"{0} no comments yet|{1} 1 comment|[2,*] {{count}} comments","common.copy_clipboard":"Copy to Clipboard","common.copy":"Copy","common.download":"Download","common.zoom":"Zoom","common.my_collection":"My Collection","common.max":"Max","common.chain":"Chain","common.copied":"Copied!","common.coming_soon":"Coming Soon","common.more_details":"More Details","common.close":"Close","common.close_toast":"Close toast","common.loading":"Loading","common.price":"Price","common.articles":"Articles","common.most_popular":"Most Popular","common.market_cap":"Market Cap","common.volume":"Volume","common.volume_frequency":"Volume {{frequency}}","common.value":"Value","common.last_n_days":"Last {{count}} Days","common.details":"Details","common.view_all":"View All","common.view_more_on_polygonscan":"View More on Polygonscan","common.view_more_on_etherscan":"View More on Etherscan","common.view_nft_on_etherscan":"View NFT on Etherscan","common.view_nft_on_polygonscan":"View NFT on Polygonscan","common.view_nft_on_goerli_tesnet":"View NFT on Goerli Testnet Explorer","common.view_nft_on_mumbai_tesnet":"View NFT on Mumbai Testnet Explorer","common.polygonscan":"Polygonscan","common.etherscan":"Etherscan","common.featured":"Featured","common.floor_price":"Floor Price","common.floor":"Floor","common.supply":"Supply","common.owners":"Owners","common.created":"Created","common.nft":"NFT","common.collection":"Collection","common.collections":"Collections","common.gallery":"Gallery","common.basic_gallery":"Basic Gallery","common.gallery_name":"Gallery Name","common.create_gallery":"Create Gallery","common.external_link":"External Link","common.follow_link":"Follow Link","common.cover":"Cover","common.template":"Template","common.page":"Page","common.polygon":"Polygon","common.ethereum":"Ethereum","common.mumbai":"Mumbai","common.goerli":"Goerli","common.of":"of","common.pagination_input_placeholder":"Enter the page number","common.pagination_input_placeholder_mobile":"Page number","common.nft_count":"{0} {{count}} NFTs|{1} {{count}} NFT|[2,*] {{count}} NFTs","common.nft_gallery":"NFT Gallery","common.unable_to_retrieve_image":"Unable to retrieve your NFT image at this time","common.optional":"Optional","common.selected":"Selected","common.select":"Select","common.preview":"Preview","common.image_size_error":"Image size must not exceed 2MB","common.image_dimensions_error":"Image dimensions must exceed 287px x 190px","common.write_to_confirm":"Write {{word}} to confirm","common.n_hours":"{0} {{count}} hour|{1} {{count}} hour|[2,*] {{count}} hours","common.n_minutes":"{0} {{count}} minute|{1} {{count}} minute|[2,*] {{count}} minutes","common.report":"Report","common.nfts":"NFTs","common.n_nfts":"{0}NFTs|{1}NFT|[2,*]NFTs","common.n_collections":"{0}collections|{1}collection|[2,*]collections","common.back":"Back","common.back_to":"Back to","common.name":"Name","common.type":"Type","common.from":"From","common.to":"To","common.sale_price":"Sale Price","common.recent_activity":"Recent Activity","common.time":"Time","common.datetime.few_seconds_ago":"A few seconds ago","common.datetime.minutes_ago":"{0} Less than a minute ago|{1} A minute ago|[2,*] {{count}} minutes ago","common.datetime.hours_ago":"{0} Less than an hour ago|{1} An hour ago|[2,*] {{count}} hours ago","common.datetime.days_ago":"{0} Less than a day ago|{1} A day ago|[2,*] {{count}} days ago","common.datetime.weeks_ago":"{0} Less than a week ago|{1} A week ago|[2,*] {{count}} weeks ago","common.datetime.months_ago":"{0} Less than a month ago|{1} A month ago|[2,*] {{count}} months ago","common.datetime.years_ago":"{0} Less than a year ago|{1} A year ago|[2,*] {{count}} years ago","common.no_traits_found":"No traits found.","common.empty_transactions":"You don't have any transactions yet. Once transactions have been made, they will show up here.","common.error":"Error","common.refresh":"Refresh","common.refresh_metadata":"Refresh Metadata","common.refreshing_metadata":"Refreshing Metadata... Please check back later.","common.refreshing_activity":"Refreshing Activity... Please check back later.","common.pending_confirmation":"Pending Confirmation","common.confirmed_transaction":"Confirmed Transaction","common.transaction_error":"Transaction Error","common.transaction_error_description_first_part":"Your transaction encountered an error. View this transaction on","common.transaction_error_description_second_part":"for more details.","common.home":"Home","common.contact":"Contact","common.menu":"Menu","common.website":"Website","common.twitter":"Twitter","common.discord":"Discord","common.facebook":"Facebook","common.reddit":"Reddit","common.x":"X","common.sort":"Sort","common.drafts":"Drafts","common.draft":"Draft","common.delete_draft":"Delete Draft","common.share_on":"Share on {{platform}}","common.top":"Top","common.all_chains":"All chains","common.votes":"Votes","common.vote":"Vote","common.vol":"Vol","common.collection_preview":"Collection Preview","footer.copyright":"{{year}} © Dashbrd. All rights reserved.","footer.all_rights_reserved":"All rights reserved","footer.privacy_policy":"Privacy Policy","footer.terms_of_service":"Terms of Service","footer.powered_by":"Powered by","format.fiat":"{{ value, currency }}","format.number":"{{ value, number }}","metatags.home.title":"Dashbrd | Web3 Portfolio Management Made Simple","metatags.home.description":"Simplify your Web3 journey with Dashbrd. Manage your portfolio of tokens, NFTs, and other digital collectibles across the Ethereum and Polygon blockchains.","metatags.home.image":"/images/meta/home.png","metatags.error.title":"Error {{code}} | Dashbrd","metatags.wallet.title":"My Wallet | Dashbrd","metatags.galleries.title":"Top NFT Galleries | Dashbrd","metatags.galleries.image":"/images/meta/nft-galleries.png","metatags.galleries.description":"Explore user published NFT galleries to find custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.most_popular.title":"Most Popular Galleries | Dashbrd","metatags.galleries.most_popular.image":"/images/meta/most-popular-nft-galleries.png","metatags.galleries.most_popular.description":"Explore and discover Most Popular NFT Galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.newest.title":"Newest Galleries | Dashbrd","metatags.galleries.newest.image":"/images/meta/newest-nft-galleries.png","metatags.galleries.newest.description":"Explore and discover most recent NFT galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More","metatags.galleries.most_valuable.title":"Most Valuable Galleries | Dashbrd","metatags.galleries.most_valuable.image":"/images/meta/most-valuable-nft-galleries.png","metatags.galleries.most_valuable.description":"Explore and discover Most Valuable NFT Galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.view.title":"{{name}} | Dashbrd","metatags.galleries.view.description":"{{name}} | A Curated NFT Gallery at Dashbrd","metatags.galleries.view.image":"/images/meta/nft-gallery.png","metatags.my_galleries.title":"My Galleries | Dashbrd","metatags.my_galleries.title_draft":"My Draft Galleries | Dashbrd","metatags.my_galleries.create.title":"Create Gallery | Dashbrd","metatags.my_galleries.edit.title":"Edit {{name}} | Dashbrd","metatags.collections.title":"Collections | Dashbrd","metatags.collections.view.title":"{{name}} Collection | Dashbrd","metatags.collections.view.description":"Immerse yourself in the intricate details of {{name}} collection, featuring remarkable digital assets. Start your NFT journey today!","metatags.collections.view.image":"/images/meta/nft-collection.png","metatags.collections.of-the-month.title":"Collection of the Month {{month}} | Dashbrd","metatags.my-collections.title":"My Collections | Dashbrd","metatags.popular-collections.title":"Popular NFT Collections | Dashbrd","metatags.nfts.view.title":"{{nft}} NFT | Dashbrd","metatags.nfts.view.description":"Uncover the complete story of {{nft}} NFT from the {{collection}} collection, delving into its unique attributes and distinctive features.","metatags.nfts.view.image":"/images/meta/nft-details.png","metatags.settings.title":"Settings | Dashbrd","metatags.articles.title":"Articles | Dashbrd","metatags.articles.view.title":"{{title}} | Dashbrd","metatags.login.title":"Login | Dashbrd","metatags.privacy_policy.title":"Privacy Policy | Dashbrd","metatags.privacy_policy.description":"Dashbrd’s privacy policy outlines the information we collect and explains your choices surrounding how we use information about you.","metatags.terms_of_service.title":"Terms of Service | Dashbrd","metatags.terms_of_service.description":"These Terms of Service cover your use and access to services, products or websites of Dashbrd.","metatags.cookie_policy.title":"Cookie Policy | Dashbrd","metatags.cookie_policy.description":"Dashbrd uses cookies to make the website more user-friendly. Find out about the main types of cookies we use, and what we use them for.","metatags.welcome.title":"Welcome to Dashbrd | Web3 Simplified","pages.onboarding.title":"Get Started","pages.onboarding.heading":"Your monkeys were bored and ran off, we are trying to round them up.","pages.onboarding.message":"We are setting up your account. This process usually takes just a few minutes, but can take up to 15 minutes.","pages.error.heading":"Oops, something went wrong ...","pages.error.message":"Please try again or get in touch if the issue persists.","pages.maintenance.title":"Dashbrd is currently down for scheduled maintenance.","pages.maintenance.description":"We expect to be back soon. Thanks for your patience.","pages.dashboard.title":"My Wallet","pages.dashboard.breakdown.title":"Portfolio Breakdown","pages.dashboard.line_chart.data_error":"Could not load chart data","pages.articles.title":"Articles","pages.articles.featured_collections":"Featured Collections","pages.articles.placeholder_more_soon":"More Soon","pages.articles.no_articles":"No articles have been published yet. Please check back later!","pages.articles.header_title":"Explore our collection of","pages.articles.header_suffix_one":"published article","pages.articles.header_suffix_other":"published articles","pages.articles.audio_version":"Audio version","pages.articles.consists_of_collections":"{0} This article highlights {{count}} collections|{1} This article highlights {{count}} collection|[2,*] This article highlights {{count}} collections","pages.collections.title":"Collections","pages.collections.collections":"Collections","pages.collections.popular_collections":"Popular Collections","pages.collections.collection_value":"Collection Value","pages.collections.nfts_owned":"NFTs Owned","pages.collections.header_title":"You own <0>{{nftsCount}} {{nfts}} across <0>{{collectionsCount}} {{collections}}, worth about <0><1>{{worth}}","pages.collections.search_placeholder":"Search by Collection","pages.collections.properties":"Properties","pages.collections.collections_network":"Collections Network","pages.collections.property_search_placeholder":"Feature Search","pages.collections.floor_price":"Floor Price","pages.collections.value":"Value","pages.collections.rarity":"Rarity","pages.collections.report":"Report","pages.collections.hide_collection":"Hide Collection","pages.collections.unhide_collection":"Unhide Collection","pages.collections.no_collections":"You do not own any NFTs yet. Once you do they will be shown here.","pages.collections.all_collections_hidden":"You have hidden all your collections. Unhide and they will appear here.","pages.collections.about_collection":"About Collection","pages.collections.show_hidden":"Show Hidden","pages.collections.show_my_collection":"Show My Collection","pages.collections.owned":"Owned","pages.collections.activities.loading_activities":"We're fetching Activity for this NFT, please hang tight, this can take a while.","pages.collections.activities.loading_activities_collection":"We're fetching Activity for this collection, please hang tight, this can take a while.","pages.collections.activities.ignores_activities":"We don't support activity history for this collection yet.","pages.collections.activities.no_activity":"This collection does not have any activity yet.","pages.collections.activities.types.LABEL_MINT":"Mint","pages.collections.activities.types.LABEL_TRANSFER":"Transfer","pages.collections.activities.types.LABEL_SALE":"Sale","pages.collections.activities.types.LABEL_BURN":"Burn","pages.collections.collection_of_the_month.title":"Collection of the Month {{month}}","pages.collections.collection_of_the_month.winners_month":"Winners: {{month}}","pages.collections.collection_of_the_month.vote_for_next_months_winners":"Vote now for next month's winners","pages.collections.collection_of_the_month.view_previous_winners":"View Previous Winners","pages.collections.collection_of_the_month.vote_received_modal.title":"Vote Received","pages.collections.collection_of_the_month.vote_received_modal.description":"Your vote has been recorded. Share your vote on X and let everyone know!","pages.collections.collection_of_the_month.vote_received_modal.share_vote":"Share Vote","pages.collections.collection_of_the_month.vote_received_modal.img_alt":"I voted for Dashbrd Project of the Month","pages.collections.collection_of_the_month.vote_received_modal.x_text":"I voted for {{collection}} for collection of the month @dashbrdapp! Go show your support!","pages.collections.collection_of_the_month.vote_success":"Your vote has been successfully submitted","pages.collections.collection_of_the_month.content_to_be_added.title":"Content to be added","pages.collections.collection_of_the_month.content_to_be_added.description":"There will be a list of previous month winners here soon!","pages.collections.collection_of_the_month.has_won_already":"This collection has already
    won Collection of the Month.","pages.collections.articles.heading":"Latest NFT News & Features","pages.collections.articles.no_articles":"No articles have been linked to this collection as of now.","pages.collections.articles.no_articles_with_filters":"We could not find any articles matching your search criteria, please try again!","pages.collections.articles.search_placeholder":"Search in Articles","pages.collections.articles.sort_latest":"Latest","pages.collections.articles.sort_popularity":"Most Popular","pages.collections.search.loading_results":"Loading results...","pages.collections.search.no_results":"We could not find anything matching your search criteria, please try again!","pages.collections.search.no_results_with_filters":"We could not find anything matching your filters, please try again!","pages.collections.search.no_results_ownership":"You do not own any NFTs in this collection","pages.collections.search.error":"Could not load search results. Please try again later.","pages.collections.vote.vote_for_top_collection":"Vote for Top Collection of the Month","pages.collections.vote.vote":"Vote","pages.collections.vote.time_left":"Time Left","pages.collections.vote.or_nominate_collection":"Or nominate a collection","pages.collections.vote.nominate_collection":"Nominate a collection","pages.collections.vote.vote_to_reveal":"Vote to reveal data","pages.collections.vote.already_voted":"You’ve already nominated. Come back next month!","pages.collections.sorting.token_number":"Token Number","pages.collections.sorting.recently_received":"Recently Received","pages.collections.sorting.recently_created":"Recently Created","pages.collections.sorting.oldest_collection":"Oldest Collection","pages.collections.traits.description":"List of NFT traits by % of occurrence in the collection","pages.collections.traits.no_traits":"No Properties can be found for this NFT","pages.collections.menu.collection":"Collection","pages.collections.menu.articles":"Articles","pages.collections.menu.activity":"Activity","pages.collections.hidden_modal.collection_hidden":"Collection Hidden","pages.collections.hidden_modal.description":"This collection is currently set to Hidden. Are you sure you want to unhide this collection? You can\n reset the collection to hidden from the collection menu.","pages.collections.hidden_modal.unhide":"Unhide","pages.collections.hidden_modal.error":"Something went wrong. Please try again.","pages.collections.external_modal.you_wish_continue":"You are about to leave Dashbrd to an external website. Dashbrd has no control over the content of\n this site. Are you sure you wish to continue?","pages.collections.external_modal.not_show":"Do not show this message again.","pages.collections.refresh.title":"Refresh your collection","pages.collections.refresh.notice":"You can refresh data every 15 minutes.","pages.collections.refresh.notice_wait":"Please wait. You can refresh data every 15 minutes.","pages.collections.refresh.toast":"We're updating information for your collection.","pages.collections.featured.title":"Featured Collections","pages.collections.featured.button":"Explore Collection","pages.collections.footer.heading_broken.0":"Connect with MetaMask","pages.collections.footer.heading_broken.1":"& Manage Your Collection","pages.collections.footer.subtitle":"Explore, Filter, & Share your favorite NFTs with Dashbrd.","pages.collections.footer.button":"Manage Collections","pages.nfts.nft":"nft","pages.nfts.about_nft":"About NFT","pages.nfts.owned_by":"Owned by","pages.nfts.collection_image":"collection image","pages.nfts.menu.properties":"Properties","pages.nfts.menu.activity":"Activity","pages.reports.title":"Submit a Report","pages.reports.description":"Thanks for looking out by reporting things that break the rules. Let us know what's happening and we'll receive the report.","pages.reports.success":"Thank you for your report. We'll review it and see if it breaks our ToS.","pages.reports.failed":"Something went wrong. Please try again.","pages.reports.throttle":"You have made too many requests. Please wait {{time}} before reporting again.","pages.reports.reported":"You have already reported this {{model}}.","pages.reports.reasons.spam":"Spam","pages.reports.reasons.violence":"Promoting Violence","pages.reports.reasons.hate":"Hate","pages.reports.reasons.inappropriate_content":"Inappropriate Content","pages.reports.reasons.impersonation":"Impersonation","pages.reports.reasons.trademark":"Trademark or Copyright","pages.reports.reasons.selfharm":"Self-Harm","pages.reports.reasons.harassment":"Harassment","pages.galleries.title":"Galleries","pages.galleries.empty_title":"No galleries have been published yet. Once they do they will appear here.","pages.galleries.search.loading_results":"Loading results...","pages.galleries.search.no_results":"We could not find anything matching your search criteria, please try again!","pages.galleries.search.placeholder":"Search by name or curator address","pages.galleries.search.placeholder_nfts":"Search by NFTs","pages.galleries.search.error":"Could not load search results. Please try again later.","pages.galleries.my_galleries.title":"My Galleries","pages.galleries.my_galleries.subtitle":"Manage your galleries","pages.galleries.my_galleries.new_gallery":"New Gallery","pages.galleries.my_galleries.no_galleries":"You have not created any galleries yet. To create a gallery, click on the \"Create Gallery\" button.","pages.galleries.my_galleries.no_available_collections":"You have hidden all your collections. If you want to create a gallery, make sure you have at least 1 collection available.","pages.galleries.my_galleries.no_draft_galleries":"You have no draft galleries yet. To create a gallery, click on the \"Create Gallery\" button.","pages.galleries.my_galleries.succesfully_deleted":"Gallery has been successfully removed","pages.galleries.my_galleries.draft_succesfully_deleted":"Draft has been successfully removed","pages.galleries.my_galleries.successfully_created":"Gallery has been successfully created","pages.galleries.my_galleries.successfully_updated":"Gallery has been successfully updated","pages.galleries.my_galleries.new_gallery_no_nfts":"Creating a Gallery requires you to own an NFT.","pages.galleries.my_galleries.new_gallery_all_collections_hidden":"Creating a Gallery requires you to have at least 1 collection available.","pages.galleries.my_galleries.delete_modal.title":"Delete Draft","pages.galleries.my_galleries.delete_modal.text":"Are you sure you want to delete the draft? Everything you've done will be deleted and you won't be able to get it back.","pages.galleries.my_galleries.nfts_no_longer_owned":"NFTs no longer owned by this wallet have been removed from the draft”","pages.galleries.copy_gallery_link":"Copy Gallery Link","pages.galleries.my_nfts":"My NFTs","pages.galleries.show_hidden_collections":"Show hidden collections","pages.galleries.value":"Value","pages.galleries.floor_price":"Floor Price","pages.galleries.nfts":"NFTs","pages.galleries.collections":"Collections","pages.galleries.galleries_count_simple":"{0} galleries|{1} gallery|[2,*] galleries","pages.galleries.galleries_count":"{0} {{count}} Galleries|{1} {{count}} Gallery|[2,*] {{count}} Galleries","pages.galleries.collections_count_simple":"{0} collections|{1} collection|[2,*] collections","pages.galleries.collections_count":"{0} {{count}} Collections|{1} {{count}} Collection|[2,*] {{count}} Collections","pages.galleries.nfts_count_simple":"{0} NFTs|{1} NFT|[2,*] NFTs","pages.galleries.nfts_count":"{0} {{count}} NFTs|{1} {{count}} NFT|[2,*] {{count}} NFTs","pages.galleries.users_count_simple":"{0} users|{1} user|[2,*] users","pages.galleries.users_count":"{0} {{count}} Users|{1} {{count}} User|[2,*] {{count}} Users","pages.galleries.featuring":"Featuring","pages.galleries.curated_by":"Curated by","pages.galleries.worth_about":"Worth About","pages.galleries.valued_at":"valued at","pages.galleries.from":"From","pages.galleries.most_popular_galleries":"Most Popular Galleries","pages.galleries.newest_galleries":"Newest Galleries","pages.galleries.most_valuable_galleries":"Most Valuable Galleries","pages.galleries.most_popular":"Most Popular","pages.galleries.newest":"Newest","pages.galleries.most_valuable":"Most Valuable","pages.galleries.create.search_by_nfts":"Search by NFTs","pages.galleries.create.input_placeholder":"Enter gallery name","pages.galleries.create.title_too_long":"Gallery name must not exceed {{max}} characters.","pages.galleries.create.already_selected_nft":"NFT already exists in this gallery","pages.galleries.create.nft_missing_image":"Only NFTs with images can be added to galleries","pages.galleries.create.nft_gallery_limit":"You can only add 16 NFTs per gallery","pages.galleries.create.gallery_cover":"Gallery Cover","pages.galleries.create.gallery_cover_description":"The cover is used for the card on the gallery list page. While the cover is not a requirement it will allow you to add personality and stand out from the crowd.","pages.galleries.create.gallery_cover_information":"Image dimensions must be at least 287px x 190px, with a max size of 2 MB (JPG, PNG or GIF)","pages.galleries.create.no_results":"We could not find anything matching your search criteria, please try again!","pages.galleries.create.templates.cover":"Cover","pages.galleries.create.templates.template":"Template","pages.galleries.create.templates.select":"Select Gallery Template","pages.galleries.create.templates.basic":"Basic Gallery","pages.galleries.create.templates.coming_soon":"More Coming Soon","pages.galleries.create.load_more_collections_one":"Load {{count}} More Collection","pages.galleries.create.load_more_collections_other":"Load {{count}} More Collections","pages.galleries.create.load_more_nfts":"Load More NFTs","pages.galleries.create.can_purchase":"You can purchase NFTs with these top NFT Marketplaces:","pages.galleries.create.must_own_one_nft":"You must own at least one (1) NFT in order to create a gallery.","pages.galleries.create.back_to_galleries":"Back to Galleries","pages.galleries.create.draft_saved":"Draft Saved","pages.galleries.create.saving_to_draft":"Saving to draft","pages.galleries.create.drafts_limit_modal_title":"Draft Gallery Limit","pages.galleries.create.drafts_limit_modal_message":"You’ve hit your limit for draft galleries. While you can still make new galleries and publish them, they won’t be saved as drafts. To Free up space, you can either delete existing drafts or publish them.","pages.galleries.create.drafts_limit_modal_cancel":"Go to Drafts","pages.galleries.delete_modal.title":"Delete Gallery","pages.galleries.delete_modal.confirmation_text":"Are you sure you want to delete the gallery? Deleting a Gallery is permanent, all associated views and likes will be lost.","pages.galleries.consists_of_collections":"{0} This gallery consists of {{count}} collections|{1} This gallery consists of {{count}} collection|[2,*] This gallery consists of {{count}} collections","pages.galleries.guest_banner.title":"Craft the ultimate","pages.galleries.guest_banner.subtitle":"Pick your favorites, curate your gallery, & share it with the world.","pages.profile.title":"Profile","pages.token_panel.balance_tooltip":"Total percentage of the portfolio held in this token","pages.token_panel.insufficient_funds":"Insufficient Balance","pages.token_panel.error":"Dashbrd has failed to load token information. Please try again later.","pages.token_panel.failed_to_retrieve_transactions":"We were unable to fetch your transactions.","pages.token_panel.tabs.transaction_history":"Transaction History","pages.token_panel.tabs.history":"History","pages.token_panel.tabs.market_data":"Market Data","pages.token_panel.details.current_price":"Current Price","pages.token_panel.details.title":"Token Details","pages.token_panel.details.market_cap":"Market Cap","pages.token_panel.details.volume":"Daily Volume","pages.token_panel.details.supply":"Minted Supply","pages.token_panel.details.ath":"All-Time High","pages.token_panel.details.atl":"All-Time Low","pages.token_panel.chart.failed":"Dashbrd has failed to load chart information. Please try again later.","pages.transaction_details_panel.title":"Transaction Details","pages.transaction_details_panel.details.blockchain":"Blockchain","pages.transaction_details_panel.details.timestamp":"Timestamp","pages.transaction_details_panel.details.transaction_hash":"Transaction Hash","pages.transaction_details_panel.details.transaction_fee":"Transaction Fee","pages.transaction_details_panel.details.gas_price":"Gas Price","pages.transaction_details_panel.details.gas_used":"Gas Used","pages.transaction_details_panel.details.nonce":"Nonce","pages.send_receive_panel.send.labels.token_and_amount":"Token and Amount","pages.send_receive_panel.send.labels.destination_address":"Destination Address","pages.send_receive_panel.send.labels.projected_fee":"Projected Fee","pages.send_receive_panel.send.placeholders.enter_amount":"Enter Amount","pages.send_receive_panel.send.placeholders.insert_recipient_address":"Insert Recipient Address","pages.send_receive_panel.send.placeholders.projected_fee":"Projected Fee","pages.send_receive_panel.send.errors.amount":"Insufficient Funds: You do not have enough to cover the amount + fee.","pages.send_receive_panel.send.errors.destination":"Destination address is not correct. Check and input again.","pages.send_receive_panel.send.hints.token_price":"Token Price","pages.send_receive_panel.send.fees.Fast":"Fast","pages.send_receive_panel.send.fees.Avg":"Avg","pages.send_receive_panel.send.fees.Slow":"Slow","pages.send_receive_panel.send.search_dropdown.placeholder":"Search token","pages.send_receive_panel.send.search_dropdown.no_results":"No Results","pages.send_receive_panel.send.search_dropdown.error":"Error occurred while searching tokens.","pages.send_receive_panel.send.transaction_time":"Transaction Time: ~{{ time }} minutes","pages.send_receive_panel.send.from":"From","pages.send_receive_panel.send.to":"To","pages.send_receive_panel.send.amount":"Amount","pages.send_receive_panel.send.fee":"Fee","pages.send_receive_panel.send.total_amount":"Total Amount","pages.send_receive_panel.send.waiting_message":"Review and verify the information on your MetaMask. Sign to send the transaction.","pages.send_receive_panel.send.waiting_spinner_text":"Waiting for confirmation...","pages.send_receive_panel.send.failed_message":"It looks like something went wrong while sending your transaction. Press 'Retry' to make another attempt.","pages.send_receive_panel.receive.alert":"Send only Polygon or Ethereum Network compatible tokens to this address or you could permanently lose your funds!","pages.settings.title":"Settings","pages.settings.sidebar.general":"General","pages.settings.sidebar.notifications":"Notifications","pages.settings.sidebar.session_history":"Sessions History","pages.settings.general.title":"Settings","pages.settings.general.subtitle":"Customize your App Experience","pages.settings.general.currency":"Currency","pages.settings.general.currency_subtitle":"Select your default currency which will be used throughout the app.","pages.settings.general.time_date":"Time & Date","pages.settings.general.time_date_subtitle":"Select how you want time and date be shown inside app.","pages.settings.general.date_format":"Date Format","pages.settings.general.time_format":"Time Format","pages.settings.general.timezone":"Timezone","pages.settings.general.set_defaults":"Set Defaults","pages.settings.general.set_defaults_content":"Reverting to the default settings will remove any customizations previously made. Are you sure?","pages.settings.general.save":"Save Settings","pages.settings.general.saved":"Your settings have been successfully saved","pages.wallet.title":"Wallet","pages.privacy_policy.title":"Privacy Policy","pages.terms_of_service.title":"Terms of Service","pages.popular_collections.title":"Popular NFT Collections","pages.popular_collections.header_title":"<0>{{nftsCount}} {{nfts}} from <0>{{collectionsCount}} {{collections}}, worth about <0><1>{{worth}}","pagination.previous":"« Previous","pagination.next":"Next »","passwords.reset":"Your password has been reset!","passwords.sent":"We have emailed your password reset link!","passwords.throttled":"Please wait before retrying.","passwords.token":"This password reset token is invalid.","passwords.user":"We can't find a user with that email address.","urls.landing":"https://dashbrd.com","urls.cookie_policy":"https://dashbrd.com/cookie-policy","urls.privacy_policy":"https://dashbrd.com/privacy-policy","urls.terms_of_service":"https://dashbrd.com/terms-of-service","urls.twitter":"https://x.com/DashbrdApp","urls.discord":"https://discord.gg/MJyWKkCJ5k","urls.github":"https://github.com/ArdentHQ/dashbrd","urls.coingecko":"https://www.coingecko.com","urls.etherscan":"https://etherscan.io","urls.polygonscan":"https://polygonscan.com","urls.alchemy":"https://www.alchemy.com","urls.moralis":"https://moralis.io","urls.mnemonic":"https://www.mnemonichq.com","urls.opensea":"https://opensea.io/","urls.explorers.etherscan.token_transactions":"https://etherscan.io/token/{{token}}?a={{address}}","urls.explorers.etherscan.addresses":"https://etherscan.io/address/{{address}}","urls.explorers.etherscan.transactions":"https://etherscan.io/tx/{{id}}","urls.explorers.etherscan.nft":"https://etherscan.io/nft/{{address}}/{{nftId}}","urls.explorers.polygonscan.token_transactions":"https://polygonscan.com/token/{{token}}?a={{address}}","urls.explorers.polygonscan.addresses":"https://polygonscan.com/address/{{address}}","urls.explorers.polygonscan.transactions":"https://polygonscan.com/tx/{{id}}","urls.explorers.polygonscan.nft":"https://polygonscan.com/nft/{{address}}/{{nftId}}","urls.explorers.mumbai.token_transactions":"https://mumbai.polygonscan.com/token/{{token}}?a={{address}}","urls.explorers.mumbai.addresses":"https://mumbai.polygonscan.com/address/{{address}}","urls.explorers.mumbai.transactions":"https://mumbai.polygonscan.com/tx/{{id}}","urls.explorers.mumbai.nft":"https://mumbai.polygonscan.com/nft/{{address}}/{{nftId}}","urls.explorers.goerli.token_transactions":"https://goerli.etherscan.io/token/{{token}}?a={{address}}","urls.explorers.goerli.addresses":"https://goerli.etherscan.io/address/{{address}}","urls.explorers.goerli.transactions":"https://goerli.etherscan.io/tx/{{id}}","urls.explorers.goerli.nft":"https://goerli.etherscan.io/nft/{{address}}/{{nftId}}","urls.marketplaces.opensea.collection":"https://opensea.io/assets/{{network}}/{{address}}","urls.marketplaces.opensea.nft":"https://opensea.io/assets/{{network}}/{{address}}/{{nftId}}","urls.marketplaces.rarible.collection":"https://rarible.com/collection/{{address}}/items","urls.marketplaces.rarible.nft":"https://rarible.com/token/{{address}}:{{nftId}}","urls.marketplaces.blur.collection":"https://blur.io/collection/{{address}}","urls.marketplaces.blur.nft":"https://blur.io/asset/{{address}}/{{nftId}}","urls.marketplaces.looksrare.collection":"https://looksrare.org/collections/{{address}}","urls.marketplaces.looksrare.nft":"https://looksrare.org/collections/{{address}}/{{nftId}}","validation.accepted":"The {{attribute}} must be accepted.","validation.accepted_if":"The {{attribute}} must be accepted when {{other}} is {{value}}.","validation.active_url":"The {{attribute}} is not a valid URL.","validation.after":"The {{attribute}} must be a date after {{date}}.","validation.after_or_equal":"The {{attribute}} must be a date after or equal to {{date}}.","validation.alpha":"The {{attribute}} must only contain letters.","validation.alpha_dash":"The {{attribute}} must only contain letters, numbers, dashes and underscores.","validation.alpha_num":"The {{attribute}} must only contain letters and numbers.","validation.array":"The {{attribute}} must be an array.","validation.ascii":"The {{attribute}} must only contain single-byte alphanumeric characters and symbols.","validation.before":"The {{attribute}} must be a date before {{date}}.","validation.before_or_equal":"The {{attribute}} must be a date before or equal to {{date}}.","validation.between.array":"The {{attribute}} must have between {{min}} and {{max}} items.","validation.between.file":"The {{attribute}} must be between {{min}} and {{max}} kilobytes.","validation.between.numeric":"The {{attribute}} must be between {{min}} and {{max}}.","validation.between.string":"The {{attribute}} must be between {{min}} and {{max}} characters.","validation.boolean":"The {{attribute}} field must be true or false.","validation.confirmed":"The {{attribute}} confirmation does not match.","validation.current_password":"The password is incorrect.","validation.date":"The {{attribute}} is not a valid date.","validation.date_equals":"The {{attribute}} must be a date equal to {{date}}.","validation.date_format":"The {{attribute}} does not match the format {{format}}.","validation.decimal":"The {{attribute}} must have {{decimal}} decimal places.","validation.declined":"The {{attribute}} must be declined.","validation.declined_if":"The {{attribute}} must be declined when {{other}} is {{value}}.","validation.different":"The {{attribute}} and {{other}} must be different.","validation.digits":"The {{attribute}} must be {{digits}} digits.","validation.digits_between":"The {{attribute}} must be between {{min}} and {{max}} digits.","validation.dimensions":"The {{attribute}} has invalid image dimensions.","validation.distinct":"The {{attribute}} field has a duplicate value.","validation.doesnt_end_with":"The {{attribute}} may not end with one of the following: {{values}}.","validation.doesnt_start_with":"The {{attribute}} may not start with one of the following: {{values}}.","validation.email":"The {{attribute}} must be a valid email address.","validation.ends_with":"The {{attribute}} must end with one of the following: {{values}}.","validation.enum":"The selected {{attribute}} is invalid.","validation.exists":"The selected {{attribute}} is invalid.","validation.file":"The {{attribute}} must be a file.","validation.filled":"The {{attribute}} field must have a value.","validation.gt.array":"The {{attribute}} must have more than {{value}} items.","validation.gt.file":"The {{attribute}} must be greater than {{value}} kilobytes.","validation.gt.numeric":"The {{attribute}} must be greater than {{value}}.","validation.gt.string":"The {{attribute}} must be greater than {{value}} characters.","validation.gte.array":"The {{attribute}} must have {{value}} items or more.","validation.gte.file":"The {{attribute}} must be greater than or equal to {{value}} kilobytes.","validation.gte.numeric":"The {{attribute}} must be greater than or equal to {{value}}.","validation.gte.string":"The {{attribute}} must be greater than or equal to {{value}} characters.","validation.image":"The {{attribute}} must be an image.","validation.in":"The selected {{attribute}} is invalid.","validation.in_array":"The {{attribute}} field does not exist in {{other}}.","validation.integer":"The {{attribute}} must be an integer.","validation.ip":"The {{attribute}} must be a valid IP address.","validation.ipv4":"The {{attribute}} must be a valid IPv4 address.","validation.ipv6":"The {{attribute}} must be a valid IPv6 address.","validation.json":"The {{attribute}} must be a valid JSON string.","validation.lowercase":"The {{attribute}} must be lowercase.","validation.lt.array":"The {{attribute}} must have less than {{value}} items.","validation.lt.file":"The {{attribute}} must be less than {{value}} kilobytes.","validation.lt.numeric":"The {{attribute}} must be less than {{value}}.","validation.lt.string":"The {{attribute}} must be less than {{value}} characters.","validation.lte.array":"The {{attribute}} must not have more than {{value}} items.","validation.lte.file":"The {{attribute}} must be less than or equal to {{value}} kilobytes.","validation.lte.numeric":"The {{attribute}} must be less than or equal to {{value}}.","validation.lte.string":"The {{attribute}} must be less than or equal to {{value}} characters.","validation.mac_address":"The {{attribute}} must be a valid MAC address.","validation.max.array":"The {{attribute}} must not have more than {{max}} items.","validation.max.file":"The {{attribute}} must not be greater than {{max}} kilobytes.","validation.max.numeric":"The {{attribute}} must not be greater than {{max}}.","validation.max.string":"The {{attribute}} must not be greater than {{max}} characters.","validation.max_digits":"The {{attribute}} must not have more than {{max}} digits.","validation.mimes":"The {{attribute}} must be a file of type: {{values}}.","validation.mimetypes":"The {{attribute}} must be a file of type: {{values}}.","validation.min.array":"The {{attribute}} must have at least {{min}} items.","validation.min.file":"The {{attribute}} must be at least {{min}} kilobytes.","validation.min.numeric":"The {{attribute}} must be at least {{min}}.","validation.min.string":"The {{attribute}} must be at least {{min}} characters.","validation.min_digits":"The {{attribute}} must have at least {{min}} digits.","validation.missing":"The {{attribute}} field must be missing.","validation.missing_if":"The {{attribute}} field must be missing when {{other}} is {{value}}.","validation.missing_unless":"The {{attribute}} field must be missing unless {{other}} is {{value}}.","validation.missing_with":"The {{attribute}} field must be missing when {{values}} is present.","validation.missing_with_all":"The {{attribute}} field must be missing when {{values}} are present.","validation.multiple_of":"The {{attribute}} must be a multiple of {{value}}.","validation.not_in":"The selected {{attribute}} is invalid.","validation.not_regex":"The {{attribute}} format is invalid.","validation.numeric":"The {{attribute}} must be a number.","validation.password.letters":"The {{attribute}} must contain at least one letter.","validation.password.mixed":"The {{attribute}} must contain at least one uppercase and one lowercase letter.","validation.password.numbers":"The {{attribute}} must contain at least one number.","validation.password.symbols":"The {{attribute}} must contain at least one symbol.","validation.password.uncompromised":"The given {{attribute}} has appeared in a data leak. Please choose a different {{attribute}}.","validation.present":"The {{attribute}} field must be present.","validation.prohibited":"The {{attribute}} field is prohibited.","validation.prohibited_if":"The {{attribute}} field is prohibited when {{other}} is {{value}}.","validation.prohibited_unless":"The {{attribute}} field is prohibited unless {{other}} is in {{values}}.","validation.prohibits":"The {{attribute}} field prohibits {{other}} from being present.","validation.regex":"The {{attribute}} format is invalid.","validation.required":"The {{attribute}} field is required.","validation.required_array_keys":"The {{attribute}} field must contain entries for: {{values}}.","validation.required_if":"The {{attribute}} field is required when {{other}} is {{value}}.","validation.required_if_accepted":"The {{attribute}} field is required when {{other}} is accepted.","validation.required_unless":"The {{attribute}} field is required unless {{other}} is in {{values}}.","validation.required_with":"The {{attribute}} field is required when {{values}} is present.","validation.required_with_all":"The {{attribute}} field is required when {{values}} are present.","validation.required_without":"The {{attribute}} field is required when {{values}} is not present.","validation.required_without_all":"The {{attribute}} field is required when none of {{values}} are present.","validation.same":"The {{attribute}} and {{other}} must match.","validation.size.array":"The {{attribute}} must contain {{size}} items.","validation.size.file":"The {{attribute}} must be {{size}} kilobytes.","validation.size.numeric":"The {{attribute}} must be {{size}}.","validation.size.string":"The {{attribute}} must be {{size}} characters.","validation.starts_with":"The {{attribute}} must start with one of the following: {{values}}.","validation.string":"The {{attribute}} must be a string.","validation.timezone":"The {{attribute}} must be a valid timezone.","validation.unique":"The {{attribute}} has already been taken.","validation.uploaded":"The {{attribute}} failed to upload.","validation.uppercase":"The {{attribute}} must be uppercase.","validation.url":"The {{attribute}} must be a valid URL.","validation.ulid":"The {{attribute}} must be a valid ULID.","validation.uuid":"The {{attribute}} must be a valid UUID.","validation.custom.attribute-name.rule-name":"custom-message","validation.unsupported_currency_code":"The currency code you provided is invalid or not supported.","validation.unsupported_period":"The period you provided is invalid or not supported.","validation.unsupported_token_symbol":"The token symbol you provided is invalid or not supported.","validation.gallery_title_required":"Gallery name is required.","validation.gallery_title_max_characters":"The gallery name should not exceed 50 characters.","validation.gallery_title_invalid":"The gallery name is invalid.","validation.nfts_required":"Please add at least one NFT.","validation.nfts_max_size":"Galleries can contain no more than {{limit}} NFTs","validation.invalid_nfts":"The NFT in position {{position}} is invalid, please select another one.","validation.invalid_cover":"You have selected an invalid cover image, please try another one."} \ No newline at end of file +{"auth.welcome":"Welcome to Dashbrd","auth.logged_in":"You're logged in!","auth.log_out":"Log out","auth.failed":"These credentials do not match our records.","auth.session_timeout":"Your session has timed out. Please refresh the page and try connecting your account again.","auth.session_timeout_modal":"Seems like your session has timed out. Please connnect your wallet again.","auth.password":"The provided password is incorrect.","auth.throttle":"Too many login attempts. Please try again in {{seconds}} seconds.","auth.wallet.connecting":"Connecting …","auth.wallet.waiting_for_signature":"Waiting for Signature …","auth.wallet.switching_wallet":"Switching Wallet …","auth.wallet.connect":"Connect Wallet","auth.wallet.connect_long":"Connect Your Wallet to Get Started","auth.wallet.sign_subtitle":"Connect Your Wallet to Continue","auth.wallet.disconnect":"Disconnect Wallet","auth.wallet.install":"Install MetaMask","auth.wallet.install_long":"Install MetaMask to Get Started","auth.wallet.sign":"Sign Message","auth.wallet.sign_message":"Welcome to Dashbrd. In order to login, sign this message with your wallet. It doesn't cost you anything!\n\nSigning ID (you can ignore this): {{nonce}}","auth.wallet.connect_subtitle":"Click on the MetaMask icon in your browser to confirm the action and connect your wallet.","auth.wallet.requires_signature":"In order to prevent impersonation, we require a signature to perform this action. This signature is only a signed message and does not give any access to your wallet.","auth.errors.metamask.no_account":"No account found. Please connect your wallet and try again.","auth.errors.metamask.generic":"Connection attempt error. Please retry and follow the steps to connect your wallet.","auth.errors.metamask.invalid_network":"Please switch to Polygon or Ethereum Mainnet in your MetaMask plugin to connect to Dashbrd.","auth.errors.metamask.provider_missing":"You don't have MetaMask installed in your browser. Please install and try again.","auth.errors.metamask.user_rejected":"It looks like you cancelled signing of the authentication message. Please try again.","auth.errors.metamask.provider_not_set":"Ethereum provider is not set","auth.validation.wallet_login_failed":"There was a problem trying to verify your signature. Please try again.","auth.validation.invalid_address":"Your wallet address is invalid. Please try again.","auth.validation.invalid_signature":"Signature is invalid. Please try again.","auth.validation.invalid_network":"Please switch to Polygon or Ethereum Mainnet in your MetaMask plugin to connect to Dashbrd.","common.author":"Author","common.add":"Add","common.amount":"Amount","common.balance":"Balance","common.cancel":"Cancel","common.delete":"Delete","common.edit":"Edit","common.confirm":"Confirm","common.connect":"Connect","common.continue":"Continue","common.done":"Done","common.filter":"Filter","common.items":"Items","common.receive":"Receive","common.received":"Received","common.retry":"Retry","common.records":"Records","common.save":"Save","common.send":"Send","common.sent":"Sent","common.show":"Show","common.searching":"Searching...","common.other":"Other","common.owned":"Owned","common.token":"Token","common.tokens":"Tokens","common.wallet":"Wallet","common.pending":"Pending","common.publish":"Publish","common.published":"Published","common.empty":"Empty","common.your_address":"Your Address","common.warning":"Warning","common.my_address":"My Address","common.my_wallet":"My Wallet","common.my_collections":"My Collections","common.my_balance":"My Balance","common.na":"N/A","common.simple_plural_without_data":"One comment|Many comments","common.simple_plural_with_data":"{{count}} comment|{{count}} comments","common.advanced_plural_without_data":"{0} no comments yet|{1} 1 comment|[2,*] Many comments","common.advanced_plural_with_data":"{0} no comments yet|{1} 1 comment|[2,*] {{count}} comments","common.copy_clipboard":"Copy to Clipboard","common.copy":"Copy","common.download":"Download","common.zoom":"Zoom","common.my_collection":"My Collection","common.max":"Max","common.chain":"Chain","common.search":"Search","common.copied":"Copied!","common.coming_soon":"Coming Soon","common.more_details":"More Details","common.close":"Close","common.close_toast":"Close toast","common.loading":"Loading","common.price":"Price","common.articles":"Articles","common.most_popular":"Most Popular","common.market_cap":"Market Cap","common.volume":"Volume","common.volume_frequency":"Volume {{frequency}}","common.value":"Value","common.last_n_days":"Last {{count}} Days","common.details":"Details","common.view_all":"View All","common.view_more_on_polygonscan":"View More on Polygonscan","common.view_more_on_etherscan":"View More on Etherscan","common.view_nft_on_etherscan":"View NFT on Etherscan","common.view_nft_on_polygonscan":"View NFT on Polygonscan","common.view_nft_on_goerli_tesnet":"View NFT on Goerli Testnet Explorer","common.view_nft_on_mumbai_tesnet":"View NFT on Mumbai Testnet Explorer","common.polygonscan":"Polygonscan","common.etherscan":"Etherscan","common.featured":"Featured","common.floor_price":"Floor Price","common.floor":"Floor","common.supply":"Supply","common.owners":"Owners","common.created":"Created","common.nft":"NFT","common.collection":"Collection","common.collections":"Collections","common.gallery":"Gallery","common.basic_gallery":"Basic Gallery","common.gallery_name":"Gallery Name","common.create_gallery":"Create Gallery","common.external_link":"External Link","common.follow_link":"Follow Link","common.cover":"Cover","common.template":"Template","common.page":"Page","common.polygon":"Polygon","common.ethereum":"Ethereum","common.mumbai":"Mumbai","common.goerli":"Goerli","common.of":"of","common.pagination_input_placeholder":"Enter the page number","common.pagination_input_placeholder_mobile":"Page number","common.nft_count":"{0} {{count}} NFTs|{1} {{count}} NFT|[2,*] {{count}} NFTs","common.nft_gallery":"NFT Gallery","common.unable_to_retrieve_image":"Unable to retrieve your NFT image at this time","common.optional":"Optional","common.selected":"Selected","common.select":"Select","common.preview":"Preview","common.image_size_error":"Image size must not exceed 2MB","common.image_dimensions_error":"Image dimensions must exceed 287px x 190px","common.write_to_confirm":"Write {{word}} to confirm","common.n_hours":"{0} {{count}} hour|{1} {{count}} hour|[2,*] {{count}} hours","common.n_minutes":"{0} {{count}} minute|{1} {{count}} minute|[2,*] {{count}} minutes","common.report":"Report","common.nfts":"NFTs","common.n_nfts":"{0}NFTs|{1}NFT|[2,*]NFTs","common.n_collections":"{0}collections|{1}collection|[2,*]collections","common.back":"Back","common.back_to":"Back to","common.name":"Name","common.type":"Type","common.from":"From","common.to":"To","common.sale_price":"Sale Price","common.recent_activity":"Recent Activity","common.time":"Time","common.datetime.few_seconds_ago":"A few seconds ago","common.datetime.minutes_ago":"{0} Less than a minute ago|{1} A minute ago|[2,*] {{count}} minutes ago","common.datetime.hours_ago":"{0} Less than an hour ago|{1} An hour ago|[2,*] {{count}} hours ago","common.datetime.days_ago":"{0} Less than a day ago|{1} A day ago|[2,*] {{count}} days ago","common.datetime.weeks_ago":"{0} Less than a week ago|{1} A week ago|[2,*] {{count}} weeks ago","common.datetime.months_ago":"{0} Less than a month ago|{1} A month ago|[2,*] {{count}} months ago","common.datetime.years_ago":"{0} Less than a year ago|{1} A year ago|[2,*] {{count}} years ago","common.no_traits_found":"No traits found.","common.empty_transactions":"You don't have any transactions yet. Once transactions have been made, they will show up here.","common.error":"Error","common.refresh":"Refresh","common.refresh_metadata":"Refresh Metadata","common.refreshing_metadata":"Refreshing Metadata... Please check back later.","common.refreshing_activity":"Refreshing Activity... Please check back later.","common.pending_confirmation":"Pending Confirmation","common.confirmed_transaction":"Confirmed Transaction","common.transaction_error":"Transaction Error","common.transaction_error_description_first_part":"Your transaction encountered an error. View this transaction on","common.transaction_error_description_second_part":"for more details.","common.home":"Home","common.contact":"Contact","common.menu":"Menu","common.website":"Website","common.twitter":"Twitter","common.discord":"Discord","common.facebook":"Facebook","common.reddit":"Reddit","common.x":"X","common.sort":"Sort","common.drafts":"Drafts","common.draft":"Draft","common.delete_draft":"Delete Draft","common.share_on":"Share on {{platform}}","common.top":"Top","common.all_chains":"All chains","common.votes":"Votes","common.vote":"Vote","common.vol":"Vol","common.collection_preview":"Collection Preview","footer.copyright":"{{year}} © Dashbrd. All rights reserved.","footer.all_rights_reserved":"All rights reserved","footer.privacy_policy":"Privacy Policy","footer.terms_of_service":"Terms of Service","footer.powered_by":"Powered by","format.fiat":"{{ value, currency }}","format.number":"{{ value, number }}","metatags.home.title":"Dashbrd | Web3 Portfolio Management Made Simple","metatags.home.description":"Simplify your Web3 journey with Dashbrd. Manage your portfolio of tokens, NFTs, and other digital collectibles across the Ethereum and Polygon blockchains.","metatags.home.image":"/images/meta/home.png","metatags.error.title":"Error {{code}} | Dashbrd","metatags.wallet.title":"My Wallet | Dashbrd","metatags.galleries.title":"Top NFT Galleries | Dashbrd","metatags.galleries.image":"/images/meta/nft-galleries.png","metatags.galleries.description":"Explore user published NFT galleries to find custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.most_popular.title":"Most Popular Galleries | Dashbrd","metatags.galleries.most_popular.image":"/images/meta/most-popular-nft-galleries.png","metatags.galleries.most_popular.description":"Explore and discover Most Popular NFT Galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.newest.title":"Newest Galleries | Dashbrd","metatags.galleries.newest.image":"/images/meta/newest-nft-galleries.png","metatags.galleries.newest.description":"Explore and discover most recent NFT galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More","metatags.galleries.most_valuable.title":"Most Valuable Galleries | Dashbrd","metatags.galleries.most_valuable.image":"/images/meta/most-valuable-nft-galleries.png","metatags.galleries.most_valuable.description":"Explore and discover Most Valuable NFT Galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.view.title":"{{name}} | Dashbrd","metatags.galleries.view.description":"{{name}} | A Curated NFT Gallery at Dashbrd","metatags.galleries.view.image":"/images/meta/nft-gallery.png","metatags.my_galleries.title":"My Galleries | Dashbrd","metatags.my_galleries.title_draft":"My Draft Galleries | Dashbrd","metatags.my_galleries.create.title":"Create Gallery | Dashbrd","metatags.my_galleries.edit.title":"Edit {{name}} | Dashbrd","metatags.collections.title":"Collections | Dashbrd","metatags.collections.view.title":"{{name}} Collection | Dashbrd","metatags.collections.view.description":"Immerse yourself in the intricate details of {{name}} collection, featuring remarkable digital assets. Start your NFT journey today!","metatags.collections.view.image":"/images/meta/nft-collection.png","metatags.collections.of-the-month.title":"Collection of the Month {{month}} | Dashbrd","metatags.my-collections.title":"My Collections | Dashbrd","metatags.popular-collections.title":"Popular NFT Collections | Dashbrd","metatags.nfts.view.title":"{{nft}} NFT | Dashbrd","metatags.nfts.view.description":"Uncover the complete story of {{nft}} NFT from the {{collection}} collection, delving into its unique attributes and distinctive features.","metatags.nfts.view.image":"/images/meta/nft-details.png","metatags.settings.title":"Settings | Dashbrd","metatags.articles.title":"Articles | Dashbrd","metatags.articles.view.title":"{{title}} | Dashbrd","metatags.login.title":"Login | Dashbrd","metatags.privacy_policy.title":"Privacy Policy | Dashbrd","metatags.privacy_policy.description":"Dashbrd’s privacy policy outlines the information we collect and explains your choices surrounding how we use information about you.","metatags.terms_of_service.title":"Terms of Service | Dashbrd","metatags.terms_of_service.description":"These Terms of Service cover your use and access to services, products or websites of Dashbrd.","metatags.cookie_policy.title":"Cookie Policy | Dashbrd","metatags.cookie_policy.description":"Dashbrd uses cookies to make the website more user-friendly. Find out about the main types of cookies we use, and what we use them for.","metatags.welcome.title":"Welcome to Dashbrd | Web3 Simplified","pages.onboarding.title":"Get Started","pages.onboarding.heading":"Your monkeys were bored and ran off, we are trying to round them up.","pages.onboarding.message":"We are setting up your account. This process usually takes just a few minutes, but can take up to 15 minutes.","pages.error.heading":"Oops, something went wrong ...","pages.error.message":"Please try again or get in touch if the issue persists.","pages.maintenance.title":"Dashbrd is currently down for scheduled maintenance.","pages.maintenance.description":"We expect to be back soon. Thanks for your patience.","pages.dashboard.title":"My Wallet","pages.dashboard.breakdown.title":"Portfolio Breakdown","pages.dashboard.line_chart.data_error":"Could not load chart data","pages.articles.title":"Articles","pages.articles.featured_collections":"Featured Collections","pages.articles.placeholder_more_soon":"More Soon","pages.articles.no_articles":"No articles have been published yet. Please check back later!","pages.articles.header_title":"Explore our collection of","pages.articles.header_suffix_one":"published article","pages.articles.header_suffix_other":"published articles","pages.articles.audio_version":"Audio version","pages.articles.consists_of_collections":"{0} This article highlights {{count}} collections|{1} This article highlights {{count}} collection|[2,*] This article highlights {{count}} collections","pages.collections.title":"Collections","pages.collections.collections":"Collections","pages.collections.popular_collections":"Popular Collections","pages.collections.collection_value":"Collection Value","pages.collections.nfts_owned":"NFTs Owned","pages.collections.header_title":"You own <0>{{nftsCount}} {{nfts}} across <0>{{collectionsCount}} {{collections}}, worth about <0><1>{{worth}}","pages.collections.search_placeholder":"Search by Collection","pages.collections.properties":"Properties","pages.collections.collections_network":"Collections Network","pages.collections.property_search_placeholder":"Feature Search","pages.collections.floor_price":"Floor Price","pages.collections.value":"Value","pages.collections.rarity":"Rarity","pages.collections.report":"Report","pages.collections.search_by_name":"Search by Collection Name","pages.collections.hide_collection":"Hide Collection","pages.collections.unhide_collection":"Unhide Collection","pages.collections.no_collections":"You do not own any NFTs yet. Once you do they will be shown here.","pages.collections.all_collections_hidden":"You have hidden all your collections. Unhide and they will appear here.","pages.collections.about_collection":"About Collection","pages.collections.show_hidden":"Show Hidden","pages.collections.show_my_collection":"Show My Collection","pages.collections.owned":"Owned","pages.collections.activities.loading_activities":"We're fetching Activity for this NFT, please hang tight, this can take a while.","pages.collections.activities.loading_activities_collection":"We're fetching Activity for this collection, please hang tight, this can take a while.","pages.collections.activities.ignores_activities":"We don't support activity history for this collection yet.","pages.collections.activities.no_activity":"This collection does not have any activity yet.","pages.collections.activities.types.LABEL_MINT":"Mint","pages.collections.activities.types.LABEL_TRANSFER":"Transfer","pages.collections.activities.types.LABEL_SALE":"Sale","pages.collections.activities.types.LABEL_BURN":"Burn","pages.collections.collection_of_the_month.title":"Collection of the Month {{month}}","pages.collections.collection_of_the_month.winners_month":"Winners: {{month}}","pages.collections.collection_of_the_month.vote_for_next_months_winners":"Vote now for next month's winners","pages.collections.collection_of_the_month.view_previous_winners":"View Previous Winners","pages.collections.collection_of_the_month.vote_received_modal.title":"Vote Received","pages.collections.collection_of_the_month.vote_received_modal.description":"Your vote has been recorded. Share your vote on X and let everyone know!","pages.collections.collection_of_the_month.vote_received_modal.share_vote":"Share Vote","pages.collections.collection_of_the_month.vote_received_modal.img_alt":"I voted for Dashbrd Project of the Month","pages.collections.collection_of_the_month.vote_received_modal.x_text":"I voted for {{collection}} for collection of the month @dashbrdapp! Go show your support!","pages.collections.collection_of_the_month.vote_success":"Your vote has been successfully submitted","pages.collections.collection_of_the_month.content_to_be_added.title":"Content to be added","pages.collections.collection_of_the_month.content_to_be_added.description":"There will be a list of previous month winners here soon!","pages.collections.collection_of_the_month.has_won_already":"This collection has already
    won Collection of the Month.","pages.collections.articles.heading":"Latest NFT News & Features","pages.collections.articles.no_articles":"No articles have been linked to this collection as of now.","pages.collections.articles.no_articles_with_filters":"We could not find any articles matching your search criteria, please try again!","pages.collections.articles.search_placeholder":"Search in Articles","pages.collections.articles.sort_latest":"Latest","pages.collections.articles.sort_popularity":"Most Popular","pages.collections.search.loading_results":"Loading results...","pages.collections.search.no_results":"We could not find anything matching your search criteria, please try again!","pages.collections.search.no_results_with_filters":"We could not find anything matching your filters, please try again!","pages.collections.search.no_results_ownership":"You do not own any NFTs in this collection","pages.collections.search.error":"Could not load search results. Please try again later.","pages.collections.vote.vote_for_top_collection":"Vote for Top Collection of the Month","pages.collections.vote.vote":"Vote","pages.collections.vote.time_left":"Time Left","pages.collections.vote.or_nominate_collection":"Or nominate a collection","pages.collections.vote.nominate_collection":"Nominate a collection","pages.collections.vote.vote_to_reveal":"Vote to reveal data","pages.collections.vote.already_voted":"You’ve already nominated. Come back next month!","pages.collections.sorting.token_number":"Token Number","pages.collections.sorting.recently_received":"Recently Received","pages.collections.sorting.recently_created":"Recently Created","pages.collections.sorting.oldest_collection":"Oldest Collection","pages.collections.traits.description":"List of NFT traits by % of occurrence in the collection","pages.collections.traits.no_traits":"No Properties can be found for this NFT","pages.collections.menu.collection":"Collection","pages.collections.menu.articles":"Articles","pages.collections.menu.activity":"Activity","pages.collections.hidden_modal.collection_hidden":"Collection Hidden","pages.collections.hidden_modal.description":"This collection is currently set to Hidden. Are you sure you want to unhide this collection? You can\n reset the collection to hidden from the collection menu.","pages.collections.hidden_modal.unhide":"Unhide","pages.collections.hidden_modal.error":"Something went wrong. Please try again.","pages.collections.external_modal.you_wish_continue":"You are about to leave Dashbrd to an external website. Dashbrd has no control over the content of\n this site. Are you sure you wish to continue?","pages.collections.external_modal.not_show":"Do not show this message again.","pages.collections.refresh.title":"Refresh your collection","pages.collections.refresh.notice":"You can refresh data every 15 minutes.","pages.collections.refresh.notice_wait":"Please wait. You can refresh data every 15 minutes.","pages.collections.refresh.toast":"We're updating information for your collection.","pages.collections.featured.title":"Featured Collections","pages.collections.featured.button":"Explore Collection","pages.collections.footer.heading_broken.0":"Connect with MetaMask","pages.collections.footer.heading_broken.1":"& Manage Your Collection","pages.collections.footer.subtitle":"Explore, Filter, & Share your favorite NFTs with Dashbrd.","pages.collections.footer.button":"Manage Collections","pages.nfts.nft":"nft","pages.nfts.about_nft":"About NFT","pages.nfts.owned_by":"Owned by","pages.nfts.collection_image":"collection image","pages.nfts.menu.properties":"Properties","pages.nfts.menu.activity":"Activity","pages.reports.title":"Submit a Report","pages.reports.description":"Thanks for looking out by reporting things that break the rules. Let us know what's happening and we'll receive the report.","pages.reports.success":"Thank you for your report. We'll review it and see if it breaks our ToS.","pages.reports.failed":"Something went wrong. Please try again.","pages.reports.throttle":"You have made too many requests. Please wait {{time}} before reporting again.","pages.reports.reported":"You have already reported this {{model}}.","pages.reports.reasons.spam":"Spam","pages.reports.reasons.violence":"Promoting Violence","pages.reports.reasons.hate":"Hate","pages.reports.reasons.inappropriate_content":"Inappropriate Content","pages.reports.reasons.impersonation":"Impersonation","pages.reports.reasons.trademark":"Trademark or Copyright","pages.reports.reasons.selfharm":"Self-Harm","pages.reports.reasons.harassment":"Harassment","pages.galleries.title":"Galleries","pages.galleries.empty_title":"No galleries have been published yet. Once they do they will appear here.","pages.galleries.search.loading_results":"Loading results...","pages.galleries.search.no_results":"We could not find anything matching your search criteria, please try again!","pages.galleries.search.placeholder":"Search by name or curator address","pages.galleries.search.placeholder_nfts":"Search by NFTs","pages.galleries.search.error":"Could not load search results. Please try again later.","pages.galleries.my_galleries.title":"My Galleries","pages.galleries.my_galleries.subtitle":"Manage your galleries","pages.galleries.my_galleries.new_gallery":"New Gallery","pages.galleries.my_galleries.no_galleries":"You have not created any galleries yet. To create a gallery, click on the \"Create Gallery\" button.","pages.galleries.my_galleries.no_available_collections":"You have hidden all your collections. If you want to create a gallery, make sure you have at least 1 collection available.","pages.galleries.my_galleries.no_draft_galleries":"You have no draft galleries yet. To create a gallery, click on the \"Create Gallery\" button.","pages.galleries.my_galleries.succesfully_deleted":"Gallery has been successfully removed","pages.galleries.my_galleries.draft_succesfully_deleted":"Draft has been successfully removed","pages.galleries.my_galleries.successfully_created":"Gallery has been successfully created","pages.galleries.my_galleries.successfully_updated":"Gallery has been successfully updated","pages.galleries.my_galleries.new_gallery_no_nfts":"Creating a Gallery requires you to own an NFT.","pages.galleries.my_galleries.new_gallery_all_collections_hidden":"Creating a Gallery requires you to have at least 1 collection available.","pages.galleries.my_galleries.delete_modal.title":"Delete Draft","pages.galleries.my_galleries.delete_modal.text":"Are you sure you want to delete the draft? Everything you've done will be deleted and you won't be able to get it back.","pages.galleries.my_galleries.nfts_no_longer_owned":"NFTs no longer owned by this wallet have been removed from the draft”","pages.galleries.copy_gallery_link":"Copy Gallery Link","pages.galleries.my_nfts":"My NFTs","pages.galleries.show_hidden_collections":"Show hidden collections","pages.galleries.value":"Value","pages.galleries.floor_price":"Floor Price","pages.galleries.nfts":"NFTs","pages.galleries.collections":"Collections","pages.galleries.galleries_count_simple":"{0} galleries|{1} gallery|[2,*] galleries","pages.galleries.galleries_count":"{0} {{count}} Galleries|{1} {{count}} Gallery|[2,*] {{count}} Galleries","pages.galleries.collections_count_simple":"{0} collections|{1} collection|[2,*] collections","pages.galleries.collections_count":"{0} {{count}} Collections|{1} {{count}} Collection|[2,*] {{count}} Collections","pages.galleries.nfts_count_simple":"{0} NFTs|{1} NFT|[2,*] NFTs","pages.galleries.nfts_count":"{0} {{count}} NFTs|{1} {{count}} NFT|[2,*] {{count}} NFTs","pages.galleries.users_count_simple":"{0} users|{1} user|[2,*] users","pages.galleries.users_count":"{0} {{count}} Users|{1} {{count}} User|[2,*] {{count}} Users","pages.galleries.featuring":"Featuring","pages.galleries.curated_by":"Curated by","pages.galleries.worth_about":"Worth About","pages.galleries.valued_at":"valued at","pages.galleries.from":"From","pages.galleries.most_popular_galleries":"Most Popular Galleries","pages.galleries.newest_galleries":"Newest Galleries","pages.galleries.most_valuable_galleries":"Most Valuable Galleries","pages.galleries.most_popular":"Most Popular","pages.galleries.newest":"Newest","pages.galleries.most_valuable":"Most Valuable","pages.galleries.create.search_by_nfts":"Search by NFTs","pages.galleries.create.input_placeholder":"Enter gallery name","pages.galleries.create.title_too_long":"Gallery name must not exceed {{max}} characters.","pages.galleries.create.already_selected_nft":"NFT already exists in this gallery","pages.galleries.create.nft_missing_image":"Only NFTs with images can be added to galleries","pages.galleries.create.nft_gallery_limit":"You can only add 16 NFTs per gallery","pages.galleries.create.gallery_cover":"Gallery Cover","pages.galleries.create.gallery_cover_description":"The cover is used for the card on the gallery list page. While the cover is not a requirement it will allow you to add personality and stand out from the crowd.","pages.galleries.create.gallery_cover_information":"Image dimensions must be at least 287px x 190px, with a max size of 2 MB (JPG, PNG or GIF)","pages.galleries.create.no_results":"We could not find anything matching your search criteria, please try again!","pages.galleries.create.templates.cover":"Cover","pages.galleries.create.templates.template":"Template","pages.galleries.create.templates.select":"Select Gallery Template","pages.galleries.create.templates.basic":"Basic Gallery","pages.galleries.create.templates.coming_soon":"More Coming Soon","pages.galleries.create.load_more_collections_one":"Load {{count}} More Collection","pages.galleries.create.load_more_collections_other":"Load {{count}} More Collections","pages.galleries.create.load_more_nfts":"Load More NFTs","pages.galleries.create.can_purchase":"You can purchase NFTs with these top NFT Marketplaces:","pages.galleries.create.must_own_one_nft":"You must own at least one (1) NFT in order to create a gallery.","pages.galleries.create.back_to_galleries":"Back to Galleries","pages.galleries.create.draft_saved":"Draft Saved","pages.galleries.create.saving_to_draft":"Saving to draft","pages.galleries.create.drafts_limit_modal_title":"Draft Gallery Limit","pages.galleries.create.drafts_limit_modal_message":"You’ve hit your limit for draft galleries. While you can still make new galleries and publish them, they won’t be saved as drafts. To Free up space, you can either delete existing drafts or publish them.","pages.galleries.create.drafts_limit_modal_cancel":"Go to Drafts","pages.galleries.delete_modal.title":"Delete Gallery","pages.galleries.delete_modal.confirmation_text":"Are you sure you want to delete the gallery? Deleting a Gallery is permanent, all associated views and likes will be lost.","pages.galleries.consists_of_collections":"{0} This gallery consists of {{count}} collections|{1} This gallery consists of {{count}} collection|[2,*] This gallery consists of {{count}} collections","pages.galleries.guest_banner.title":"Craft the ultimate","pages.galleries.guest_banner.subtitle":"Pick your favorites, curate your gallery, & share it with the world.","pages.profile.title":"Profile","pages.token_panel.balance_tooltip":"Total percentage of the portfolio held in this token","pages.token_panel.insufficient_funds":"Insufficient Balance","pages.token_panel.error":"Dashbrd has failed to load token information. Please try again later.","pages.token_panel.failed_to_retrieve_transactions":"We were unable to fetch your transactions.","pages.token_panel.tabs.transaction_history":"Transaction History","pages.token_panel.tabs.history":"History","pages.token_panel.tabs.market_data":"Market Data","pages.token_panel.details.current_price":"Current Price","pages.token_panel.details.title":"Token Details","pages.token_panel.details.market_cap":"Market Cap","pages.token_panel.details.volume":"Daily Volume","pages.token_panel.details.supply":"Minted Supply","pages.token_panel.details.ath":"All-Time High","pages.token_panel.details.atl":"All-Time Low","pages.token_panel.chart.failed":"Dashbrd has failed to load chart information. Please try again later.","pages.transaction_details_panel.title":"Transaction Details","pages.transaction_details_panel.details.blockchain":"Blockchain","pages.transaction_details_panel.details.timestamp":"Timestamp","pages.transaction_details_panel.details.transaction_hash":"Transaction Hash","pages.transaction_details_panel.details.transaction_fee":"Transaction Fee","pages.transaction_details_panel.details.gas_price":"Gas Price","pages.transaction_details_panel.details.gas_used":"Gas Used","pages.transaction_details_panel.details.nonce":"Nonce","pages.send_receive_panel.send.labels.token_and_amount":"Token and Amount","pages.send_receive_panel.send.labels.destination_address":"Destination Address","pages.send_receive_panel.send.labels.projected_fee":"Projected Fee","pages.send_receive_panel.send.placeholders.enter_amount":"Enter Amount","pages.send_receive_panel.send.placeholders.insert_recipient_address":"Insert Recipient Address","pages.send_receive_panel.send.placeholders.projected_fee":"Projected Fee","pages.send_receive_panel.send.errors.amount":"Insufficient Funds: You do not have enough to cover the amount + fee.","pages.send_receive_panel.send.errors.destination":"Destination address is not correct. Check and input again.","pages.send_receive_panel.send.hints.token_price":"Token Price","pages.send_receive_panel.send.fees.Fast":"Fast","pages.send_receive_panel.send.fees.Avg":"Avg","pages.send_receive_panel.send.fees.Slow":"Slow","pages.send_receive_panel.send.search_dropdown.placeholder":"Search token","pages.send_receive_panel.send.search_dropdown.no_results":"No Results","pages.send_receive_panel.send.search_dropdown.error":"Error occurred while searching tokens.","pages.send_receive_panel.send.transaction_time":"Transaction Time: ~{{ time }} minutes","pages.send_receive_panel.send.from":"From","pages.send_receive_panel.send.to":"To","pages.send_receive_panel.send.amount":"Amount","pages.send_receive_panel.send.fee":"Fee","pages.send_receive_panel.send.total_amount":"Total Amount","pages.send_receive_panel.send.waiting_message":"Review and verify the information on your MetaMask. Sign to send the transaction.","pages.send_receive_panel.send.waiting_spinner_text":"Waiting for confirmation...","pages.send_receive_panel.send.failed_message":"It looks like something went wrong while sending your transaction. Press 'Retry' to make another attempt.","pages.send_receive_panel.receive.alert":"Send only Polygon or Ethereum Network compatible tokens to this address or you could permanently lose your funds!","pages.settings.title":"Settings","pages.settings.sidebar.general":"General","pages.settings.sidebar.notifications":"Notifications","pages.settings.sidebar.session_history":"Sessions History","pages.settings.general.title":"Settings","pages.settings.general.subtitle":"Customize your App Experience","pages.settings.general.currency":"Currency","pages.settings.general.currency_subtitle":"Select your default currency which will be used throughout the app.","pages.settings.general.time_date":"Time & Date","pages.settings.general.time_date_subtitle":"Select how you want time and date be shown inside app.","pages.settings.general.date_format":"Date Format","pages.settings.general.time_format":"Time Format","pages.settings.general.timezone":"Timezone","pages.settings.general.set_defaults":"Set Defaults","pages.settings.general.set_defaults_content":"Reverting to the default settings will remove any customizations previously made. Are you sure?","pages.settings.general.save":"Save Settings","pages.settings.general.saved":"Your settings have been successfully saved","pages.wallet.title":"Wallet","pages.privacy_policy.title":"Privacy Policy","pages.terms_of_service.title":"Terms of Service","pages.popular_collections.title":"Popular NFT Collections","pages.popular_collections.header_title":"<0>{{nftsCount}} {{nfts}} from <0>{{collectionsCount}} {{collections}}, worth about <0><1>{{worth}}","pagination.previous":"« Previous","pagination.next":"Next »","passwords.reset":"Your password has been reset!","passwords.sent":"We have emailed your password reset link!","passwords.throttled":"Please wait before retrying.","passwords.token":"This password reset token is invalid.","passwords.user":"We can't find a user with that email address.","urls.landing":"https://dashbrd.com","urls.cookie_policy":"https://dashbrd.com/cookie-policy","urls.privacy_policy":"https://dashbrd.com/privacy-policy","urls.terms_of_service":"https://dashbrd.com/terms-of-service","urls.twitter":"https://x.com/DashbrdApp","urls.discord":"https://discord.gg/MJyWKkCJ5k","urls.github":"https://github.com/ArdentHQ/dashbrd","urls.coingecko":"https://www.coingecko.com","urls.etherscan":"https://etherscan.io","urls.polygonscan":"https://polygonscan.com","urls.alchemy":"https://www.alchemy.com","urls.moralis":"https://moralis.io","urls.mnemonic":"https://www.mnemonichq.com","urls.opensea":"https://opensea.io/","urls.explorers.etherscan.token_transactions":"https://etherscan.io/token/{{token}}?a={{address}}","urls.explorers.etherscan.addresses":"https://etherscan.io/address/{{address}}","urls.explorers.etherscan.transactions":"https://etherscan.io/tx/{{id}}","urls.explorers.etherscan.nft":"https://etherscan.io/nft/{{address}}/{{nftId}}","urls.explorers.polygonscan.token_transactions":"https://polygonscan.com/token/{{token}}?a={{address}}","urls.explorers.polygonscan.addresses":"https://polygonscan.com/address/{{address}}","urls.explorers.polygonscan.transactions":"https://polygonscan.com/tx/{{id}}","urls.explorers.polygonscan.nft":"https://polygonscan.com/nft/{{address}}/{{nftId}}","urls.explorers.mumbai.token_transactions":"https://mumbai.polygonscan.com/token/{{token}}?a={{address}}","urls.explorers.mumbai.addresses":"https://mumbai.polygonscan.com/address/{{address}}","urls.explorers.mumbai.transactions":"https://mumbai.polygonscan.com/tx/{{id}}","urls.explorers.mumbai.nft":"https://mumbai.polygonscan.com/nft/{{address}}/{{nftId}}","urls.explorers.goerli.token_transactions":"https://goerli.etherscan.io/token/{{token}}?a={{address}}","urls.explorers.goerli.addresses":"https://goerli.etherscan.io/address/{{address}}","urls.explorers.goerli.transactions":"https://goerli.etherscan.io/tx/{{id}}","urls.explorers.goerli.nft":"https://goerli.etherscan.io/nft/{{address}}/{{nftId}}","urls.marketplaces.opensea.collection":"https://opensea.io/assets/{{network}}/{{address}}","urls.marketplaces.opensea.nft":"https://opensea.io/assets/{{network}}/{{address}}/{{nftId}}","urls.marketplaces.rarible.collection":"https://rarible.com/collection/{{address}}/items","urls.marketplaces.rarible.nft":"https://rarible.com/token/{{address}}:{{nftId}}","urls.marketplaces.blur.collection":"https://blur.io/collection/{{address}}","urls.marketplaces.blur.nft":"https://blur.io/asset/{{address}}/{{nftId}}","urls.marketplaces.looksrare.collection":"https://looksrare.org/collections/{{address}}","urls.marketplaces.looksrare.nft":"https://looksrare.org/collections/{{address}}/{{nftId}}","validation.accepted":"The {{attribute}} must be accepted.","validation.accepted_if":"The {{attribute}} must be accepted when {{other}} is {{value}}.","validation.active_url":"The {{attribute}} is not a valid URL.","validation.after":"The {{attribute}} must be a date after {{date}}.","validation.after_or_equal":"The {{attribute}} must be a date after or equal to {{date}}.","validation.alpha":"The {{attribute}} must only contain letters.","validation.alpha_dash":"The {{attribute}} must only contain letters, numbers, dashes and underscores.","validation.alpha_num":"The {{attribute}} must only contain letters and numbers.","validation.array":"The {{attribute}} must be an array.","validation.ascii":"The {{attribute}} must only contain single-byte alphanumeric characters and symbols.","validation.before":"The {{attribute}} must be a date before {{date}}.","validation.before_or_equal":"The {{attribute}} must be a date before or equal to {{date}}.","validation.between.array":"The {{attribute}} must have between {{min}} and {{max}} items.","validation.between.file":"The {{attribute}} must be between {{min}} and {{max}} kilobytes.","validation.between.numeric":"The {{attribute}} must be between {{min}} and {{max}}.","validation.between.string":"The {{attribute}} must be between {{min}} and {{max}} characters.","validation.boolean":"The {{attribute}} field must be true or false.","validation.confirmed":"The {{attribute}} confirmation does not match.","validation.current_password":"The password is incorrect.","validation.date":"The {{attribute}} is not a valid date.","validation.date_equals":"The {{attribute}} must be a date equal to {{date}}.","validation.date_format":"The {{attribute}} does not match the format {{format}}.","validation.decimal":"The {{attribute}} must have {{decimal}} decimal places.","validation.declined":"The {{attribute}} must be declined.","validation.declined_if":"The {{attribute}} must be declined when {{other}} is {{value}}.","validation.different":"The {{attribute}} and {{other}} must be different.","validation.digits":"The {{attribute}} must be {{digits}} digits.","validation.digits_between":"The {{attribute}} must be between {{min}} and {{max}} digits.","validation.dimensions":"The {{attribute}} has invalid image dimensions.","validation.distinct":"The {{attribute}} field has a duplicate value.","validation.doesnt_end_with":"The {{attribute}} may not end with one of the following: {{values}}.","validation.doesnt_start_with":"The {{attribute}} may not start with one of the following: {{values}}.","validation.email":"The {{attribute}} must be a valid email address.","validation.ends_with":"The {{attribute}} must end with one of the following: {{values}}.","validation.enum":"The selected {{attribute}} is invalid.","validation.exists":"The selected {{attribute}} is invalid.","validation.file":"The {{attribute}} must be a file.","validation.filled":"The {{attribute}} field must have a value.","validation.gt.array":"The {{attribute}} must have more than {{value}} items.","validation.gt.file":"The {{attribute}} must be greater than {{value}} kilobytes.","validation.gt.numeric":"The {{attribute}} must be greater than {{value}}.","validation.gt.string":"The {{attribute}} must be greater than {{value}} characters.","validation.gte.array":"The {{attribute}} must have {{value}} items or more.","validation.gte.file":"The {{attribute}} must be greater than or equal to {{value}} kilobytes.","validation.gte.numeric":"The {{attribute}} must be greater than or equal to {{value}}.","validation.gte.string":"The {{attribute}} must be greater than or equal to {{value}} characters.","validation.image":"The {{attribute}} must be an image.","validation.in":"The selected {{attribute}} is invalid.","validation.in_array":"The {{attribute}} field does not exist in {{other}}.","validation.integer":"The {{attribute}} must be an integer.","validation.ip":"The {{attribute}} must be a valid IP address.","validation.ipv4":"The {{attribute}} must be a valid IPv4 address.","validation.ipv6":"The {{attribute}} must be a valid IPv6 address.","validation.json":"The {{attribute}} must be a valid JSON string.","validation.lowercase":"The {{attribute}} must be lowercase.","validation.lt.array":"The {{attribute}} must have less than {{value}} items.","validation.lt.file":"The {{attribute}} must be less than {{value}} kilobytes.","validation.lt.numeric":"The {{attribute}} must be less than {{value}}.","validation.lt.string":"The {{attribute}} must be less than {{value}} characters.","validation.lte.array":"The {{attribute}} must not have more than {{value}} items.","validation.lte.file":"The {{attribute}} must be less than or equal to {{value}} kilobytes.","validation.lte.numeric":"The {{attribute}} must be less than or equal to {{value}}.","validation.lte.string":"The {{attribute}} must be less than or equal to {{value}} characters.","validation.mac_address":"The {{attribute}} must be a valid MAC address.","validation.max.array":"The {{attribute}} must not have more than {{max}} items.","validation.max.file":"The {{attribute}} must not be greater than {{max}} kilobytes.","validation.max.numeric":"The {{attribute}} must not be greater than {{max}}.","validation.max.string":"The {{attribute}} must not be greater than {{max}} characters.","validation.max_digits":"The {{attribute}} must not have more than {{max}} digits.","validation.mimes":"The {{attribute}} must be a file of type: {{values}}.","validation.mimetypes":"The {{attribute}} must be a file of type: {{values}}.","validation.min.array":"The {{attribute}} must have at least {{min}} items.","validation.min.file":"The {{attribute}} must be at least {{min}} kilobytes.","validation.min.numeric":"The {{attribute}} must be at least {{min}}.","validation.min.string":"The {{attribute}} must be at least {{min}} characters.","validation.min_digits":"The {{attribute}} must have at least {{min}} digits.","validation.missing":"The {{attribute}} field must be missing.","validation.missing_if":"The {{attribute}} field must be missing when {{other}} is {{value}}.","validation.missing_unless":"The {{attribute}} field must be missing unless {{other}} is {{value}}.","validation.missing_with":"The {{attribute}} field must be missing when {{values}} is present.","validation.missing_with_all":"The {{attribute}} field must be missing when {{values}} are present.","validation.multiple_of":"The {{attribute}} must be a multiple of {{value}}.","validation.not_in":"The selected {{attribute}} is invalid.","validation.not_regex":"The {{attribute}} format is invalid.","validation.numeric":"The {{attribute}} must be a number.","validation.password.letters":"The {{attribute}} must contain at least one letter.","validation.password.mixed":"The {{attribute}} must contain at least one uppercase and one lowercase letter.","validation.password.numbers":"The {{attribute}} must contain at least one number.","validation.password.symbols":"The {{attribute}} must contain at least one symbol.","validation.password.uncompromised":"The given {{attribute}} has appeared in a data leak. Please choose a different {{attribute}}.","validation.present":"The {{attribute}} field must be present.","validation.prohibited":"The {{attribute}} field is prohibited.","validation.prohibited_if":"The {{attribute}} field is prohibited when {{other}} is {{value}}.","validation.prohibited_unless":"The {{attribute}} field is prohibited unless {{other}} is in {{values}}.","validation.prohibits":"The {{attribute}} field prohibits {{other}} from being present.","validation.regex":"The {{attribute}} format is invalid.","validation.required":"The {{attribute}} field is required.","validation.required_array_keys":"The {{attribute}} field must contain entries for: {{values}}.","validation.required_if":"The {{attribute}} field is required when {{other}} is {{value}}.","validation.required_if_accepted":"The {{attribute}} field is required when {{other}} is accepted.","validation.required_unless":"The {{attribute}} field is required unless {{other}} is in {{values}}.","validation.required_with":"The {{attribute}} field is required when {{values}} is present.","validation.required_with_all":"The {{attribute}} field is required when {{values}} are present.","validation.required_without":"The {{attribute}} field is required when {{values}} is not present.","validation.required_without_all":"The {{attribute}} field is required when none of {{values}} are present.","validation.same":"The {{attribute}} and {{other}} must match.","validation.size.array":"The {{attribute}} must contain {{size}} items.","validation.size.file":"The {{attribute}} must be {{size}} kilobytes.","validation.size.numeric":"The {{attribute}} must be {{size}}.","validation.size.string":"The {{attribute}} must be {{size}} characters.","validation.starts_with":"The {{attribute}} must start with one of the following: {{values}}.","validation.string":"The {{attribute}} must be a string.","validation.timezone":"The {{attribute}} must be a valid timezone.","validation.unique":"The {{attribute}} has already been taken.","validation.uploaded":"The {{attribute}} failed to upload.","validation.uppercase":"The {{attribute}} must be uppercase.","validation.url":"The {{attribute}} must be a valid URL.","validation.ulid":"The {{attribute}} must be a valid ULID.","validation.uuid":"The {{attribute}} must be a valid UUID.","validation.custom.attribute-name.rule-name":"custom-message","validation.unsupported_currency_code":"The currency code you provided is invalid or not supported.","validation.unsupported_period":"The period you provided is invalid or not supported.","validation.unsupported_token_symbol":"The token symbol you provided is invalid or not supported.","validation.gallery_title_required":"Gallery name is required.","validation.gallery_title_max_characters":"The gallery name should not exceed 50 characters.","validation.gallery_title_invalid":"The gallery name is invalid.","validation.nfts_required":"Please add at least one NFT.","validation.nfts_max_size":"Galleries can contain no more than {{limit}} NFTs","validation.invalid_nfts":"The NFT in position {{position}} is invalid, please select another one.","validation.invalid_cover":"You have selected an invalid cover image, please try another one."} \ No newline at end of file diff --git a/resources/js/Pages/Collections/Components/PopularCollections/CollectionsFullTablePagination.tsx b/resources/js/Pages/Collections/Components/CollectionsFullTablePagination/CollectionsFullTablePagination.tsx similarity index 78% rename from resources/js/Pages/Collections/Components/PopularCollections/CollectionsFullTablePagination.tsx rename to resources/js/Pages/Collections/Components/CollectionsFullTablePagination/CollectionsFullTablePagination.tsx index b1d597366..768215a1b 100644 --- a/resources/js/Pages/Collections/Components/PopularCollections/CollectionsFullTablePagination.tsx +++ b/resources/js/Pages/Collections/Components/CollectionsFullTablePagination/CollectionsFullTablePagination.tsx @@ -6,17 +6,12 @@ import { SelectPageLimit } from "@/Components/Pagination/SelectPageLimit"; interface Properties { pagination: PaginationData; onPageLimitChange: (limit: number) => void; - onPageChange: (page: number) => void; } -export const CollectionsFullTablePagination = ({ - pagination, - onPageLimitChange, - onPageChange, -}: Properties): JSX.Element => { +export const CollectionsFullTablePagination = ({ pagination, onPageLimitChange }: Properties): JSX.Element => { const { t } = useTranslation(); - if (pagination.meta.total < 12) { + if (pagination.meta.total < 25) { return <>; } @@ -25,7 +20,7 @@ export const CollectionsFullTablePagination = ({ { onPageLimitChange(Number(value)); }} @@ -33,7 +28,6 @@ export const CollectionsFullTablePagination = ({ {pagination.meta.last_page > 1 && ( )} diff --git a/resources/js/Pages/Collections/Hooks/useCollectionFilters.ts b/resources/js/Pages/Collections/Hooks/useCollectionFilters.ts new file mode 100644 index 000000000..29d3e8ce1 --- /dev/null +++ b/resources/js/Pages/Collections/Hooks/useCollectionFilters.ts @@ -0,0 +1,76 @@ +import { type FormDataConvertible } from "@inertiajs/core"; +import { type VisitOptions } from "@inertiajs/core/types/types"; +import { router } from "@inertiajs/react"; +import { useEffect, useState } from "react"; +import { useDebounce } from "@/Hooks/useDebounce"; +import { useIsFirstRender } from "@/Hooks/useIsFirstRender"; +import { type ChainFilter } from "@/Pages/Collections/Components/PopularCollectionsFilters"; +import { type PopularCollectionsSortBy } from "@/Pages/Collections/Components/PopularCollectionsSorting"; + +export interface Filters extends Record { + chain?: ChainFilter; + sort?: PopularCollectionsSortBy; + query?: string; +} + +interface CollectionFiltersState { + currentFilters: Filters; + setSortBy: (sort: PopularCollectionsSortBy | undefined) => void; + setChain: (sort: ChainFilter | undefined) => void; + searchQuery: string; + setSearchQuery: (query: string) => void; +} +export const useCollectionFilters = ({ + filters, + filterRoute, + options, +}: { + filters: Filters; + filterRoute: string; + options?: Exclude; +}): CollectionFiltersState => { + const [currentFilters, setCurrentFilters] = useState(filters); + + const [searchQuery, setSearchQuery] = useState(filters.query ?? ""); + + const [debouncedQuery] = useDebounce(searchQuery, 400); + + const isFirstRender = useIsFirstRender(); + + useEffect(() => { + if (isFirstRender) return; + + router.get(filterRoute, currentFilters, options); + }, [currentFilters]); + + useEffect(() => { + if (isFirstRender) return; + + setCurrentFilters((filters) => ({ + ...filters, + query: debouncedQuery, + })); + }, [debouncedQuery]); + + const setChain = (chain: ChainFilter | undefined): void => { + setCurrentFilters((filters) => ({ + ...filters, + chain, + })); + }; + + const setSortBy = (sort: PopularCollectionsSortBy | undefined): void => { + setCurrentFilters((filters) => ({ + ...filters, + sort, + })); + }; + + return { + currentFilters, + setChain, + setSortBy, + searchQuery, + setSearchQuery, + }; +}; diff --git a/resources/js/Pages/Collections/Index.tsx b/resources/js/Pages/Collections/Index.tsx index 6c1bb5755..1a1b973b0 100644 --- a/resources/js/Pages/Collections/Index.tsx +++ b/resources/js/Pages/Collections/Index.tsx @@ -1,7 +1,7 @@ -import { type FormDataConvertible, type PageProps } from "@inertiajs/core"; -import { Head, router, usePage } from "@inertiajs/react"; +import { type PageProps } from "@inertiajs/core"; +import { Head, usePage } from "@inertiajs/react"; import cn from "classnames"; -import { useEffect, useState } from "react"; +import { useState } from "react"; import { useTranslation } from "react-i18next"; import { type RouteParams } from "ziggy-js"; import { CollectionsArticles } from "./Components/CollectionsArticles"; @@ -12,22 +12,17 @@ import { } from "./Components/CollectionsVoteReceivedModal"; import { FeaturedCollectionsCarousel } from "./Components/FeaturedCollections"; import { PopularCollectionsFilterPopover } from "./Components/PopularCollectionsFilterPopover"; -import { type PopularCollectionsSortBy, PopularCollectionsSorting } from "./Components/PopularCollectionsSorting"; +import { PopularCollectionsSorting } from "./Components/PopularCollectionsSorting"; import { Button } from "@/Components/Buttons"; import { ButtonLink } from "@/Components/Buttons/ButtonLink"; import { CollectionOfTheMonthWinners } from "@/Components/Collections/CollectionOfTheMonthWinners"; import { PopularCollectionsTable } from "@/Components/Collections/PopularCollectionsTable"; import { Heading } from "@/Components/Heading"; import { type PaginationData } from "@/Components/Pagination/Pagination.contracts"; -import { useIsFirstRender } from "@/Hooks/useIsFirstRender"; import { DefaultLayout } from "@/Layouts/DefaultLayout"; import { VoteCollections } from "@/Pages/Collections/Components/CollectionVoting"; -import { type ChainFilter, ChainFilters } from "@/Pages/Collections/Components/PopularCollectionsFilters"; - -export interface Filters extends Record { - chain?: ChainFilter; - sort?: PopularCollectionsSortBy; -} +import { ChainFilters } from "@/Pages/Collections/Components/PopularCollectionsFilters"; +import { type Filters, useCollectionFilters } from "@/Pages/Collections/Hooks/useCollectionFilters"; interface CollectionsIndexProperties extends PageProps { title: string; @@ -58,35 +53,17 @@ const CollectionsIndex = ({ const { props } = usePage(); - const [currentFilters, setCurrentFilters] = useState(filters); - - const [recentlyVotedCollection, setRecentlyVotedCollection] = useState(); - - const isFirstRender = useIsFirstRender(); - - useEffect(() => { - if (isFirstRender) return; - - router.get(route("collections"), currentFilters, { + const { currentFilters, setChain, setSortBy } = useCollectionFilters({ + filters, + filterRoute: route("collections"), + options: { only: ["collections", "filters"], preserveScroll: true, preserveState: true, - }); - }, [currentFilters]); - - const setChain = (chain: ChainFilter | undefined): void => { - setCurrentFilters((filters) => ({ - ...filters, - chain, - })); - }; - - const setSortBy = (sort: PopularCollectionsSortBy | undefined): void => { - setCurrentFilters((filters) => ({ - ...filters, - sort, - })); - }; + }, + }); + + const [recentlyVotedCollection, setRecentlyVotedCollection] = useState(); return ( (filters); - - const isFirstRender = useIsFirstRender(); - - useEffect(() => { - if (isFirstRender) return; - - router.get(route("popular-collections"), currentFilters); - }, [currentFilters]); - - const setChain = (chain: ChainFilter | undefined): void => { - setCurrentFilters((filters) => ({ - ...filters, - chain, - })); - }; - - const setSortBy = (sort: PopularCollectionsSortBy | undefined): void => { - setCurrentFilters((filters) => ({ - ...filters, - sort, - })); - }; + const { currentFilters, setChain, setSortBy, searchQuery, setSearchQuery } = useCollectionFilters({ + filters, + filterRoute: route("popular-collections"), + options: { + preserveState: true, + }, + }); return ( @@ -73,48 +52,43 @@ const Index = ({ stats={stats} currency={auth.user?.attributes.currency ?? "USD"} /> -
    -
    - +
    +
    +
    + - + +
    +
    - {collections.data.length === 0 && ( -
    - {isSearching ? ( - {t("pages.collections.search.loading_results")} - ) : ( - <> - {query !== "" ? ( - {t("pages.collections.search.no_results")} - ) : ( - {t("pages.collections.no_collections")} - )} - - )} -
    - )} - + {collections.data.length === 0 && ( + {t("pages.collections.search.no_results")} + )} +
    1} - onPageChange={() => 2} />
    diff --git a/tests/App/Models/CollectionTest.php b/tests/App/Models/CollectionTest.php index da8e79541..d254a506b 100644 --- a/tests/App/Models/CollectionTest.php +++ b/tests/App/Models/CollectionTest.php @@ -175,6 +175,26 @@ expect(Collection::search($user, 'Another')->count())->toBe(1); }); +it('should search collections by collection name', function () { + $collection1 = Collection::factory()->create([ + 'name' => 'Test name', + ]); + + $collection2 = Collection::factory()->create([ + 'name' => 'Test name 2', + ]); + + $collection3 = Collection::factory()->create([ + 'name' => 'Another', + ]); + + expect(Collection::searchByName('Test')->count())->toBe(2) + ->and(Collection::searchByName('Test')->get()->pluck('id')->toArray()) + ->toEqualCanonicalizing([$collection1->id, $collection2->id]) + ->and(Collection::searchByName('Another')->count())->toBe(1); + +}); + it('filters the collections by a nft name', function () { $user = createUser(); From 170903399713d53275eb7c3066106c6e7e0da6be Mon Sep 17 00:00:00 2001 From: shahin-hq <132887516+shahin-hq@users.noreply.github.com> Date: Wed, 13 Dec 2023 16:14:27 +0400 Subject: [PATCH 043/145] feat: add popular collections tabs (#556) Co-authored-by: shahin-hq --- .../Controllers/PopularCollectionController.php | 4 +++- app/Models/Collection.php | 2 +- .../Collections/Hooks/useCollectionFilters.ts | 10 ++++++++++ .../Pages/Collections/PopularCollections/Index.tsx | 14 ++++++++++++-- routes/web.php | 7 +++---- 5 files changed, 29 insertions(+), 8 deletions(-) diff --git a/app/Http/Controllers/PopularCollectionController.php b/app/Http/Controllers/PopularCollectionController.php index 6055c0f4e..210ff25c6 100644 --- a/app/Http/Controllers/PopularCollectionController.php +++ b/app/Http/Controllers/PopularCollectionController.php @@ -29,6 +29,8 @@ public function index(Request $request): Response|JsonResponse|RedirectResponse $currency = $user ? $user->currency() : CurrencyCode::USD; + $perPage = min($request->has('perPage') ? (int) $request->get('perPage') : 50, 100); + $collections = Collection::query() ->searchByName($request->get('query')) ->when($request->query('sort') !== 'floor-price', fn ($q) => $q->orderBy('volume', 'desc')) // TODO: order by top... @@ -43,7 +45,7 @@ public function index(Request $request): Response|JsonResponse|RedirectResponse ->selectVolumeFiat($currency) ->addSelect('collections.*') ->groupBy('collections.id') - ->paginate(25) + ->paginate($perPage) ->withQueryString(); return Inertia::render('Collections/PopularCollections/Index', [ diff --git a/app/Models/Collection.php b/app/Models/Collection.php index b56edf119..ccba5e533 100644 --- a/app/Models/Collection.php +++ b/app/Models/Collection.php @@ -97,7 +97,7 @@ public function getSlugOptions(): SlugOptions private function preventForbiddenSlugs(self $model): string { - $forbidden = ['collection-of-the-month']; + $forbidden = ['collection-of-the-month', 'popular']; if (in_array(Str::slug($model->name), $forbidden, true)) { return $model->name.' Collection'; diff --git a/resources/js/Pages/Collections/Hooks/useCollectionFilters.ts b/resources/js/Pages/Collections/Hooks/useCollectionFilters.ts index 29d3e8ce1..6b55e3bc1 100644 --- a/resources/js/Pages/Collections/Hooks/useCollectionFilters.ts +++ b/resources/js/Pages/Collections/Hooks/useCollectionFilters.ts @@ -11,6 +11,7 @@ export interface Filters extends Record { chain?: ChainFilter; sort?: PopularCollectionsSortBy; query?: string; + perPage?: number; } interface CollectionFiltersState { @@ -19,6 +20,7 @@ interface CollectionFiltersState { setChain: (sort: ChainFilter | undefined) => void; searchQuery: string; setSearchQuery: (query: string) => void; + setPerPage: (perPage: number) => void; } export const useCollectionFilters = ({ filters, @@ -66,11 +68,19 @@ export const useCollectionFilters = ({ })); }; + const setPerPage = (perPage: number): void => { + setCurrentFilters((filters) => ({ + ...filters, + perPage, + })); + }; + return { currentFilters, setChain, setSortBy, searchQuery, setSearchQuery, + setPerPage, }; }; diff --git a/resources/js/Pages/Collections/PopularCollections/Index.tsx b/resources/js/Pages/Collections/PopularCollections/Index.tsx index b5d33ddac..d8115ba08 100644 --- a/resources/js/Pages/Collections/PopularCollections/Index.tsx +++ b/resources/js/Pages/Collections/PopularCollections/Index.tsx @@ -8,6 +8,7 @@ import { type PaginationData } from "@/Components/Pagination/Pagination.contract import { useBreakpoint } from "@/Hooks/useBreakpoint"; import { DefaultLayout } from "@/Layouts/DefaultLayout"; import { CollectionsFullTablePagination } from "@/Pages/Collections/Components/CollectionsFullTablePagination/CollectionsFullTablePagination"; +import { PopularCollectionsFilterPopover } from "@/Pages/Collections/Components/PopularCollectionsFilterPopover"; import { ChainFilters } from "@/Pages/Collections/Components/PopularCollectionsFilters"; import { PopularCollectionsHeading } from "@/Pages/Collections/Components/PopularCollectionsHeading"; import { PopularCollectionsSorting } from "@/Pages/Collections/Components/PopularCollectionsSorting"; @@ -35,7 +36,7 @@ const Index = ({ const { isXs } = useBreakpoint(); - const { currentFilters, setChain, setSortBy, searchQuery, setSearchQuery } = useCollectionFilters({ + const { currentFilters, setChain, setSortBy, searchQuery, setSearchQuery, setPerPage } = useCollectionFilters({ filters, filterRoute: route("popular-collections"), options: { @@ -72,6 +73,15 @@ const Index = ({ onChange={setSearchQuery} placeholder={isXs ? t("common.search") : t("pages.collections.search_by_name")} /> + +
    + +
    @@ -88,7 +98,7 @@ const Index = ({
    1} + onPageLimitChange={setPerPage} />
    diff --git a/routes/web.php b/routes/web.php index 11018af04..58da24fcd 100644 --- a/routes/web.php +++ b/routes/web.php @@ -99,13 +99,12 @@ Route::get('', [MyCollectionsController::class, 'index'])->name('my-collections')->middleware(EnsureOnboarded::class); }); - Route::group(['prefix' => 'popular-collections'], function () { - Route::get('', [PopularCollectionController::class, 'index'])->name('popular-collections'); - }); - Route::group(['prefix' => 'collections'], function () { Route::get('', [CollectionController::class, 'index'])->name('collections'); + Route::get('collection-of-the-month', CollectionOfTheMonthController::class)->name('collection-of-the-month'); + Route::get('popular', [PopularCollectionController::class, 'index'])->name('popular-collections'); + Route::get('{collection:slug}', [CollectionController::class, 'show'])->name('collections.view'); Route::get('{collection:slug}/articles', [CollectionController::class, 'articles'])->name('collections.articles'); Route::get('{collection:slug}/{nft:token_number}', [NftController::class, 'show'])->name('collection-nfts.view'); From a642edb8a830fe60a16e2ddf57e13d1aaca95163 Mon Sep 17 00:00:00 2001 From: Alfonso Bribiesca Date: Wed, 13 Dec 2023 09:54:07 -0600 Subject: [PATCH 044/145] feat: add timeframe tabs (#557) --- app/Http/Controllers/CollectionController.php | 28 ++-------- .../PopularCollectionController.php | 29 ++--------- .../Traits/HasCollectionFilters.php | 37 ++++++++++++++ lang/en/common.php | 3 ++ resources/js/I18n/Locales/en.json | 2 +- .../PopularCollectionsFilterPopover.tsx | 26 ++++++++-- .../PeriodFilters.tsx | 51 +++++++++++++++++++ .../PopularCollectionsFilters/index.tsx | 2 + .../Collections/Hooks/useCollectionFilters.ts | 15 +++++- resources/js/Pages/Collections/Index.tsx | 16 ++++-- .../Collections/PopularCollections/Index.tsx | 25 ++++++--- 11 files changed, 165 insertions(+), 69 deletions(-) create mode 100644 app/Http/Controllers/Traits/HasCollectionFilters.php create mode 100644 resources/js/Pages/Collections/Components/PopularCollectionsFilters/PeriodFilters.tsx diff --git a/app/Http/Controllers/CollectionController.php b/app/Http/Controllers/CollectionController.php index 34af23606..1bc68590f 100644 --- a/app/Http/Controllers/CollectionController.php +++ b/app/Http/Controllers/CollectionController.php @@ -21,6 +21,7 @@ use App\Enums\CurrencyCode; use App\Enums\NftTransferType; use App\Enums\TraitDisplayType; +use App\Http\Controllers\Traits\HasCollectionFilters; use App\Jobs\FetchCollectionActivity; use App\Jobs\FetchCollectionBanner; use App\Jobs\SyncCollection; @@ -43,6 +44,8 @@ class CollectionController extends Controller { + use HasCollectionFilters; + public function index(Request $request): Response|JsonResponse|RedirectResponse { return Inertia::render('Collections/Index', [ @@ -183,31 +186,6 @@ private function getPopularArticles() } - /** - * @return object{chain?: string, sort?: string} - */ - private function getFilters(Request $request): object - { - $filter = [ - 'chain' => $this->getValidValue($request->get('chain'), ['polygon', 'ethereum']), - 'sort' => $this->getValidValue($request->get('sort'), ['floor-price']), - ]; - - // If value is not defined (or invalid), remove it from the array since - // the frontend expect `undefined` values (not `null`) - - // Must be cast to an object due to some Inertia front-end stuff... - return (object) array_filter($filter); - } - - /** - * @param array $validValues - */ - private function getValidValue(?string $value, array $validValues): ?string - { - return in_array($value, $validValues) ? $value : null; - } - public function show(Request $request, Collection $collection): Response { /** @var User|null $user */ diff --git a/app/Http/Controllers/PopularCollectionController.php b/app/Http/Controllers/PopularCollectionController.php index 210ff25c6..a75e1f823 100644 --- a/app/Http/Controllers/PopularCollectionController.php +++ b/app/Http/Controllers/PopularCollectionController.php @@ -8,6 +8,7 @@ use App\Data\Collections\CollectionStatsData; use App\Enums\Chain; use App\Enums\CurrencyCode; +use App\Http\Controllers\Traits\HasCollectionFilters; use App\Models\Collection; use Illuminate\Http\JsonResponse; use Illuminate\Http\RedirectResponse; @@ -17,6 +18,8 @@ class PopularCollectionController extends Controller { + use HasCollectionFilters; + public function index(Request $request): Response|JsonResponse|RedirectResponse { $user = $request->user(); @@ -62,30 +65,4 @@ public function index(Request $request): Response|JsonResponse|RedirectResponse 'filters' => $this->getFilters($request), ]); } - - /** - * @return object{chain?: string, sort?: string} - */ - private function getFilters(Request $request): object - { - $filter = [ - 'chain' => $this->getValidValue($request->get('chain'), ['polygon', 'ethereum']), - 'sort' => $this->getValidValue($request->get('sort'), ['floor-price']), - 'query' => $request->get('query'), - ]; - - // If value is not defined (or invalid), remove it from the array since - // the frontend expect `undefined` values (not `null`) - - // Must be cast to an object due to some Inertia front-end stuff... - return (object) array_filter($filter); - } - - /** - * @param array $validValues - */ - private function getValidValue(?string $value, array $validValues): ?string - { - return in_array($value, $validValues) ? $value : null; - } } diff --git a/app/Http/Controllers/Traits/HasCollectionFilters.php b/app/Http/Controllers/Traits/HasCollectionFilters.php new file mode 100644 index 000000000..75eeb797a --- /dev/null +++ b/app/Http/Controllers/Traits/HasCollectionFilters.php @@ -0,0 +1,37 @@ + $this->getValidValue($request->get('chain'), ['polygon', 'ethereum']), + 'sort' => $this->getValidValue($request->get('sort'), ['floor-price']), + 'period' => $this->getValidValue($request->get('period'), ['24h', '7d', '30d']), + 'query' => boolval($query = $request->get('query')) ? $query : null, + ]; + + // If value is not defined (or invalid), remove it from the array since + // the frontend expect `undefined` values (not `null`) + + // Must be cast to an object due to some Inertia front-end stuff... + return (object) array_filter($filter); + } + + /** + * @param array $validValues + */ + private function getValidValue(?string $value, array $validValues): ?string + { + return in_array($value, $validValues) ? $value : null; + } +} diff --git a/lang/en/common.php b/lang/en/common.php index 060abd9cf..bf71a33dd 100644 --- a/lang/en/common.php +++ b/lang/en/common.php @@ -169,4 +169,7 @@ 'vote' => 'Vote', 'vol' => 'Vol', 'collection_preview' => 'Collection Preview', + '24h' => '24h', + '7d' => '7d', + '30d' => '30d', ]; diff --git a/resources/js/I18n/Locales/en.json b/resources/js/I18n/Locales/en.json index 86d6d80b6..0f04ad684 100644 --- a/resources/js/I18n/Locales/en.json +++ b/resources/js/I18n/Locales/en.json @@ -1 +1 @@ -{"auth.welcome":"Welcome to Dashbrd","auth.logged_in":"You're logged in!","auth.log_out":"Log out","auth.failed":"These credentials do not match our records.","auth.session_timeout":"Your session has timed out. Please refresh the page and try connecting your account again.","auth.session_timeout_modal":"Seems like your session has timed out. Please connnect your wallet again.","auth.password":"The provided password is incorrect.","auth.throttle":"Too many login attempts. Please try again in {{seconds}} seconds.","auth.wallet.connecting":"Connecting …","auth.wallet.waiting_for_signature":"Waiting for Signature …","auth.wallet.switching_wallet":"Switching Wallet …","auth.wallet.connect":"Connect Wallet","auth.wallet.connect_long":"Connect Your Wallet to Get Started","auth.wallet.sign_subtitle":"Connect Your Wallet to Continue","auth.wallet.disconnect":"Disconnect Wallet","auth.wallet.install":"Install MetaMask","auth.wallet.install_long":"Install MetaMask to Get Started","auth.wallet.sign":"Sign Message","auth.wallet.sign_message":"Welcome to Dashbrd. In order to login, sign this message with your wallet. It doesn't cost you anything!\n\nSigning ID (you can ignore this): {{nonce}}","auth.wallet.connect_subtitle":"Click on the MetaMask icon in your browser to confirm the action and connect your wallet.","auth.wallet.requires_signature":"In order to prevent impersonation, we require a signature to perform this action. This signature is only a signed message and does not give any access to your wallet.","auth.errors.metamask.no_account":"No account found. Please connect your wallet and try again.","auth.errors.metamask.generic":"Connection attempt error. Please retry and follow the steps to connect your wallet.","auth.errors.metamask.invalid_network":"Please switch to Polygon or Ethereum Mainnet in your MetaMask plugin to connect to Dashbrd.","auth.errors.metamask.provider_missing":"You don't have MetaMask installed in your browser. Please install and try again.","auth.errors.metamask.user_rejected":"It looks like you cancelled signing of the authentication message. Please try again.","auth.errors.metamask.provider_not_set":"Ethereum provider is not set","auth.validation.wallet_login_failed":"There was a problem trying to verify your signature. Please try again.","auth.validation.invalid_address":"Your wallet address is invalid. Please try again.","auth.validation.invalid_signature":"Signature is invalid. Please try again.","auth.validation.invalid_network":"Please switch to Polygon or Ethereum Mainnet in your MetaMask plugin to connect to Dashbrd.","common.author":"Author","common.add":"Add","common.amount":"Amount","common.balance":"Balance","common.cancel":"Cancel","common.delete":"Delete","common.edit":"Edit","common.confirm":"Confirm","common.connect":"Connect","common.continue":"Continue","common.done":"Done","common.filter":"Filter","common.items":"Items","common.receive":"Receive","common.received":"Received","common.retry":"Retry","common.records":"Records","common.save":"Save","common.send":"Send","common.sent":"Sent","common.show":"Show","common.searching":"Searching...","common.other":"Other","common.owned":"Owned","common.token":"Token","common.tokens":"Tokens","common.wallet":"Wallet","common.pending":"Pending","common.publish":"Publish","common.published":"Published","common.empty":"Empty","common.your_address":"Your Address","common.warning":"Warning","common.my_address":"My Address","common.my_wallet":"My Wallet","common.my_collections":"My Collections","common.my_balance":"My Balance","common.na":"N/A","common.simple_plural_without_data":"One comment|Many comments","common.simple_plural_with_data":"{{count}} comment|{{count}} comments","common.advanced_plural_without_data":"{0} no comments yet|{1} 1 comment|[2,*] Many comments","common.advanced_plural_with_data":"{0} no comments yet|{1} 1 comment|[2,*] {{count}} comments","common.copy_clipboard":"Copy to Clipboard","common.copy":"Copy","common.download":"Download","common.zoom":"Zoom","common.my_collection":"My Collection","common.max":"Max","common.chain":"Chain","common.search":"Search","common.copied":"Copied!","common.coming_soon":"Coming Soon","common.more_details":"More Details","common.close":"Close","common.close_toast":"Close toast","common.loading":"Loading","common.price":"Price","common.articles":"Articles","common.most_popular":"Most Popular","common.market_cap":"Market Cap","common.volume":"Volume","common.volume_frequency":"Volume {{frequency}}","common.value":"Value","common.last_n_days":"Last {{count}} Days","common.details":"Details","common.view_all":"View All","common.view_more_on_polygonscan":"View More on Polygonscan","common.view_more_on_etherscan":"View More on Etherscan","common.view_nft_on_etherscan":"View NFT on Etherscan","common.view_nft_on_polygonscan":"View NFT on Polygonscan","common.view_nft_on_goerli_tesnet":"View NFT on Goerli Testnet Explorer","common.view_nft_on_mumbai_tesnet":"View NFT on Mumbai Testnet Explorer","common.polygonscan":"Polygonscan","common.etherscan":"Etherscan","common.featured":"Featured","common.floor_price":"Floor Price","common.floor":"Floor","common.supply":"Supply","common.owners":"Owners","common.created":"Created","common.nft":"NFT","common.collection":"Collection","common.collections":"Collections","common.gallery":"Gallery","common.basic_gallery":"Basic Gallery","common.gallery_name":"Gallery Name","common.create_gallery":"Create Gallery","common.external_link":"External Link","common.follow_link":"Follow Link","common.cover":"Cover","common.template":"Template","common.page":"Page","common.polygon":"Polygon","common.ethereum":"Ethereum","common.mumbai":"Mumbai","common.goerli":"Goerli","common.of":"of","common.pagination_input_placeholder":"Enter the page number","common.pagination_input_placeholder_mobile":"Page number","common.nft_count":"{0} {{count}} NFTs|{1} {{count}} NFT|[2,*] {{count}} NFTs","common.nft_gallery":"NFT Gallery","common.unable_to_retrieve_image":"Unable to retrieve your NFT image at this time","common.optional":"Optional","common.selected":"Selected","common.select":"Select","common.preview":"Preview","common.image_size_error":"Image size must not exceed 2MB","common.image_dimensions_error":"Image dimensions must exceed 287px x 190px","common.write_to_confirm":"Write {{word}} to confirm","common.n_hours":"{0} {{count}} hour|{1} {{count}} hour|[2,*] {{count}} hours","common.n_minutes":"{0} {{count}} minute|{1} {{count}} minute|[2,*] {{count}} minutes","common.report":"Report","common.nfts":"NFTs","common.n_nfts":"{0}NFTs|{1}NFT|[2,*]NFTs","common.n_collections":"{0}collections|{1}collection|[2,*]collections","common.back":"Back","common.back_to":"Back to","common.name":"Name","common.type":"Type","common.from":"From","common.to":"To","common.sale_price":"Sale Price","common.recent_activity":"Recent Activity","common.time":"Time","common.datetime.few_seconds_ago":"A few seconds ago","common.datetime.minutes_ago":"{0} Less than a minute ago|{1} A minute ago|[2,*] {{count}} minutes ago","common.datetime.hours_ago":"{0} Less than an hour ago|{1} An hour ago|[2,*] {{count}} hours ago","common.datetime.days_ago":"{0} Less than a day ago|{1} A day ago|[2,*] {{count}} days ago","common.datetime.weeks_ago":"{0} Less than a week ago|{1} A week ago|[2,*] {{count}} weeks ago","common.datetime.months_ago":"{0} Less than a month ago|{1} A month ago|[2,*] {{count}} months ago","common.datetime.years_ago":"{0} Less than a year ago|{1} A year ago|[2,*] {{count}} years ago","common.no_traits_found":"No traits found.","common.empty_transactions":"You don't have any transactions yet. Once transactions have been made, they will show up here.","common.error":"Error","common.refresh":"Refresh","common.refresh_metadata":"Refresh Metadata","common.refreshing_metadata":"Refreshing Metadata... Please check back later.","common.refreshing_activity":"Refreshing Activity... Please check back later.","common.pending_confirmation":"Pending Confirmation","common.confirmed_transaction":"Confirmed Transaction","common.transaction_error":"Transaction Error","common.transaction_error_description_first_part":"Your transaction encountered an error. View this transaction on","common.transaction_error_description_second_part":"for more details.","common.home":"Home","common.contact":"Contact","common.menu":"Menu","common.website":"Website","common.twitter":"Twitter","common.discord":"Discord","common.facebook":"Facebook","common.reddit":"Reddit","common.x":"X","common.sort":"Sort","common.drafts":"Drafts","common.draft":"Draft","common.delete_draft":"Delete Draft","common.share_on":"Share on {{platform}}","common.top":"Top","common.all_chains":"All chains","common.votes":"Votes","common.vote":"Vote","common.vol":"Vol","common.collection_preview":"Collection Preview","footer.copyright":"{{year}} © Dashbrd. All rights reserved.","footer.all_rights_reserved":"All rights reserved","footer.privacy_policy":"Privacy Policy","footer.terms_of_service":"Terms of Service","footer.powered_by":"Powered by","format.fiat":"{{ value, currency }}","format.number":"{{ value, number }}","metatags.home.title":"Dashbrd | Web3 Portfolio Management Made Simple","metatags.home.description":"Simplify your Web3 journey with Dashbrd. Manage your portfolio of tokens, NFTs, and other digital collectibles across the Ethereum and Polygon blockchains.","metatags.home.image":"/images/meta/home.png","metatags.error.title":"Error {{code}} | Dashbrd","metatags.wallet.title":"My Wallet | Dashbrd","metatags.galleries.title":"Top NFT Galleries | Dashbrd","metatags.galleries.image":"/images/meta/nft-galleries.png","metatags.galleries.description":"Explore user published NFT galleries to find custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.most_popular.title":"Most Popular Galleries | Dashbrd","metatags.galleries.most_popular.image":"/images/meta/most-popular-nft-galleries.png","metatags.galleries.most_popular.description":"Explore and discover Most Popular NFT Galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.newest.title":"Newest Galleries | Dashbrd","metatags.galleries.newest.image":"/images/meta/newest-nft-galleries.png","metatags.galleries.newest.description":"Explore and discover most recent NFT galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More","metatags.galleries.most_valuable.title":"Most Valuable Galleries | Dashbrd","metatags.galleries.most_valuable.image":"/images/meta/most-valuable-nft-galleries.png","metatags.galleries.most_valuable.description":"Explore and discover Most Valuable NFT Galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.view.title":"{{name}} | Dashbrd","metatags.galleries.view.description":"{{name}} | A Curated NFT Gallery at Dashbrd","metatags.galleries.view.image":"/images/meta/nft-gallery.png","metatags.my_galleries.title":"My Galleries | Dashbrd","metatags.my_galleries.title_draft":"My Draft Galleries | Dashbrd","metatags.my_galleries.create.title":"Create Gallery | Dashbrd","metatags.my_galleries.edit.title":"Edit {{name}} | Dashbrd","metatags.collections.title":"Collections | Dashbrd","metatags.collections.view.title":"{{name}} Collection | Dashbrd","metatags.collections.view.description":"Immerse yourself in the intricate details of {{name}} collection, featuring remarkable digital assets. Start your NFT journey today!","metatags.collections.view.image":"/images/meta/nft-collection.png","metatags.collections.of-the-month.title":"Collection of the Month {{month}} | Dashbrd","metatags.my-collections.title":"My Collections | Dashbrd","metatags.popular-collections.title":"Popular NFT Collections | Dashbrd","metatags.nfts.view.title":"{{nft}} NFT | Dashbrd","metatags.nfts.view.description":"Uncover the complete story of {{nft}} NFT from the {{collection}} collection, delving into its unique attributes and distinctive features.","metatags.nfts.view.image":"/images/meta/nft-details.png","metatags.settings.title":"Settings | Dashbrd","metatags.articles.title":"Articles | Dashbrd","metatags.articles.view.title":"{{title}} | Dashbrd","metatags.login.title":"Login | Dashbrd","metatags.privacy_policy.title":"Privacy Policy | Dashbrd","metatags.privacy_policy.description":"Dashbrd’s privacy policy outlines the information we collect and explains your choices surrounding how we use information about you.","metatags.terms_of_service.title":"Terms of Service | Dashbrd","metatags.terms_of_service.description":"These Terms of Service cover your use and access to services, products or websites of Dashbrd.","metatags.cookie_policy.title":"Cookie Policy | Dashbrd","metatags.cookie_policy.description":"Dashbrd uses cookies to make the website more user-friendly. Find out about the main types of cookies we use, and what we use them for.","metatags.welcome.title":"Welcome to Dashbrd | Web3 Simplified","pages.onboarding.title":"Get Started","pages.onboarding.heading":"Your monkeys were bored and ran off, we are trying to round them up.","pages.onboarding.message":"We are setting up your account. This process usually takes just a few minutes, but can take up to 15 minutes.","pages.error.heading":"Oops, something went wrong ...","pages.error.message":"Please try again or get in touch if the issue persists.","pages.maintenance.title":"Dashbrd is currently down for scheduled maintenance.","pages.maintenance.description":"We expect to be back soon. Thanks for your patience.","pages.dashboard.title":"My Wallet","pages.dashboard.breakdown.title":"Portfolio Breakdown","pages.dashboard.line_chart.data_error":"Could not load chart data","pages.articles.title":"Articles","pages.articles.featured_collections":"Featured Collections","pages.articles.placeholder_more_soon":"More Soon","pages.articles.no_articles":"No articles have been published yet. Please check back later!","pages.articles.header_title":"Explore our collection of","pages.articles.header_suffix_one":"published article","pages.articles.header_suffix_other":"published articles","pages.articles.audio_version":"Audio version","pages.articles.consists_of_collections":"{0} This article highlights {{count}} collections|{1} This article highlights {{count}} collection|[2,*] This article highlights {{count}} collections","pages.collections.title":"Collections","pages.collections.collections":"Collections","pages.collections.popular_collections":"Popular Collections","pages.collections.collection_value":"Collection Value","pages.collections.nfts_owned":"NFTs Owned","pages.collections.header_title":"You own <0>{{nftsCount}} {{nfts}} across <0>{{collectionsCount}} {{collections}}, worth about <0><1>{{worth}}","pages.collections.search_placeholder":"Search by Collection","pages.collections.properties":"Properties","pages.collections.collections_network":"Collections Network","pages.collections.property_search_placeholder":"Feature Search","pages.collections.floor_price":"Floor Price","pages.collections.value":"Value","pages.collections.rarity":"Rarity","pages.collections.report":"Report","pages.collections.search_by_name":"Search by Collection Name","pages.collections.hide_collection":"Hide Collection","pages.collections.unhide_collection":"Unhide Collection","pages.collections.no_collections":"You do not own any NFTs yet. Once you do they will be shown here.","pages.collections.all_collections_hidden":"You have hidden all your collections. Unhide and they will appear here.","pages.collections.about_collection":"About Collection","pages.collections.show_hidden":"Show Hidden","pages.collections.show_my_collection":"Show My Collection","pages.collections.owned":"Owned","pages.collections.activities.loading_activities":"We're fetching Activity for this NFT, please hang tight, this can take a while.","pages.collections.activities.loading_activities_collection":"We're fetching Activity for this collection, please hang tight, this can take a while.","pages.collections.activities.ignores_activities":"We don't support activity history for this collection yet.","pages.collections.activities.no_activity":"This collection does not have any activity yet.","pages.collections.activities.types.LABEL_MINT":"Mint","pages.collections.activities.types.LABEL_TRANSFER":"Transfer","pages.collections.activities.types.LABEL_SALE":"Sale","pages.collections.activities.types.LABEL_BURN":"Burn","pages.collections.collection_of_the_month.title":"Collection of the Month {{month}}","pages.collections.collection_of_the_month.winners_month":"Winners: {{month}}","pages.collections.collection_of_the_month.vote_for_next_months_winners":"Vote now for next month's winners","pages.collections.collection_of_the_month.view_previous_winners":"View Previous Winners","pages.collections.collection_of_the_month.vote_received_modal.title":"Vote Received","pages.collections.collection_of_the_month.vote_received_modal.description":"Your vote has been recorded. Share your vote on X and let everyone know!","pages.collections.collection_of_the_month.vote_received_modal.share_vote":"Share Vote","pages.collections.collection_of_the_month.vote_received_modal.img_alt":"I voted for Dashbrd Project of the Month","pages.collections.collection_of_the_month.vote_received_modal.x_text":"I voted for {{collection}} for collection of the month @dashbrdapp! Go show your support!","pages.collections.collection_of_the_month.vote_success":"Your vote has been successfully submitted","pages.collections.collection_of_the_month.content_to_be_added.title":"Content to be added","pages.collections.collection_of_the_month.content_to_be_added.description":"There will be a list of previous month winners here soon!","pages.collections.collection_of_the_month.has_won_already":"This collection has already
    won Collection of the Month.","pages.collections.articles.heading":"Latest NFT News & Features","pages.collections.articles.no_articles":"No articles have been linked to this collection as of now.","pages.collections.articles.no_articles_with_filters":"We could not find any articles matching your search criteria, please try again!","pages.collections.articles.search_placeholder":"Search in Articles","pages.collections.articles.sort_latest":"Latest","pages.collections.articles.sort_popularity":"Most Popular","pages.collections.search.loading_results":"Loading results...","pages.collections.search.no_results":"We could not find anything matching your search criteria, please try again!","pages.collections.search.no_results_with_filters":"We could not find anything matching your filters, please try again!","pages.collections.search.no_results_ownership":"You do not own any NFTs in this collection","pages.collections.search.error":"Could not load search results. Please try again later.","pages.collections.vote.vote_for_top_collection":"Vote for Top Collection of the Month","pages.collections.vote.vote":"Vote","pages.collections.vote.time_left":"Time Left","pages.collections.vote.or_nominate_collection":"Or nominate a collection","pages.collections.vote.nominate_collection":"Nominate a collection","pages.collections.vote.vote_to_reveal":"Vote to reveal data","pages.collections.vote.already_voted":"You’ve already nominated. Come back next month!","pages.collections.sorting.token_number":"Token Number","pages.collections.sorting.recently_received":"Recently Received","pages.collections.sorting.recently_created":"Recently Created","pages.collections.sorting.oldest_collection":"Oldest Collection","pages.collections.traits.description":"List of NFT traits by % of occurrence in the collection","pages.collections.traits.no_traits":"No Properties can be found for this NFT","pages.collections.menu.collection":"Collection","pages.collections.menu.articles":"Articles","pages.collections.menu.activity":"Activity","pages.collections.hidden_modal.collection_hidden":"Collection Hidden","pages.collections.hidden_modal.description":"This collection is currently set to Hidden. Are you sure you want to unhide this collection? You can\n reset the collection to hidden from the collection menu.","pages.collections.hidden_modal.unhide":"Unhide","pages.collections.hidden_modal.error":"Something went wrong. Please try again.","pages.collections.external_modal.you_wish_continue":"You are about to leave Dashbrd to an external website. Dashbrd has no control over the content of\n this site. Are you sure you wish to continue?","pages.collections.external_modal.not_show":"Do not show this message again.","pages.collections.refresh.title":"Refresh your collection","pages.collections.refresh.notice":"You can refresh data every 15 minutes.","pages.collections.refresh.notice_wait":"Please wait. You can refresh data every 15 minutes.","pages.collections.refresh.toast":"We're updating information for your collection.","pages.collections.featured.title":"Featured Collections","pages.collections.featured.button":"Explore Collection","pages.collections.footer.heading_broken.0":"Connect with MetaMask","pages.collections.footer.heading_broken.1":"& Manage Your Collection","pages.collections.footer.subtitle":"Explore, Filter, & Share your favorite NFTs with Dashbrd.","pages.collections.footer.button":"Manage Collections","pages.nfts.nft":"nft","pages.nfts.about_nft":"About NFT","pages.nfts.owned_by":"Owned by","pages.nfts.collection_image":"collection image","pages.nfts.menu.properties":"Properties","pages.nfts.menu.activity":"Activity","pages.reports.title":"Submit a Report","pages.reports.description":"Thanks for looking out by reporting things that break the rules. Let us know what's happening and we'll receive the report.","pages.reports.success":"Thank you for your report. We'll review it and see if it breaks our ToS.","pages.reports.failed":"Something went wrong. Please try again.","pages.reports.throttle":"You have made too many requests. Please wait {{time}} before reporting again.","pages.reports.reported":"You have already reported this {{model}}.","pages.reports.reasons.spam":"Spam","pages.reports.reasons.violence":"Promoting Violence","pages.reports.reasons.hate":"Hate","pages.reports.reasons.inappropriate_content":"Inappropriate Content","pages.reports.reasons.impersonation":"Impersonation","pages.reports.reasons.trademark":"Trademark or Copyright","pages.reports.reasons.selfharm":"Self-Harm","pages.reports.reasons.harassment":"Harassment","pages.galleries.title":"Galleries","pages.galleries.empty_title":"No galleries have been published yet. Once they do they will appear here.","pages.galleries.search.loading_results":"Loading results...","pages.galleries.search.no_results":"We could not find anything matching your search criteria, please try again!","pages.galleries.search.placeholder":"Search by name or curator address","pages.galleries.search.placeholder_nfts":"Search by NFTs","pages.galleries.search.error":"Could not load search results. Please try again later.","pages.galleries.my_galleries.title":"My Galleries","pages.galleries.my_galleries.subtitle":"Manage your galleries","pages.galleries.my_galleries.new_gallery":"New Gallery","pages.galleries.my_galleries.no_galleries":"You have not created any galleries yet. To create a gallery, click on the \"Create Gallery\" button.","pages.galleries.my_galleries.no_available_collections":"You have hidden all your collections. If you want to create a gallery, make sure you have at least 1 collection available.","pages.galleries.my_galleries.no_draft_galleries":"You have no draft galleries yet. To create a gallery, click on the \"Create Gallery\" button.","pages.galleries.my_galleries.succesfully_deleted":"Gallery has been successfully removed","pages.galleries.my_galleries.draft_succesfully_deleted":"Draft has been successfully removed","pages.galleries.my_galleries.successfully_created":"Gallery has been successfully created","pages.galleries.my_galleries.successfully_updated":"Gallery has been successfully updated","pages.galleries.my_galleries.new_gallery_no_nfts":"Creating a Gallery requires you to own an NFT.","pages.galleries.my_galleries.new_gallery_all_collections_hidden":"Creating a Gallery requires you to have at least 1 collection available.","pages.galleries.my_galleries.delete_modal.title":"Delete Draft","pages.galleries.my_galleries.delete_modal.text":"Are you sure you want to delete the draft? Everything you've done will be deleted and you won't be able to get it back.","pages.galleries.my_galleries.nfts_no_longer_owned":"NFTs no longer owned by this wallet have been removed from the draft”","pages.galleries.copy_gallery_link":"Copy Gallery Link","pages.galleries.my_nfts":"My NFTs","pages.galleries.show_hidden_collections":"Show hidden collections","pages.galleries.value":"Value","pages.galleries.floor_price":"Floor Price","pages.galleries.nfts":"NFTs","pages.galleries.collections":"Collections","pages.galleries.galleries_count_simple":"{0} galleries|{1} gallery|[2,*] galleries","pages.galleries.galleries_count":"{0} {{count}} Galleries|{1} {{count}} Gallery|[2,*] {{count}} Galleries","pages.galleries.collections_count_simple":"{0} collections|{1} collection|[2,*] collections","pages.galleries.collections_count":"{0} {{count}} Collections|{1} {{count}} Collection|[2,*] {{count}} Collections","pages.galleries.nfts_count_simple":"{0} NFTs|{1} NFT|[2,*] NFTs","pages.galleries.nfts_count":"{0} {{count}} NFTs|{1} {{count}} NFT|[2,*] {{count}} NFTs","pages.galleries.users_count_simple":"{0} users|{1} user|[2,*] users","pages.galleries.users_count":"{0} {{count}} Users|{1} {{count}} User|[2,*] {{count}} Users","pages.galleries.featuring":"Featuring","pages.galleries.curated_by":"Curated by","pages.galleries.worth_about":"Worth About","pages.galleries.valued_at":"valued at","pages.galleries.from":"From","pages.galleries.most_popular_galleries":"Most Popular Galleries","pages.galleries.newest_galleries":"Newest Galleries","pages.galleries.most_valuable_galleries":"Most Valuable Galleries","pages.galleries.most_popular":"Most Popular","pages.galleries.newest":"Newest","pages.galleries.most_valuable":"Most Valuable","pages.galleries.create.search_by_nfts":"Search by NFTs","pages.galleries.create.input_placeholder":"Enter gallery name","pages.galleries.create.title_too_long":"Gallery name must not exceed {{max}} characters.","pages.galleries.create.already_selected_nft":"NFT already exists in this gallery","pages.galleries.create.nft_missing_image":"Only NFTs with images can be added to galleries","pages.galleries.create.nft_gallery_limit":"You can only add 16 NFTs per gallery","pages.galleries.create.gallery_cover":"Gallery Cover","pages.galleries.create.gallery_cover_description":"The cover is used for the card on the gallery list page. While the cover is not a requirement it will allow you to add personality and stand out from the crowd.","pages.galleries.create.gallery_cover_information":"Image dimensions must be at least 287px x 190px, with a max size of 2 MB (JPG, PNG or GIF)","pages.galleries.create.no_results":"We could not find anything matching your search criteria, please try again!","pages.galleries.create.templates.cover":"Cover","pages.galleries.create.templates.template":"Template","pages.galleries.create.templates.select":"Select Gallery Template","pages.galleries.create.templates.basic":"Basic Gallery","pages.galleries.create.templates.coming_soon":"More Coming Soon","pages.galleries.create.load_more_collections_one":"Load {{count}} More Collection","pages.galleries.create.load_more_collections_other":"Load {{count}} More Collections","pages.galleries.create.load_more_nfts":"Load More NFTs","pages.galleries.create.can_purchase":"You can purchase NFTs with these top NFT Marketplaces:","pages.galleries.create.must_own_one_nft":"You must own at least one (1) NFT in order to create a gallery.","pages.galleries.create.back_to_galleries":"Back to Galleries","pages.galleries.create.draft_saved":"Draft Saved","pages.galleries.create.saving_to_draft":"Saving to draft","pages.galleries.create.drafts_limit_modal_title":"Draft Gallery Limit","pages.galleries.create.drafts_limit_modal_message":"You’ve hit your limit for draft galleries. While you can still make new galleries and publish them, they won’t be saved as drafts. To Free up space, you can either delete existing drafts or publish them.","pages.galleries.create.drafts_limit_modal_cancel":"Go to Drafts","pages.galleries.delete_modal.title":"Delete Gallery","pages.galleries.delete_modal.confirmation_text":"Are you sure you want to delete the gallery? Deleting a Gallery is permanent, all associated views and likes will be lost.","pages.galleries.consists_of_collections":"{0} This gallery consists of {{count}} collections|{1} This gallery consists of {{count}} collection|[2,*] This gallery consists of {{count}} collections","pages.galleries.guest_banner.title":"Craft the ultimate","pages.galleries.guest_banner.subtitle":"Pick your favorites, curate your gallery, & share it with the world.","pages.profile.title":"Profile","pages.token_panel.balance_tooltip":"Total percentage of the portfolio held in this token","pages.token_panel.insufficient_funds":"Insufficient Balance","pages.token_panel.error":"Dashbrd has failed to load token information. Please try again later.","pages.token_panel.failed_to_retrieve_transactions":"We were unable to fetch your transactions.","pages.token_panel.tabs.transaction_history":"Transaction History","pages.token_panel.tabs.history":"History","pages.token_panel.tabs.market_data":"Market Data","pages.token_panel.details.current_price":"Current Price","pages.token_panel.details.title":"Token Details","pages.token_panel.details.market_cap":"Market Cap","pages.token_panel.details.volume":"Daily Volume","pages.token_panel.details.supply":"Minted Supply","pages.token_panel.details.ath":"All-Time High","pages.token_panel.details.atl":"All-Time Low","pages.token_panel.chart.failed":"Dashbrd has failed to load chart information. Please try again later.","pages.transaction_details_panel.title":"Transaction Details","pages.transaction_details_panel.details.blockchain":"Blockchain","pages.transaction_details_panel.details.timestamp":"Timestamp","pages.transaction_details_panel.details.transaction_hash":"Transaction Hash","pages.transaction_details_panel.details.transaction_fee":"Transaction Fee","pages.transaction_details_panel.details.gas_price":"Gas Price","pages.transaction_details_panel.details.gas_used":"Gas Used","pages.transaction_details_panel.details.nonce":"Nonce","pages.send_receive_panel.send.labels.token_and_amount":"Token and Amount","pages.send_receive_panel.send.labels.destination_address":"Destination Address","pages.send_receive_panel.send.labels.projected_fee":"Projected Fee","pages.send_receive_panel.send.placeholders.enter_amount":"Enter Amount","pages.send_receive_panel.send.placeholders.insert_recipient_address":"Insert Recipient Address","pages.send_receive_panel.send.placeholders.projected_fee":"Projected Fee","pages.send_receive_panel.send.errors.amount":"Insufficient Funds: You do not have enough to cover the amount + fee.","pages.send_receive_panel.send.errors.destination":"Destination address is not correct. Check and input again.","pages.send_receive_panel.send.hints.token_price":"Token Price","pages.send_receive_panel.send.fees.Fast":"Fast","pages.send_receive_panel.send.fees.Avg":"Avg","pages.send_receive_panel.send.fees.Slow":"Slow","pages.send_receive_panel.send.search_dropdown.placeholder":"Search token","pages.send_receive_panel.send.search_dropdown.no_results":"No Results","pages.send_receive_panel.send.search_dropdown.error":"Error occurred while searching tokens.","pages.send_receive_panel.send.transaction_time":"Transaction Time: ~{{ time }} minutes","pages.send_receive_panel.send.from":"From","pages.send_receive_panel.send.to":"To","pages.send_receive_panel.send.amount":"Amount","pages.send_receive_panel.send.fee":"Fee","pages.send_receive_panel.send.total_amount":"Total Amount","pages.send_receive_panel.send.waiting_message":"Review and verify the information on your MetaMask. Sign to send the transaction.","pages.send_receive_panel.send.waiting_spinner_text":"Waiting for confirmation...","pages.send_receive_panel.send.failed_message":"It looks like something went wrong while sending your transaction. Press 'Retry' to make another attempt.","pages.send_receive_panel.receive.alert":"Send only Polygon or Ethereum Network compatible tokens to this address or you could permanently lose your funds!","pages.settings.title":"Settings","pages.settings.sidebar.general":"General","pages.settings.sidebar.notifications":"Notifications","pages.settings.sidebar.session_history":"Sessions History","pages.settings.general.title":"Settings","pages.settings.general.subtitle":"Customize your App Experience","pages.settings.general.currency":"Currency","pages.settings.general.currency_subtitle":"Select your default currency which will be used throughout the app.","pages.settings.general.time_date":"Time & Date","pages.settings.general.time_date_subtitle":"Select how you want time and date be shown inside app.","pages.settings.general.date_format":"Date Format","pages.settings.general.time_format":"Time Format","pages.settings.general.timezone":"Timezone","pages.settings.general.set_defaults":"Set Defaults","pages.settings.general.set_defaults_content":"Reverting to the default settings will remove any customizations previously made. Are you sure?","pages.settings.general.save":"Save Settings","pages.settings.general.saved":"Your settings have been successfully saved","pages.wallet.title":"Wallet","pages.privacy_policy.title":"Privacy Policy","pages.terms_of_service.title":"Terms of Service","pages.popular_collections.title":"Popular NFT Collections","pages.popular_collections.header_title":"<0>{{nftsCount}} {{nfts}} from <0>{{collectionsCount}} {{collections}}, worth about <0><1>{{worth}}","pagination.previous":"« Previous","pagination.next":"Next »","passwords.reset":"Your password has been reset!","passwords.sent":"We have emailed your password reset link!","passwords.throttled":"Please wait before retrying.","passwords.token":"This password reset token is invalid.","passwords.user":"We can't find a user with that email address.","urls.landing":"https://dashbrd.com","urls.cookie_policy":"https://dashbrd.com/cookie-policy","urls.privacy_policy":"https://dashbrd.com/privacy-policy","urls.terms_of_service":"https://dashbrd.com/terms-of-service","urls.twitter":"https://x.com/DashbrdApp","urls.discord":"https://discord.gg/MJyWKkCJ5k","urls.github":"https://github.com/ArdentHQ/dashbrd","urls.coingecko":"https://www.coingecko.com","urls.etherscan":"https://etherscan.io","urls.polygonscan":"https://polygonscan.com","urls.alchemy":"https://www.alchemy.com","urls.moralis":"https://moralis.io","urls.mnemonic":"https://www.mnemonichq.com","urls.opensea":"https://opensea.io/","urls.explorers.etherscan.token_transactions":"https://etherscan.io/token/{{token}}?a={{address}}","urls.explorers.etherscan.addresses":"https://etherscan.io/address/{{address}}","urls.explorers.etherscan.transactions":"https://etherscan.io/tx/{{id}}","urls.explorers.etherscan.nft":"https://etherscan.io/nft/{{address}}/{{nftId}}","urls.explorers.polygonscan.token_transactions":"https://polygonscan.com/token/{{token}}?a={{address}}","urls.explorers.polygonscan.addresses":"https://polygonscan.com/address/{{address}}","urls.explorers.polygonscan.transactions":"https://polygonscan.com/tx/{{id}}","urls.explorers.polygonscan.nft":"https://polygonscan.com/nft/{{address}}/{{nftId}}","urls.explorers.mumbai.token_transactions":"https://mumbai.polygonscan.com/token/{{token}}?a={{address}}","urls.explorers.mumbai.addresses":"https://mumbai.polygonscan.com/address/{{address}}","urls.explorers.mumbai.transactions":"https://mumbai.polygonscan.com/tx/{{id}}","urls.explorers.mumbai.nft":"https://mumbai.polygonscan.com/nft/{{address}}/{{nftId}}","urls.explorers.goerli.token_transactions":"https://goerli.etherscan.io/token/{{token}}?a={{address}}","urls.explorers.goerli.addresses":"https://goerli.etherscan.io/address/{{address}}","urls.explorers.goerli.transactions":"https://goerli.etherscan.io/tx/{{id}}","urls.explorers.goerli.nft":"https://goerli.etherscan.io/nft/{{address}}/{{nftId}}","urls.marketplaces.opensea.collection":"https://opensea.io/assets/{{network}}/{{address}}","urls.marketplaces.opensea.nft":"https://opensea.io/assets/{{network}}/{{address}}/{{nftId}}","urls.marketplaces.rarible.collection":"https://rarible.com/collection/{{address}}/items","urls.marketplaces.rarible.nft":"https://rarible.com/token/{{address}}:{{nftId}}","urls.marketplaces.blur.collection":"https://blur.io/collection/{{address}}","urls.marketplaces.blur.nft":"https://blur.io/asset/{{address}}/{{nftId}}","urls.marketplaces.looksrare.collection":"https://looksrare.org/collections/{{address}}","urls.marketplaces.looksrare.nft":"https://looksrare.org/collections/{{address}}/{{nftId}}","validation.accepted":"The {{attribute}} must be accepted.","validation.accepted_if":"The {{attribute}} must be accepted when {{other}} is {{value}}.","validation.active_url":"The {{attribute}} is not a valid URL.","validation.after":"The {{attribute}} must be a date after {{date}}.","validation.after_or_equal":"The {{attribute}} must be a date after or equal to {{date}}.","validation.alpha":"The {{attribute}} must only contain letters.","validation.alpha_dash":"The {{attribute}} must only contain letters, numbers, dashes and underscores.","validation.alpha_num":"The {{attribute}} must only contain letters and numbers.","validation.array":"The {{attribute}} must be an array.","validation.ascii":"The {{attribute}} must only contain single-byte alphanumeric characters and symbols.","validation.before":"The {{attribute}} must be a date before {{date}}.","validation.before_or_equal":"The {{attribute}} must be a date before or equal to {{date}}.","validation.between.array":"The {{attribute}} must have between {{min}} and {{max}} items.","validation.between.file":"The {{attribute}} must be between {{min}} and {{max}} kilobytes.","validation.between.numeric":"The {{attribute}} must be between {{min}} and {{max}}.","validation.between.string":"The {{attribute}} must be between {{min}} and {{max}} characters.","validation.boolean":"The {{attribute}} field must be true or false.","validation.confirmed":"The {{attribute}} confirmation does not match.","validation.current_password":"The password is incorrect.","validation.date":"The {{attribute}} is not a valid date.","validation.date_equals":"The {{attribute}} must be a date equal to {{date}}.","validation.date_format":"The {{attribute}} does not match the format {{format}}.","validation.decimal":"The {{attribute}} must have {{decimal}} decimal places.","validation.declined":"The {{attribute}} must be declined.","validation.declined_if":"The {{attribute}} must be declined when {{other}} is {{value}}.","validation.different":"The {{attribute}} and {{other}} must be different.","validation.digits":"The {{attribute}} must be {{digits}} digits.","validation.digits_between":"The {{attribute}} must be between {{min}} and {{max}} digits.","validation.dimensions":"The {{attribute}} has invalid image dimensions.","validation.distinct":"The {{attribute}} field has a duplicate value.","validation.doesnt_end_with":"The {{attribute}} may not end with one of the following: {{values}}.","validation.doesnt_start_with":"The {{attribute}} may not start with one of the following: {{values}}.","validation.email":"The {{attribute}} must be a valid email address.","validation.ends_with":"The {{attribute}} must end with one of the following: {{values}}.","validation.enum":"The selected {{attribute}} is invalid.","validation.exists":"The selected {{attribute}} is invalid.","validation.file":"The {{attribute}} must be a file.","validation.filled":"The {{attribute}} field must have a value.","validation.gt.array":"The {{attribute}} must have more than {{value}} items.","validation.gt.file":"The {{attribute}} must be greater than {{value}} kilobytes.","validation.gt.numeric":"The {{attribute}} must be greater than {{value}}.","validation.gt.string":"The {{attribute}} must be greater than {{value}} characters.","validation.gte.array":"The {{attribute}} must have {{value}} items or more.","validation.gte.file":"The {{attribute}} must be greater than or equal to {{value}} kilobytes.","validation.gte.numeric":"The {{attribute}} must be greater than or equal to {{value}}.","validation.gte.string":"The {{attribute}} must be greater than or equal to {{value}} characters.","validation.image":"The {{attribute}} must be an image.","validation.in":"The selected {{attribute}} is invalid.","validation.in_array":"The {{attribute}} field does not exist in {{other}}.","validation.integer":"The {{attribute}} must be an integer.","validation.ip":"The {{attribute}} must be a valid IP address.","validation.ipv4":"The {{attribute}} must be a valid IPv4 address.","validation.ipv6":"The {{attribute}} must be a valid IPv6 address.","validation.json":"The {{attribute}} must be a valid JSON string.","validation.lowercase":"The {{attribute}} must be lowercase.","validation.lt.array":"The {{attribute}} must have less than {{value}} items.","validation.lt.file":"The {{attribute}} must be less than {{value}} kilobytes.","validation.lt.numeric":"The {{attribute}} must be less than {{value}}.","validation.lt.string":"The {{attribute}} must be less than {{value}} characters.","validation.lte.array":"The {{attribute}} must not have more than {{value}} items.","validation.lte.file":"The {{attribute}} must be less than or equal to {{value}} kilobytes.","validation.lte.numeric":"The {{attribute}} must be less than or equal to {{value}}.","validation.lte.string":"The {{attribute}} must be less than or equal to {{value}} characters.","validation.mac_address":"The {{attribute}} must be a valid MAC address.","validation.max.array":"The {{attribute}} must not have more than {{max}} items.","validation.max.file":"The {{attribute}} must not be greater than {{max}} kilobytes.","validation.max.numeric":"The {{attribute}} must not be greater than {{max}}.","validation.max.string":"The {{attribute}} must not be greater than {{max}} characters.","validation.max_digits":"The {{attribute}} must not have more than {{max}} digits.","validation.mimes":"The {{attribute}} must be a file of type: {{values}}.","validation.mimetypes":"The {{attribute}} must be a file of type: {{values}}.","validation.min.array":"The {{attribute}} must have at least {{min}} items.","validation.min.file":"The {{attribute}} must be at least {{min}} kilobytes.","validation.min.numeric":"The {{attribute}} must be at least {{min}}.","validation.min.string":"The {{attribute}} must be at least {{min}} characters.","validation.min_digits":"The {{attribute}} must have at least {{min}} digits.","validation.missing":"The {{attribute}} field must be missing.","validation.missing_if":"The {{attribute}} field must be missing when {{other}} is {{value}}.","validation.missing_unless":"The {{attribute}} field must be missing unless {{other}} is {{value}}.","validation.missing_with":"The {{attribute}} field must be missing when {{values}} is present.","validation.missing_with_all":"The {{attribute}} field must be missing when {{values}} are present.","validation.multiple_of":"The {{attribute}} must be a multiple of {{value}}.","validation.not_in":"The selected {{attribute}} is invalid.","validation.not_regex":"The {{attribute}} format is invalid.","validation.numeric":"The {{attribute}} must be a number.","validation.password.letters":"The {{attribute}} must contain at least one letter.","validation.password.mixed":"The {{attribute}} must contain at least one uppercase and one lowercase letter.","validation.password.numbers":"The {{attribute}} must contain at least one number.","validation.password.symbols":"The {{attribute}} must contain at least one symbol.","validation.password.uncompromised":"The given {{attribute}} has appeared in a data leak. Please choose a different {{attribute}}.","validation.present":"The {{attribute}} field must be present.","validation.prohibited":"The {{attribute}} field is prohibited.","validation.prohibited_if":"The {{attribute}} field is prohibited when {{other}} is {{value}}.","validation.prohibited_unless":"The {{attribute}} field is prohibited unless {{other}} is in {{values}}.","validation.prohibits":"The {{attribute}} field prohibits {{other}} from being present.","validation.regex":"The {{attribute}} format is invalid.","validation.required":"The {{attribute}} field is required.","validation.required_array_keys":"The {{attribute}} field must contain entries for: {{values}}.","validation.required_if":"The {{attribute}} field is required when {{other}} is {{value}}.","validation.required_if_accepted":"The {{attribute}} field is required when {{other}} is accepted.","validation.required_unless":"The {{attribute}} field is required unless {{other}} is in {{values}}.","validation.required_with":"The {{attribute}} field is required when {{values}} is present.","validation.required_with_all":"The {{attribute}} field is required when {{values}} are present.","validation.required_without":"The {{attribute}} field is required when {{values}} is not present.","validation.required_without_all":"The {{attribute}} field is required when none of {{values}} are present.","validation.same":"The {{attribute}} and {{other}} must match.","validation.size.array":"The {{attribute}} must contain {{size}} items.","validation.size.file":"The {{attribute}} must be {{size}} kilobytes.","validation.size.numeric":"The {{attribute}} must be {{size}}.","validation.size.string":"The {{attribute}} must be {{size}} characters.","validation.starts_with":"The {{attribute}} must start with one of the following: {{values}}.","validation.string":"The {{attribute}} must be a string.","validation.timezone":"The {{attribute}} must be a valid timezone.","validation.unique":"The {{attribute}} has already been taken.","validation.uploaded":"The {{attribute}} failed to upload.","validation.uppercase":"The {{attribute}} must be uppercase.","validation.url":"The {{attribute}} must be a valid URL.","validation.ulid":"The {{attribute}} must be a valid ULID.","validation.uuid":"The {{attribute}} must be a valid UUID.","validation.custom.attribute-name.rule-name":"custom-message","validation.unsupported_currency_code":"The currency code you provided is invalid or not supported.","validation.unsupported_period":"The period you provided is invalid or not supported.","validation.unsupported_token_symbol":"The token symbol you provided is invalid or not supported.","validation.gallery_title_required":"Gallery name is required.","validation.gallery_title_max_characters":"The gallery name should not exceed 50 characters.","validation.gallery_title_invalid":"The gallery name is invalid.","validation.nfts_required":"Please add at least one NFT.","validation.nfts_max_size":"Galleries can contain no more than {{limit}} NFTs","validation.invalid_nfts":"The NFT in position {{position}} is invalid, please select another one.","validation.invalid_cover":"You have selected an invalid cover image, please try another one."} \ No newline at end of file +{"auth.welcome":"Welcome to Dashbrd","auth.logged_in":"You're logged in!","auth.log_out":"Log out","auth.failed":"These credentials do not match our records.","auth.session_timeout":"Your session has timed out. Please refresh the page and try connecting your account again.","auth.session_timeout_modal":"Seems like your session has timed out. Please connnect your wallet again.","auth.password":"The provided password is incorrect.","auth.throttle":"Too many login attempts. Please try again in {{seconds}} seconds.","auth.wallet.connecting":"Connecting …","auth.wallet.waiting_for_signature":"Waiting for Signature …","auth.wallet.switching_wallet":"Switching Wallet …","auth.wallet.connect":"Connect Wallet","auth.wallet.connect_long":"Connect Your Wallet to Get Started","auth.wallet.sign_subtitle":"Connect Your Wallet to Continue","auth.wallet.disconnect":"Disconnect Wallet","auth.wallet.install":"Install MetaMask","auth.wallet.install_long":"Install MetaMask to Get Started","auth.wallet.sign":"Sign Message","auth.wallet.sign_message":"Welcome to Dashbrd. In order to login, sign this message with your wallet. It doesn't cost you anything!\n\nSigning ID (you can ignore this): {{nonce}}","auth.wallet.connect_subtitle":"Click on the MetaMask icon in your browser to confirm the action and connect your wallet.","auth.wallet.requires_signature":"In order to prevent impersonation, we require a signature to perform this action. This signature is only a signed message and does not give any access to your wallet.","auth.errors.metamask.no_account":"No account found. Please connect your wallet and try again.","auth.errors.metamask.generic":"Connection attempt error. Please retry and follow the steps to connect your wallet.","auth.errors.metamask.invalid_network":"Please switch to Polygon or Ethereum Mainnet in your MetaMask plugin to connect to Dashbrd.","auth.errors.metamask.provider_missing":"You don't have MetaMask installed in your browser. Please install and try again.","auth.errors.metamask.user_rejected":"It looks like you cancelled signing of the authentication message. Please try again.","auth.errors.metamask.provider_not_set":"Ethereum provider is not set","auth.validation.wallet_login_failed":"There was a problem trying to verify your signature. Please try again.","auth.validation.invalid_address":"Your wallet address is invalid. Please try again.","auth.validation.invalid_signature":"Signature is invalid. Please try again.","auth.validation.invalid_network":"Please switch to Polygon or Ethereum Mainnet in your MetaMask plugin to connect to Dashbrd.","common.author":"Author","common.add":"Add","common.amount":"Amount","common.balance":"Balance","common.cancel":"Cancel","common.delete":"Delete","common.edit":"Edit","common.confirm":"Confirm","common.connect":"Connect","common.continue":"Continue","common.done":"Done","common.filter":"Filter","common.items":"Items","common.receive":"Receive","common.received":"Received","common.retry":"Retry","common.records":"Records","common.save":"Save","common.send":"Send","common.sent":"Sent","common.show":"Show","common.searching":"Searching...","common.other":"Other","common.owned":"Owned","common.token":"Token","common.tokens":"Tokens","common.wallet":"Wallet","common.pending":"Pending","common.publish":"Publish","common.published":"Published","common.empty":"Empty","common.your_address":"Your Address","common.warning":"Warning","common.my_address":"My Address","common.my_wallet":"My Wallet","common.my_collections":"My Collections","common.my_balance":"My Balance","common.na":"N/A","common.simple_plural_without_data":"One comment|Many comments","common.simple_plural_with_data":"{{count}} comment|{{count}} comments","common.advanced_plural_without_data":"{0} no comments yet|{1} 1 comment|[2,*] Many comments","common.advanced_plural_with_data":"{0} no comments yet|{1} 1 comment|[2,*] {{count}} comments","common.copy_clipboard":"Copy to Clipboard","common.copy":"Copy","common.download":"Download","common.zoom":"Zoom","common.my_collection":"My Collection","common.max":"Max","common.chain":"Chain","common.search":"Search","common.copied":"Copied!","common.coming_soon":"Coming Soon","common.more_details":"More Details","common.close":"Close","common.close_toast":"Close toast","common.loading":"Loading","common.price":"Price","common.articles":"Articles","common.most_popular":"Most Popular","common.market_cap":"Market Cap","common.volume":"Volume","common.volume_frequency":"Volume {{frequency}}","common.value":"Value","common.last_n_days":"Last {{count}} Days","common.details":"Details","common.view_all":"View All","common.view_more_on_polygonscan":"View More on Polygonscan","common.view_more_on_etherscan":"View More on Etherscan","common.view_nft_on_etherscan":"View NFT on Etherscan","common.view_nft_on_polygonscan":"View NFT on Polygonscan","common.view_nft_on_goerli_tesnet":"View NFT on Goerli Testnet Explorer","common.view_nft_on_mumbai_tesnet":"View NFT on Mumbai Testnet Explorer","common.polygonscan":"Polygonscan","common.etherscan":"Etherscan","common.featured":"Featured","common.floor_price":"Floor Price","common.floor":"Floor","common.supply":"Supply","common.owners":"Owners","common.created":"Created","common.nft":"NFT","common.collection":"Collection","common.collections":"Collections","common.gallery":"Gallery","common.basic_gallery":"Basic Gallery","common.gallery_name":"Gallery Name","common.create_gallery":"Create Gallery","common.external_link":"External Link","common.follow_link":"Follow Link","common.cover":"Cover","common.template":"Template","common.page":"Page","common.polygon":"Polygon","common.ethereum":"Ethereum","common.mumbai":"Mumbai","common.goerli":"Goerli","common.of":"of","common.pagination_input_placeholder":"Enter the page number","common.pagination_input_placeholder_mobile":"Page number","common.nft_count":"{0} {{count}} NFTs|{1} {{count}} NFT|[2,*] {{count}} NFTs","common.nft_gallery":"NFT Gallery","common.unable_to_retrieve_image":"Unable to retrieve your NFT image at this time","common.optional":"Optional","common.selected":"Selected","common.select":"Select","common.preview":"Preview","common.image_size_error":"Image size must not exceed 2MB","common.image_dimensions_error":"Image dimensions must exceed 287px x 190px","common.write_to_confirm":"Write {{word}} to confirm","common.n_hours":"{0} {{count}} hour|{1} {{count}} hour|[2,*] {{count}} hours","common.n_minutes":"{0} {{count}} minute|{1} {{count}} minute|[2,*] {{count}} minutes","common.report":"Report","common.nfts":"NFTs","common.n_nfts":"{0}NFTs|{1}NFT|[2,*]NFTs","common.n_collections":"{0}collections|{1}collection|[2,*]collections","common.back":"Back","common.back_to":"Back to","common.name":"Name","common.type":"Type","common.from":"From","common.to":"To","common.sale_price":"Sale Price","common.recent_activity":"Recent Activity","common.time":"Time","common.datetime.few_seconds_ago":"A few seconds ago","common.datetime.minutes_ago":"{0} Less than a minute ago|{1} A minute ago|[2,*] {{count}} minutes ago","common.datetime.hours_ago":"{0} Less than an hour ago|{1} An hour ago|[2,*] {{count}} hours ago","common.datetime.days_ago":"{0} Less than a day ago|{1} A day ago|[2,*] {{count}} days ago","common.datetime.weeks_ago":"{0} Less than a week ago|{1} A week ago|[2,*] {{count}} weeks ago","common.datetime.months_ago":"{0} Less than a month ago|{1} A month ago|[2,*] {{count}} months ago","common.datetime.years_ago":"{0} Less than a year ago|{1} A year ago|[2,*] {{count}} years ago","common.no_traits_found":"No traits found.","common.empty_transactions":"You don't have any transactions yet. Once transactions have been made, they will show up here.","common.error":"Error","common.refresh":"Refresh","common.refresh_metadata":"Refresh Metadata","common.refreshing_metadata":"Refreshing Metadata... Please check back later.","common.refreshing_activity":"Refreshing Activity... Please check back later.","common.pending_confirmation":"Pending Confirmation","common.confirmed_transaction":"Confirmed Transaction","common.transaction_error":"Transaction Error","common.transaction_error_description_first_part":"Your transaction encountered an error. View this transaction on","common.transaction_error_description_second_part":"for more details.","common.home":"Home","common.contact":"Contact","common.menu":"Menu","common.website":"Website","common.twitter":"Twitter","common.discord":"Discord","common.facebook":"Facebook","common.reddit":"Reddit","common.x":"X","common.sort":"Sort","common.drafts":"Drafts","common.draft":"Draft","common.delete_draft":"Delete Draft","common.share_on":"Share on {{platform}}","common.top":"Top","common.all_chains":"All chains","common.votes":"Votes","common.vote":"Vote","common.vol":"Vol","common.collection_preview":"Collection Preview","common.24h":"24h","common.7d":"7d","common.30d":"30d","footer.copyright":"{{year}} © Dashbrd. All rights reserved.","footer.all_rights_reserved":"All rights reserved","footer.privacy_policy":"Privacy Policy","footer.terms_of_service":"Terms of Service","footer.powered_by":"Powered by","format.fiat":"{{ value, currency }}","format.number":"{{ value, number }}","metatags.home.title":"Dashbrd | Web3 Portfolio Management Made Simple","metatags.home.description":"Simplify your Web3 journey with Dashbrd. Manage your portfolio of tokens, NFTs, and other digital collectibles across the Ethereum and Polygon blockchains.","metatags.home.image":"/images/meta/home.png","metatags.error.title":"Error {{code}} | Dashbrd","metatags.wallet.title":"My Wallet | Dashbrd","metatags.galleries.title":"Top NFT Galleries | Dashbrd","metatags.galleries.image":"/images/meta/nft-galleries.png","metatags.galleries.description":"Explore user published NFT galleries to find custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.most_popular.title":"Most Popular Galleries | Dashbrd","metatags.galleries.most_popular.image":"/images/meta/most-popular-nft-galleries.png","metatags.galleries.most_popular.description":"Explore and discover Most Popular NFT Galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.newest.title":"Newest Galleries | Dashbrd","metatags.galleries.newest.image":"/images/meta/newest-nft-galleries.png","metatags.galleries.newest.description":"Explore and discover most recent NFT galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More","metatags.galleries.most_valuable.title":"Most Valuable Galleries | Dashbrd","metatags.galleries.most_valuable.image":"/images/meta/most-valuable-nft-galleries.png","metatags.galleries.most_valuable.description":"Explore and discover Most Valuable NFT Galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.view.title":"{{name}} | Dashbrd","metatags.galleries.view.description":"{{name}} | A Curated NFT Gallery at Dashbrd","metatags.galleries.view.image":"/images/meta/nft-gallery.png","metatags.my_galleries.title":"My Galleries | Dashbrd","metatags.my_galleries.title_draft":"My Draft Galleries | Dashbrd","metatags.my_galleries.create.title":"Create Gallery | Dashbrd","metatags.my_galleries.edit.title":"Edit {{name}} | Dashbrd","metatags.collections.title":"Collections | Dashbrd","metatags.collections.view.title":"{{name}} Collection | Dashbrd","metatags.collections.view.description":"Immerse yourself in the intricate details of {{name}} collection, featuring remarkable digital assets. Start your NFT journey today!","metatags.collections.view.image":"/images/meta/nft-collection.png","metatags.collections.of-the-month.title":"Collection of the Month {{month}} | Dashbrd","metatags.my-collections.title":"My Collections | Dashbrd","metatags.popular-collections.title":"Popular NFT Collections | Dashbrd","metatags.nfts.view.title":"{{nft}} NFT | Dashbrd","metatags.nfts.view.description":"Uncover the complete story of {{nft}} NFT from the {{collection}} collection, delving into its unique attributes and distinctive features.","metatags.nfts.view.image":"/images/meta/nft-details.png","metatags.settings.title":"Settings | Dashbrd","metatags.articles.title":"Articles | Dashbrd","metatags.articles.view.title":"{{title}} | Dashbrd","metatags.login.title":"Login | Dashbrd","metatags.privacy_policy.title":"Privacy Policy | Dashbrd","metatags.privacy_policy.description":"Dashbrd’s privacy policy outlines the information we collect and explains your choices surrounding how we use information about you.","metatags.terms_of_service.title":"Terms of Service | Dashbrd","metatags.terms_of_service.description":"These Terms of Service cover your use and access to services, products or websites of Dashbrd.","metatags.cookie_policy.title":"Cookie Policy | Dashbrd","metatags.cookie_policy.description":"Dashbrd uses cookies to make the website more user-friendly. Find out about the main types of cookies we use, and what we use them for.","metatags.welcome.title":"Welcome to Dashbrd | Web3 Simplified","pages.onboarding.title":"Get Started","pages.onboarding.heading":"Your monkeys were bored and ran off, we are trying to round them up.","pages.onboarding.message":"We are setting up your account. This process usually takes just a few minutes, but can take up to 15 minutes.","pages.error.heading":"Oops, something went wrong ...","pages.error.message":"Please try again or get in touch if the issue persists.","pages.maintenance.title":"Dashbrd is currently down for scheduled maintenance.","pages.maintenance.description":"We expect to be back soon. Thanks for your patience.","pages.dashboard.title":"My Wallet","pages.dashboard.breakdown.title":"Portfolio Breakdown","pages.dashboard.line_chart.data_error":"Could not load chart data","pages.articles.title":"Articles","pages.articles.featured_collections":"Featured Collections","pages.articles.placeholder_more_soon":"More Soon","pages.articles.no_articles":"No articles have been published yet. Please check back later!","pages.articles.header_title":"Explore our collection of","pages.articles.header_suffix_one":"published article","pages.articles.header_suffix_other":"published articles","pages.articles.audio_version":"Audio version","pages.articles.consists_of_collections":"{0} This article highlights {{count}} collections|{1} This article highlights {{count}} collection|[2,*] This article highlights {{count}} collections","pages.collections.title":"Collections","pages.collections.collections":"Collections","pages.collections.popular_collections":"Popular Collections","pages.collections.collection_value":"Collection Value","pages.collections.nfts_owned":"NFTs Owned","pages.collections.header_title":"You own <0>{{nftsCount}} {{nfts}} across <0>{{collectionsCount}} {{collections}}, worth about <0><1>{{worth}}","pages.collections.search_placeholder":"Search by Collection","pages.collections.properties":"Properties","pages.collections.collections_network":"Collections Network","pages.collections.property_search_placeholder":"Feature Search","pages.collections.floor_price":"Floor Price","pages.collections.value":"Value","pages.collections.rarity":"Rarity","pages.collections.report":"Report","pages.collections.search_by_name":"Search by Collection Name","pages.collections.hide_collection":"Hide Collection","pages.collections.unhide_collection":"Unhide Collection","pages.collections.no_collections":"You do not own any NFTs yet. Once you do they will be shown here.","pages.collections.all_collections_hidden":"You have hidden all your collections. Unhide and they will appear here.","pages.collections.about_collection":"About Collection","pages.collections.show_hidden":"Show Hidden","pages.collections.show_my_collection":"Show My Collection","pages.collections.owned":"Owned","pages.collections.activities.loading_activities":"We're fetching Activity for this NFT, please hang tight, this can take a while.","pages.collections.activities.loading_activities_collection":"We're fetching Activity for this collection, please hang tight, this can take a while.","pages.collections.activities.ignores_activities":"We don't support activity history for this collection yet.","pages.collections.activities.no_activity":"This collection does not have any activity yet.","pages.collections.activities.types.LABEL_MINT":"Mint","pages.collections.activities.types.LABEL_TRANSFER":"Transfer","pages.collections.activities.types.LABEL_SALE":"Sale","pages.collections.activities.types.LABEL_BURN":"Burn","pages.collections.collection_of_the_month.title":"Collection of the Month {{month}}","pages.collections.collection_of_the_month.winners_month":"Winners: {{month}}","pages.collections.collection_of_the_month.vote_for_next_months_winners":"Vote now for next month's winners","pages.collections.collection_of_the_month.view_previous_winners":"View Previous Winners","pages.collections.collection_of_the_month.vote_received_modal.title":"Vote Received","pages.collections.collection_of_the_month.vote_received_modal.description":"Your vote has been recorded. Share your vote on X and let everyone know!","pages.collections.collection_of_the_month.vote_received_modal.share_vote":"Share Vote","pages.collections.collection_of_the_month.vote_received_modal.img_alt":"I voted for Dashbrd Project of the Month","pages.collections.collection_of_the_month.vote_received_modal.x_text":"I voted for {{collection}} for collection of the month @dashbrdapp! Go show your support!","pages.collections.collection_of_the_month.vote_success":"Your vote has been successfully submitted","pages.collections.collection_of_the_month.content_to_be_added.title":"Content to be added","pages.collections.collection_of_the_month.content_to_be_added.description":"There will be a list of previous month winners here soon!","pages.collections.collection_of_the_month.has_won_already":"This collection has already
    won Collection of the Month.","pages.collections.articles.heading":"Latest NFT News & Features","pages.collections.articles.no_articles":"No articles have been linked to this collection as of now.","pages.collections.articles.no_articles_with_filters":"We could not find any articles matching your search criteria, please try again!","pages.collections.articles.search_placeholder":"Search in Articles","pages.collections.articles.sort_latest":"Latest","pages.collections.articles.sort_popularity":"Most Popular","pages.collections.search.loading_results":"Loading results...","pages.collections.search.no_results":"We could not find anything matching your search criteria, please try again!","pages.collections.search.no_results_with_filters":"We could not find anything matching your filters, please try again!","pages.collections.search.no_results_ownership":"You do not own any NFTs in this collection","pages.collections.search.error":"Could not load search results. Please try again later.","pages.collections.vote.vote_for_top_collection":"Vote for Top Collection of the Month","pages.collections.vote.vote":"Vote","pages.collections.vote.time_left":"Time Left","pages.collections.vote.or_nominate_collection":"Or nominate a collection","pages.collections.vote.nominate_collection":"Nominate a collection","pages.collections.vote.vote_to_reveal":"Vote to reveal data","pages.collections.vote.already_voted":"You’ve already nominated. Come back next month!","pages.collections.sorting.token_number":"Token Number","pages.collections.sorting.recently_received":"Recently Received","pages.collections.sorting.recently_created":"Recently Created","pages.collections.sorting.oldest_collection":"Oldest Collection","pages.collections.traits.description":"List of NFT traits by % of occurrence in the collection","pages.collections.traits.no_traits":"No Properties can be found for this NFT","pages.collections.menu.collection":"Collection","pages.collections.menu.articles":"Articles","pages.collections.menu.activity":"Activity","pages.collections.hidden_modal.collection_hidden":"Collection Hidden","pages.collections.hidden_modal.description":"This collection is currently set to Hidden. Are you sure you want to unhide this collection? You can\n reset the collection to hidden from the collection menu.","pages.collections.hidden_modal.unhide":"Unhide","pages.collections.hidden_modal.error":"Something went wrong. Please try again.","pages.collections.external_modal.you_wish_continue":"You are about to leave Dashbrd to an external website. Dashbrd has no control over the content of\n this site. Are you sure you wish to continue?","pages.collections.external_modal.not_show":"Do not show this message again.","pages.collections.refresh.title":"Refresh your collection","pages.collections.refresh.notice":"You can refresh data every 15 minutes.","pages.collections.refresh.notice_wait":"Please wait. You can refresh data every 15 minutes.","pages.collections.refresh.toast":"We're updating information for your collection.","pages.collections.featured.title":"Featured Collections","pages.collections.featured.button":"Explore Collection","pages.collections.footer.heading_broken.0":"Connect with MetaMask","pages.collections.footer.heading_broken.1":"& Manage Your Collection","pages.collections.footer.subtitle":"Explore, Filter, & Share your favorite NFTs with Dashbrd.","pages.collections.footer.button":"Manage Collections","pages.nfts.nft":"nft","pages.nfts.about_nft":"About NFT","pages.nfts.owned_by":"Owned by","pages.nfts.collection_image":"collection image","pages.nfts.menu.properties":"Properties","pages.nfts.menu.activity":"Activity","pages.reports.title":"Submit a Report","pages.reports.description":"Thanks for looking out by reporting things that break the rules. Let us know what's happening and we'll receive the report.","pages.reports.success":"Thank you for your report. We'll review it and see if it breaks our ToS.","pages.reports.failed":"Something went wrong. Please try again.","pages.reports.throttle":"You have made too many requests. Please wait {{time}} before reporting again.","pages.reports.reported":"You have already reported this {{model}}.","pages.reports.reasons.spam":"Spam","pages.reports.reasons.violence":"Promoting Violence","pages.reports.reasons.hate":"Hate","pages.reports.reasons.inappropriate_content":"Inappropriate Content","pages.reports.reasons.impersonation":"Impersonation","pages.reports.reasons.trademark":"Trademark or Copyright","pages.reports.reasons.selfharm":"Self-Harm","pages.reports.reasons.harassment":"Harassment","pages.galleries.title":"Galleries","pages.galleries.empty_title":"No galleries have been published yet. Once they do they will appear here.","pages.galleries.search.loading_results":"Loading results...","pages.galleries.search.no_results":"We could not find anything matching your search criteria, please try again!","pages.galleries.search.placeholder":"Search by name or curator address","pages.galleries.search.placeholder_nfts":"Search by NFTs","pages.galleries.search.error":"Could not load search results. Please try again later.","pages.galleries.my_galleries.title":"My Galleries","pages.galleries.my_galleries.subtitle":"Manage your galleries","pages.galleries.my_galleries.new_gallery":"New Gallery","pages.galleries.my_galleries.no_galleries":"You have not created any galleries yet. To create a gallery, click on the \"Create Gallery\" button.","pages.galleries.my_galleries.no_available_collections":"You have hidden all your collections. If you want to create a gallery, make sure you have at least 1 collection available.","pages.galleries.my_galleries.no_draft_galleries":"You have no draft galleries yet. To create a gallery, click on the \"Create Gallery\" button.","pages.galleries.my_galleries.succesfully_deleted":"Gallery has been successfully removed","pages.galleries.my_galleries.draft_succesfully_deleted":"Draft has been successfully removed","pages.galleries.my_galleries.successfully_created":"Gallery has been successfully created","pages.galleries.my_galleries.successfully_updated":"Gallery has been successfully updated","pages.galleries.my_galleries.new_gallery_no_nfts":"Creating a Gallery requires you to own an NFT.","pages.galleries.my_galleries.new_gallery_all_collections_hidden":"Creating a Gallery requires you to have at least 1 collection available.","pages.galleries.my_galleries.delete_modal.title":"Delete Draft","pages.galleries.my_galleries.delete_modal.text":"Are you sure you want to delete the draft? Everything you've done will be deleted and you won't be able to get it back.","pages.galleries.my_galleries.nfts_no_longer_owned":"NFTs no longer owned by this wallet have been removed from the draft”","pages.galleries.copy_gallery_link":"Copy Gallery Link","pages.galleries.my_nfts":"My NFTs","pages.galleries.show_hidden_collections":"Show hidden collections","pages.galleries.value":"Value","pages.galleries.floor_price":"Floor Price","pages.galleries.nfts":"NFTs","pages.galleries.collections":"Collections","pages.galleries.galleries_count_simple":"{0} galleries|{1} gallery|[2,*] galleries","pages.galleries.galleries_count":"{0} {{count}} Galleries|{1} {{count}} Gallery|[2,*] {{count}} Galleries","pages.galleries.collections_count_simple":"{0} collections|{1} collection|[2,*] collections","pages.galleries.collections_count":"{0} {{count}} Collections|{1} {{count}} Collection|[2,*] {{count}} Collections","pages.galleries.nfts_count_simple":"{0} NFTs|{1} NFT|[2,*] NFTs","pages.galleries.nfts_count":"{0} {{count}} NFTs|{1} {{count}} NFT|[2,*] {{count}} NFTs","pages.galleries.users_count_simple":"{0} users|{1} user|[2,*] users","pages.galleries.users_count":"{0} {{count}} Users|{1} {{count}} User|[2,*] {{count}} Users","pages.galleries.featuring":"Featuring","pages.galleries.curated_by":"Curated by","pages.galleries.worth_about":"Worth About","pages.galleries.valued_at":"valued at","pages.galleries.from":"From","pages.galleries.most_popular_galleries":"Most Popular Galleries","pages.galleries.newest_galleries":"Newest Galleries","pages.galleries.most_valuable_galleries":"Most Valuable Galleries","pages.galleries.most_popular":"Most Popular","pages.galleries.newest":"Newest","pages.galleries.most_valuable":"Most Valuable","pages.galleries.create.search_by_nfts":"Search by NFTs","pages.galleries.create.input_placeholder":"Enter gallery name","pages.galleries.create.title_too_long":"Gallery name must not exceed {{max}} characters.","pages.galleries.create.already_selected_nft":"NFT already exists in this gallery","pages.galleries.create.nft_missing_image":"Only NFTs with images can be added to galleries","pages.galleries.create.nft_gallery_limit":"You can only add 16 NFTs per gallery","pages.galleries.create.gallery_cover":"Gallery Cover","pages.galleries.create.gallery_cover_description":"The cover is used for the card on the gallery list page. While the cover is not a requirement it will allow you to add personality and stand out from the crowd.","pages.galleries.create.gallery_cover_information":"Image dimensions must be at least 287px x 190px, with a max size of 2 MB (JPG, PNG or GIF)","pages.galleries.create.no_results":"We could not find anything matching your search criteria, please try again!","pages.galleries.create.templates.cover":"Cover","pages.galleries.create.templates.template":"Template","pages.galleries.create.templates.select":"Select Gallery Template","pages.galleries.create.templates.basic":"Basic Gallery","pages.galleries.create.templates.coming_soon":"More Coming Soon","pages.galleries.create.load_more_collections_one":"Load {{count}} More Collection","pages.galleries.create.load_more_collections_other":"Load {{count}} More Collections","pages.galleries.create.load_more_nfts":"Load More NFTs","pages.galleries.create.can_purchase":"You can purchase NFTs with these top NFT Marketplaces:","pages.galleries.create.must_own_one_nft":"You must own at least one (1) NFT in order to create a gallery.","pages.galleries.create.back_to_galleries":"Back to Galleries","pages.galleries.create.draft_saved":"Draft Saved","pages.galleries.create.saving_to_draft":"Saving to draft","pages.galleries.create.drafts_limit_modal_title":"Draft Gallery Limit","pages.galleries.create.drafts_limit_modal_message":"You’ve hit your limit for draft galleries. While you can still make new galleries and publish them, they won’t be saved as drafts. To Free up space, you can either delete existing drafts or publish them.","pages.galleries.create.drafts_limit_modal_cancel":"Go to Drafts","pages.galleries.delete_modal.title":"Delete Gallery","pages.galleries.delete_modal.confirmation_text":"Are you sure you want to delete the gallery? Deleting a Gallery is permanent, all associated views and likes will be lost.","pages.galleries.consists_of_collections":"{0} This gallery consists of {{count}} collections|{1} This gallery consists of {{count}} collection|[2,*] This gallery consists of {{count}} collections","pages.galleries.guest_banner.title":"Craft the ultimate","pages.galleries.guest_banner.subtitle":"Pick your favorites, curate your gallery, & share it with the world.","pages.profile.title":"Profile","pages.token_panel.balance_tooltip":"Total percentage of the portfolio held in this token","pages.token_panel.insufficient_funds":"Insufficient Balance","pages.token_panel.error":"Dashbrd has failed to load token information. Please try again later.","pages.token_panel.failed_to_retrieve_transactions":"We were unable to fetch your transactions.","pages.token_panel.tabs.transaction_history":"Transaction History","pages.token_panel.tabs.history":"History","pages.token_panel.tabs.market_data":"Market Data","pages.token_panel.details.current_price":"Current Price","pages.token_panel.details.title":"Token Details","pages.token_panel.details.market_cap":"Market Cap","pages.token_panel.details.volume":"Daily Volume","pages.token_panel.details.supply":"Minted Supply","pages.token_panel.details.ath":"All-Time High","pages.token_panel.details.atl":"All-Time Low","pages.token_panel.chart.failed":"Dashbrd has failed to load chart information. Please try again later.","pages.transaction_details_panel.title":"Transaction Details","pages.transaction_details_panel.details.blockchain":"Blockchain","pages.transaction_details_panel.details.timestamp":"Timestamp","pages.transaction_details_panel.details.transaction_hash":"Transaction Hash","pages.transaction_details_panel.details.transaction_fee":"Transaction Fee","pages.transaction_details_panel.details.gas_price":"Gas Price","pages.transaction_details_panel.details.gas_used":"Gas Used","pages.transaction_details_panel.details.nonce":"Nonce","pages.send_receive_panel.send.labels.token_and_amount":"Token and Amount","pages.send_receive_panel.send.labels.destination_address":"Destination Address","pages.send_receive_panel.send.labels.projected_fee":"Projected Fee","pages.send_receive_panel.send.placeholders.enter_amount":"Enter Amount","pages.send_receive_panel.send.placeholders.insert_recipient_address":"Insert Recipient Address","pages.send_receive_panel.send.placeholders.projected_fee":"Projected Fee","pages.send_receive_panel.send.errors.amount":"Insufficient Funds: You do not have enough to cover the amount + fee.","pages.send_receive_panel.send.errors.destination":"Destination address is not correct. Check and input again.","pages.send_receive_panel.send.hints.token_price":"Token Price","pages.send_receive_panel.send.fees.Fast":"Fast","pages.send_receive_panel.send.fees.Avg":"Avg","pages.send_receive_panel.send.fees.Slow":"Slow","pages.send_receive_panel.send.search_dropdown.placeholder":"Search token","pages.send_receive_panel.send.search_dropdown.no_results":"No Results","pages.send_receive_panel.send.search_dropdown.error":"Error occurred while searching tokens.","pages.send_receive_panel.send.transaction_time":"Transaction Time: ~{{ time }} minutes","pages.send_receive_panel.send.from":"From","pages.send_receive_panel.send.to":"To","pages.send_receive_panel.send.amount":"Amount","pages.send_receive_panel.send.fee":"Fee","pages.send_receive_panel.send.total_amount":"Total Amount","pages.send_receive_panel.send.waiting_message":"Review and verify the information on your MetaMask. Sign to send the transaction.","pages.send_receive_panel.send.waiting_spinner_text":"Waiting for confirmation...","pages.send_receive_panel.send.failed_message":"It looks like something went wrong while sending your transaction. Press 'Retry' to make another attempt.","pages.send_receive_panel.receive.alert":"Send only Polygon or Ethereum Network compatible tokens to this address or you could permanently lose your funds!","pages.settings.title":"Settings","pages.settings.sidebar.general":"General","pages.settings.sidebar.notifications":"Notifications","pages.settings.sidebar.session_history":"Sessions History","pages.settings.general.title":"Settings","pages.settings.general.subtitle":"Customize your App Experience","pages.settings.general.currency":"Currency","pages.settings.general.currency_subtitle":"Select your default currency which will be used throughout the app.","pages.settings.general.time_date":"Time & Date","pages.settings.general.time_date_subtitle":"Select how you want time and date be shown inside app.","pages.settings.general.date_format":"Date Format","pages.settings.general.time_format":"Time Format","pages.settings.general.timezone":"Timezone","pages.settings.general.set_defaults":"Set Defaults","pages.settings.general.set_defaults_content":"Reverting to the default settings will remove any customizations previously made. Are you sure?","pages.settings.general.save":"Save Settings","pages.settings.general.saved":"Your settings have been successfully saved","pages.wallet.title":"Wallet","pages.privacy_policy.title":"Privacy Policy","pages.terms_of_service.title":"Terms of Service","pages.popular_collections.title":"Popular NFT Collections","pages.popular_collections.header_title":"<0>{{nftsCount}} {{nfts}} from <0>{{collectionsCount}} {{collections}}, worth about <0><1>{{worth}}","pagination.previous":"« Previous","pagination.next":"Next »","passwords.reset":"Your password has been reset!","passwords.sent":"We have emailed your password reset link!","passwords.throttled":"Please wait before retrying.","passwords.token":"This password reset token is invalid.","passwords.user":"We can't find a user with that email address.","urls.landing":"https://dashbrd.com","urls.cookie_policy":"https://dashbrd.com/cookie-policy","urls.privacy_policy":"https://dashbrd.com/privacy-policy","urls.terms_of_service":"https://dashbrd.com/terms-of-service","urls.twitter":"https://x.com/DashbrdApp","urls.discord":"https://discord.gg/MJyWKkCJ5k","urls.github":"https://github.com/ArdentHQ/dashbrd","urls.coingecko":"https://www.coingecko.com","urls.etherscan":"https://etherscan.io","urls.polygonscan":"https://polygonscan.com","urls.alchemy":"https://www.alchemy.com","urls.moralis":"https://moralis.io","urls.mnemonic":"https://www.mnemonichq.com","urls.opensea":"https://opensea.io/","urls.explorers.etherscan.token_transactions":"https://etherscan.io/token/{{token}}?a={{address}}","urls.explorers.etherscan.addresses":"https://etherscan.io/address/{{address}}","urls.explorers.etherscan.transactions":"https://etherscan.io/tx/{{id}}","urls.explorers.etherscan.nft":"https://etherscan.io/nft/{{address}}/{{nftId}}","urls.explorers.polygonscan.token_transactions":"https://polygonscan.com/token/{{token}}?a={{address}}","urls.explorers.polygonscan.addresses":"https://polygonscan.com/address/{{address}}","urls.explorers.polygonscan.transactions":"https://polygonscan.com/tx/{{id}}","urls.explorers.polygonscan.nft":"https://polygonscan.com/nft/{{address}}/{{nftId}}","urls.explorers.mumbai.token_transactions":"https://mumbai.polygonscan.com/token/{{token}}?a={{address}}","urls.explorers.mumbai.addresses":"https://mumbai.polygonscan.com/address/{{address}}","urls.explorers.mumbai.transactions":"https://mumbai.polygonscan.com/tx/{{id}}","urls.explorers.mumbai.nft":"https://mumbai.polygonscan.com/nft/{{address}}/{{nftId}}","urls.explorers.goerli.token_transactions":"https://goerli.etherscan.io/token/{{token}}?a={{address}}","urls.explorers.goerli.addresses":"https://goerli.etherscan.io/address/{{address}}","urls.explorers.goerli.transactions":"https://goerli.etherscan.io/tx/{{id}}","urls.explorers.goerli.nft":"https://goerli.etherscan.io/nft/{{address}}/{{nftId}}","urls.marketplaces.opensea.collection":"https://opensea.io/assets/{{network}}/{{address}}","urls.marketplaces.opensea.nft":"https://opensea.io/assets/{{network}}/{{address}}/{{nftId}}","urls.marketplaces.rarible.collection":"https://rarible.com/collection/{{address}}/items","urls.marketplaces.rarible.nft":"https://rarible.com/token/{{address}}:{{nftId}}","urls.marketplaces.blur.collection":"https://blur.io/collection/{{address}}","urls.marketplaces.blur.nft":"https://blur.io/asset/{{address}}/{{nftId}}","urls.marketplaces.looksrare.collection":"https://looksrare.org/collections/{{address}}","urls.marketplaces.looksrare.nft":"https://looksrare.org/collections/{{address}}/{{nftId}}","validation.accepted":"The {{attribute}} must be accepted.","validation.accepted_if":"The {{attribute}} must be accepted when {{other}} is {{value}}.","validation.active_url":"The {{attribute}} is not a valid URL.","validation.after":"The {{attribute}} must be a date after {{date}}.","validation.after_or_equal":"The {{attribute}} must be a date after or equal to {{date}}.","validation.alpha":"The {{attribute}} must only contain letters.","validation.alpha_dash":"The {{attribute}} must only contain letters, numbers, dashes and underscores.","validation.alpha_num":"The {{attribute}} must only contain letters and numbers.","validation.array":"The {{attribute}} must be an array.","validation.ascii":"The {{attribute}} must only contain single-byte alphanumeric characters and symbols.","validation.before":"The {{attribute}} must be a date before {{date}}.","validation.before_or_equal":"The {{attribute}} must be a date before or equal to {{date}}.","validation.between.array":"The {{attribute}} must have between {{min}} and {{max}} items.","validation.between.file":"The {{attribute}} must be between {{min}} and {{max}} kilobytes.","validation.between.numeric":"The {{attribute}} must be between {{min}} and {{max}}.","validation.between.string":"The {{attribute}} must be between {{min}} and {{max}} characters.","validation.boolean":"The {{attribute}} field must be true or false.","validation.confirmed":"The {{attribute}} confirmation does not match.","validation.current_password":"The password is incorrect.","validation.date":"The {{attribute}} is not a valid date.","validation.date_equals":"The {{attribute}} must be a date equal to {{date}}.","validation.date_format":"The {{attribute}} does not match the format {{format}}.","validation.decimal":"The {{attribute}} must have {{decimal}} decimal places.","validation.declined":"The {{attribute}} must be declined.","validation.declined_if":"The {{attribute}} must be declined when {{other}} is {{value}}.","validation.different":"The {{attribute}} and {{other}} must be different.","validation.digits":"The {{attribute}} must be {{digits}} digits.","validation.digits_between":"The {{attribute}} must be between {{min}} and {{max}} digits.","validation.dimensions":"The {{attribute}} has invalid image dimensions.","validation.distinct":"The {{attribute}} field has a duplicate value.","validation.doesnt_end_with":"The {{attribute}} may not end with one of the following: {{values}}.","validation.doesnt_start_with":"The {{attribute}} may not start with one of the following: {{values}}.","validation.email":"The {{attribute}} must be a valid email address.","validation.ends_with":"The {{attribute}} must end with one of the following: {{values}}.","validation.enum":"The selected {{attribute}} is invalid.","validation.exists":"The selected {{attribute}} is invalid.","validation.file":"The {{attribute}} must be a file.","validation.filled":"The {{attribute}} field must have a value.","validation.gt.array":"The {{attribute}} must have more than {{value}} items.","validation.gt.file":"The {{attribute}} must be greater than {{value}} kilobytes.","validation.gt.numeric":"The {{attribute}} must be greater than {{value}}.","validation.gt.string":"The {{attribute}} must be greater than {{value}} characters.","validation.gte.array":"The {{attribute}} must have {{value}} items or more.","validation.gte.file":"The {{attribute}} must be greater than or equal to {{value}} kilobytes.","validation.gte.numeric":"The {{attribute}} must be greater than or equal to {{value}}.","validation.gte.string":"The {{attribute}} must be greater than or equal to {{value}} characters.","validation.image":"The {{attribute}} must be an image.","validation.in":"The selected {{attribute}} is invalid.","validation.in_array":"The {{attribute}} field does not exist in {{other}}.","validation.integer":"The {{attribute}} must be an integer.","validation.ip":"The {{attribute}} must be a valid IP address.","validation.ipv4":"The {{attribute}} must be a valid IPv4 address.","validation.ipv6":"The {{attribute}} must be a valid IPv6 address.","validation.json":"The {{attribute}} must be a valid JSON string.","validation.lowercase":"The {{attribute}} must be lowercase.","validation.lt.array":"The {{attribute}} must have less than {{value}} items.","validation.lt.file":"The {{attribute}} must be less than {{value}} kilobytes.","validation.lt.numeric":"The {{attribute}} must be less than {{value}}.","validation.lt.string":"The {{attribute}} must be less than {{value}} characters.","validation.lte.array":"The {{attribute}} must not have more than {{value}} items.","validation.lte.file":"The {{attribute}} must be less than or equal to {{value}} kilobytes.","validation.lte.numeric":"The {{attribute}} must be less than or equal to {{value}}.","validation.lte.string":"The {{attribute}} must be less than or equal to {{value}} characters.","validation.mac_address":"The {{attribute}} must be a valid MAC address.","validation.max.array":"The {{attribute}} must not have more than {{max}} items.","validation.max.file":"The {{attribute}} must not be greater than {{max}} kilobytes.","validation.max.numeric":"The {{attribute}} must not be greater than {{max}}.","validation.max.string":"The {{attribute}} must not be greater than {{max}} characters.","validation.max_digits":"The {{attribute}} must not have more than {{max}} digits.","validation.mimes":"The {{attribute}} must be a file of type: {{values}}.","validation.mimetypes":"The {{attribute}} must be a file of type: {{values}}.","validation.min.array":"The {{attribute}} must have at least {{min}} items.","validation.min.file":"The {{attribute}} must be at least {{min}} kilobytes.","validation.min.numeric":"The {{attribute}} must be at least {{min}}.","validation.min.string":"The {{attribute}} must be at least {{min}} characters.","validation.min_digits":"The {{attribute}} must have at least {{min}} digits.","validation.missing":"The {{attribute}} field must be missing.","validation.missing_if":"The {{attribute}} field must be missing when {{other}} is {{value}}.","validation.missing_unless":"The {{attribute}} field must be missing unless {{other}} is {{value}}.","validation.missing_with":"The {{attribute}} field must be missing when {{values}} is present.","validation.missing_with_all":"The {{attribute}} field must be missing when {{values}} are present.","validation.multiple_of":"The {{attribute}} must be a multiple of {{value}}.","validation.not_in":"The selected {{attribute}} is invalid.","validation.not_regex":"The {{attribute}} format is invalid.","validation.numeric":"The {{attribute}} must be a number.","validation.password.letters":"The {{attribute}} must contain at least one letter.","validation.password.mixed":"The {{attribute}} must contain at least one uppercase and one lowercase letter.","validation.password.numbers":"The {{attribute}} must contain at least one number.","validation.password.symbols":"The {{attribute}} must contain at least one symbol.","validation.password.uncompromised":"The given {{attribute}} has appeared in a data leak. Please choose a different {{attribute}}.","validation.present":"The {{attribute}} field must be present.","validation.prohibited":"The {{attribute}} field is prohibited.","validation.prohibited_if":"The {{attribute}} field is prohibited when {{other}} is {{value}}.","validation.prohibited_unless":"The {{attribute}} field is prohibited unless {{other}} is in {{values}}.","validation.prohibits":"The {{attribute}} field prohibits {{other}} from being present.","validation.regex":"The {{attribute}} format is invalid.","validation.required":"The {{attribute}} field is required.","validation.required_array_keys":"The {{attribute}} field must contain entries for: {{values}}.","validation.required_if":"The {{attribute}} field is required when {{other}} is {{value}}.","validation.required_if_accepted":"The {{attribute}} field is required when {{other}} is accepted.","validation.required_unless":"The {{attribute}} field is required unless {{other}} is in {{values}}.","validation.required_with":"The {{attribute}} field is required when {{values}} is present.","validation.required_with_all":"The {{attribute}} field is required when {{values}} are present.","validation.required_without":"The {{attribute}} field is required when {{values}} is not present.","validation.required_without_all":"The {{attribute}} field is required when none of {{values}} are present.","validation.same":"The {{attribute}} and {{other}} must match.","validation.size.array":"The {{attribute}} must contain {{size}} items.","validation.size.file":"The {{attribute}} must be {{size}} kilobytes.","validation.size.numeric":"The {{attribute}} must be {{size}}.","validation.size.string":"The {{attribute}} must be {{size}} characters.","validation.starts_with":"The {{attribute}} must start with one of the following: {{values}}.","validation.string":"The {{attribute}} must be a string.","validation.timezone":"The {{attribute}} must be a valid timezone.","validation.unique":"The {{attribute}} has already been taken.","validation.uploaded":"The {{attribute}} failed to upload.","validation.uppercase":"The {{attribute}} must be uppercase.","validation.url":"The {{attribute}} must be a valid URL.","validation.ulid":"The {{attribute}} must be a valid ULID.","validation.uuid":"The {{attribute}} must be a valid UUID.","validation.custom.attribute-name.rule-name":"custom-message","validation.unsupported_currency_code":"The currency code you provided is invalid or not supported.","validation.unsupported_period":"The period you provided is invalid or not supported.","validation.unsupported_token_symbol":"The token symbol you provided is invalid or not supported.","validation.gallery_title_required":"Gallery name is required.","validation.gallery_title_max_characters":"The gallery name should not exceed 50 characters.","validation.gallery_title_invalid":"The gallery name is invalid.","validation.nfts_required":"Please add at least one NFT.","validation.nfts_max_size":"Galleries can contain no more than {{limit}} NFTs","validation.invalid_nfts":"The NFT in position {{position}} is invalid, please select another one.","validation.invalid_cover":"You have selected an invalid cover image, please try another one."} \ No newline at end of file diff --git a/resources/js/Pages/Collections/Components/PopularCollectionsFilterPopover/PopularCollectionsFilterPopover.tsx b/resources/js/Pages/Collections/Components/PopularCollectionsFilterPopover/PopularCollectionsFilterPopover.tsx index 497198654..c71845d36 100644 --- a/resources/js/Pages/Collections/Components/PopularCollectionsFilterPopover/PopularCollectionsFilterPopover.tsx +++ b/resources/js/Pages/Collections/Components/PopularCollectionsFilterPopover/PopularCollectionsFilterPopover.tsx @@ -2,15 +2,29 @@ import { useTranslation } from "react-i18next"; import { IconButton } from "@/Components/Buttons"; import { Popover } from "@/Components/Popover"; import { Tooltip } from "@/Components/Tooltip"; -import { ChainFilters, type ChainFiltersProperties } from "@/Pages/Collections/Components/PopularCollectionsFilters"; +import { + ChainFilters, + type ChainFiltersProperties, + PeriodFilters, + type PeriodFiltersProperties, +} from "@/Pages/Collections/Components/PopularCollectionsFilters"; import { PopularCollectionsSorting, type PopularCollectionsSortingProperties, } from "@/Pages/Collections/Components/PopularCollectionsSorting/PopularCollectionsSorting"; -type Properties = PopularCollectionsSortingProperties & ChainFiltersProperties; +type Properties = PopularCollectionsSortingProperties & + ChainFiltersProperties & + Pick; -export const PopularCollectionsFilterPopover = ({ sortBy, setSortBy, chain, setChain }: Properties): JSX.Element => { +export const PopularCollectionsFilterPopover = ({ + sortBy, + setSortBy, + chain, + setChain, + period, + setPeriod, +}: Properties): JSX.Element => { const { t } = useTranslation(); return ( @@ -43,6 +57,12 @@ export const PopularCollectionsFilterPopover = ({ sortBy, setSortBy, chain, setC setSortBy={setSortBy} /> + + { + period: PeriodFilterOptions | undefined; + setPeriod: (period: PeriodFilterOptions | undefined) => void; +} + +export enum PeriodFilterOptions { + "24h" = "24h", + "7d" = "7d", + "30d" = "30d", +} + +export const PeriodFilters = ({ period, setPeriod, sortBy }: PeriodFiltersProperties): JSX.Element => { + const { t } = useTranslation(); + + return ( + + + + {Object.values(PeriodFilterOptions).map((option) => ( + + { + setPeriod(option); + }} + disabled={sortBy === "floor-price"} + > + {t(`common.${option}`)} + + + ))} + + + + ); +}; diff --git a/resources/js/Pages/Collections/Components/PopularCollectionsFilters/index.tsx b/resources/js/Pages/Collections/Components/PopularCollectionsFilters/index.tsx index 2a3c2a6e6..d940c5455 100644 --- a/resources/js/Pages/Collections/Components/PopularCollectionsFilters/index.tsx +++ b/resources/js/Pages/Collections/Components/PopularCollectionsFilters/index.tsx @@ -1 +1,3 @@ export * from "./ChainFilters"; + +export * from "./PeriodFilters"; diff --git a/resources/js/Pages/Collections/Hooks/useCollectionFilters.ts b/resources/js/Pages/Collections/Hooks/useCollectionFilters.ts index 6b55e3bc1..3f8afca7a 100644 --- a/resources/js/Pages/Collections/Hooks/useCollectionFilters.ts +++ b/resources/js/Pages/Collections/Hooks/useCollectionFilters.ts @@ -4,12 +4,13 @@ import { router } from "@inertiajs/react"; import { useEffect, useState } from "react"; import { useDebounce } from "@/Hooks/useDebounce"; import { useIsFirstRender } from "@/Hooks/useIsFirstRender"; -import { type ChainFilter } from "@/Pages/Collections/Components/PopularCollectionsFilters"; +import { type ChainFilter, type PeriodFilterOptions } from "@/Pages/Collections/Components/PopularCollectionsFilters"; import { type PopularCollectionsSortBy } from "@/Pages/Collections/Components/PopularCollectionsSorting"; export interface Filters extends Record { chain?: ChainFilter; sort?: PopularCollectionsSortBy; + period?: PeriodFilterOptions; query?: string; perPage?: number; } @@ -18,6 +19,7 @@ interface CollectionFiltersState { currentFilters: Filters; setSortBy: (sort: PopularCollectionsSortBy | undefined) => void; setChain: (sort: ChainFilter | undefined) => void; + setPeriod: (period: PeriodFilterOptions | undefined) => void; searchQuery: string; setSearchQuery: (query: string) => void; setPerPage: (perPage: number) => void; @@ -50,7 +52,7 @@ export const useCollectionFilters = ({ setCurrentFilters((filters) => ({ ...filters, - query: debouncedQuery, + query: debouncedQuery === "" ? undefined : debouncedQuery, })); }, [debouncedQuery]); @@ -61,9 +63,17 @@ export const useCollectionFilters = ({ })); }; + const setPeriod = (period: PeriodFilterOptions | undefined): void => { + setCurrentFilters((filters) => ({ + ...filters, + period, + })); + }; + const setSortBy = (sort: PopularCollectionsSortBy | undefined): void => { setCurrentFilters((filters) => ({ ...filters, + period: sort === "floor-price" ? undefined : filters.period, sort, })); }; @@ -82,5 +92,6 @@ export const useCollectionFilters = ({ searchQuery, setSearchQuery, setPerPage, + setPeriod, }; }; diff --git a/resources/js/Pages/Collections/Index.tsx b/resources/js/Pages/Collections/Index.tsx index 1a1b973b0..ff0b883cc 100644 --- a/resources/js/Pages/Collections/Index.tsx +++ b/resources/js/Pages/Collections/Index.tsx @@ -21,7 +21,7 @@ import { Heading } from "@/Components/Heading"; import { type PaginationData } from "@/Components/Pagination/Pagination.contracts"; import { DefaultLayout } from "@/Layouts/DefaultLayout"; import { VoteCollections } from "@/Pages/Collections/Components/CollectionVoting"; -import { ChainFilters } from "@/Pages/Collections/Components/PopularCollectionsFilters"; +import { ChainFilters, PeriodFilters } from "@/Pages/Collections/Components/PopularCollectionsFilters"; import { type Filters, useCollectionFilters } from "@/Pages/Collections/Hooks/useCollectionFilters"; interface CollectionsIndexProperties extends PageProps { @@ -53,7 +53,9 @@ const CollectionsIndex = ({ const { props } = usePage(); - const { currentFilters, setChain, setSortBy } = useCollectionFilters({ + const [recentlyVotedCollection, setRecentlyVotedCollection] = useState(); + + const { setPeriod, setSortBy, setChain, currentFilters } = useCollectionFilters({ filters, filterRoute: route("collections"), options: { @@ -63,8 +65,6 @@ const CollectionsIndex = ({ }, }); - const [recentlyVotedCollection, setRecentlyVotedCollection] = useState(); - return ( + + @@ -61,6 +62,12 @@ const Index = ({ setSortBy={setSortBy} /> + + From 8fd5b45dcca8f06f9c75b15fab7761786372c3bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josip=20Crnkovi=C4=87?= Date: Thu, 14 Dec 2023 08:28:58 +0100 Subject: [PATCH 045/145] refactor: prefix collection-related artisan commands with `collections:` (#558) --- app/Console/Commands/FetchCollectionBanner.php | 4 ++-- app/Console/Commands/FetchCollectionBannerBatch.php | 2 +- app/Console/Commands/FetchCollectionFloorPrice.php | 2 +- app/Console/Commands/FetchCollectionMetadata.php | 2 +- app/Console/Commands/FetchCollectionOpenseaSlug.php | 2 +- app/Console/Commands/FetchCollectionOwners.php | 2 +- app/Console/Commands/FetchCollectionTraits.php | 2 +- app/Console/Commands/FetchCollectionVolume.php | 2 +- .../Commands/FetchCollectionBannerBatchTest.php | 6 +++--- .../App/Console/Commands/FetchCollectionBannerTest.php | 4 ++-- .../Console/Commands/FetchCollectionFloorPriceTest.php | 10 +++++----- .../Console/Commands/FetchCollectionMetadataTest.php | 2 +- .../Commands/FetchCollectionOpenseaSlugTest.php | 4 ++-- .../App/Console/Commands/FetchCollectionOwnersTest.php | 4 ++-- .../App/Console/Commands/FetchCollectionTraitsTest.php | 4 ++-- .../App/Console/Commands/FetchCollectionVolumeTest.php | 4 ++-- 16 files changed, 28 insertions(+), 28 deletions(-) diff --git a/app/Console/Commands/FetchCollectionBanner.php b/app/Console/Commands/FetchCollectionBanner.php index dc5f654b9..178a54e95 100644 --- a/app/Console/Commands/FetchCollectionBanner.php +++ b/app/Console/Commands/FetchCollectionBanner.php @@ -16,7 +16,7 @@ class FetchCollectionBanner extends Command * * @var string */ - protected $signature = 'nfts:fetch-collection-banner {--collection-id=}'; + protected $signature = 'collections:fetch-banner {--collection-id=}'; /** * The console command description. @@ -31,7 +31,7 @@ class FetchCollectionBanner extends Command public function handle(): int { if (empty($this->option('collection-id'))) { - $this->error('The `collection-id` is missing. Please either set `collection-id` flag or use `nfts:fetch-collection-banner-batch` command to fetch banner of multiple collections'); + $this->error('The `collection-id` is missing. Please either set `collection-id` flag or use `collections:fetch-banner-batch` command to fetch banner of multiple collections'); return Command::INVALID; } diff --git a/app/Console/Commands/FetchCollectionBannerBatch.php b/app/Console/Commands/FetchCollectionBannerBatch.php index 2ac2990e1..7fe409114 100644 --- a/app/Console/Commands/FetchCollectionBannerBatch.php +++ b/app/Console/Commands/FetchCollectionBannerBatch.php @@ -19,7 +19,7 @@ class FetchCollectionBannerBatch extends Command * * @var string */ - protected $signature = 'nfts:fetch-collection-banner-batch {--missing-only}'; + protected $signature = 'collections:fetch-banner-batch {--missing-only}'; /** * The console command description. diff --git a/app/Console/Commands/FetchCollectionFloorPrice.php b/app/Console/Commands/FetchCollectionFloorPrice.php index 783a77bc9..cfcb2c093 100644 --- a/app/Console/Commands/FetchCollectionFloorPrice.php +++ b/app/Console/Commands/FetchCollectionFloorPrice.php @@ -16,7 +16,7 @@ class FetchCollectionFloorPrice extends Command * * @var string */ - protected $signature = 'nfts:fetch-collection-floor-price {--collection-id=}'; + protected $signature = 'collections:fetch-floor-price {--collection-id=}'; /** * The console command description. diff --git a/app/Console/Commands/FetchCollectionMetadata.php b/app/Console/Commands/FetchCollectionMetadata.php index 846f5f0b3..4eb0d9eea 100644 --- a/app/Console/Commands/FetchCollectionMetadata.php +++ b/app/Console/Commands/FetchCollectionMetadata.php @@ -25,7 +25,7 @@ class FetchCollectionMetadata extends Command * * @var string */ - protected $signature = 'nfts:fetch-collection-metadata'; + protected $signature = 'collections:fetch-metadata'; /** * The console command description. diff --git a/app/Console/Commands/FetchCollectionOpenseaSlug.php b/app/Console/Commands/FetchCollectionOpenseaSlug.php index 86a3dd3eb..dfa9dc419 100644 --- a/app/Console/Commands/FetchCollectionOpenseaSlug.php +++ b/app/Console/Commands/FetchCollectionOpenseaSlug.php @@ -16,7 +16,7 @@ class FetchCollectionOpenseaSlug extends Command * * @var string */ - protected $signature = 'nfts:fetch-collection-opensea-slug {--collection-id=}'; + protected $signature = 'collections:fetch-opensea-slug {--collection-id=}'; /** * The console command description. diff --git a/app/Console/Commands/FetchCollectionOwners.php b/app/Console/Commands/FetchCollectionOwners.php index 038e9540b..e826a7163 100644 --- a/app/Console/Commands/FetchCollectionOwners.php +++ b/app/Console/Commands/FetchCollectionOwners.php @@ -16,7 +16,7 @@ class FetchCollectionOwners extends Command * * @var string */ - protected $signature = 'nfts:fetch-collection-owners {--collection-id=}'; + protected $signature = 'collections:fetch-owners {--collection-id=}'; /** * The console command description. diff --git a/app/Console/Commands/FetchCollectionTraits.php b/app/Console/Commands/FetchCollectionTraits.php index 9f21f242f..c6e881584 100644 --- a/app/Console/Commands/FetchCollectionTraits.php +++ b/app/Console/Commands/FetchCollectionTraits.php @@ -16,7 +16,7 @@ class FetchCollectionTraits extends Command * * @var string */ - protected $signature = 'nfts:fetch-collection-traits {--collection-id}'; + protected $signature = 'collections:fetch-traits {--collection-id}'; /** * The console command description. diff --git a/app/Console/Commands/FetchCollectionVolume.php b/app/Console/Commands/FetchCollectionVolume.php index 245e79d7a..8a9d91e30 100644 --- a/app/Console/Commands/FetchCollectionVolume.php +++ b/app/Console/Commands/FetchCollectionVolume.php @@ -16,7 +16,7 @@ class FetchCollectionVolume extends Command * * @var string */ - protected $signature = 'nfts:fetch-collection-volume {--collection-id=}'; + protected $signature = 'collections:fetch-volume {--collection-id=}'; /** * The console command description. diff --git a/tests/App/Console/Commands/FetchCollectionBannerBatchTest.php b/tests/App/Console/Commands/FetchCollectionBannerBatchTest.php index 8e683dfa8..f1105b4b0 100644 --- a/tests/App/Console/Commands/FetchCollectionBannerBatchTest.php +++ b/tests/App/Console/Commands/FetchCollectionBannerBatchTest.php @@ -25,7 +25,7 @@ Bus::assertDispatchedTimes(FetchCollectionBannerBatch::class, 0); - $this->artisan('nfts:fetch-collection-banner-batch', [ + $this->artisan('collections:fetch-banner-batch', [ '--missing-only' => true, ]); @@ -46,7 +46,7 @@ Bus::assertDispatchedTimes(FetchCollectionBannerBatch::class, 0); - $this->artisan('nfts:fetch-collection-banner-batch'); + $this->artisan('collections:fetch-banner-batch'); Bus::assertDispatched(FetchCollectionBannerBatch::class, function ($job) use ($collections) { return ! in_array($collections->first()->address, $job->collectionAddresses); @@ -62,7 +62,7 @@ Bus::assertDispatchedTimes(FetchCollectionBannerBatch::class, 0); - $this->artisan('nfts:fetch-collection-banner-batch'); + $this->artisan('collections:fetch-banner-batch'); Bus::assertDispatchedTimes(FetchCollectionBannerBatch::class, 2); }); diff --git a/tests/App/Console/Commands/FetchCollectionBannerTest.php b/tests/App/Console/Commands/FetchCollectionBannerTest.php index 7a4554175..4ac99588b 100644 --- a/tests/App/Console/Commands/FetchCollectionBannerTest.php +++ b/tests/App/Console/Commands/FetchCollectionBannerTest.php @@ -14,7 +14,7 @@ Bus::assertDispatchedTimes(FetchCollectionBanner::class, 0); - $this->artisan('nfts:fetch-collection-banner', [ + $this->artisan('collections:fetch-banner', [ '--collection-id' => $collection->id, ]); @@ -24,7 +24,7 @@ it('should return error if `collection-id` flag is missing', function () { Bus::fake(); - $response = $this->artisan('nfts:fetch-collection-banner'); + $response = $this->artisan('collections:fetch-banner'); $response->assertExitCode(Command::INVALID); diff --git a/tests/App/Console/Commands/FetchCollectionFloorPriceTest.php b/tests/App/Console/Commands/FetchCollectionFloorPriceTest.php index c27b4fcea..2943b483b 100644 --- a/tests/App/Console/Commands/FetchCollectionFloorPriceTest.php +++ b/tests/App/Console/Commands/FetchCollectionFloorPriceTest.php @@ -15,7 +15,7 @@ Bus::assertDispatchedTimes(FetchCollectionFloorPrice::class, 0); - $this->artisan('nfts:fetch-collection-floor-price'); + $this->artisan('collections:fetch-floor-price'); Bus::assertDispatchedTimes(FetchCollectionFloorPrice::class, 3); }); @@ -29,7 +29,7 @@ Bus::assertDispatchedTimes(FetchCollectionFloorPrice::class, 0); - $this->artisan('nfts:fetch-collection-floor-price'); + $this->artisan('collections:fetch-floor-price'); Bus::assertDispatchedTimes(FetchCollectionFloorPrice::class, 3); @@ -50,7 +50,7 @@ Bus::assertDispatchedTimes(FetchCollectionFloorPrice::class, 0); - $this->artisan('nfts:fetch-collection-floor-price'); + $this->artisan('collections:fetch-floor-price'); Bus::assertDispatchedTimes(FetchCollectionFloorPrice::class, 2); }); @@ -62,7 +62,7 @@ Bus::assertDispatchedTimes(FetchCollectionFloorPrice::class, 0); - $this->artisan('nfts:fetch-collection-floor-price', [ + $this->artisan('collections:fetch-floor-price', [ '--collection-id' => $collection->id, ]); @@ -81,7 +81,7 @@ Bus::assertDispatchedTimes(FetchCollectionFloorPrice::class, 0); - $this->artisan('nfts:fetch-collection-floor-price', [ + $this->artisan('collections:fetch-floor-price', [ '--collection-id' => $collection->id, ]); diff --git a/tests/App/Console/Commands/FetchCollectionMetadataTest.php b/tests/App/Console/Commands/FetchCollectionMetadataTest.php index a5e27c6c5..71c035e5f 100644 --- a/tests/App/Console/Commands/FetchCollectionMetadataTest.php +++ b/tests/App/Console/Commands/FetchCollectionMetadataTest.php @@ -16,7 +16,7 @@ Bus::assertDispatchedTimes(FetchCollectionMetadataJob::class, 0); - $this->artisan('nfts:fetch-collection-metadata'); + $this->artisan('collections:fetch-metadata'); Bus::assertDispatchedTimes(FetchCollectionMetadataJob::class, 1); }); diff --git a/tests/App/Console/Commands/FetchCollectionOpenseaSlugTest.php b/tests/App/Console/Commands/FetchCollectionOpenseaSlugTest.php index 605633f02..eb64e701e 100644 --- a/tests/App/Console/Commands/FetchCollectionOpenseaSlugTest.php +++ b/tests/App/Console/Commands/FetchCollectionOpenseaSlugTest.php @@ -33,7 +33,7 @@ Bus::assertDispatchedTimes(FetchCollectionOpenseaSlug::class, 0); - $this->artisan('nfts:fetch-collection-opensea-slug'); + $this->artisan('collections:fetch-opensea-slug'); Bus::assertDispatchedTimes(FetchCollectionOpenseaSlug::class, 2); }); @@ -45,7 +45,7 @@ Bus::assertDispatchedTimes(FetchCollectionOpenseaSlug::class, 0); - $this->artisan('nfts:fetch-collection-opensea-slug', [ + $this->artisan('collections:fetch-opensea-slug', [ '--collection-id' => $collection->id, ]); diff --git a/tests/App/Console/Commands/FetchCollectionOwnersTest.php b/tests/App/Console/Commands/FetchCollectionOwnersTest.php index 1f1727a65..983551539 100644 --- a/tests/App/Console/Commands/FetchCollectionOwnersTest.php +++ b/tests/App/Console/Commands/FetchCollectionOwnersTest.php @@ -13,7 +13,7 @@ Bus::assertDispatchedTimes(FetchCollectionOwners::class, 0); - $this->artisan('nfts:fetch-collection-owners'); + $this->artisan('collections:fetch-owners'); Bus::assertDispatchedTimes(FetchCollectionOwners::class, 3); }); @@ -25,7 +25,7 @@ Bus::assertDispatchedTimes(FetchCollectionOwners::class, 0); - $this->artisan('nfts:fetch-collection-owners', [ + $this->artisan('collections:fetch-owners', [ '--collection-id' => $collection->id, ]); diff --git a/tests/App/Console/Commands/FetchCollectionTraitsTest.php b/tests/App/Console/Commands/FetchCollectionTraitsTest.php index 0a34ec074..002961dac 100644 --- a/tests/App/Console/Commands/FetchCollectionTraitsTest.php +++ b/tests/App/Console/Commands/FetchCollectionTraitsTest.php @@ -13,7 +13,7 @@ Bus::assertDispatchedTimes(FetchCollectionTraits::class, 0); - $this->artisan('nfts:fetch-collection-traits'); + $this->artisan('collections:fetch-traits'); Bus::assertDispatchedTimes(FetchCollectionTraits::class, 3); }); @@ -25,7 +25,7 @@ Bus::assertDispatchedTimes(FetchCollectionTraits::class, 0); - $this->artisan('nfts:fetch-collection-traits', [ + $this->artisan('collections:fetch-traits', [ '--collection-id' => $collection->id, ]); diff --git a/tests/App/Console/Commands/FetchCollectionVolumeTest.php b/tests/App/Console/Commands/FetchCollectionVolumeTest.php index a855e8525..c7eed8045 100644 --- a/tests/App/Console/Commands/FetchCollectionVolumeTest.php +++ b/tests/App/Console/Commands/FetchCollectionVolumeTest.php @@ -13,7 +13,7 @@ Bus::assertDispatchedTimes(FetchCollectionVolume::class, 0); - $this->artisan('nfts:fetch-collection-volume'); + $this->artisan('collections:fetch-volume'); Bus::assertDispatchedTimes(FetchCollectionVolume::class, 3); }); @@ -25,7 +25,7 @@ Bus::assertDispatchedTimes(FetchCollectionVolume::class, 0); - $this->artisan('nfts:fetch-collection-volume', [ + $this->artisan('collections:fetch-volume', [ '--collection-id' => $collection->id, ]); From 06101365bfe2f968fbe341458916d16854286743 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josip=20Crnkovi=C4=87?= Date: Thu, 14 Dec 2023 08:29:27 +0100 Subject: [PATCH 046/145] refactor: add voting to collections (#553) --- .../Collections/VotableCollectionData.php | 4 + .../Controllers/CollectionVoteController.php | 2 + app/Models/CollectionVote.php | 19 +- app/Models/Wallet.php | 8 + .../CollectionVoting/NominationDialog.tsx | 179 +++++++++++------- .../CollectionVoting/VoteCollections.test.tsx | 13 +- .../CollectionVoting/VoteCollections.tsx | 169 +++++++++++------ .../CollectionVoting/VoteCountdown.tsx | 12 +- .../CollectionsVoteReceivedModal.tsx | 12 +- resources/js/Pages/Collections/Index.tsx | 41 ---- .../VotableCollectionDataFactory.ts | 2 + resources/types/generated.d.ts | 2 + routes/web.php | 4 +- .../CollectionVoteControllerTest.php | 25 ++- 14 files changed, 304 insertions(+), 188 deletions(-) diff --git a/app/Data/Collections/VotableCollectionData.php b/app/Data/Collections/VotableCollectionData.php index 303f0c6b4..de89d0433 100644 --- a/app/Data/Collections/VotableCollectionData.php +++ b/app/Data/Collections/VotableCollectionData.php @@ -18,6 +18,7 @@ public function __construct( public int $id, public ?int $rank, public string $name, + public string $address, #[WithTransformer(IpfsGatewayUrlTransformer::class)] public ?string $image, public ?int $votes, @@ -30,6 +31,7 @@ public function __construct( public string $volumeCurrency, public int $volumeDecimals, public int $nftsCount, + public ?string $twitterUsername, ) { } @@ -42,6 +44,7 @@ public static function fromModel(Collection $collection, CurrencyCode $currency, id: $collection->id, rank: $collection->rank, name: $collection->name, + address: $collection->address, image: $collection->extra_attributes->get('image'), votes: $showVotes ? $collection->votes_count : null, floorPrice: $collection->floor_price, @@ -54,6 +57,7 @@ public static function fromModel(Collection $collection, CurrencyCode $currency, volumeCurrency: 'ETH', volumeDecimals: 18, nftsCount: $collection->nfts_count, + twitterUsername: $collection->twitter(), ); } } diff --git a/app/Http/Controllers/CollectionVoteController.php b/app/Http/Controllers/CollectionVoteController.php index 661ef1fa8..3d15393d0 100644 --- a/app/Http/Controllers/CollectionVoteController.php +++ b/app/Http/Controllers/CollectionVoteController.php @@ -12,6 +12,8 @@ class CollectionVoteController extends Controller { public function store(Request $request, Collection $collection): RedirectResponse { + abort_if($request->wallet()->votes()->where('voted_at', '>=', now()->subMonth())->exists(), 403); + $collection->addVote($request->wallet()); return back()->toast(trans('pages.collections.collection_of_the_month.vote_success'), type: 'success'); diff --git a/app/Models/CollectionVote.php b/app/Models/CollectionVote.php index 7573e533e..3cbd056dd 100644 --- a/app/Models/CollectionVote.php +++ b/app/Models/CollectionVote.php @@ -8,6 +8,7 @@ use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\Relations\BelongsTo; class CollectionVote extends Model { @@ -24,11 +25,27 @@ class CollectionVote extends Model 'voted_at' => 'datetime', ]; + /** + * @return BelongsTo + */ + public function wallet(): BelongsTo + { + return $this->belongsTo(Wallet::class); + } + + /** + * @return BelongsTo + */ + public function collection(): BelongsTo + { + return $this->belongsTo(Collection::class); + } + /** * @param Builder $query * @return Builder */ - public function scopeinCurrentMonth(Builder $query): Builder + public function scopeInCurrentMonth(Builder $query): Builder { return $query->whereBetween('voted_at', [ Carbon::now()->startOfMonth(), diff --git a/app/Models/Wallet.php b/app/Models/Wallet.php index 92c742e4f..6615c513a 100644 --- a/app/Models/Wallet.php +++ b/app/Models/Wallet.php @@ -63,6 +63,14 @@ public static function findByAddress(string $address): ?self return Wallet::where('address', $address)->first(); } + /** + * @return HasMany + */ + public function votes(): HasMany + { + return $this->hasMany(CollectionVote::class); + } + /** * @return HasOne */ diff --git a/resources/js/Pages/Collections/Components/CollectionVoting/NominationDialog.tsx b/resources/js/Pages/Collections/Components/CollectionVoting/NominationDialog.tsx index 79455f62c..5cb7ac698 100644 --- a/resources/js/Pages/Collections/Components/CollectionVoting/NominationDialog.tsx +++ b/resources/js/Pages/Collections/Components/CollectionVoting/NominationDialog.tsx @@ -1,5 +1,6 @@ +import { router } from "@inertiajs/core"; import axios from "axios"; -import React, { useEffect, useState } from "react"; +import React, { useEffect, useMemo, useState } from "react"; import { useTranslation } from "react-i18next"; import { NomineeCollections } from "./NomineeCollections"; import { Button } from "@/Components/Buttons"; @@ -8,15 +9,20 @@ import { EmptyBlock } from "@/Components/EmptyBlock/EmptyBlock"; import { SearchInput } from "@/Components/Form/SearchInput"; import { LoadingBlock } from "@/Components/LoadingBlock/LoadingBlock"; import { useDebounce } from "@/Hooks/useDebounce"; +import { CollectionsVoteReceivedModal } from "@/Pages/Collections/Components/CollectionsVoteReceivedModal"; const NominationDialogFooter = ({ setIsOpen, selectedCollection, setSelectedCollection, + onSubmit, + isDisabled, }: { setIsOpen: (isOpen: boolean) => void; selectedCollection: number; setSelectedCollection: (selectedCollection: number) => void; + onSubmit: () => void; + isDisabled: boolean; }): JSX.Element => { const { t } = useTranslation(); @@ -36,10 +42,8 @@ const NominationDialogFooter = ({ - - - - - { - setRecentlyVotedCollection(undefined); - }} - /> ); }; diff --git a/resources/js/Tests/Factories/Collections/VotableCollectionDataFactory.ts b/resources/js/Tests/Factories/Collections/VotableCollectionDataFactory.ts index 560fd4dfc..cc0e5f0eb 100644 --- a/resources/js/Tests/Factories/Collections/VotableCollectionDataFactory.ts +++ b/resources/js/Tests/Factories/Collections/VotableCollectionDataFactory.ts @@ -7,6 +7,7 @@ export default class VotableCollectionDataFactory extends ModelFactoryname('collection-reports.create')->middleware('throttle:collection:reports'); - Route::post('{collection:address}/vote', [ - CollectionVoteController::class, 'store', - ])->name('collection-votes.create'); + Route::post('{collection}/vote', [CollectionVoteController::class, 'store'])->name('collection-votes.create'); }); Route::group(['prefix' => 'nfts', 'middleware' => 'signed_wallet'], function () { diff --git a/tests/App/Http/Controllers/CollectionVoteControllerTest.php b/tests/App/Http/Controllers/CollectionVoteControllerTest.php index 2145f9bae..7a13a0c74 100644 --- a/tests/App/Http/Controllers/CollectionVoteControllerTest.php +++ b/tests/App/Http/Controllers/CollectionVoteControllerTest.php @@ -3,6 +3,7 @@ declare(strict_types=1); use App\Models\Collection; +use App\Models\CollectionVote; use App\Support\Facades\Signature; describe('user without a signed wallet', function () { @@ -33,11 +34,31 @@ $user = createUser(); $collection = Collection::factory()->create(); - expect($collection->votes()->count())->toBe(0); + CollectionVote::factory()->for($collection)->for($user->wallet)->create([ + 'voted_at' => now()->subMonth()->subDays(1), + ]); + + expect($collection->votes()->count())->toBe(1); $this->actingAs($user)->post(route('collection-votes.create', $collection)); - expect($collection->votes()->count())->toBe(1); + expect($collection->votes()->count())->toBe(2); }); + it('cannot vote if already voted for a collection in the last month', function () { + $user = createUser(); + $collection = Collection::factory()->create(); + + CollectionVote::factory()->for($collection)->for($user->wallet)->create([ + 'voted_at' => now()->subDays(3), + ]); + + expect($collection->votes()->count())->toBe(1); + + $this->actingAs($user) + ->post(route('collection-votes.create', $collection)) + ->assertStatus(403); + + expect($collection->votes()->count())->toBe(1); + }); }); From 8d4d25b65d0d5a29a1215f3a4bafd9a925fc9e43 Mon Sep 17 00:00:00 2001 From: ItsANameToo <35610748+ItsANameToo@users.noreply.github.com> Date: Thu, 14 Dec 2023 08:41:39 +0100 Subject: [PATCH 047/145] chore: update JavaScript dependencies (#549) --- package.json | 44 +- pnpm-lock.yaml | 1314 ++++++++--------- .../Tokens/TokenPriceChart.helpers.ts | 6 +- 3 files changed, 671 insertions(+), 693 deletions(-) diff --git a/package.json b/package.json index 666c062ea..f753a0b82 100644 --- a/package.json +++ b/package.json @@ -30,15 +30,15 @@ "@inertiajs/core": "^1.0.14", "@inertiajs/react": "^1.0.14", "@radix-ui/react-accordion": "^1.1.2", - "@storybook/addon-actions": "^7.6.3", - "@storybook/addon-essentials": "^7.6.3", - "@storybook/addon-interactions": "^7.6.3", - "@storybook/addon-links": "^7.6.3", - "@storybook/blocks": "^7.6.3", - "@storybook/react": "^7.6.3", - "@storybook/react-vite": "^7.6.3", + "@storybook/addon-actions": "^7.6.4", + "@storybook/addon-essentials": "^7.6.4", + "@storybook/addon-interactions": "^7.6.4", + "@storybook/addon-links": "^7.6.4", + "@storybook/blocks": "^7.6.4", + "@storybook/react": "^7.6.4", + "@storybook/react-vite": "^7.6.4", "@storybook/testing-library": "^0.2.2", - "@storybook/types": "^7.6.3", + "@storybook/types": "^7.6.4", "@tailwindcss/forms": "^0.5.7", "@testing-library/dom": "^9.3.3", "@testing-library/react": "^14.1.2", @@ -49,23 +49,23 @@ "@types/file-saver": "^2.0.7", "@types/lodash": "^4.14.202", "@types/lru-cache": "^7.10.10", - "@types/node": "^18.19.1", - "@types/react": "^18.2.41", + "@types/node": "^18.19.3", + "@types/react": "^18.2.43", "@types/react-dom": "^18.2.17", "@types/react-table": "^7.7.18", "@types/sortablejs": "^1.15.7", "@types/testing-library__jest-dom": "^6.0.0", "@types/ziggy-js": "^1.3.3", - "@typescript-eslint/eslint-plugin": "^6.13.1", - "@typescript-eslint/parser": "^6.13.1", + "@typescript-eslint/eslint-plugin": "^6.13.2", + "@typescript-eslint/parser": "^6.13.2", "@vavt/vite-plugin-import-markdown": "^1.0.0", - "@vitejs/plugin-react": "^4.2.0", + "@vitejs/plugin-react": "^4.2.1", "@vitest/coverage-istanbul": "^0.34.6", "autoprefixer": "^10.4.16", "axios": "^1.6.2", "babel-loader": "^8.3.0", "bignumber.js": "^9.1.2", - "chart.js": "^4.4.0", + "chart.js": "^4.4.1", "chartjs-adapter-date-fns": "^3.0.0", "chromatic": "^6.24.1", "date-fns": "^2.30.0", @@ -94,7 +94,7 @@ "php-parser": "^3.1.5", "postcss": "^8.4.32", "prettier": "^3.1.0", - "prettier-plugin-tailwindcss": "^0.5.7", + "prettier-plugin-tailwindcss": "^0.5.9", "react": "^18.2.0", "react-chartjs-2": "^5.2.0", "react-dom": "^18.2.0", @@ -105,11 +105,11 @@ "storybook": "next", "storybook-react-i18next": "^2.0.9", "swiper": "^9.4.1", - "tailwindcss": "^3.3.5", + "tailwindcss": "^3.3.6", "ts-loader": "^9.5.1", - "typescript": "^5.3.2", + "typescript": "^5.3.3", "vanilla-cookieconsent": "^2.9.2", - "vite": "^4.5.0", + "vite": "^4.5.1", "vite-plugin-svgr": "^2.4.0", "vite-plugin-watch": "^0.2.0", "vitest": "^0.34.6" @@ -119,7 +119,7 @@ "@ardenthq/sdk-intl": "^1.2.7", "@metamask/providers": "^10.2.1", "@popperjs/core": "^2.11.8", - "@storybook/addon-docs": "^7.6.3", + "@storybook/addon-docs": "^7.6.4", "@tanstack/react-query": "^4.36.1", "@testing-library/jest-dom": "^6.1.5", "@types/string-hash": "^1.1.3", @@ -127,14 +127,14 @@ "assert": "^2.1.0", "body-scroll-lock": "4.0.0-beta.0", "browser-fs-access": "^0.35.0", - "chart.js": "^4.4.0", + "chart.js": "^4.4.1", "classnames": "^2.3.2", "ethers": "^5.7.2", "fast-sort": "^3.4.0", "file-saver": "^2.0.5", "i18next": "^22.5.1", "lru-cache": "^10.1.0", - "puppeteer": "^21.5.2", + "puppeteer": "^21.6.0", "react-chartjs-2": "^5.2.0", "react-i18next": "^12.3.1", "react-in-viewport": "1.0.0-alpha.30", @@ -157,6 +157,6 @@ "tippy.js": "^6.3.7", "unified": "^11.0.4", "unist-util-visit": "^5.0.0", - "wavesurfer.js": "^7.4.12" + "wavesurfer.js": "^7.5.1" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 918f30792..6d7a9e113 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -18,8 +18,8 @@ dependencies: specifier: ^2.11.8 version: 2.11.8 '@storybook/addon-docs': - specifier: ^7.6.3 - version: 7.6.3(@types/react-dom@18.2.17)(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0) + specifier: ^7.6.4 + version: 7.6.4(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) '@tanstack/react-query': specifier: ^4.36.1 version: 4.36.1(react-dom@18.2.0)(react@18.2.0) @@ -42,8 +42,8 @@ dependencies: specifier: ^0.35.0 version: 0.35.0 chart.js: - specifier: ^4.4.0 - version: 4.4.0 + specifier: ^4.4.1 + version: 4.4.1 classnames: specifier: ^2.3.2 version: 2.3.2 @@ -63,11 +63,11 @@ dependencies: specifier: ^10.1.0 version: 10.1.0 puppeteer: - specifier: ^21.5.2 - version: 21.5.2(typescript@5.3.2) + specifier: ^21.6.0 + version: 21.6.0(typescript@5.3.3) react-chartjs-2: specifier: ^5.2.0 - version: 5.2.0(chart.js@4.4.0)(react@18.2.0) + version: 5.2.0(chart.js@4.4.1)(react@18.2.0) react-i18next: specifier: ^12.3.1 version: 12.3.1(i18next@22.5.1)(react-dom@18.2.0)(react@18.2.0) @@ -82,7 +82,7 @@ dependencies: version: 3.3.1(react@18.2.0) react-markdown: specifier: ^9.0.1 - version: 9.0.1(@types/react@18.2.41)(react@18.2.0) + version: 9.0.1(@types/react@18.2.43)(react@18.2.0) react-popper: specifier: ^2.3.0 version: 2.3.0(@popperjs/core@2.11.8)(react-dom@18.2.0)(react@18.2.0) @@ -132,8 +132,8 @@ dependencies: specifier: ^5.0.0 version: 5.0.0 wavesurfer.js: - specifier: ^7.4.12 - version: 7.4.12 + specifier: ^7.5.1 + version: 7.5.1 devDependencies: '@babel/core': @@ -156,37 +156,37 @@ devDependencies: version: 1.0.14(react@18.2.0) '@radix-ui/react-accordion': specifier: ^1.1.2 - version: 1.1.2(@types/react-dom@18.2.17)(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0) + version: 1.1.2(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) '@storybook/addon-actions': - specifier: ^7.6.3 - version: 7.6.3 + specifier: ^7.6.4 + version: 7.6.4 '@storybook/addon-essentials': - specifier: ^7.6.3 - version: 7.6.3(@types/react-dom@18.2.17)(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0) + specifier: ^7.6.4 + version: 7.6.4(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) '@storybook/addon-interactions': - specifier: ^7.6.3 - version: 7.6.3 + specifier: ^7.6.4 + version: 7.6.4 '@storybook/addon-links': - specifier: ^7.6.3 - version: 7.6.3(react@18.2.0) + specifier: ^7.6.4 + version: 7.6.4(react@18.2.0) '@storybook/blocks': - specifier: ^7.6.3 - version: 7.6.3(@types/react-dom@18.2.17)(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0) + specifier: ^7.6.4 + version: 7.6.4(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) '@storybook/react': - specifier: ^7.6.3 - version: 7.6.3(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2) + specifier: ^7.6.4 + version: 7.6.4(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) '@storybook/react-vite': - specifier: ^7.6.3 - version: 7.6.3(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2)(vite@4.5.0) + specifier: ^7.6.4 + version: 7.6.4(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3)(vite@4.5.1) '@storybook/testing-library': specifier: ^0.2.2 version: 0.2.2 '@storybook/types': - specifier: ^7.6.3 - version: 7.6.3 + specifier: ^7.6.4 + version: 7.6.4 '@tailwindcss/forms': specifier: ^0.5.7 - version: 0.5.7(tailwindcss@3.3.5) + version: 0.5.7(tailwindcss@3.3.6) '@testing-library/dom': specifier: ^9.3.3 version: 9.3.3 @@ -195,7 +195,7 @@ devDependencies: version: 14.1.2(react-dom@18.2.0)(react@18.2.0) '@testing-library/react-hooks': specifier: ^8.0.1 - version: 8.0.1(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0) + version: 8.0.1(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) '@testing-library/user-event': specifier: ^14.5.1 version: 14.5.1(@testing-library/dom@9.3.3) @@ -215,11 +215,11 @@ devDependencies: specifier: ^7.10.10 version: 7.10.10 '@types/node': - specifier: ^18.19.1 - version: 18.19.1 + specifier: ^18.19.3 + version: 18.19.3 '@types/react': - specifier: ^18.2.41 - version: 18.2.41 + specifier: ^18.2.43 + version: 18.2.43 '@types/react-dom': specifier: ^18.2.17 version: 18.2.17 @@ -236,17 +236,17 @@ devDependencies: specifier: ^1.3.3 version: 1.3.3 '@typescript-eslint/eslint-plugin': - specifier: ^6.13.1 - version: 6.13.1(@typescript-eslint/parser@6.13.1)(eslint@8.55.0)(typescript@5.3.2) + specifier: ^6.13.2 + version: 6.13.2(@typescript-eslint/parser@6.13.2)(eslint@8.55.0)(typescript@5.3.3) '@typescript-eslint/parser': - specifier: ^6.13.1 - version: 6.13.1(eslint@8.55.0)(typescript@5.3.2) + specifier: ^6.13.2 + version: 6.13.2(eslint@8.55.0)(typescript@5.3.3) '@vavt/vite-plugin-import-markdown': specifier: ^1.0.0 - version: 1.0.0(vite@4.5.0) + version: 1.0.0(vite@4.5.1) '@vitejs/plugin-react': - specifier: ^4.2.0 - version: 4.2.0(vite@4.5.0) + specifier: ^4.2.1 + version: 4.2.1(vite@4.5.1) '@vitest/coverage-istanbul': specifier: ^0.34.6 version: 0.34.6(vitest@0.34.6) @@ -264,7 +264,7 @@ devDependencies: version: 9.1.2 chartjs-adapter-date-fns: specifier: ^3.0.0 - version: 3.0.0(chart.js@4.4.0)(date-fns@2.30.0) + version: 3.0.0(chart.js@4.4.1)(date-fns@2.30.0) chromatic: specifier: ^6.24.1 version: 6.24.1 @@ -279,10 +279,10 @@ devDependencies: version: 9.1.0(eslint@8.55.0) eslint-config-standard-with-typescript: specifier: ^39.1.1 - version: 39.1.1(@typescript-eslint/eslint-plugin@6.13.1)(eslint-plugin-import@2.29.0)(eslint-plugin-n@16.3.1)(eslint-plugin-promise@6.1.1)(eslint@8.55.0)(typescript@5.3.2) + version: 39.1.1(@typescript-eslint/eslint-plugin@6.13.2)(eslint-plugin-import@2.29.0)(eslint-plugin-n@16.3.1)(eslint-plugin-promise@6.1.1)(eslint@8.55.0)(typescript@5.3.3) eslint-plugin-import: specifier: ^2.29.0 - version: 2.29.0(@typescript-eslint/parser@6.13.1)(eslint@8.55.0) + version: 2.29.0(@typescript-eslint/parser@6.13.2)(eslint@8.55.0) eslint-plugin-n: specifier: ^16.3.1 version: 16.3.1(eslint@8.55.0) @@ -303,13 +303,13 @@ devDependencies: version: 0.23.0(eslint@8.55.0) eslint-plugin-storybook: specifier: ^0.6.15 - version: 0.6.15(eslint@8.55.0)(typescript@5.3.2) + version: 0.6.15(eslint@8.55.0)(typescript@5.3.3) eslint-plugin-unicorn: specifier: ^48.0.1 version: 48.0.1(eslint@8.55.0) eslint-plugin-unused-imports: specifier: ^3.0.0 - version: 3.0.0(@typescript-eslint/eslint-plugin@6.13.1)(eslint@8.55.0) + version: 3.0.0(@typescript-eslint/eslint-plugin@6.13.2)(eslint@8.55.0) husky: specifier: ^8.0.3 version: 8.0.3 @@ -324,7 +324,7 @@ devDependencies: version: 21.1.2 laravel-vite-plugin: specifier: ^0.8.1 - version: 0.8.1(vite@4.5.0) + version: 0.8.1(vite@4.5.1) lodash: specifier: ^4.17.21 version: 4.17.21 @@ -336,7 +336,7 @@ devDependencies: version: 3.0.5 msw: specifier: ^1.3.2 - version: 1.3.2(typescript@5.3.2) + version: 1.3.2(typescript@5.3.3) php-parser: specifier: ^3.1.5 version: 3.1.5 @@ -347,8 +347,8 @@ devDependencies: specifier: ^3.1.0 version: 3.1.0 prettier-plugin-tailwindcss: - specifier: ^0.5.7 - version: 0.5.7(prettier@3.1.0) + specifier: ^0.5.9 + version: 0.5.9(prettier@3.1.0) react: specifier: ^18.2.0 version: 18.2.0 @@ -372,28 +372,28 @@ devDependencies: version: 7.6.0-beta.2 storybook-react-i18next: specifier: ^2.0.9 - version: 2.0.9(@storybook/components@7.5.3)(@storybook/manager-api@7.5.3)(@storybook/preview-api@7.5.3)(@storybook/types@7.6.3)(i18next-browser-languagedetector@7.2.0)(i18next-http-backend@2.4.2)(i18next@22.5.1)(react-dom@18.2.0)(react-i18next@12.3.1)(react@18.2.0) + version: 2.0.9(@storybook/components@7.6.3)(@storybook/manager-api@7.6.3)(@storybook/preview-api@7.6.3)(@storybook/types@7.6.4)(i18next-browser-languagedetector@7.2.0)(i18next-http-backend@2.4.2)(i18next@22.5.1)(react-dom@18.2.0)(react-i18next@12.3.1)(react@18.2.0) swiper: specifier: ^9.4.1 version: 9.4.1 tailwindcss: - specifier: ^3.3.5 - version: 3.3.5 + specifier: ^3.3.6 + version: 3.3.6 ts-loader: specifier: ^9.5.1 - version: 9.5.1(typescript@5.3.2)(webpack@5.88.2) + version: 9.5.1(typescript@5.3.3)(webpack@5.88.2) typescript: - specifier: ^5.3.2 - version: 5.3.2 + specifier: ^5.3.3 + version: 5.3.3 vanilla-cookieconsent: specifier: ^2.9.2 version: 2.9.2 vite: - specifier: ^4.5.0 - version: 4.5.0(@types/node@18.19.1) + specifier: ^4.5.1 + version: 4.5.1(@types/node@18.19.3) vite-plugin-svgr: specifier: ^2.4.0 - version: 2.4.0(vite@4.5.0) + version: 2.4.0(vite@4.5.1) vite-plugin-watch: specifier: ^0.2.0 version: 0.2.0 @@ -502,15 +502,6 @@ packages: transitivePeerDependencies: - supports-color - /@babel/generator@7.23.3: - resolution: {integrity: sha512-keeZWAV4LU3tW0qRi19HRpabC/ilM0HRBBzf9/k8FFiG4KVpiv0FIy4hHfLfFQZNhziCTPTmd59zoyv6DNISzg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.23.3 - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.19 - jsesc: 2.5.2 - /@babel/generator@7.23.5: resolution: {integrity: sha512-BPssCHrBD+0YrxviOa3QzpqwhNIXKEtOa2jQrm4FlmkC2apYgRnQcmPWiGZDlGxiNtltnUFolMe8497Esry+jA==} engines: {node: '>=6.9.0'} @@ -524,14 +515,14 @@ packages: resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.3 + '@babel/types': 7.23.5 dev: true /@babel/helper-builder-binary-assignment-operator-visitor@7.22.15: resolution: {integrity: sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.3 + '@babel/types': 7.23.5 dev: true /@babel/helper-compilation-targets@7.22.15: @@ -610,7 +601,7 @@ packages: resolution: {integrity: sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.3 + '@babel/types': 7.23.5 dev: true /@babel/helper-module-imports@7.22.15: @@ -636,7 +627,7 @@ packages: resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.3 + '@babel/types': 7.23.5 dev: true /@babel/helper-plugin-utils@7.22.5: @@ -677,7 +668,7 @@ packages: resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.3 + '@babel/types': 7.23.5 dev: true /@babel/helper-split-export-declaration@7.22.6: @@ -689,6 +680,7 @@ packages: /@babel/helper-string-parser@7.22.5: resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==} engines: {node: '>=6.9.0'} + dev: true /@babel/helper-string-parser@7.23.4: resolution: {integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==} @@ -708,7 +700,7 @@ packages: dependencies: '@babel/helper-function-name': 7.23.0 '@babel/template': 7.22.15 - '@babel/types': 7.23.3 + '@babel/types': 7.23.5 dev: true /@babel/helpers@7.23.5: @@ -743,6 +735,7 @@ packages: hasBin: true dependencies: '@babel/types': 7.23.3 + dev: true /@babel/parser@7.23.5: resolution: {integrity: sha512-hOOqoiNXrmGdFbhgCzu6GiURxUgM27Xwd/aPuu8RfHEZPBzL1Z54okAHAQjXfcQNwvrlkAmAp4SlRTZ45vlthQ==} @@ -1678,7 +1671,7 @@ packages: dependencies: '@babel/core': 7.23.5 '@babel/helper-plugin-utils': 7.22.5 - '@babel/types': 7.23.3 + '@babel/types': 7.23.5 esutils: 2.0.3 dev: true @@ -1734,23 +1727,6 @@ packages: '@babel/parser': 7.23.5 '@babel/types': 7.23.5 - /@babel/traverse@7.23.3: - resolution: {integrity: sha512-+K0yF1/9yR0oHdE0StHuEj3uTPzwwbrLGfNOndVJVV2TqA5+j3oljJUb4nmB954FLGjNem976+B+eDuLIjesiQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.22.13 - '@babel/generator': 7.23.3 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/parser': 7.23.3 - '@babel/types': 7.23.3 - debug: 4.3.4 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - /@babel/traverse@7.23.5: resolution: {integrity: sha512-czx7Xy5a6sapWWRx61m1Ke1Ra4vczu1mCTtJam5zRTBOonfdJ+S/B6HYmGYu3fJtr8GGET3si6IhgWVBhJ/m8w==} engines: {node: '>=6.9.0'} @@ -1775,6 +1751,7 @@ packages: '@babel/helper-string-parser': 7.22.5 '@babel/helper-validator-identifier': 7.22.20 to-fast-properties: 2.0.0 + dev: true /@babel/types@7.23.5: resolution: {integrity: sha512-ON5kSOJwVO6xXVRTvOI0eOnWe7VdUcIpsovGo9U/Br4Ie4UVFQTboO2cYnDhAGU6Fp+UxSiT+pMft0SMHfuq6w==} @@ -2481,7 +2458,7 @@ packages: dependencies: '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 18.19.1 + '@types/node': 18.19.3 '@types/yargs': 16.0.5 chalk: 4.1.2 dev: true @@ -2493,11 +2470,11 @@ packages: '@jest/schemas': 29.6.0 '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 18.19.1 + '@types/node': 18.19.3 '@types/yargs': 17.0.24 chalk: 4.1.2 - /@joshwooding/vite-plugin-react-docgen-typescript@0.3.0(typescript@5.3.2)(vite@4.5.0): + /@joshwooding/vite-plugin-react-docgen-typescript@0.3.0(typescript@5.3.3)(vite@4.5.1): resolution: {integrity: sha512-2D6y7fNvFmsLmRt6UCOFJPvFoPMJGT0Uh1Wg0RaigUp7kdQPs6yYn8Dmx6GZkOH/NW0yMTwRz/p0SRMMRo50vA==} peerDependencies: typescript: '>= 4.3.x' @@ -2509,9 +2486,9 @@ packages: glob: 7.2.3 glob-promise: 4.2.2(glob@7.2.3) magic-string: 0.27.0 - react-docgen-typescript: 2.2.2(typescript@5.3.2) - typescript: 5.3.2 - vite: 4.5.0(@types/node@18.19.1) + react-docgen-typescript: 2.2.2(typescript@5.3.3) + typescript: 5.3.3 + vite: 4.5.1(@types/node@18.19.3) dev: true /@jridgewell/gen-mapping@0.3.3: @@ -2558,7 +2535,7 @@ packages: react: '>=16' dependencies: '@types/mdx': 2.0.5 - '@types/react': 18.2.41 + '@types/react': 18.2.43 react: 18.2.0 /@metamask/object-multiplex@1.2.0: @@ -2675,8 +2652,8 @@ packages: /@popperjs/core@2.11.8: resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==} - /@puppeteer/browsers@1.8.0: - resolution: {integrity: sha512-TkRHIV6k2D8OlUe8RtG+5jgOF/H98Myx0M6AOafC8DdNVOFiBSFa5cpRDtpm8LXOa9sVwe0+e6Q3FC56X/DZfg==} + /@puppeteer/browsers@1.9.0: + resolution: {integrity: sha512-QwguOLy44YBGC8vuPP2nmpX4MUN2FzWbsnvZJtiCzecU3lHmVZkaC1tq6rToi9a200m8RzlVtDyxCS0UIDrxUg==} engines: {node: '>=16.3.0'} hasBin: true dependencies: @@ -2701,7 +2678,7 @@ packages: dependencies: '@babel/runtime': 7.23.2 - /@radix-ui/react-accordion@1.1.2(@types/react-dom@18.2.17)(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-accordion@1.1.2(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-fDG7jcoNKVjSK6yfmuAs0EnPDro0WMXIhMtXdTBWqEioVW206ku+4Lw07e+13lUkFkpoEQ2PdeMIAGpdqEAmDg==} peerDependencies: '@types/react': '*' @@ -2716,21 +2693,21 @@ packages: dependencies: '@babel/runtime': 7.22.6 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collapsible': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.41)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.41)(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(@types/react@18.2.41)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.41)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.41)(react@18.2.0) - '@types/react': 18.2.41 + '@radix-ui/react-collapsible': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.43)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.43)(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(@types/react@18.2.43)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.2.43)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.43)(react@18.2.0) + '@types/react': 18.2.43 '@types/react-dom': 18.2.17 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: true - /@radix-ui/react-arrow@1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-arrow@1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-wSP+pHsB/jQRaL6voubsQ/ZlrGBHHrOjmBnr19hxYgtS0WvAFwZhK2WP/YY5yF9uKECCEEDGxuLxq1NBK51wFA==} peerDependencies: '@types/react': '*' @@ -2744,13 +2721,13 @@ packages: optional: true dependencies: '@babel/runtime': 7.23.2 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.2.41 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.43 '@types/react-dom': 18.2.17 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - /@radix-ui/react-collapsible@1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-collapsible@1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-UBmVDkmR6IvDsloHVN+3rtx4Mi5TFvylYXpluuv0f37dtaz3H99bp8No0LGXRigVpl3UAT4l9j6bIchh42S/Gg==} peerDependencies: '@types/react': '*' @@ -2765,20 +2742,20 @@ packages: dependencies: '@babel/runtime': 7.23.2 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.41)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.41)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.41)(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.17)(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.41)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.41)(react@18.2.0) - '@types/react': 18.2.41 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.43)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.43)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.2.43)(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.43)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.43)(react@18.2.0) + '@types/react': 18.2.43 '@types/react-dom': 18.2.17 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: true - /@radix-ui/react-collection@1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-collection@1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-3SzW+0PW7yBBoQlT8wNcGtaxaD0XSu0uLUFgrtHY08Acx05TaHaOmVLR73c0j/cqpDy53KBMO7s0dx2wmOIDIA==} peerDependencies: '@types/react': '*' @@ -2792,16 +2769,16 @@ packages: optional: true dependencies: '@babel/runtime': 7.23.2 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.41)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.41)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-slot': 1.0.2(@types/react@18.2.41)(react@18.2.0) - '@types/react': 18.2.41 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.43)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.43)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-slot': 1.0.2(@types/react@18.2.43)(react@18.2.0) + '@types/react': 18.2.43 '@types/react-dom': 18.2.17 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - /@radix-ui/react-compose-refs@1.0.1(@types/react@18.2.41)(react@18.2.0): + /@radix-ui/react-compose-refs@1.0.1(@types/react@18.2.43)(react@18.2.0): resolution: {integrity: sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==} peerDependencies: '@types/react': '*' @@ -2811,10 +2788,10 @@ packages: optional: true dependencies: '@babel/runtime': 7.23.2 - '@types/react': 18.2.41 + '@types/react': 18.2.43 react: 18.2.0 - /@radix-ui/react-context@1.0.1(@types/react@18.2.41)(react@18.2.0): + /@radix-ui/react-context@1.0.1(@types/react@18.2.43)(react@18.2.0): resolution: {integrity: sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg==} peerDependencies: '@types/react': '*' @@ -2824,10 +2801,10 @@ packages: optional: true dependencies: '@babel/runtime': 7.23.2 - '@types/react': 18.2.41 + '@types/react': 18.2.43 react: 18.2.0 - /@radix-ui/react-direction@1.0.1(@types/react@18.2.41)(react@18.2.0): + /@radix-ui/react-direction@1.0.1(@types/react@18.2.43)(react@18.2.0): resolution: {integrity: sha512-RXcvnXgyvYvBEOhCBuddKecVkoMiI10Jcm5cTI7abJRAHYfFxeu+FBQs/DvdxSYucxR5mna0dNsL6QFlds5TMA==} peerDependencies: '@types/react': '*' @@ -2837,10 +2814,10 @@ packages: optional: true dependencies: '@babel/runtime': 7.23.2 - '@types/react': 18.2.41 + '@types/react': 18.2.43 react: 18.2.0 - /@radix-ui/react-dismissable-layer@1.0.4(@types/react-dom@18.2.17)(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-dismissable-layer@1.0.4(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-7UpBa/RKMoHJYjie1gkF1DlK8l1fdU/VKDpoS3rCCo8YBJR294GwcEHyxHw72yvphJ7ld0AXEcSLAzY2F/WyCg==} peerDependencies: '@types/react': '*' @@ -2855,16 +2832,16 @@ packages: dependencies: '@babel/runtime': 7.23.2 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.41)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.41)(react@18.2.0) - '@radix-ui/react-use-escape-keydown': 1.0.3(@types/react@18.2.41)(react@18.2.0) - '@types/react': 18.2.41 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.43)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.43)(react@18.2.0) + '@radix-ui/react-use-escape-keydown': 1.0.3(@types/react@18.2.43)(react@18.2.0) + '@types/react': 18.2.43 '@types/react-dom': 18.2.17 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - /@radix-ui/react-focus-guards@1.0.1(@types/react@18.2.41)(react@18.2.0): + /@radix-ui/react-focus-guards@1.0.1(@types/react@18.2.43)(react@18.2.0): resolution: {integrity: sha512-Rect2dWbQ8waGzhMavsIbmSVCgYxkXLxxR3ZvCX79JOglzdEy4JXMb98lq4hPxUbLr77nP0UOGf4rcMU+s1pUA==} peerDependencies: '@types/react': '*' @@ -2874,10 +2851,10 @@ packages: optional: true dependencies: '@babel/runtime': 7.23.2 - '@types/react': 18.2.41 + '@types/react': 18.2.43 react: 18.2.0 - /@radix-ui/react-focus-scope@1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-focus-scope@1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-upXdPfqI4islj2CslyfUBNlaJCPybbqRHAi1KER7Isel9Q2AtSJ0zRBZv8mWQiFXD2nyAJ4BhC3yXgZ6kMBSrQ==} peerDependencies: '@types/react': '*' @@ -2891,15 +2868,15 @@ packages: optional: true dependencies: '@babel/runtime': 7.23.2 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.41)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.41)(react@18.2.0) - '@types/react': 18.2.41 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.43)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.43)(react@18.2.0) + '@types/react': 18.2.43 '@types/react-dom': 18.2.17 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - /@radix-ui/react-id@1.0.1(@types/react@18.2.41)(react@18.2.0): + /@radix-ui/react-id@1.0.1(@types/react@18.2.43)(react@18.2.0): resolution: {integrity: sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ==} peerDependencies: '@types/react': '*' @@ -2909,11 +2886,11 @@ packages: optional: true dependencies: '@babel/runtime': 7.23.2 - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.41)(react@18.2.0) - '@types/react': 18.2.41 + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.43)(react@18.2.0) + '@types/react': 18.2.43 react: 18.2.0 - /@radix-ui/react-popper@1.1.2(@types/react-dom@18.2.17)(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-popper@1.1.2(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-1CnGGfFi/bbqtJZZ0P/NQY20xdG3E0LALJaLUEoKwPLwl6PPPfbeiCqMVQnhoFRAxjJj4RpBRJzDmUgsex2tSg==} peerDependencies: '@types/react': '*' @@ -2928,21 +2905,21 @@ packages: dependencies: '@babel/runtime': 7.23.2 '@floating-ui/react-dom': 2.0.2(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-arrow': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.41)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.41)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.41)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.41)(react@18.2.0) - '@radix-ui/react-use-rect': 1.0.1(@types/react@18.2.41)(react@18.2.0) - '@radix-ui/react-use-size': 1.0.1(@types/react@18.2.41)(react@18.2.0) + '@radix-ui/react-arrow': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.43)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.43)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.43)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.43)(react@18.2.0) + '@radix-ui/react-use-rect': 1.0.1(@types/react@18.2.43)(react@18.2.0) + '@radix-ui/react-use-size': 1.0.1(@types/react@18.2.43)(react@18.2.0) '@radix-ui/rect': 1.0.1 - '@types/react': 18.2.41 + '@types/react': 18.2.43 '@types/react-dom': 18.2.17 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - /@radix-ui/react-portal@1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-portal@1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-xLYZeHrWoPmA5mEKEfZZevoVRK/Q43GfzRXkWV6qawIWWK8t6ifIiLQdd7rmQ4Vk1bmI21XhqF9BN3jWf+phpA==} peerDependencies: '@types/react': '*' @@ -2956,13 +2933,13 @@ packages: optional: true dependencies: '@babel/runtime': 7.23.2 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.2.41 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.43 '@types/react-dom': 18.2.17 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - /@radix-ui/react-presence@1.0.1(@types/react-dom@18.2.17)(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-presence@1.0.1(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-UXLW4UAbIY5ZjcvzjfRFo5gxva8QirC9hF7wRE4U5gz+TP0DbRk+//qyuAQ1McDxBt1xNMBTaciFGvEmJvAZCg==} peerDependencies: '@types/react': '*' @@ -2976,15 +2953,15 @@ packages: optional: true dependencies: '@babel/runtime': 7.23.2 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.41)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.41)(react@18.2.0) - '@types/react': 18.2.41 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.43)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.43)(react@18.2.0) + '@types/react': 18.2.43 '@types/react-dom': 18.2.17 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: true - /@radix-ui/react-primitive@1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-primitive@1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==} peerDependencies: '@types/react': '*' @@ -2998,13 +2975,13 @@ packages: optional: true dependencies: '@babel/runtime': 7.23.2 - '@radix-ui/react-slot': 1.0.2(@types/react@18.2.41)(react@18.2.0) - '@types/react': 18.2.41 + '@radix-ui/react-slot': 1.0.2(@types/react@18.2.43)(react@18.2.0) + '@types/react': 18.2.43 '@types/react-dom': 18.2.17 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - /@radix-ui/react-roving-focus@1.0.4(@types/react-dom@18.2.17)(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-roving-focus@1.0.4(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-2mUg5Mgcu001VkGy+FfzZyzbmuUWzgWkj3rvv4yu+mLw03+mTzbxZHvfcGyFp2b8EkQeMkpRQ5FiA2Vr2O6TeQ==} peerDependencies: '@types/react': '*' @@ -3019,20 +2996,20 @@ packages: dependencies: '@babel/runtime': 7.23.2 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.41)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.41)(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(@types/react@18.2.41)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.41)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.41)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.41)(react@18.2.0) - '@types/react': 18.2.41 + '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.43)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.43)(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(@types/react@18.2.43)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.2.43)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.43)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.43)(react@18.2.0) + '@types/react': 18.2.43 '@types/react-dom': 18.2.17 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - /@radix-ui/react-select@1.2.2(@types/react-dom@18.2.17)(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-select@1.2.2(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-zI7McXr8fNaSrUY9mZe4x/HC0jTLY9fWNhO1oLWYMQGDXuV4UCivIGTxwioSzO0ZCYX9iSLyWmAh/1TOmX3Cnw==} peerDependencies: '@types/react': '*' @@ -3048,31 +3025,31 @@ packages: '@babel/runtime': 7.23.2 '@radix-ui/number': 1.0.1 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.41)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.41)(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(@types/react@18.2.41)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.0.4(@types/react-dom@18.2.17)(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.41)(react@18.2.0) - '@radix-ui/react-focus-scope': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.41)(react@18.2.0) - '@radix-ui/react-popper': 1.1.2(@types/react-dom@18.2.17)(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-portal': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-slot': 1.0.2(@types/react@18.2.41)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.41)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.41)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.41)(react@18.2.0) - '@radix-ui/react-use-previous': 1.0.1(@types/react@18.2.41)(react@18.2.0) - '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.2.41 + '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.43)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.43)(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(@types/react@18.2.43)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.0.4(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.43)(react@18.2.0) + '@radix-ui/react-focus-scope': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.2.43)(react@18.2.0) + '@radix-ui/react-popper': 1.1.2(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-portal': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-slot': 1.0.2(@types/react@18.2.43)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.43)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.43)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.43)(react@18.2.0) + '@radix-ui/react-use-previous': 1.0.1(@types/react@18.2.43)(react@18.2.0) + '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.43 '@types/react-dom': 18.2.17 aria-hidden: 1.2.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - react-remove-scroll: 2.5.5(@types/react@18.2.41)(react@18.2.0) + react-remove-scroll: 2.5.5(@types/react@18.2.43)(react@18.2.0) - /@radix-ui/react-separator@1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-separator@1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-itYmTy/kokS21aiV5+Z56MZB54KrhPgn6eHDKkFeOLR34HMN2s8PaN47qZZAGnvupcjxHaFZnW4pQEh0BvvVuw==} peerDependencies: '@types/react': '*' @@ -3086,13 +3063,13 @@ packages: optional: true dependencies: '@babel/runtime': 7.23.2 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.2.41 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.43 '@types/react-dom': 18.2.17 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - /@radix-ui/react-slot@1.0.2(@types/react@18.2.41)(react@18.2.0): + /@radix-ui/react-slot@1.0.2(@types/react@18.2.43)(react@18.2.0): resolution: {integrity: sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==} peerDependencies: '@types/react': '*' @@ -3102,11 +3079,11 @@ packages: optional: true dependencies: '@babel/runtime': 7.23.2 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.41)(react@18.2.0) - '@types/react': 18.2.41 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.43)(react@18.2.0) + '@types/react': 18.2.43 react: 18.2.0 - /@radix-ui/react-toggle-group@1.0.4(@types/react-dom@18.2.17)(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-toggle-group@1.0.4(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-Uaj/M/cMyiyT9Bx6fOZO0SAG4Cls0GptBWiBmBxofmDbNVnYYoyRWj/2M/6VCi/7qcXFWnHhRUfdfZFvvkuu8A==} peerDependencies: '@types/react': '*' @@ -3121,18 +3098,18 @@ packages: dependencies: '@babel/runtime': 7.23.2 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-context': 1.0.1(@types/react@18.2.41)(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(@types/react@18.2.41)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.17)(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-toggle': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.41)(react@18.2.0) - '@types/react': 18.2.41 + '@radix-ui/react-context': 1.0.1(@types/react@18.2.43)(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(@types/react@18.2.43)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-toggle': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.43)(react@18.2.0) + '@types/react': 18.2.43 '@types/react-dom': 18.2.17 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - /@radix-ui/react-toggle@1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-toggle@1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-Pkqg3+Bc98ftZGsl60CLANXQBBQ4W3mTFS9EJvNxKMZ7magklKV69/id1mlAlOFDDfHvlCms0fx8fA4CMKDJHg==} peerDependencies: '@types/react': '*' @@ -3147,14 +3124,14 @@ packages: dependencies: '@babel/runtime': 7.23.2 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.41)(react@18.2.0) - '@types/react': 18.2.41 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.43)(react@18.2.0) + '@types/react': 18.2.43 '@types/react-dom': 18.2.17 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - /@radix-ui/react-toolbar@1.0.4(@types/react-dom@18.2.17)(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-toolbar@1.0.4(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-tBgmM/O7a07xbaEkYJWYTXkIdU/1pW4/KZORR43toC/4XWyBCURK0ei9kMUdp+gTPPKBgYLxXmRSH1EVcIDp8Q==} peerDependencies: '@types/react': '*' @@ -3169,18 +3146,18 @@ packages: dependencies: '@babel/runtime': 7.23.2 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-context': 1.0.1(@types/react@18.2.41)(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(@types/react@18.2.41)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.17)(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-separator': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-toggle-group': 1.0.4(@types/react-dom@18.2.17)(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.2.41 + '@radix-ui/react-context': 1.0.1(@types/react@18.2.43)(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(@types/react@18.2.43)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-separator': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-toggle-group': 1.0.4(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.43 '@types/react-dom': 18.2.17 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - /@radix-ui/react-use-callback-ref@1.0.1(@types/react@18.2.41)(react@18.2.0): + /@radix-ui/react-use-callback-ref@1.0.1(@types/react@18.2.43)(react@18.2.0): resolution: {integrity: sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==} peerDependencies: '@types/react': '*' @@ -3190,10 +3167,10 @@ packages: optional: true dependencies: '@babel/runtime': 7.23.2 - '@types/react': 18.2.41 + '@types/react': 18.2.43 react: 18.2.0 - /@radix-ui/react-use-controllable-state@1.0.1(@types/react@18.2.41)(react@18.2.0): + /@radix-ui/react-use-controllable-state@1.0.1(@types/react@18.2.43)(react@18.2.0): resolution: {integrity: sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==} peerDependencies: '@types/react': '*' @@ -3203,11 +3180,11 @@ packages: optional: true dependencies: '@babel/runtime': 7.23.2 - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.41)(react@18.2.0) - '@types/react': 18.2.41 + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.43)(react@18.2.0) + '@types/react': 18.2.43 react: 18.2.0 - /@radix-ui/react-use-escape-keydown@1.0.3(@types/react@18.2.41)(react@18.2.0): + /@radix-ui/react-use-escape-keydown@1.0.3(@types/react@18.2.43)(react@18.2.0): resolution: {integrity: sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg==} peerDependencies: '@types/react': '*' @@ -3217,11 +3194,11 @@ packages: optional: true dependencies: '@babel/runtime': 7.23.2 - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.41)(react@18.2.0) - '@types/react': 18.2.41 + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.43)(react@18.2.0) + '@types/react': 18.2.43 react: 18.2.0 - /@radix-ui/react-use-layout-effect@1.0.1(@types/react@18.2.41)(react@18.2.0): + /@radix-ui/react-use-layout-effect@1.0.1(@types/react@18.2.43)(react@18.2.0): resolution: {integrity: sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==} peerDependencies: '@types/react': '*' @@ -3231,10 +3208,10 @@ packages: optional: true dependencies: '@babel/runtime': 7.23.2 - '@types/react': 18.2.41 + '@types/react': 18.2.43 react: 18.2.0 - /@radix-ui/react-use-previous@1.0.1(@types/react@18.2.41)(react@18.2.0): + /@radix-ui/react-use-previous@1.0.1(@types/react@18.2.43)(react@18.2.0): resolution: {integrity: sha512-cV5La9DPwiQ7S0gf/0qiD6YgNqM5Fk97Kdrlc5yBcrF3jyEZQwm7vYFqMo4IfeHgJXsRaMvLABFtd0OVEmZhDw==} peerDependencies: '@types/react': '*' @@ -3244,10 +3221,10 @@ packages: optional: true dependencies: '@babel/runtime': 7.23.2 - '@types/react': 18.2.41 + '@types/react': 18.2.43 react: 18.2.0 - /@radix-ui/react-use-rect@1.0.1(@types/react@18.2.41)(react@18.2.0): + /@radix-ui/react-use-rect@1.0.1(@types/react@18.2.43)(react@18.2.0): resolution: {integrity: sha512-Cq5DLuSiuYVKNU8orzJMbl15TXilTnJKUCltMVQg53BQOF1/C5toAaGrowkgksdBQ9H+SRL23g0HDmg9tvmxXw==} peerDependencies: '@types/react': '*' @@ -3258,10 +3235,10 @@ packages: dependencies: '@babel/runtime': 7.23.2 '@radix-ui/rect': 1.0.1 - '@types/react': 18.2.41 + '@types/react': 18.2.43 react: 18.2.0 - /@radix-ui/react-use-size@1.0.1(@types/react@18.2.41)(react@18.2.0): + /@radix-ui/react-use-size@1.0.1(@types/react@18.2.43)(react@18.2.0): resolution: {integrity: sha512-ibay+VqrgcaI6veAojjofPATwledXiSmX+C0KrBk/xgpX9rBzPV3OsfwlhQdUOFbh+LKQorLYT+xTXW9V8yd0g==} peerDependencies: '@types/react': '*' @@ -3271,11 +3248,11 @@ packages: optional: true dependencies: '@babel/runtime': 7.23.2 - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.41)(react@18.2.0) - '@types/react': 18.2.41 + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.43)(react@18.2.0) + '@types/react': 18.2.43 react: 18.2.0 - /@radix-ui/react-visually-hidden@1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-visually-hidden@1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-D4w41yN5YRKtu464TLnByKzMDG/JlMPHtfZgQAu9v6mNakUqGUI9vUrfQKz8NK41VMm/xbZbh76NUTVtIYqOMA==} peerDependencies: '@types/react': '*' @@ -3289,8 +3266,8 @@ packages: optional: true dependencies: '@babel/runtime': 7.23.2 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.2.41 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.43 '@types/react-dom': 18.2.17 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -3331,10 +3308,10 @@ packages: /@sinclair/typebox@0.27.8: resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} - /@storybook/addon-actions@7.6.3: - resolution: {integrity: sha512-f4HXteYE8IJXztAK+ab5heSjXWNWvyIAU63T3Fqe3zmqONwCerUKY54Op+RkAZc/R6aALTxvGRKAH2ff8g2vjQ==} + /@storybook/addon-actions@7.6.4: + resolution: {integrity: sha512-91UD5KPDik74VKVioPMcbwwvDXN/non8p1wArYAHCHCmd/Pts5MJRiFueSdfomSpNjUtjtn6eSXtwpIL3XVOfQ==} dependencies: - '@storybook/core-events': 7.6.3 + '@storybook/core-events': 7.6.4 '@storybook/global': 5.0.0 '@types/uuid': 9.0.7 dequal: 2.0.3 @@ -3342,18 +3319,18 @@ packages: uuid: 9.0.0 dev: true - /@storybook/addon-backgrounds@7.6.3: - resolution: {integrity: sha512-ZZFNf8FBYBsuXvXdVk3sBgxJTn6s0HznuEE9OmAA7tMsLEDlUiWS9LEvjX2jX5K0kWivHTkJDTXV0NcLL1vWAg==} + /@storybook/addon-backgrounds@7.6.4: + resolution: {integrity: sha512-gNy3kIkHSr+Lg/jVDHwbZjIe1po5SDGZNVe39vrJwnqGz8T1clWes9WHCL6zk/uaCDA3yUna2Nt/KlOFAWDSoQ==} dependencies: '@storybook/global': 5.0.0 memoizerific: 1.11.3 ts-dedent: 2.2.0 dev: true - /@storybook/addon-controls@7.6.3(@types/react-dom@18.2.17)(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-xsM3z+CY1YOPqrcCldQLoon947fbd/o3gSO7hM3NwKiw/2WikExPO3VM4R2oi4W4PvnhkSOIO+ZDRuSs1yFmOg==} + /@storybook/addon-controls@7.6.4(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-k4AtZfazmD/nL3JAtLGAB7raPhkhUo0jWnaZWrahd9h1Fm13mBU/RW+JzTRhCw3Mp2HPERD7NI5Qcd2fUP6WDA==} dependencies: - '@storybook/blocks': 7.6.3(@types/react-dom@18.2.17)(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0) + '@storybook/blocks': 7.6.4(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) lodash: 4.17.21 ts-dedent: 2.2.0 transitivePeerDependencies: @@ -3365,27 +3342,27 @@ packages: - supports-color dev: true - /@storybook/addon-docs@7.6.3(@types/react-dom@18.2.17)(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-2Ts+3EFg9ehkQdbjBWnCH1SE0BdyCLN6hO2N030tGxi0Vko9t9O7NLj5qdBwxLcEzb/XzL4zWukzfU17pktQwA==} + /@storybook/addon-docs@7.6.4(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-PbFMbvC9sK3sGdMhwmagXs9TqopTp9FySji+L8O7W9SHRC6wSmdwoWWPWybkOYxr/z/wXi7EM0azSAX7yQxLbw==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: '@jest/transform': 29.6.1 '@mdx-js/react': 2.3.0(react@18.2.0) - '@storybook/blocks': 7.6.3(@types/react-dom@18.2.17)(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0) - '@storybook/client-logger': 7.6.3 - '@storybook/components': 7.6.3(@types/react-dom@18.2.17)(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0) - '@storybook/csf-plugin': 7.6.3 - '@storybook/csf-tools': 7.6.3 + '@storybook/blocks': 7.6.4(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) + '@storybook/client-logger': 7.6.4 + '@storybook/components': 7.6.4(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) + '@storybook/csf-plugin': 7.6.4 + '@storybook/csf-tools': 7.6.4 '@storybook/global': 5.0.0 '@storybook/mdx2-csf': 1.1.0 - '@storybook/node-logger': 7.6.3 - '@storybook/postinstall': 7.6.3 - '@storybook/preview-api': 7.6.3 - '@storybook/react-dom-shim': 7.6.3(react-dom@18.2.0)(react@18.2.0) - '@storybook/theming': 7.6.3(react-dom@18.2.0)(react@18.2.0) - '@storybook/types': 7.6.3 + '@storybook/node-logger': 7.6.4 + '@storybook/postinstall': 7.6.4 + '@storybook/preview-api': 7.6.4 + '@storybook/react-dom-shim': 7.6.4(react-dom@18.2.0)(react@18.2.0) + '@storybook/theming': 7.6.4(react-dom@18.2.0)(react@18.2.0) + '@storybook/types': 7.6.4 fs-extra: 11.1.1 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -3398,25 +3375,25 @@ packages: - encoding - supports-color - /@storybook/addon-essentials@7.6.3(@types/react-dom@18.2.17)(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-bpbt5O0wcB83VLZg8QMXut+8g+7EF4iuevpwiynN9mbpQFvG49c6SE6T2eFJKTvVb4zszyfcNA0Opne2G83wZw==} + /@storybook/addon-essentials@7.6.4(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-J+zPmP4pbuuFxQ3pjLRYQRnxEtp7jF3xRXGFO8brVnEqtqoxwJ6j3euUrRLe0rpGAU3AD7dYfaaFjd3xkENgTw==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: - '@storybook/addon-actions': 7.6.3 - '@storybook/addon-backgrounds': 7.6.3 - '@storybook/addon-controls': 7.6.3(@types/react-dom@18.2.17)(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0) - '@storybook/addon-docs': 7.6.3(@types/react-dom@18.2.17)(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0) - '@storybook/addon-highlight': 7.6.3 - '@storybook/addon-measure': 7.6.3 - '@storybook/addon-outline': 7.6.3 - '@storybook/addon-toolbars': 7.6.3 - '@storybook/addon-viewport': 7.6.3 - '@storybook/core-common': 7.6.3 - '@storybook/manager-api': 7.6.3(react-dom@18.2.0)(react@18.2.0) - '@storybook/node-logger': 7.6.3 - '@storybook/preview-api': 7.6.3 + '@storybook/addon-actions': 7.6.4 + '@storybook/addon-backgrounds': 7.6.4 + '@storybook/addon-controls': 7.6.4(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) + '@storybook/addon-docs': 7.6.4(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) + '@storybook/addon-highlight': 7.6.4 + '@storybook/addon-measure': 7.6.4 + '@storybook/addon-outline': 7.6.4 + '@storybook/addon-toolbars': 7.6.4 + '@storybook/addon-viewport': 7.6.4 + '@storybook/core-common': 7.6.4 + '@storybook/manager-api': 7.6.4(react-dom@18.2.0)(react@18.2.0) + '@storybook/node-logger': 7.6.4 + '@storybook/preview-api': 7.6.4 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) ts-dedent: 2.2.0 @@ -3427,24 +3404,24 @@ packages: - supports-color dev: true - /@storybook/addon-highlight@7.6.3: - resolution: {integrity: sha512-Z9AJ05XCTzFZPAxQSkQf9/Hazf5/QQI0jYSsvKqt7Vk+03q5727oD9KcIY5IHPYqQqN9fHExQh1eyqY8AnS8mg==} + /@storybook/addon-highlight@7.6.4: + resolution: {integrity: sha512-0kvjDzquoPwWWU61QYmEtcSGWXufnV7Z/bfBTYh132uxvV/X9YzDFcXXrxGL7sBJkK32gNUUBDuiTOxs5NxyOQ==} dependencies: '@storybook/global': 5.0.0 dev: true - /@storybook/addon-interactions@7.6.3: - resolution: {integrity: sha512-Gm2UJvQC8xs9KIbVZQegTLT3VBsEZIRsXy3htNqWjSdoJZK5M4/YJ3jB247CA/Jc+Mkj7d5SlJe+bCGEzjKTbw==} + /@storybook/addon-interactions@7.6.4: + resolution: {integrity: sha512-LjK9uhkgnbGyDwwa7pQhLptDEHeTIFmy+KurfJs9T08DpvRFfuuzyW4mj/hA63R1W5yjFSAhRiZj26+D7kBIyw==} dependencies: '@storybook/global': 5.0.0 - '@storybook/types': 7.6.3 + '@storybook/types': 7.6.4 jest-mock: 27.5.1 polished: 4.2.2 ts-dedent: 2.2.0 dev: true - /@storybook/addon-links@7.6.3(react@18.2.0): - resolution: {integrity: sha512-dUIf6Y0nckxZfVQvQSqcthaycRxy69dCJLo3aORrOPL8NvGz3v1bK0AUded5wv8vnOVxfSx/Zqu7MyFr9xyjOA==} + /@storybook/addon-links@7.6.4(react@18.2.0): + resolution: {integrity: sha512-TEhxYdMhJO28gD84ej1FCwLv9oLuCPt77bRXip9ndaNPRTdHYdWv6IP94dhbuDi8eHux7Z4A/mllciFuDFrnCw==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 peerDependenciesMeta: @@ -3457,47 +3434,47 @@ packages: ts-dedent: 2.2.0 dev: true - /@storybook/addon-measure@7.6.3: - resolution: {integrity: sha512-DqxADof04ktA5GSA8XnckYGdVYyC4oN8vfKSGcPzpcKrJ2uVr0BXbcyJAEcJAshEJimmpA6nH5TxabXDFBZgPQ==} + /@storybook/addon-measure@7.6.4: + resolution: {integrity: sha512-73wsJ8PALsgWniR3MA/cmxcFuU6cRruWdIyYzOMgM8ife2Jm3xSkV7cTTXAqXt2H9Uuki4PGnuMHWWFLpPeyVA==} dependencies: '@storybook/global': 5.0.0 tiny-invariant: 1.3.1 dev: true - /@storybook/addon-outline@7.6.3: - resolution: {integrity: sha512-M7d2tcqBBl+mPBUS6Nrwis50QYSCcmT/uKamud7CnlIWsMH/5GZFfAzGSLY5ETfiGsSFYssOwrXLOV4y0enu2g==} + /@storybook/addon-outline@7.6.4: + resolution: {integrity: sha512-CFxGASRse/qeFocetDKFNeWZ3Aa2wapVtRciDNa4Zx7k1wCnTjEsPIm54waOuCaNVcrvO+nJUAZG5WyiorQvcg==} dependencies: '@storybook/global': 5.0.0 ts-dedent: 2.2.0 dev: true - /@storybook/addon-toolbars@7.6.3: - resolution: {integrity: sha512-8GpwOt0J5yLrJhTr9/h0a/LTDjt49FhdvdxiVWLlLMrjIXSIc7j193ZgoHfnlwVhJS5zojcjB+HmRw/E+AneoA==} + /@storybook/addon-toolbars@7.6.4: + resolution: {integrity: sha512-ENMQJgU4sRCLLDVXYfa+P3cQVV9PC0ZxwVAKeM3NPYPNH/ODoryGNtq+Q68LwHlM4ObCE2oc9MzaQqPxloFcCw==} dev: true - /@storybook/addon-viewport@7.6.3: - resolution: {integrity: sha512-I9FQxHi4W7RUyZut4NziYa+nkBCpD1k2YpEDE5IwSC3lqQpDzFZN89eNWQtZ38tIU4c90jL3L1k69IHvANGHsA==} + /@storybook/addon-viewport@7.6.4: + resolution: {integrity: sha512-SoTcHIoqybhYD28v7QExF1EZnl7FfxuP74VDhtze5LyMd2CbqmVnUfwewLCz/3IvCNce0GqdNyg1m6QJ7Eq1uw==} dependencies: memoizerific: 1.11.3 dev: true - /@storybook/blocks@7.6.3(@types/react-dom@18.2.17)(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-EyjyNNCZMcV9UnBSujwduiq+F1VLVX/f16fTTPqqZOHigyfrG5LoEYC6dwOC4yO/xfWY+h3qJ51yiugMxVl0Vg==} + /@storybook/blocks@7.6.4(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-iXinXXhTUBtReREP1Jifpu35DnGg7FidehjvCM8sM4E4aymfb8czdg9DdvG46T2UFUPUct36nnjIdMLWOya8Bw==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: - '@storybook/channels': 7.6.3 - '@storybook/client-logger': 7.6.3 - '@storybook/components': 7.6.3(@types/react-dom@18.2.17)(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0) - '@storybook/core-events': 7.6.3 + '@storybook/channels': 7.6.4 + '@storybook/client-logger': 7.6.4 + '@storybook/components': 7.6.4(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) + '@storybook/core-events': 7.6.4 '@storybook/csf': 0.1.2 - '@storybook/docs-tools': 7.6.3 + '@storybook/docs-tools': 7.6.4 '@storybook/global': 5.0.0 - '@storybook/manager-api': 7.6.3(react-dom@18.2.0)(react@18.2.0) - '@storybook/preview-api': 7.6.3 - '@storybook/theming': 7.6.3(react-dom@18.2.0)(react@18.2.0) - '@storybook/types': 7.6.3 + '@storybook/manager-api': 7.6.4(react-dom@18.2.0)(react@18.2.0) + '@storybook/preview-api': 7.6.4 + '@storybook/theming': 7.6.4(react-dom@18.2.0)(react@18.2.0) + '@storybook/types': 7.6.4 '@types/lodash': 4.14.202 color-convert: 2.0.1 dequal: 2.0.3 @@ -3542,8 +3519,8 @@ packages: - supports-color dev: true - /@storybook/builder-vite@7.6.3(typescript@5.3.2)(vite@4.5.0): - resolution: {integrity: sha512-r/G/6wdwgbhMiMZ8Z+Js8VLjIo7a0DG5SxJorTHSWNi0+jyM+3Qlg3Xj96I8yL4gfTIKWVScHqHprhjRb2E64g==} + /@storybook/builder-vite@7.6.4(typescript@5.3.3)(vite@4.5.1): + resolution: {integrity: sha512-eqb3mLUfuXd4a7+46cWevQ9qH81FvHy1lrAbZGwp4bQ/Tj0YF8Ej7lKBbg7zoIwiu2zDci+BbMiaDOY1kPtILw==} peerDependencies: '@preact/preset-vite': '*' typescript: '>= 4.3.x' @@ -3557,14 +3534,14 @@ packages: vite-plugin-glimmerx: optional: true dependencies: - '@storybook/channels': 7.6.3 - '@storybook/client-logger': 7.6.3 - '@storybook/core-common': 7.6.3 - '@storybook/csf-plugin': 7.6.3 - '@storybook/node-logger': 7.6.3 - '@storybook/preview': 7.6.3 - '@storybook/preview-api': 7.6.3 - '@storybook/types': 7.6.3 + '@storybook/channels': 7.6.4 + '@storybook/client-logger': 7.6.4 + '@storybook/core-common': 7.6.4 + '@storybook/csf-plugin': 7.6.4 + '@storybook/node-logger': 7.6.4 + '@storybook/preview': 7.6.4 + '@storybook/preview-api': 7.6.4 + '@storybook/types': 7.6.4 '@types/find-cache-dir': 3.2.1 browser-assert: 1.2.1 es-module-lexer: 0.9.3 @@ -3573,24 +3550,13 @@ packages: fs-extra: 11.1.1 magic-string: 0.30.1 rollup: 3.29.2 - typescript: 5.3.2 - vite: 4.5.0(@types/node@18.19.1) + typescript: 5.3.3 + vite: 4.5.1(@types/node@18.19.3) transitivePeerDependencies: - encoding - supports-color dev: true - /@storybook/channels@7.5.3: - resolution: {integrity: sha512-dhWuV2o2lmxH0RKuzND8jxYzvSQTSmpE13P0IT/k8+I1up/rSNYOBQJT6SalakcNWXFAMXguo/8E7ApmnKKcEw==} - dependencies: - '@storybook/client-logger': 7.5.3 - '@storybook/core-events': 7.5.3 - '@storybook/global': 5.0.0 - qs: 6.11.2 - telejson: 7.2.0 - tiny-invariant: 1.3.1 - dev: true - /@storybook/channels@7.6.0-beta.2: resolution: {integrity: sha512-jNQU2TfmSjUFERmfYnQwB/5097Y4dlw931ViYCkrBN4DM6cGxLTLOjd/Y8nAgB7PRkHAysmuQqRa7vmYf8dINw==} dependencies: @@ -3611,6 +3577,17 @@ packages: qs: 6.11.2 telejson: 7.2.0 tiny-invariant: 1.3.1 + dev: true + + /@storybook/channels@7.6.4: + resolution: {integrity: sha512-Z4PY09/Czl70ap4ObmZ4bgin+EQhPaA3HdrEDNwpnH7A9ttfEO5u5KThytIjMq6kApCCihmEPDaYltoVrfYJJA==} + dependencies: + '@storybook/client-logger': 7.6.4 + '@storybook/core-events': 7.6.4 + '@storybook/global': 5.0.0 + qs: 6.11.2 + telejson: 7.2.0 + tiny-invariant: 1.3.1 /@storybook/cli@7.6.0-beta.2: resolution: {integrity: sha512-VYn9Rck3gSpa7RL/yAkMszx/6mscFr0EOII8yZd/JZqbwfBQYjyJ0e4w0exNMFWF0PXgqtYgm5LJ3j6P7kHNtA==} @@ -3664,12 +3641,6 @@ packages: - utf-8-validate dev: true - /@storybook/client-logger@7.5.3: - resolution: {integrity: sha512-vUFYALypjix5FoJ5M/XUP6KmyTnQJNW1poHdW7WXUVSg+lBM6E5eAtjTm0hdxNNDH8KSrdy24nCLra5h0X0BWg==} - dependencies: - '@storybook/global': 5.0.0 - dev: true - /@storybook/client-logger@7.6.0-beta.2: resolution: {integrity: sha512-NK3nz1t36JUVwn/1sem3t0fYI3C/IcKKcq8Qpgcy1DGqm/3EJEyWGf8Mv3/FEmtmixPWuwzY52x4R/+K6aFwag==} dependencies: @@ -3680,13 +3651,19 @@ packages: resolution: {integrity: sha512-BpsCnefrBFdxD6ukMjAblm1D6zB4U5HR1I85VWw6LOqZrfzA6l/1uBxItz0XG96HTjngbvAabWf5k7ZFCx5UCg==} dependencies: '@storybook/global': 5.0.0 + dev: true + + /@storybook/client-logger@7.6.4: + resolution: {integrity: sha512-vJwMShC98tcoFruRVQ4FphmFqvAZX1FqZqjFyk6IxtFumPKTVSnXJjlU1SnUIkSK2x97rgdUMqkdI+wAv/tugQ==} + dependencies: + '@storybook/global': 5.0.0 /@storybook/codemod@7.6.0-beta.2: resolution: {integrity: sha512-rntgqX0saQPmr/bdTcc1xw4IDE373acLvNLimzBWHIWb1N8ITMuGHBZ7xNUQ48+JyvO7iO0BPwes9JJSiWjq8A==} dependencies: '@babel/core': 7.23.5 '@babel/preset-env': 7.23.3(@babel/core@7.23.5) - '@babel/types': 7.23.3 + '@babel/types': 7.23.5 '@storybook/csf': 0.1.2 '@storybook/csf-tools': 7.6.0-beta.2 '@storybook/node-logger': 7.6.0-beta.2 @@ -3702,19 +3679,19 @@ packages: - supports-color dev: true - /@storybook/components@7.5.3(@types/react-dom@18.2.17)(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-M3+cjvEsDGLUx8RvK5wyF6/13LNlUnKbMgiDE8Sxk/v/WPpyhOAIh/B8VmrU1psahS61Jd4MTkFmLf1cWau1vw==} + /@storybook/components@7.6.3(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-UNV0WoUo+W0huOLvoEMuqRN/VB4p0CNswrXN1mi/oGWvAFJ8idu63lSuV4uQ/LKxAZ6v3Kpdd+oK/o+OeOoL6w==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: - '@radix-ui/react-select': 1.2.2(@types/react-dom@18.2.17)(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-toolbar': 1.0.4(@types/react-dom@18.2.17)(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0) - '@storybook/client-logger': 7.5.3 + '@radix-ui/react-select': 1.2.2(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-toolbar': 1.0.4(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) + '@storybook/client-logger': 7.6.3 '@storybook/csf': 0.1.2 '@storybook/global': 5.0.0 - '@storybook/theming': 7.5.3(react-dom@18.2.0)(react@18.2.0) - '@storybook/types': 7.5.3 + '@storybook/theming': 7.6.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/types': 7.6.3 memoizerific: 1.11.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -3725,19 +3702,19 @@ packages: - '@types/react-dom' dev: true - /@storybook/components@7.6.3(@types/react-dom@18.2.17)(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-UNV0WoUo+W0huOLvoEMuqRN/VB4p0CNswrXN1mi/oGWvAFJ8idu63lSuV4uQ/LKxAZ6v3Kpdd+oK/o+OeOoL6w==} + /@storybook/components@7.6.4(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-K5RvEObJAnX+SbGJbkM1qrZEk+VR2cUhRCSrFnlfMwsn8/60T3qoH7U8bCXf8krDgbquhMwqev5WzDB+T1VV8g==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: - '@radix-ui/react-select': 1.2.2(@types/react-dom@18.2.17)(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-toolbar': 1.0.4(@types/react-dom@18.2.17)(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0) - '@storybook/client-logger': 7.6.3 + '@radix-ui/react-select': 1.2.2(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-toolbar': 1.0.4(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) + '@storybook/client-logger': 7.6.4 '@storybook/csf': 0.1.2 '@storybook/global': 5.0.0 - '@storybook/theming': 7.6.3(react-dom@18.2.0)(react@18.2.0) - '@storybook/types': 7.6.3 + '@storybook/theming': 7.6.4(react-dom@18.2.0)(react@18.2.0) + '@storybook/types': 7.6.4 memoizerific: 1.11.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -3747,11 +3724,11 @@ packages: - '@types/react' - '@types/react-dom' - /@storybook/core-client@7.6.3: - resolution: {integrity: sha512-RM0Svlajddl8PP4Vq7LK8T22sFefNcTDgo82iRPZzGz0oH8LT0oXGFanj2Nkn0jruOBFClkiJ7EcwrbGJZHELg==} + /@storybook/core-client@7.6.4: + resolution: {integrity: sha512-0msqdGd+VYD1dRgAJ2StTu4d543Wveb7LVVujX3PwD/QCxmCaVUHuAoZrekM/H7jZLw546ZIbLZo0xWrADAUMw==} dependencies: - '@storybook/client-logger': 7.6.3 - '@storybook/preview-api': 7.6.3 + '@storybook/client-logger': 7.6.4 + '@storybook/preview-api': 7.6.4 dev: true /@storybook/core-common@7.6.0-beta.2: @@ -3761,7 +3738,7 @@ packages: '@storybook/node-logger': 7.6.0-beta.2 '@storybook/types': 7.6.0-beta.2 '@types/find-cache-dir': 3.2.1 - '@types/node': 18.19.1 + '@types/node': 18.19.3 '@types/node-fetch': 2.6.6 '@types/pretty-hrtime': 1.0.1 chalk: 4.1.2 @@ -3785,14 +3762,14 @@ packages: - supports-color dev: true - /@storybook/core-common@7.6.3: - resolution: {integrity: sha512-/ZE4BEyGwBHCQCOo681GyBKF4IqCiwVV/ZJCHTMTHFCPLJT2r+Qwv4tnI7xt1kwflOlbBlG6B6CvAqTjjVw/Ew==} + /@storybook/core-common@7.6.4: + resolution: {integrity: sha512-qes4+mXqINu0kCgSMFjk++GZokmYjb71esId0zyJsk0pcIPkAiEjnhbSEQkMhbUfcvO1lztoaQTBW2P7Rd1tag==} dependencies: - '@storybook/core-events': 7.6.3 - '@storybook/node-logger': 7.6.3 - '@storybook/types': 7.6.3 + '@storybook/core-events': 7.6.4 + '@storybook/node-logger': 7.6.4 + '@storybook/types': 7.6.4 '@types/find-cache-dir': 3.2.1 - '@types/node': 18.19.1 + '@types/node': 18.19.3 '@types/node-fetch': 2.6.6 '@types/pretty-hrtime': 1.0.1 chalk: 4.1.2 @@ -3815,12 +3792,6 @@ packages: - encoding - supports-color - /@storybook/core-events@7.5.3: - resolution: {integrity: sha512-DFOpyQ22JD5C1oeOFzL8wlqSWZzrqgDfDbUGP8xdO4wJu+FVTxnnWN6ZYLdTPB1u27DOhd7TzjQMfLDHLu7kbQ==} - dependencies: - ts-dedent: 2.2.0 - dev: true - /@storybook/core-events@7.6.0-beta.2: resolution: {integrity: sha512-5U8Ar4etAruQ6cQ99Eo/D/mBDye4hC3hUTHECdL9dsPyEIGab4B7wtMXhkQ4artbIKFm4f7JiI618Xv5e/Jwfw==} dependencies: @@ -3831,6 +3802,12 @@ packages: resolution: {integrity: sha512-Vu3JX1mjtR8AX84lyqWsi2s2lhD997jKRWVznI3wx+UpTk8t7TTMLFk2rGYJRjaornhrqwvLYpnmtxRSxW9BOQ==} dependencies: ts-dedent: 2.2.0 + dev: true + + /@storybook/core-events@7.6.4: + resolution: {integrity: sha512-i3xzcJ19ILSy4oJL5Dz9y0IlyApynn5RsGhAMIsW+mcfri+hGfeakq1stNCo0o7jW4Y3A7oluFTtIoK8DOxQdQ==} + dependencies: + ts-dedent: 2.2.0 /@storybook/core-server@7.6.0-beta.2: resolution: {integrity: sha512-HSBtA0rHfJ158FAn16d2yziNSw1JuY5YKDZJ9JPx1WY85Ebald6Ssqg6L6fSFDTRWTxZNglZpqqNnYN0B4i62Q==} @@ -3851,7 +3828,7 @@ packages: '@storybook/telemetry': 7.6.0-beta.2 '@storybook/types': 7.6.0-beta.2 '@types/detect-port': 1.3.3 - '@types/node': 18.19.1 + '@types/node': 18.19.3 '@types/pretty-hrtime': 1.0.1 '@types/semver': 7.5.3 better-opn: 3.0.2 @@ -3883,10 +3860,10 @@ packages: - utf-8-validate dev: true - /@storybook/csf-plugin@7.6.3: - resolution: {integrity: sha512-8bMYPsWw2tv+fqZ5H436l4x1KLSB6gIcm6snsjyF916yCHG6WcWm+EI6+wNUoySEtrQY2AiwFJqE37wI5OUJFg==} + /@storybook/csf-plugin@7.6.4: + resolution: {integrity: sha512-7g9p8s2ITX+Z9iThK5CehPhJOcusVN7JcUEEW+gVF5PlYT+uk/x+66gmQno+scQuNkV9+8UJD6RLFjP+zg2uCA==} dependencies: - '@storybook/csf-tools': 7.6.3 + '@storybook/csf-tools': 7.6.4 unplugin: 1.4.0 transitivePeerDependencies: - supports-color @@ -3894,10 +3871,10 @@ packages: /@storybook/csf-tools@7.6.0-beta.2: resolution: {integrity: sha512-u/gcBaTKiUqZyHdFUe7/UXOFc7yyan5C+umKC+F6/jnqtRjiE/wUoa0qidVHgI6ZfTH7Z/1EeVCzspEdPIjbyA==} dependencies: - '@babel/generator': 7.23.3 - '@babel/parser': 7.23.3 - '@babel/traverse': 7.23.3 - '@babel/types': 7.23.3 + '@babel/generator': 7.23.5 + '@babel/parser': 7.23.5 + '@babel/traverse': 7.23.5 + '@babel/types': 7.23.5 '@storybook/csf': 0.1.2 '@storybook/types': 7.6.0-beta.2 fs-extra: 11.1.1 @@ -3907,15 +3884,15 @@ packages: - supports-color dev: true - /@storybook/csf-tools@7.6.3: - resolution: {integrity: sha512-Zi3pg2pg88/mvBKewkfWhFUR1J4uYpHI5fSjOE+J/FeZObX/DIE7r+wJxZ0UBGyrk0Wy7Jajlb2uSP56Y0i19w==} + /@storybook/csf-tools@7.6.4: + resolution: {integrity: sha512-6sLayuhgReIK3/QauNj5BW4o4ZfEMJmKf+EWANPEM/xEOXXqrog6Un8sjtBuJS9N1DwyhHY6xfkEiPAwdttwqw==} dependencies: - '@babel/generator': 7.23.3 - '@babel/parser': 7.23.3 - '@babel/traverse': 7.23.3 - '@babel/types': 7.23.3 + '@babel/generator': 7.23.5 + '@babel/parser': 7.23.5 + '@babel/traverse': 7.23.5 + '@babel/types': 7.23.5 '@storybook/csf': 0.1.2 - '@storybook/types': 7.6.3 + '@storybook/types': 7.6.4 fs-extra: 11.1.1 recast: 0.23.4 ts-dedent: 2.2.0 @@ -3937,12 +3914,12 @@ packages: resolution: {integrity: sha512-JDaBR9lwVY4eSH5W8EGHrhODjygPd6QImRbwjAuJNEnY0Vw4ie3bPkeGfnacB3OBW6u/agqPv2aRlR46JcAQLg==} dev: true - /@storybook/docs-tools@7.6.3: - resolution: {integrity: sha512-6MtirRCQIkBeQ3bksPignZgUuFmjWqcFleTEN6vrNEfbCzMlMvuBGfm9tl4sS3n8ATWmKGj87DcJepPOT3FB4A==} + /@storybook/docs-tools@7.6.4: + resolution: {integrity: sha512-2eGam43aD7O3cocA72Z63kRi7t/ziMSpst0qB218QwBWAeZjT4EYDh8V6j/Xhv6zVQL3msW7AglrQP5kCKPvPA==} dependencies: - '@storybook/core-common': 7.6.3 - '@storybook/preview-api': 7.6.3 - '@storybook/types': 7.6.3 + '@storybook/core-common': 7.6.4 + '@storybook/preview-api': 7.6.4 + '@storybook/types': 7.6.4 '@types/doctrine': 0.0.3 assert: 2.1.0 doctrine: 3.0.0 @@ -3954,42 +3931,40 @@ packages: /@storybook/global@5.0.0: resolution: {integrity: sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==} - /@storybook/manager-api@7.5.3(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-d8mVLr/5BEG4bAS2ZeqYTy/aX4jPEpZHdcLaWoB4mAM+PAL9wcWsirUyApKtDVYLITJf/hd8bb2Dm2ok6E45gA==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + /@storybook/manager-api@7.6.3(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-soDH7GZuukkhYRGzlw4jhCm5EzjfkuIAtb37/DFplqxuVbvlyJEVzkMUM2KQO7kq0/8GlWPiZ5mn56wagYyhKQ==} dependencies: - '@storybook/channels': 7.5.3 - '@storybook/client-logger': 7.5.3 - '@storybook/core-events': 7.5.3 + '@storybook/channels': 7.6.3 + '@storybook/client-logger': 7.6.3 + '@storybook/core-events': 7.6.3 '@storybook/csf': 0.1.2 '@storybook/global': 5.0.0 - '@storybook/router': 7.5.3(react-dom@18.2.0)(react@18.2.0) - '@storybook/theming': 7.5.3(react-dom@18.2.0)(react@18.2.0) - '@storybook/types': 7.5.3 + '@storybook/router': 7.6.3 + '@storybook/theming': 7.6.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/types': 7.6.3 dequal: 2.0.3 lodash: 4.17.21 memoizerific: 1.11.3 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) semver: 7.5.4 store2: 2.14.2 telejson: 7.2.0 ts-dedent: 2.2.0 + transitivePeerDependencies: + - react + - react-dom dev: true - /@storybook/manager-api@7.6.3(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-soDH7GZuukkhYRGzlw4jhCm5EzjfkuIAtb37/DFplqxuVbvlyJEVzkMUM2KQO7kq0/8GlWPiZ5mn56wagYyhKQ==} + /@storybook/manager-api@7.6.4(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-RFb/iaBJfXygSgXkINPRq8dXu7AxBicTGX7MxqKXbz5FU7ANwV7abH6ONBYURkSDOH9//TQhRlVkF5u8zWg3bw==} dependencies: - '@storybook/channels': 7.6.3 - '@storybook/client-logger': 7.6.3 - '@storybook/core-events': 7.6.3 + '@storybook/channels': 7.6.4 + '@storybook/client-logger': 7.6.4 + '@storybook/core-events': 7.6.4 '@storybook/csf': 0.1.2 '@storybook/global': 5.0.0 - '@storybook/router': 7.6.3 - '@storybook/theming': 7.6.3(react-dom@18.2.0)(react@18.2.0) - '@storybook/types': 7.6.3 + '@storybook/router': 7.6.4 + '@storybook/theming': 7.6.4(react-dom@18.2.0)(react@18.2.0) + '@storybook/types': 7.6.4 dequal: 2.0.3 lodash: 4.17.21 memoizerific: 1.11.3 @@ -4012,21 +3987,21 @@ packages: resolution: {integrity: sha512-MwIBjG4ICVKT2DjB6kZWohogBIiN70FmMNZOaKPKJtzgJ+cyn6xjBTDH2JPBTfsUZovN/vQj+0OVFts6x2v99Q==} dev: true - /@storybook/node-logger@7.6.3: - resolution: {integrity: sha512-7yL0CMHuh1DhpUAoKCU0a53DvxBpkUom9SX5RaC1G2A9BK/B3XcHtDPAC0uyUwNCKLJMZo9QtmJspvxWjR0LtA==} + /@storybook/node-logger@7.6.4: + resolution: {integrity: sha512-GDkEnnDj4Op+PExs8ZY/P6ox3wg453CdEIaR8PR9TxF/H/T2fBL6puzma3hN2CMam6yzfAL8U+VeIIDLQ5BZdQ==} - /@storybook/postinstall@7.6.3: - resolution: {integrity: sha512-WpgdpJpY6rionluxjFZLbKiSDjvQJ5cPgufjvBRuXTsnVOsH3JNRWnPdkQkJLT9uTUMoNcyBMxbjYkK3vU6wSg==} + /@storybook/postinstall@7.6.4: + resolution: {integrity: sha512-7uoB82hSzlFSdDMS3hKQD+AaeSvPit/fAMvXCBxn0/D0UGJUZcq4M9JcKBwEHkZJcbuDROgOTJ6TUeXi/FWO0w==} - /@storybook/preview-api@7.5.3: - resolution: {integrity: sha512-LNmEf7oBRnZ1wG3bQ+P+TO29+NN5pSDJiAA6FabZBrtIVm+psc2lxBCDQvFYyAFzQSlt60toGKNW8+RfFNdR5Q==} + /@storybook/preview-api@7.6.0-beta.2: + resolution: {integrity: sha512-7T1qdcjAVOO8TGZMlrO9Nx+8ih4suG53YPGFyCn6drd3TJ4w8IefxLtp3zrYdrvCXiW26G8aKRmgvdQmzg70XQ==} dependencies: - '@storybook/channels': 7.5.3 - '@storybook/client-logger': 7.5.3 - '@storybook/core-events': 7.5.3 + '@storybook/channels': 7.6.0-beta.2 + '@storybook/client-logger': 7.6.0-beta.2 + '@storybook/core-events': 7.6.0-beta.2 '@storybook/csf': 0.1.2 '@storybook/global': 5.0.0 - '@storybook/types': 7.5.3 + '@storybook/types': 7.6.0-beta.2 '@types/qs': 6.9.8 dequal: 2.0.3 lodash: 4.17.21 @@ -4037,15 +4012,15 @@ packages: util-deprecate: 1.0.2 dev: true - /@storybook/preview-api@7.6.0-beta.2: - resolution: {integrity: sha512-7T1qdcjAVOO8TGZMlrO9Nx+8ih4suG53YPGFyCn6drd3TJ4w8IefxLtp3zrYdrvCXiW26G8aKRmgvdQmzg70XQ==} + /@storybook/preview-api@7.6.3: + resolution: {integrity: sha512-uPaK7yLE1P++F+IOb/1j9pgdCwfMYZrUPHogF/Mf9r4cfEjDCcIeKgGMcsbU1KnkzNQQGPh8JRzRr/iYnLjswg==} dependencies: - '@storybook/channels': 7.6.0-beta.2 - '@storybook/client-logger': 7.6.0-beta.2 - '@storybook/core-events': 7.6.0-beta.2 + '@storybook/channels': 7.6.3 + '@storybook/client-logger': 7.6.3 + '@storybook/core-events': 7.6.3 '@storybook/csf': 0.1.2 '@storybook/global': 5.0.0 - '@storybook/types': 7.6.0-beta.2 + '@storybook/types': 7.6.3 '@types/qs': 6.9.8 dequal: 2.0.3 lodash: 4.17.21 @@ -4056,15 +4031,15 @@ packages: util-deprecate: 1.0.2 dev: true - /@storybook/preview-api@7.6.3: - resolution: {integrity: sha512-uPaK7yLE1P++F+IOb/1j9pgdCwfMYZrUPHogF/Mf9r4cfEjDCcIeKgGMcsbU1KnkzNQQGPh8JRzRr/iYnLjswg==} + /@storybook/preview-api@7.6.4: + resolution: {integrity: sha512-KhisNdQX5NdfAln+spLU4B82d804GJQp/CnI5M1mm/taTnjvMgs/wTH9AmR89OPoq+tFZVW0vhy2zgPS3ar71A==} dependencies: - '@storybook/channels': 7.6.3 - '@storybook/client-logger': 7.6.3 - '@storybook/core-events': 7.6.3 + '@storybook/channels': 7.6.4 + '@storybook/client-logger': 7.6.4 + '@storybook/core-events': 7.6.4 '@storybook/csf': 0.1.2 '@storybook/global': 5.0.0 - '@storybook/types': 7.6.3 + '@storybook/types': 7.6.4 '@types/qs': 6.9.8 dequal: 2.0.3 lodash: 4.17.21 @@ -4074,12 +4049,12 @@ packages: ts-dedent: 2.2.0 util-deprecate: 1.0.2 - /@storybook/preview@7.6.3: - resolution: {integrity: sha512-obSmKN8arWSHuLbCDM1H0lTVRMvAP/l7vOi6TQtFi6TxBz9MRCJA3Ugc0PZrbDADVZP+cp0ZJA0JQtAm+SqNAA==} + /@storybook/preview@7.6.4: + resolution: {integrity: sha512-p9xIvNkgXgTpSRphOMV9KpIiNdkymH61jBg3B0XyoF6IfM1S2/mQGvC89lCVz1dMGk2SrH4g87/WcOapkU5ArA==} dev: true - /@storybook/react-dom-shim@7.6.3(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-UtaEaTQB27aBsAmn5IfAYkX2xl4wWWXkoAO/jUtx86FQ/r85FG0zxh/rac6IgzjYUqzjJtjIeLdeciG/48hMMA==} + /@storybook/react-dom-shim@7.6.4(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-wGJfomlDEBnowNmhmumWDu/AcUInxSoPqUUJPgk2f5oL0EW17fR9fDP/juG3XOEdieMDM0jDX48GML7lyvL2fg==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -4087,24 +4062,24 @@ packages: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - /@storybook/react-vite@7.6.3(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2)(vite@4.5.0): - resolution: {integrity: sha512-sPrNJbnThmxsSeNj6vyG9pCCnnYzyiS+f7DVy2qeQrXvEuCYiQc503bavE3BKLxqjZQ3SkbhPsiEHcaw3I9x7A==} + /@storybook/react-vite@7.6.4(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3)(vite@4.5.1): + resolution: {integrity: sha512-1NYzCJRO6k/ZyoMzpu1FQiaUaiLNjAvTAB1x3HE7oY/tEIT8kGpzXGYH++LJVWvyP/5dSWlUnRSy2rJvySraiw==} engines: {node: '>=16'} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 vite: ^3.0.0 || ^4.0.0 || ^5.0.0 dependencies: - '@joshwooding/vite-plugin-react-docgen-typescript': 0.3.0(typescript@5.3.2)(vite@4.5.0) + '@joshwooding/vite-plugin-react-docgen-typescript': 0.3.0(typescript@5.3.3)(vite@4.5.1) '@rollup/pluginutils': 5.0.2 - '@storybook/builder-vite': 7.6.3(typescript@5.3.2)(vite@4.5.0) - '@storybook/react': 7.6.3(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2) - '@vitejs/plugin-react': 3.1.0(vite@4.5.0) + '@storybook/builder-vite': 7.6.4(typescript@5.3.3)(vite@4.5.1) + '@storybook/react': 7.6.4(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@vitejs/plugin-react': 3.1.0(vite@4.5.1) magic-string: 0.30.1 react: 18.2.0 react-docgen: 7.0.1 react-dom: 18.2.0(react@18.2.0) - vite: 4.5.0(@types/node@18.19.1) + vite: 4.5.1(@types/node@18.19.3) transitivePeerDependencies: - '@preact/preset-vite' - encoding @@ -4114,8 +4089,8 @@ packages: - vite-plugin-glimmerx dev: true - /@storybook/react@7.6.3(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.2): - resolution: {integrity: sha512-W+530cC0BAU+yBc7NzSXYWR3e8Lo5qMsmFJjWYK7zGW/YZGhSG3mjhF9pDzNM+cMtHvUS6qf5PJPQM8jePpPhg==} + /@storybook/react@7.6.4(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): + resolution: {integrity: sha512-XYRP+eylH3JqkCuziwtQGY5vOCeDreOibRYJmj5na6k4QbURjGVB44WCIW04gWVlmBXM9SqLAmserUi3HP890Q==} engines: {node: '>=16.0.0'} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -4125,16 +4100,16 @@ packages: typescript: optional: true dependencies: - '@storybook/client-logger': 7.6.3 - '@storybook/core-client': 7.6.3 - '@storybook/docs-tools': 7.6.3 + '@storybook/client-logger': 7.6.4 + '@storybook/core-client': 7.6.4 + '@storybook/docs-tools': 7.6.4 '@storybook/global': 5.0.0 - '@storybook/preview-api': 7.6.3 - '@storybook/react-dom-shim': 7.6.3(react-dom@18.2.0)(react@18.2.0) - '@storybook/types': 7.6.3 + '@storybook/preview-api': 7.6.4 + '@storybook/react-dom-shim': 7.6.4(react-dom@18.2.0)(react@18.2.0) + '@storybook/types': 7.6.4 '@types/escodegen': 0.0.6 '@types/estree': 0.0.51 - '@types/node': 18.19.1 + '@types/node': 18.19.3 acorn: 7.4.1 acorn-jsx: 5.3.2(acorn@7.4.1) acorn-walk: 7.2.0 @@ -4147,30 +4122,25 @@ packages: react-element-to-jsx-string: 15.0.0(react-dom@18.2.0)(react@18.2.0) ts-dedent: 2.2.0 type-fest: 2.19.0 - typescript: 5.3.2 + typescript: 5.3.3 util-deprecate: 1.0.2 transitivePeerDependencies: - encoding - supports-color dev: true - /@storybook/router@7.5.3(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-/iNYCFore7R5n6eFHbBYoB0P2/sybTVpA+uXTNUd3UEt7Ro6CEslTaFTEiH2RVQwOkceBp/NpyWon74xZuXhMg==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + /@storybook/router@7.6.3: + resolution: {integrity: sha512-NZfhJqsXYca9mZCL/LGx6FmZDbrxX2S4ImW7Tqdtcc/sSlZ0BpCDkNUTesCA287cmoKMhXZRh/+bU+C2h2a+bw==} dependencies: - '@storybook/client-logger': 7.5.3 + '@storybook/client-logger': 7.6.3 memoizerific: 1.11.3 qs: 6.11.2 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) dev: true - /@storybook/router@7.6.3: - resolution: {integrity: sha512-NZfhJqsXYca9mZCL/LGx6FmZDbrxX2S4ImW7Tqdtcc/sSlZ0BpCDkNUTesCA287cmoKMhXZRh/+bU+C2h2a+bw==} + /@storybook/router@7.6.4: + resolution: {integrity: sha512-5MQ7Z4D7XNPN2yhFgjey7hXOYd6s8CggUqeAwhzGTex90SMCkKHSz1hfkcXn1ZqBPaall2b53uK553OvPLp9KQ==} dependencies: - '@storybook/client-logger': 7.6.3 + '@storybook/client-logger': 7.6.4 memoizerific: 1.11.3 qs: 6.11.2 @@ -4198,42 +4168,33 @@ packages: ts-dedent: 2.2.0 dev: true - /@storybook/theming@7.5.3(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-Cjmthe1MAk0z4RKCZ7m72gAD8YD0zTAH97z5ryM1Qv84QXjiCQ143fGOmYz1xEQdNFpOThPcwW6FEccLHTkVcg==} + /@storybook/theming@7.6.3(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-9ToNU2LM6a2kVBjOXitXEeEOuMurVLhn+uaZO1dJjv8NGnJVYiLwNPwrLsImiUD8/XXNuil972aanBR6+Aj9jw==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: '@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.2.0) - '@storybook/client-logger': 7.5.3 + '@storybook/client-logger': 7.6.3 '@storybook/global': 5.0.0 memoizerific: 1.11.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: true - /@storybook/theming@7.6.3(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-9ToNU2LM6a2kVBjOXitXEeEOuMurVLhn+uaZO1dJjv8NGnJVYiLwNPwrLsImiUD8/XXNuil972aanBR6+Aj9jw==} + /@storybook/theming@7.6.4(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-Z/dcC5EpkIXelYCkt9ojnX6D7qGOng8YHxV/OWlVE9TrEGYVGPOEfwQryR0RhmGpDha1TYESLYrsDb4A8nJ1EA==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: '@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.2.0) - '@storybook/client-logger': 7.6.3 + '@storybook/client-logger': 7.6.4 '@storybook/global': 5.0.0 memoizerific: 1.11.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - /@storybook/types@7.5.3: - resolution: {integrity: sha512-iu5W0Kdd6nysN5CPkY4GRl+0BpxRTdSfBIJak7mb6xCIHSB5t1tw4BOuqMQ5EgpikRY3MWJ4gY647QkWBX3MNQ==} - dependencies: - '@storybook/channels': 7.5.3 - '@types/babel__core': 7.20.4 - '@types/express': 4.17.18 - file-system-cache: 2.3.0 - dev: true - /@storybook/types@7.6.0-beta.2: resolution: {integrity: sha512-UJRRGxeqiD42leHMpLdd4XQ9IgMVgggozrFHhhg5sj1msPmwNz+tHv87TSMkcpqkNOgjIIBK2Z9iP670mbPHVQ==} dependencies: @@ -4250,6 +4211,15 @@ packages: '@types/babel__core': 7.20.4 '@types/express': 4.17.18 file-system-cache: 2.3.0 + dev: true + + /@storybook/types@7.6.4: + resolution: {integrity: sha512-qyiiXPCvol5uVgfubcIMzJBA0awAyFPU+TyUP1mkPYyiTHnsHYel/mKlSdPjc8a97N3SlJXHOCx41Hde4IyJgg==} + dependencies: + '@storybook/channels': 7.6.4 + '@types/babel__core': 7.20.4 + '@types/express': 4.17.18 + file-system-cache: 2.3.0 /@svgr/babel-plugin-add-jsx-attribute@6.5.1(@babel/core@7.23.5): resolution: {integrity: sha512-9PYGcXrAxitycIjRmZB+Q0JaN07GZIWaTBIGQzfaZv+qr1n8X1XUEJ5rZ/vx6OVD9RRYlrNnXWExQXcmZeD/BQ==} @@ -4376,13 +4346,13 @@ packages: - supports-color dev: true - /@tailwindcss/forms@0.5.7(tailwindcss@3.3.5): + /@tailwindcss/forms@0.5.7(tailwindcss@3.3.6): resolution: {integrity: sha512-QE7X69iQI+ZXwldE+rzasvbJiyV/ju1FGHH0Qn2W3FKbuYtqp8LKcy6iSw79fVUT5/Vvf+0XgLCeYVG+UV6hOw==} peerDependencies: tailwindcss: '>=3.0.0 || >= 3.0.0-alpha.1' dependencies: mini-svg-data-uri: 1.4.4 - tailwindcss: 3.3.5 + tailwindcss: 3.3.6 dev: true /@tanstack/query-core@4.36.1: @@ -4449,7 +4419,7 @@ packages: redent: 3.0.0 vitest: 0.34.6(jsdom@21.1.2) - /@testing-library/react-hooks@8.0.1(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0): + /@testing-library/react-hooks@8.0.1(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-Aqhl2IVmLt8IovEVarNDFuJDVWVvhnr9/GCU6UUnrYXwgDFF9h2L2o2P9KBni1AST5sT6riAyoukFLyjQUgD/g==} engines: {node: '>=12'} peerDependencies: @@ -4466,7 +4436,7 @@ packages: optional: true dependencies: '@babel/runtime': 7.22.6 - '@types/react': 18.2.41 + '@types/react': 18.2.43 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) react-error-boundary: 3.1.4(react@18.2.0) @@ -4521,33 +4491,43 @@ packages: /@types/babel__core@7.20.4: resolution: {integrity: sha512-mLnSC22IC4vcWiuObSRjrLd9XcBTGf59vUSoq2jkQDJ/QQ8PMI9rSuzE+aEV8karUMbskw07bKYoUJCKTUaygg==} dependencies: - '@babel/parser': 7.23.3 - '@babel/types': 7.23.3 + '@babel/parser': 7.23.5 + '@babel/types': 7.23.5 + '@types/babel__generator': 7.6.4 + '@types/babel__template': 7.4.1 + '@types/babel__traverse': 7.20.1 + + /@types/babel__core@7.20.5: + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + dependencies: + '@babel/parser': 7.23.5 + '@babel/types': 7.23.5 '@types/babel__generator': 7.6.4 '@types/babel__template': 7.4.1 '@types/babel__traverse': 7.20.1 + dev: true /@types/babel__generator@7.6.4: resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} dependencies: - '@babel/types': 7.23.3 + '@babel/types': 7.23.5 /@types/babel__template@7.4.1: resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} dependencies: - '@babel/parser': 7.23.3 - '@babel/types': 7.23.3 + '@babel/parser': 7.23.5 + '@babel/types': 7.23.5 /@types/babel__traverse@7.20.1: resolution: {integrity: sha512-MitHFXnhtgwsGZWtT68URpOvLN4EREih1u3QtQiN4VdAxWKRVvGCSvw/Qth0M0Qq3pJpnGOu5JaM/ydK7OGbqg==} dependencies: - '@babel/types': 7.23.3 + '@babel/types': 7.23.5 /@types/body-parser@1.19.3: resolution: {integrity: sha512-oyl4jvAfTGX9Bt6Or4H9ni1Z447/tQuxnZsytsCaExKlmJiU8sFgnIBRzJUpKwB5eWn9HuBYlUlVA74q/yN0eQ==} dependencies: '@types/connect': 3.4.36 - '@types/node': 18.19.1 + '@types/node': 18.19.3 /@types/body-scroll-lock@3.1.2: resolution: {integrity: sha512-ELhtuphE/YbhEcpBf/rIV9Tl3/O0A0gpCVD+oYFSS8bWstHFJUgA4nNw1ZakVlRC38XaQEIsBogUZKWIPBvpfQ==} @@ -4571,7 +4551,7 @@ packages: /@types/connect@3.4.36: resolution: {integrity: sha512-P63Zd/JUGq+PdrM1lv0Wv5SBYeA2+CORvbrXbngriYY0jzLUWfQMQQxOhjONEz/wlHOAxOdY7CY65rgQdTjq2w==} dependencies: - '@types/node': 18.19.1 + '@types/node': 18.19.3 /@types/cookie@0.4.1: resolution: {integrity: sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==} @@ -4580,7 +4560,7 @@ packages: /@types/cross-spawn@6.0.3: resolution: {integrity: sha512-BDAkU7WHHRHnvBf5z89lcvACsvkz/n7Tv+HyD/uW76O29HoH1Tk/W6iQrepaZVbisvlEek4ygwT8IW7ow9XLAA==} dependencies: - '@types/node': 18.19.1 + '@types/node': 18.19.3 dev: true /@types/debug@4.1.8: @@ -4640,7 +4620,7 @@ packages: /@types/express-serve-static-core@4.17.37: resolution: {integrity: sha512-ZohaCYTgGFcOP7u6aJOhY9uIZQgZ2vxC2yWoArY+FeDXlqeH66ZVBjgvg+RLVAS/DWNq4Ap9ZXu1+SUQiiWYMg==} dependencies: - '@types/node': 18.19.1 + '@types/node': 18.19.3 '@types/qs': 6.9.8 '@types/range-parser': 1.2.5 '@types/send': 0.17.2 @@ -4674,13 +4654,13 @@ packages: resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} dependencies: '@types/minimatch': 5.1.2 - '@types/node': 18.19.1 + '@types/node': 18.19.3 dev: true /@types/graceful-fs@4.1.6: resolution: {integrity: sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==} dependencies: - '@types/node': 18.19.1 + '@types/node': 18.19.3 /@types/har-format@1.2.11: resolution: {integrity: sha512-T232/TneofqK30AD1LRrrf8KnjLvzrjWDp7eWST5KoiSzrBfRsLrWDPk4STQPW4NZG6v2MltnduBVmakbZOBIQ==} @@ -4763,11 +4743,11 @@ packages: /@types/node-fetch@2.6.6: resolution: {integrity: sha512-95X8guJYhfqiuVVhRFxVQcf4hW/2bCuoPwDasMf/531STFoNoWTT7YDnWdXHEZKqAGUigmpG31r2FE70LwnzJw==} dependencies: - '@types/node': 18.19.1 + '@types/node': 18.19.3 form-data: 4.0.0 - /@types/node@18.19.1: - resolution: {integrity: sha512-mZJ9V11gG5Vp0Ox2oERpeFDl+JvCwK24PGy76vVY/UgBtjwJWc5rYBThFxmbnYOm9UPZNm6wEl/sxHt2SU7x9A==} + /@types/node@18.19.3: + resolution: {integrity: sha512-k5fggr14DwAytoA/t8rPrIz++lXK7/DqckthCmoZOKNsEbJkId4Z//BqgApXBUGrGddrigYa1oqheo/7YmW4rg==} dependencies: undici-types: 5.26.5 @@ -4794,16 +4774,16 @@ packages: /@types/react-dom@18.2.17: resolution: {integrity: sha512-rvrT/M7Df5eykWFxn6MYt5Pem/Dbyc1N8Y0S9Mrkw2WFCRiqUgw9P7ul2NpwsXCSM1DVdENzdG9J5SreqfAIWg==} dependencies: - '@types/react': 18.2.41 + '@types/react': 18.2.43 /@types/react-table@7.7.18: resolution: {integrity: sha512-OncztdDERQ35pjcQCpNoQe8KPOE8Rg2Ox4PlZHMGNgHTEaM1JyT2lWfNNbj2sCnOtQOHrOH7SzUnGUAXzqdksg==} dependencies: - '@types/react': 18.2.41 + '@types/react': 18.2.43 dev: true - /@types/react@18.2.41: - resolution: {integrity: sha512-CwOGr/PiLiNBxEBqpJ7fO3kocP/2SSuC9fpH5K7tusrg4xPSRT/193rzolYwQnTN02We/ATXKnb6GqA5w4fRxw==} + /@types/react@18.2.43: + resolution: {integrity: sha512-nvOV01ZdBdd/KW6FahSbcNplt2jCJfyWdTos61RYHV+FVv5L/g9AOX1bmbVcWcLFL8+KHQfh1zVIQrud6ihyQA==} dependencies: '@types/prop-types': 15.7.5 '@types/scheduler': 0.16.3 @@ -4824,19 +4804,19 @@ packages: resolution: {integrity: sha512-aAG6yRf6r0wQ29bkS+x97BIs64ZLxeE/ARwyS6wrldMm3C1MdKwCcnnEwMC1slI8wuxJOpiUH9MioC0A0i+GJw==} dependencies: '@types/mime': 1.3.3 - '@types/node': 18.19.1 + '@types/node': 18.19.3 /@types/serve-static@1.15.3: resolution: {integrity: sha512-yVRvFsEMrv7s0lGhzrggJjNOSmZCdgCjw9xWrPr/kNNLp6FaDfMC1KaYl3TSJ0c58bECwNBMoQrZJ8hA8E1eFg==} dependencies: '@types/http-errors': 2.0.2 '@types/mime': 3.0.2 - '@types/node': 18.19.1 + '@types/node': 18.19.3 /@types/set-cookie-parser@2.4.3: resolution: {integrity: sha512-7QhnH7bi+6KAhBB+Auejz1uV9DHiopZqu7LfR/5gZZTkejJV5nYeZZpgfFoE0N8aDsXuiYpfKyfyMatCwQhyTQ==} dependencies: - '@types/node': 18.19.1 + '@types/node': 18.19.3 dev: true /@types/sortablejs@1.15.7: @@ -4887,7 +4867,7 @@ packages: resolution: {integrity: sha512-Km7XAtUIduROw7QPgvcft0lIupeG8a8rdKL8RiSyKvlE7dYY31fEn41HVuQsRFDuROA8tA4K2UVL+WdfFmErBA==} requiresBuild: true dependencies: - '@types/node': 18.19.1 + '@types/node': 18.19.3 dev: false optional: true @@ -4897,8 +4877,8 @@ packages: '@types/history': 4.7.11 dev: true - /@typescript-eslint/eslint-plugin@6.13.1(@typescript-eslint/parser@6.13.1)(eslint@8.55.0)(typescript@5.3.2): - resolution: {integrity: sha512-5bQDGkXaxD46bPvQt08BUz9YSaO4S0fB1LB5JHQuXTfkGPI3+UUeS387C/e9jRie5GqT8u5kFTrMvAjtX4O5kA==} + /@typescript-eslint/eslint-plugin@6.13.2(@typescript-eslint/parser@6.13.2)(eslint@8.55.0)(typescript@5.3.3): + resolution: {integrity: sha512-3+9OGAWHhk4O1LlcwLBONbdXsAhLjyCFogJY/cWy2lxdVJ2JrcTF2pTGMaLl2AE7U1l31n8Py4a8bx5DLf/0dQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha @@ -4909,25 +4889,25 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.6.1 - '@typescript-eslint/parser': 6.13.1(eslint@8.55.0)(typescript@5.3.2) - '@typescript-eslint/scope-manager': 6.13.1 - '@typescript-eslint/type-utils': 6.13.1(eslint@8.55.0)(typescript@5.3.2) - '@typescript-eslint/utils': 6.13.1(eslint@8.55.0)(typescript@5.3.2) - '@typescript-eslint/visitor-keys': 6.13.1 + '@typescript-eslint/parser': 6.13.2(eslint@8.55.0)(typescript@5.3.3) + '@typescript-eslint/scope-manager': 6.13.2 + '@typescript-eslint/type-utils': 6.13.2(eslint@8.55.0)(typescript@5.3.3) + '@typescript-eslint/utils': 6.13.2(eslint@8.55.0)(typescript@5.3.3) + '@typescript-eslint/visitor-keys': 6.13.2 debug: 4.3.4 eslint: 8.55.0 graphemer: 1.4.0 ignore: 5.2.4 natural-compare: 1.4.0 semver: 7.5.4 - ts-api-utils: 1.0.3(typescript@5.3.2) - typescript: 5.3.2 + ts-api-utils: 1.0.3(typescript@5.3.3) + typescript: 5.3.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser@6.13.1(eslint@8.55.0)(typescript@5.3.2): - resolution: {integrity: sha512-fs2XOhWCzRhqMmQf0eicLa/CWSaYss2feXsy7xBD/pLyWke/jCIVc2s1ikEAtSW7ina1HNhv7kONoEfVNEcdDQ==} + /@typescript-eslint/parser@6.13.2(eslint@8.55.0)(typescript@5.3.3): + resolution: {integrity: sha512-MUkcC+7Wt/QOGeVlM8aGGJZy1XV5YKjTpq9jK6r6/iLsGXhBVaGP5N0UYvFsu9BFlSpwY9kMretzdBH01rkRXg==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -4936,13 +4916,13 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 6.13.1 - '@typescript-eslint/types': 6.13.1 - '@typescript-eslint/typescript-estree': 6.13.1(typescript@5.3.2) - '@typescript-eslint/visitor-keys': 6.13.1 + '@typescript-eslint/scope-manager': 6.13.2 + '@typescript-eslint/types': 6.13.2 + '@typescript-eslint/typescript-estree': 6.13.2(typescript@5.3.3) + '@typescript-eslint/visitor-keys': 6.13.2 debug: 4.3.4 eslint: 8.55.0 - typescript: 5.3.2 + typescript: 5.3.3 transitivePeerDependencies: - supports-color dev: true @@ -4955,16 +4935,16 @@ packages: '@typescript-eslint/visitor-keys': 5.62.0 dev: true - /@typescript-eslint/scope-manager@6.13.1: - resolution: {integrity: sha512-BW0kJ7ceiKi56GbT2KKzZzN+nDxzQK2DS6x0PiSMPjciPgd/JRQGMibyaN2cPt2cAvuoH0oNvn2fwonHI+4QUQ==} + /@typescript-eslint/scope-manager@6.13.2: + resolution: {integrity: sha512-CXQA0xo7z6x13FeDYCgBkjWzNqzBn8RXaE3QVQVIUm74fWJLkJkaHmHdKStrxQllGh6Q4eUGyNpMe0b1hMkXFA==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.13.1 - '@typescript-eslint/visitor-keys': 6.13.1 + '@typescript-eslint/types': 6.13.2 + '@typescript-eslint/visitor-keys': 6.13.2 dev: true - /@typescript-eslint/type-utils@6.13.1(eslint@8.55.0)(typescript@5.3.2): - resolution: {integrity: sha512-A2qPlgpxx2v//3meMqQyB1qqTg1h1dJvzca7TugM3Yc2USDY+fsRBiojAEo92HO7f5hW5mjAUF6qobOPzlBCBQ==} + /@typescript-eslint/type-utils@6.13.2(eslint@8.55.0)(typescript@5.3.3): + resolution: {integrity: sha512-Qr6ssS1GFongzH2qfnWKkAQmMUyZSyOr0W54nZNU1MDfo+U4Mv3XveeLZzadc/yq8iYhQZHYT+eoXJqnACM1tw==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -4973,12 +4953,12 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 6.13.1(typescript@5.3.2) - '@typescript-eslint/utils': 6.13.1(eslint@8.55.0)(typescript@5.3.2) + '@typescript-eslint/typescript-estree': 6.13.2(typescript@5.3.3) + '@typescript-eslint/utils': 6.13.2(eslint@8.55.0)(typescript@5.3.3) debug: 4.3.4 eslint: 8.55.0 - ts-api-utils: 1.0.3(typescript@5.3.2) - typescript: 5.3.2 + ts-api-utils: 1.0.3(typescript@5.3.3) + typescript: 5.3.3 transitivePeerDependencies: - supports-color dev: true @@ -4988,12 +4968,12 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/types@6.13.1: - resolution: {integrity: sha512-gjeEskSmiEKKFIbnhDXUyiqVma1gRCQNbVZ1C8q7Zjcxh3WZMbzWVfGE9rHfWd1msQtPS0BVD9Jz9jded44eKg==} + /@typescript-eslint/types@6.13.2: + resolution: {integrity: sha512-7sxbQ+EMRubQc3wTfTsycgYpSujyVbI1xw+3UMRUcrhSy+pN09y/lWzeKDbvhoqcRbHdc+APLs/PWYi/cisLPg==} engines: {node: ^16.0.0 || >=18.0.0} dev: true - /@typescript-eslint/typescript-estree@5.62.0(typescript@5.3.2): + /@typescript-eslint/typescript-estree@5.62.0(typescript@5.3.3): resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -5008,14 +4988,14 @@ packages: globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.4 - tsutils: 3.21.0(typescript@5.3.2) - typescript: 5.3.2 + tsutils: 3.21.0(typescript@5.3.3) + typescript: 5.3.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/typescript-estree@6.13.1(typescript@5.3.2): - resolution: {integrity: sha512-sBLQsvOC0Q7LGcUHO5qpG1HxRgePbT6wwqOiGLpR8uOJvPJbfs0mW3jPA3ujsDvfiVwVlWUDESNXv44KtINkUQ==} + /@typescript-eslint/typescript-estree@6.13.2(typescript@5.3.3): + resolution: {integrity: sha512-SuD8YLQv6WHnOEtKv8D6HZUzOub855cfPnPMKvdM/Bh1plv1f7Q/0iFUDLKKlxHcEstQnaUU4QZskgQq74t+3w==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: typescript: '*' @@ -5023,19 +5003,19 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 6.13.1 - '@typescript-eslint/visitor-keys': 6.13.1 + '@typescript-eslint/types': 6.13.2 + '@typescript-eslint/visitor-keys': 6.13.2 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.4 - ts-api-utils: 1.0.3(typescript@5.3.2) - typescript: 5.3.2 + ts-api-utils: 1.0.3(typescript@5.3.3) + typescript: 5.3.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils@5.62.0(eslint@8.55.0)(typescript@5.3.2): + /@typescript-eslint/utils@5.62.0(eslint@8.55.0)(typescript@5.3.3): resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -5046,7 +5026,7 @@ packages: '@types/semver': 7.5.3 '@typescript-eslint/scope-manager': 5.62.0 '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.3.2) + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.3.3) eslint: 8.55.0 eslint-scope: 5.1.1 semver: 7.5.4 @@ -5055,8 +5035,8 @@ packages: - typescript dev: true - /@typescript-eslint/utils@6.13.1(eslint@8.55.0)(typescript@5.3.2): - resolution: {integrity: sha512-ouPn/zVoan92JgAegesTXDB/oUp6BP1v8WpfYcqh649ejNc9Qv+B4FF2Ff626kO1xg0wWwwG48lAJ4JuesgdOw==} + /@typescript-eslint/utils@6.13.2(eslint@8.55.0)(typescript@5.3.3): + resolution: {integrity: sha512-b9Ptq4eAZUym4idijCRzl61oPCwwREcfDI8xGk751Vhzig5fFZR9CyzDz4Sp/nxSLBYxUPyh4QdIDqWykFhNmQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -5064,9 +5044,9 @@ packages: '@eslint-community/eslint-utils': 4.4.0(eslint@8.55.0) '@types/json-schema': 7.0.13 '@types/semver': 7.5.3 - '@typescript-eslint/scope-manager': 6.13.1 - '@typescript-eslint/types': 6.13.1 - '@typescript-eslint/typescript-estree': 6.13.1(typescript@5.3.2) + '@typescript-eslint/scope-manager': 6.13.2 + '@typescript-eslint/types': 6.13.2 + '@typescript-eslint/typescript-estree': 6.13.2(typescript@5.3.3) eslint: 8.55.0 semver: 7.5.4 transitivePeerDependencies: @@ -5082,26 +5062,26 @@ packages: eslint-visitor-keys: 3.4.3 dev: true - /@typescript-eslint/visitor-keys@6.13.1: - resolution: {integrity: sha512-NDhQUy2tg6XGNBGDRm1XybOHSia8mcXmlbKWoQP+nm1BIIMxa55shyJfZkHpEBN62KNPLrocSM2PdPcaLgDKMQ==} + /@typescript-eslint/visitor-keys@6.13.2: + resolution: {integrity: sha512-OGznFs0eAQXJsp+xSd6k/O1UbFi/K/L7WjqeRoFE7vadjAF9y0uppXhYNQNEqygjou782maGClOoZwPqF0Drlw==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.13.1 + '@typescript-eslint/types': 6.13.2 eslint-visitor-keys: 3.4.3 dev: true /@ungap/structured-clone@1.2.0: resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} - /@vavt/vite-plugin-import-markdown@1.0.0(vite@4.5.0): + /@vavt/vite-plugin-import-markdown@1.0.0(vite@4.5.1): resolution: {integrity: sha512-zBpv4UJAmCdk8/hsNXGi/KrMoASt/8GkmgkwcerD823+HvMJdrEqA43zk81hvYs/dfDSgGBaarepBDqpcDiXcg==} peerDependencies: vite: '>=2.0.0' dependencies: - vite: 4.5.0(@types/node@18.19.1) + vite: 4.5.1(@types/node@18.19.3) dev: true - /@vitejs/plugin-react@3.1.0(vite@4.5.0): + /@vitejs/plugin-react@3.1.0(vite@4.5.1): resolution: {integrity: sha512-AfgcRL8ZBhAlc3BFdigClmTUMISmmzHn7sB2h9U1odvc5U/MjWXsAaz18b/WoppUTDBzxOJwo2VdClfUcItu9g==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -5112,13 +5092,13 @@ packages: '@babel/plugin-transform-react-jsx-source': 7.23.3(@babel/core@7.23.5) magic-string: 0.27.0 react-refresh: 0.14.0 - vite: 4.5.0(@types/node@18.19.1) + vite: 4.5.1(@types/node@18.19.3) transitivePeerDependencies: - supports-color dev: true - /@vitejs/plugin-react@4.2.0(vite@4.5.0): - resolution: {integrity: sha512-+MHTH/e6H12kRp5HUkzOGqPMksezRMmW+TNzlh/QXfI8rRf6l2Z2yH/v12no1UvTwhZgEDMuQ7g7rrfMseU6FQ==} + /@vitejs/plugin-react@4.2.1(vite@4.5.1): + resolution: {integrity: sha512-oojO9IDc4nCUUi8qIR11KoQm0XFFLIwsRBwHRR4d/88IWghn1y6ckz/bJ8GHDCsYEJee8mDzqtJxh15/cisJNQ==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: vite: ^4.2.0 || ^5.0.0 @@ -5126,9 +5106,9 @@ packages: '@babel/core': 7.23.5 '@babel/plugin-transform-react-jsx-self': 7.23.3(@babel/core@7.23.5) '@babel/plugin-transform-react-jsx-source': 7.23.3(@babel/core@7.23.5) - '@types/babel__core': 7.20.4 + '@types/babel__core': 7.20.5 react-refresh: 0.14.0 - vite: 4.5.0(@types/node@18.19.1) + vite: 4.5.1(@types/node@18.19.3) transitivePeerDependencies: - supports-color dev: true @@ -6094,19 +6074,19 @@ packages: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} dev: true - /chart.js@4.4.0: - resolution: {integrity: sha512-vQEj6d+z0dcsKLlQvbKIMYFHd3t8W/7L2vfJIbYcfyPcRx92CsHqECpueN8qVGNlKyDcr5wBrYAYKnfu/9Q1hQ==} + /chart.js@4.4.1: + resolution: {integrity: sha512-C74QN1bxwV1v2PEujhmKjOZ7iUM4w6BWs23Md/6aOZZSlwMzeCIDGuZay++rBgChYru7/+QFeoQW0fQoP534Dg==} engines: {pnpm: '>=7'} dependencies: '@kurkle/color': 0.3.2 - /chartjs-adapter-date-fns@3.0.0(chart.js@4.4.0)(date-fns@2.30.0): + /chartjs-adapter-date-fns@3.0.0(chart.js@4.4.1)(date-fns@2.30.0): resolution: {integrity: sha512-Rs3iEB3Q5pJ973J93OBTpnP7qoGwvq3nUnoMdtxO+9aoJof7UFcRbWcIDteXuYd1fgAvct/32T9qaLyLuZVwCg==} peerDependencies: chart.js: '>=2.8.0' date-fns: '>=2.0.0' dependencies: - chart.js: 4.4.0 + chart.js: 4.4.1 date-fns: 2.30.0 dev: true @@ -6148,8 +6128,8 @@ packages: engines: {node: '>=6.0'} dev: true - /chromium-bidi@0.4.33(devtools-protocol@0.0.1203626): - resolution: {integrity: sha512-IxoFM5WGQOIAd95qrSXzJUv4eXIrh+RvU3rwwqIiwYuvfE7U/Llj4fejbsJnjJMUYCuGtVQsY2gv7oGl4aTNSQ==} + /chromium-bidi@0.5.1(devtools-protocol@0.0.1203626): + resolution: {integrity: sha512-dcCqOgq9fHKExc2R4JZs/oKbOghWpUNFAJODS8WKRtLhp3avtIH5UDCBrutdqZdh3pARogH8y1ObXm87emwb3g==} peerDependencies: devtools-protocol: '*' dependencies: @@ -6374,7 +6354,7 @@ packages: yaml: 1.10.2 dev: true - /cosmiconfig@8.3.6(typescript@5.3.2): + /cosmiconfig@8.3.6(typescript@5.3.3): resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} engines: {node: '>=14'} peerDependencies: @@ -6387,7 +6367,7 @@ packages: js-yaml: 4.1.0 parse-json: 5.2.0 path-type: 4.0.0 - typescript: 5.3.2 + typescript: 5.3.3 dev: false /cross-fetch@4.0.0: @@ -7033,7 +7013,7 @@ packages: eslint: 8.55.0 dev: true - /eslint-config-standard-with-typescript@39.1.1(@typescript-eslint/eslint-plugin@6.13.1)(eslint-plugin-import@2.29.0)(eslint-plugin-n@16.3.1)(eslint-plugin-promise@6.1.1)(eslint@8.55.0)(typescript@5.3.2): + /eslint-config-standard-with-typescript@39.1.1(@typescript-eslint/eslint-plugin@6.13.2)(eslint-plugin-import@2.29.0)(eslint-plugin-n@16.3.1)(eslint-plugin-promise@6.1.1)(eslint@8.55.0)(typescript@5.3.3): resolution: {integrity: sha512-t6B5Ep8E4I18uuoYeYxINyqcXb2UbC0SOOTxRtBSt2JUs+EzeXbfe2oaiPs71AIdnoWhXDO2fYOHz8df3kV84A==} peerDependencies: '@typescript-eslint/eslint-plugin': ^6.4.0 @@ -7043,14 +7023,14 @@ packages: eslint-plugin-promise: ^6.0.0 typescript: '*' dependencies: - '@typescript-eslint/eslint-plugin': 6.13.1(@typescript-eslint/parser@6.13.1)(eslint@8.55.0)(typescript@5.3.2) - '@typescript-eslint/parser': 6.13.1(eslint@8.55.0)(typescript@5.3.2) + '@typescript-eslint/eslint-plugin': 6.13.2(@typescript-eslint/parser@6.13.2)(eslint@8.55.0)(typescript@5.3.3) + '@typescript-eslint/parser': 6.13.2(eslint@8.55.0)(typescript@5.3.3) eslint: 8.55.0 eslint-config-standard: 17.1.0(eslint-plugin-import@2.29.0)(eslint-plugin-n@16.3.1)(eslint-plugin-promise@6.1.1)(eslint@8.55.0) - eslint-plugin-import: 2.29.0(@typescript-eslint/parser@6.13.1)(eslint@8.55.0) + eslint-plugin-import: 2.29.0(@typescript-eslint/parser@6.13.2)(eslint@8.55.0) eslint-plugin-n: 16.3.1(eslint@8.55.0) eslint-plugin-promise: 6.1.1(eslint@8.55.0) - typescript: 5.3.2 + typescript: 5.3.3 transitivePeerDependencies: - supports-color dev: true @@ -7065,7 +7045,7 @@ packages: eslint-plugin-promise: ^6.0.0 dependencies: eslint: 8.55.0 - eslint-plugin-import: 2.29.0(@typescript-eslint/parser@6.13.1)(eslint@8.55.0) + eslint-plugin-import: 2.29.0(@typescript-eslint/parser@6.13.2)(eslint@8.55.0) eslint-plugin-n: 16.3.1(eslint@8.55.0) eslint-plugin-promise: 6.1.1(eslint@8.55.0) dev: true @@ -7080,7 +7060,7 @@ packages: - supports-color dev: true - /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.13.1)(eslint-import-resolver-node@0.3.9)(eslint@8.55.0): + /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.13.2)(eslint-import-resolver-node@0.3.9)(eslint@8.55.0): resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} peerDependencies: @@ -7101,7 +7081,7 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 6.13.1(eslint@8.55.0)(typescript@5.3.2) + '@typescript-eslint/parser': 6.13.2(eslint@8.55.0)(typescript@5.3.3) debug: 3.2.7 eslint: 8.55.0 eslint-import-resolver-node: 0.3.9 @@ -7120,7 +7100,7 @@ packages: eslint: 8.55.0 dev: true - /eslint-plugin-import@2.29.0(@typescript-eslint/parser@6.13.1)(eslint@8.55.0): + /eslint-plugin-import@2.29.0(@typescript-eslint/parser@6.13.2)(eslint@8.55.0): resolution: {integrity: sha512-QPOO5NO6Odv5lpoTkddtutccQjysJuFxoPS7fAHO+9m9udNHvTCPSAMW9zGAYj8lAIdr40I8yPCdUYrncXtrwg==} engines: {node: '>=4'} peerDependencies: @@ -7130,7 +7110,7 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 6.13.1(eslint@8.55.0)(typescript@5.3.2) + '@typescript-eslint/parser': 6.13.2(eslint@8.55.0)(typescript@5.3.3) array-includes: 3.1.7 array.prototype.findlastindex: 1.2.3 array.prototype.flat: 1.3.2 @@ -7139,7 +7119,7 @@ packages: doctrine: 2.1.0 eslint: 8.55.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.13.1)(eslint-import-resolver-node@0.3.9)(eslint@8.55.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.13.2)(eslint-import-resolver-node@0.3.9)(eslint@8.55.0) hasown: 2.0.0 is-core-module: 2.13.1 is-glob: 4.0.3 @@ -7246,14 +7226,14 @@ packages: eslint: 8.55.0 dev: true - /eslint-plugin-storybook@0.6.15(eslint@8.55.0)(typescript@5.3.2): + /eslint-plugin-storybook@0.6.15(eslint@8.55.0)(typescript@5.3.3): resolution: {integrity: sha512-lAGqVAJGob47Griu29KXYowI4G7KwMoJDOkEip8ujikuDLxU+oWJ1l0WL6F2oDO4QiyUFXvtDkEkISMOPzo+7w==} engines: {node: 12.x || 14.x || >= 16} peerDependencies: eslint: '>=6' dependencies: '@storybook/csf': 0.0.1 - '@typescript-eslint/utils': 5.62.0(eslint@8.55.0)(typescript@5.3.2) + '@typescript-eslint/utils': 5.62.0(eslint@8.55.0)(typescript@5.3.3) eslint: 8.55.0 requireindex: 1.2.0 ts-dedent: 2.2.0 @@ -7286,7 +7266,7 @@ packages: strip-indent: 3.0.0 dev: true - /eslint-plugin-unused-imports@3.0.0(@typescript-eslint/eslint-plugin@6.13.1)(eslint@8.55.0): + /eslint-plugin-unused-imports@3.0.0(@typescript-eslint/eslint-plugin@6.13.2)(eslint@8.55.0): resolution: {integrity: sha512-sduiswLJfZHeeBJ+MQaG+xYzSWdRXoSw61DpU13mzWumCkR0ufD0HmO4kdNokjrkluMHpj/7PJeN35pgbhW3kw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -7296,7 +7276,7 @@ packages: '@typescript-eslint/eslint-plugin': optional: true dependencies: - '@typescript-eslint/eslint-plugin': 6.13.1(@typescript-eslint/parser@6.13.1)(eslint@8.55.0)(typescript@5.3.2) + '@typescript-eslint/eslint-plugin': 6.13.2(@typescript-eslint/parser@6.13.2)(eslint@8.55.0)(typescript@5.3.3) eslint: 8.55.0 eslint-rule-composer: 0.3.0 dev: true @@ -8795,7 +8775,7 @@ packages: engines: {node: '>=8'} dependencies: '@babel/core': 7.23.5 - '@babel/parser': 7.23.3 + '@babel/parser': 7.23.5 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.0 semver: 6.3.1 @@ -8878,7 +8858,7 @@ packages: dependencies: '@jest/types': 29.6.1 '@types/graceful-fs': 4.1.6 - '@types/node': 18.19.1 + '@types/node': 18.19.3 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -8895,7 +8875,7 @@ packages: engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: '@jest/types': 27.5.1 - '@types/node': 18.19.1 + '@types/node': 18.19.3 dev: true /jest-regex-util@29.4.3: @@ -8907,7 +8887,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.1 - '@types/node': 18.19.1 + '@types/node': 18.19.3 chalk: 4.1.2 ci-info: 3.8.0 graceful-fs: 4.2.11 @@ -8917,7 +8897,7 @@ packages: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 18.19.1 + '@types/node': 18.19.3 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true @@ -8926,7 +8906,7 @@ packages: resolution: {integrity: sha512-U+Wrbca7S8ZAxAe9L6nb6g8kPdia5hj32Puu5iOqBCMTMWFHXuK6dOV2IFrpedbTV8fjMFLdWNttQTBL6u2MRA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@types/node': 18.19.1 + '@types/node': 18.19.3 jest-util: 29.6.1 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -8980,7 +8960,7 @@ packages: optional: true dependencies: '@babel/core': 7.23.5 - '@babel/parser': 7.23.3 + '@babel/parser': 7.23.5 '@babel/plugin-transform-class-properties': 7.23.3(@babel/core@7.23.5) '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.5) '@babel/plugin-transform-nullish-coalescing-operator': 7.23.3(@babel/core@7.23.5) @@ -9135,15 +9115,15 @@ packages: engines: {node: '>=6'} dev: true - /laravel-vite-plugin@0.8.1(vite@4.5.0): + /laravel-vite-plugin@0.8.1(vite@4.5.1): resolution: {integrity: sha512-fxzUDjOA37kOsYq8dP+3oPIlw8/kJVXwu0hOXLun82R1LpV02shGeWGYKx2lbpKffL5I0sfPPjfqbYxuqBluAA==} engines: {node: '>=14'} peerDependencies: vite: ^3.0.0 || ^4.0.0 dependencies: picocolors: 1.0.0 - vite: 4.5.0(@types/node@18.19.1) - vite-plugin-full-reload: 1.0.5(vite@4.5.0) + vite: 4.5.1(@types/node@18.19.3) + vite-plugin-full-reload: 1.0.5(vite@4.5.1) dev: true /lazy-universal-dotenv@4.0.0: @@ -9911,7 +9891,7 @@ packages: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} dev: true - /msw@1.3.2(typescript@5.3.2): + /msw@1.3.2(typescript@5.3.3): resolution: {integrity: sha512-wKLhFPR+NitYTkQl5047pia0reNGgf0P6a1eTnA5aNlripmiz0sabMvvHcicE8kQ3/gZcI0YiPFWmYfowfm3lA==} engines: {node: '>=14'} hasBin: true @@ -9940,7 +9920,7 @@ packages: path-to-regexp: 6.2.1 strict-event-emitter: 0.4.6 type-fest: 2.19.0 - typescript: 5.3.2 + typescript: 5.3.3 yargs: 17.7.2 transitivePeerDependencies: - encoding @@ -10540,14 +10520,13 @@ packages: fast-diff: 1.3.0 dev: true - /prettier-plugin-tailwindcss@0.5.7(prettier@3.1.0): - resolution: {integrity: sha512-4v6uESAgwCni6YF6DwJlRaDjg9Z+al5zM4JfngcazMy4WEf/XkPS5TEQjbD+DZ5iNuG6RrKQLa/HuX2SYzC3kQ==} + /prettier-plugin-tailwindcss@0.5.9(prettier@3.1.0): + resolution: {integrity: sha512-9x3t1s2Cjbut2QiP+O0mDqV3gLXTe2CgRlQDgucopVkUdw26sQi53p/q4qvGxMLBDfk/dcTV57Aa/zYwz9l8Ew==} engines: {node: '>=14.21.3'} peerDependencies: '@ianvs/prettier-plugin-sort-imports': '*' '@prettier/plugin-pug': '*' '@shopify/prettier-plugin-liquid': '*' - '@shufo/prettier-plugin-blade': '*' '@trivago/prettier-plugin-sort-imports': '*' prettier: ^3.0 prettier-plugin-astro: '*' @@ -10567,8 +10546,6 @@ packages: optional: true '@shopify/prettier-plugin-liquid': optional: true - '@shufo/prettier-plugin-blade': - optional: true '@trivago/prettier-plugin-sort-imports': optional: true prettier-plugin-astro: @@ -10735,12 +10712,12 @@ packages: - utf-8-validate dev: true - /puppeteer-core@21.5.2: - resolution: {integrity: sha512-v4T0cWnujSKs+iEfmb8ccd7u4/x8oblEyKqplqKnJ582Kw8PewYAWvkH4qUWhitN3O2q9RF7dzkvjyK5HbzjLA==} + /puppeteer-core@21.6.0: + resolution: {integrity: sha512-1vrzbp2E1JpBwtIIrriWkN+A0afUxkqRuFTC3uASc5ql6iuK9ppOdIU/CPGKwOyB4YFIQ16mRbK0PK19mbXnaQ==} engines: {node: '>=16.13.2'} dependencies: - '@puppeteer/browsers': 1.8.0 - chromium-bidi: 0.4.33(devtools-protocol@0.0.1203626) + '@puppeteer/browsers': 1.9.0 + chromium-bidi: 0.5.1(devtools-protocol@0.0.1203626) cross-fetch: 4.0.0 debug: 4.3.4 devtools-protocol: 0.0.1203626 @@ -10752,14 +10729,15 @@ packages: - utf-8-validate dev: false - /puppeteer@21.5.2(typescript@5.3.2): - resolution: {integrity: sha512-BaAGJOq8Fl6/cck6obmwaNLksuY0Bg/lIahCLhJPGXBFUD2mCffypa4A592MaWnDcye7eaHmSK9yot0pxctY8A==} + /puppeteer@21.6.0(typescript@5.3.3): + resolution: {integrity: sha512-u6JhSF7xaPYZ2gd3tvhYI8MwVAjLc3Cazj7UWvMV95A07/y7cIjBwYUiMU9/jm4z0FSUORriLX/RZRaiASNWPw==} engines: {node: '>=16.13.2'} + hasBin: true requiresBuild: true dependencies: - '@puppeteer/browsers': 1.8.0 - cosmiconfig: 8.3.6(typescript@5.3.2) - puppeteer-core: 21.5.2 + '@puppeteer/browsers': 1.9.0 + cosmiconfig: 8.3.6(typescript@5.3.3) + puppeteer-core: 21.6.0 transitivePeerDependencies: - bufferutil - encoding @@ -10841,13 +10819,13 @@ packages: unpipe: 1.0.0 dev: true - /react-chartjs-2@5.2.0(chart.js@4.4.0)(react@18.2.0): + /react-chartjs-2@5.2.0(chart.js@4.4.1)(react@18.2.0): resolution: {integrity: sha512-98iN5aguJyVSxp5U3CblRLH67J8gkfyGNbiK3c+l1QI/G4irHMPQw44aEPmjVag+YKTyQ260NcF82GTQ3bdscA==} peerDependencies: chart.js: ^4.1.1 react: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: - chart.js: 4.4.0 + chart.js: 4.4.1 react: 18.2.0 dev: false @@ -10860,12 +10838,12 @@ packages: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - /react-docgen-typescript@2.2.2(typescript@5.3.2): + /react-docgen-typescript@2.2.2(typescript@5.3.3): resolution: {integrity: sha512-tvg2ZtOpOi6QDwsb3GZhOjDkkX0h8Z2gipvTg6OVMUyoYoURhEiRNePT8NZItTVCDh39JJHnLdfCOkzoLbFnTg==} peerDependencies: typescript: '>= 4.3.x' dependencies: - typescript: 5.3.2 + typescript: 5.3.3 dev: true /react-docgen@7.0.1: @@ -10873,8 +10851,8 @@ packages: engines: {node: '>=16.14.0'} dependencies: '@babel/core': 7.23.5 - '@babel/traverse': 7.23.3 - '@babel/types': 7.23.3 + '@babel/traverse': 7.23.5 + '@babel/types': 7.23.5 '@types/babel__core': 7.20.4 '@types/babel__traverse': 7.20.1 '@types/doctrine': 0.0.9 @@ -11009,14 +10987,14 @@ packages: react: 18.2.0 dev: false - /react-markdown@9.0.1(@types/react@18.2.41)(react@18.2.0): + /react-markdown@9.0.1(@types/react@18.2.43)(react@18.2.0): resolution: {integrity: sha512-186Gw/vF1uRkydbsOIkcGXw7aHq0sZOCRFFjGrr7b9+nVZg4UfA4enXCaxm4fUzecU38sWfrNDitGhshuU7rdg==} peerDependencies: '@types/react': '>=18' react: '>=18' dependencies: '@types/hast': 3.0.2 - '@types/react': 18.2.41 + '@types/react': 18.2.43 devlop: 1.1.0 hast-util-to-jsx-runtime: 2.2.0 html-url-attributes: 3.0.0 @@ -11064,7 +11042,7 @@ packages: engines: {node: '>=0.10.0'} dev: true - /react-remove-scroll-bar@2.3.4(@types/react@18.2.41)(react@18.2.0): + /react-remove-scroll-bar@2.3.4(@types/react@18.2.43)(react@18.2.0): resolution: {integrity: sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==} engines: {node: '>=10'} peerDependencies: @@ -11074,12 +11052,12 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.2.41 + '@types/react': 18.2.43 react: 18.2.0 - react-style-singleton: 2.2.1(@types/react@18.2.41)(react@18.2.0) + react-style-singleton: 2.2.1(@types/react@18.2.43)(react@18.2.0) tslib: 2.6.2 - /react-remove-scroll@2.5.5(@types/react@18.2.41)(react@18.2.0): + /react-remove-scroll@2.5.5(@types/react@18.2.43)(react@18.2.0): resolution: {integrity: sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==} engines: {node: '>=10'} peerDependencies: @@ -11089,13 +11067,13 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.2.41 + '@types/react': 18.2.43 react: 18.2.0 - react-remove-scroll-bar: 2.3.4(@types/react@18.2.41)(react@18.2.0) - react-style-singleton: 2.2.1(@types/react@18.2.41)(react@18.2.0) + react-remove-scroll-bar: 2.3.4(@types/react@18.2.43)(react@18.2.0) + react-style-singleton: 2.2.1(@types/react@18.2.43)(react@18.2.0) tslib: 2.6.2 - use-callback-ref: 1.3.0(@types/react@18.2.41)(react@18.2.0) - use-sidecar: 1.1.2(@types/react@18.2.41)(react@18.2.0) + use-callback-ref: 1.3.0(@types/react@18.2.43)(react@18.2.0) + use-sidecar: 1.1.2(@types/react@18.2.43)(react@18.2.0) /react-resize-detector@8.1.0(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-S7szxlaIuiy5UqLhLL1KY3aoyGHbZzsTpYal9eYMwCyKqoqoVLCmIgAgNyIM1FhnP2KyBygASJxdhejrzjMb+w==} @@ -11137,7 +11115,7 @@ packages: tiny-invariant: 1.2.0 dev: false - /react-style-singleton@2.2.1(@types/react@18.2.41)(react@18.2.0): + /react-style-singleton@2.2.1(@types/react@18.2.43)(react@18.2.0): resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} engines: {node: '>=10'} peerDependencies: @@ -11147,7 +11125,7 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.2.41 + '@types/react': 18.2.43 get-nonce: 1.0.1 invariant: 2.2.4 react: 18.2.0 @@ -11821,7 +11799,7 @@ packages: /store2@2.14.2: resolution: {integrity: sha512-siT1RiqlfQnGqgT/YzXVUNsom9S0H1OX+dpdGN1xkyYATo4I6sep5NmsRD/40s3IIOvlCq6akxkqG82urIZW1w==} - /storybook-i18n@2.0.13(@storybook/components@7.5.3)(@storybook/manager-api@7.5.3)(@storybook/preview-api@7.5.3)(@storybook/types@7.6.3)(react-dom@18.2.0)(react@18.2.0): + /storybook-i18n@2.0.13(@storybook/components@7.6.3)(@storybook/manager-api@7.6.3)(@storybook/preview-api@7.6.3)(@storybook/types@7.6.4)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-p0VPL5QiHdeS3W9BvV7UnuTKw7Mj1HWLW67LK0EOoh5fpSQIchu7byfrUUe1RbCF1gT0gOOhdNuTSXMoVVoTDw==} peerDependencies: '@storybook/components': ^7.0.0 @@ -11836,15 +11814,15 @@ packages: react-dom: optional: true dependencies: - '@storybook/components': 7.5.3(@types/react-dom@18.2.17)(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0) - '@storybook/manager-api': 7.5.3(react-dom@18.2.0)(react@18.2.0) - '@storybook/preview-api': 7.5.3 - '@storybook/types': 7.6.3 + '@storybook/components': 7.6.3(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) + '@storybook/manager-api': 7.6.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/preview-api': 7.6.3 + '@storybook/types': 7.6.4 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: true - /storybook-react-i18next@2.0.9(@storybook/components@7.5.3)(@storybook/manager-api@7.5.3)(@storybook/preview-api@7.5.3)(@storybook/types@7.6.3)(i18next-browser-languagedetector@7.2.0)(i18next-http-backend@2.4.2)(i18next@22.5.1)(react-dom@18.2.0)(react-i18next@12.3.1)(react@18.2.0): + /storybook-react-i18next@2.0.9(@storybook/components@7.6.3)(@storybook/manager-api@7.6.3)(@storybook/preview-api@7.6.3)(@storybook/types@7.6.4)(i18next-browser-languagedetector@7.2.0)(i18next-http-backend@2.4.2)(i18next@22.5.1)(react-dom@18.2.0)(react-i18next@12.3.1)(react@18.2.0): resolution: {integrity: sha512-GFTOrYwOWShLqWNuTesPNhC79P3OHw1jkZ4gU3R50yTD2MUclF5DHLnuKeVfKZ323iV+I9fxLxuLIVHWVDJgXA==} peerDependencies: '@storybook/components': ^7.0.0 @@ -11863,17 +11841,17 @@ packages: react-dom: optional: true dependencies: - '@storybook/components': 7.5.3(@types/react-dom@18.2.17)(@types/react@18.2.41)(react-dom@18.2.0)(react@18.2.0) - '@storybook/manager-api': 7.5.3(react-dom@18.2.0)(react@18.2.0) - '@storybook/preview-api': 7.5.3 - '@storybook/types': 7.6.3 + '@storybook/components': 7.6.3(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) + '@storybook/manager-api': 7.6.3(react-dom@18.2.0)(react@18.2.0) + '@storybook/preview-api': 7.6.3 + '@storybook/types': 7.6.4 i18next: 22.5.1 i18next-browser-languagedetector: 7.2.0 i18next-http-backend: 2.4.2 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) react-i18next: 12.3.1(i18next@22.5.1)(react-dom@18.2.0)(react@18.2.0) - storybook-i18n: 2.0.13(@storybook/components@7.5.3)(@storybook/manager-api@7.5.3)(@storybook/preview-api@7.5.3)(@storybook/types@7.6.3)(react-dom@18.2.0)(react@18.2.0) + storybook-i18n: 2.0.13(@storybook/components@7.6.3)(@storybook/manager-api@7.6.3)(@storybook/preview-api@7.6.3)(@storybook/types@7.6.4)(react-dom@18.2.0)(react@18.2.0) dev: true /storybook@7.6.0-beta.2: @@ -12112,8 +12090,8 @@ packages: resolution: {integrity: sha512-3mFKyCo/MBcgyOTlrY8T7odzZFx+w+qKSMAmdFzRvqBfLlSigU6TZnlFHK0lkMwj9Bj8OYU+9yW9lmGuS0QEnQ==} dev: false - /tailwindcss@3.3.5: - resolution: {integrity: sha512-5SEZU4J7pxZgSkv7FP1zY8i2TIAOooNZ1e/OGtxIEv6GltpoiXUqWvLy89+a10qYTB1N5Ifkuw9lqQkN9sscvA==} + /tailwindcss@3.3.6: + resolution: {integrity: sha512-AKjF7qbbLvLaPieoKeTjG1+FyNZT6KaJMJPFeQyLfIp7l82ggH1fbHJSsYIvnbTFQOlkh+gBYpyby5GT1LIdLw==} engines: {node: '>=14.0.0'} hasBin: true dependencies: @@ -12377,13 +12355,13 @@ packages: resolution: {integrity: sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==} dev: false - /ts-api-utils@1.0.3(typescript@5.3.2): + /ts-api-utils@1.0.3(typescript@5.3.3): resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==} engines: {node: '>=16.13.0'} peerDependencies: typescript: '>=4.2.0' dependencies: - typescript: 5.3.2 + typescript: 5.3.3 dev: true /ts-dedent@2.2.0: @@ -12394,7 +12372,7 @@ packages: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} dev: true - /ts-loader@9.5.1(typescript@5.3.2)(webpack@5.88.2): + /ts-loader@9.5.1(typescript@5.3.3)(webpack@5.88.2): resolution: {integrity: sha512-rNH3sK9kGZcH9dYzC7CewQm4NtxJTjSEVRJ2DyBZR7f8/wcta+iV44UPCXc5+nzDzivKtlzV6c9P4e+oFhDLYg==} engines: {node: '>=12.0.0'} peerDependencies: @@ -12406,7 +12384,7 @@ packages: micromatch: 4.0.5 semver: 7.5.4 source-map: 0.7.4 - typescript: 5.3.2 + typescript: 5.3.3 webpack: 5.88.2(esbuild@0.18.20) dev: true @@ -12426,14 +12404,14 @@ packages: /tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} - /tsutils@3.21.0(typescript@5.3.2): + /tsutils@3.21.0(typescript@5.3.3): resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} peerDependencies: typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' dependencies: tslib: 1.14.1 - typescript: 5.3.2 + typescript: 5.3.3 dev: true /type-check@0.4.0: @@ -12526,8 +12504,8 @@ packages: resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} dev: true - /typescript@5.3.2: - resolution: {integrity: sha512-6l+RyNy7oAHDfxC4FzSJcz9vnjTKxrLpDG5M2Vu4SHRVNg6xzqZp6LYSR9zjqQTu8DU/f5xwxUdADOkbrIX2gQ==} + /typescript@5.3.3: + resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==} engines: {node: '>=14.17'} hasBin: true @@ -12723,7 +12701,7 @@ packages: resolution: {integrity: sha512-WHN8KDQblxd32odxeIgo83rdVDE2bvdkb86it7bMhYZwWKJz0+O0RK/eZiHYnM+zgt/U7hAHOlCQGfjjvSkw2g==} dev: false - /use-callback-ref@1.3.0(@types/react@18.2.41)(react@18.2.0): + /use-callback-ref@1.3.0(@types/react@18.2.43)(react@18.2.0): resolution: {integrity: sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==} engines: {node: '>=10'} peerDependencies: @@ -12733,7 +12711,7 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.2.41 + '@types/react': 18.2.43 react: 18.2.0 tslib: 2.6.2 @@ -12747,7 +12725,7 @@ packages: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - /use-sidecar@1.1.2(@types/react@18.2.41)(react@18.2.0): + /use-sidecar@1.1.2(@types/react@18.2.43)(react@18.2.0): resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} engines: {node: '>=10'} peerDependencies: @@ -12757,7 +12735,7 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.2.41 + '@types/react': 18.2.43 detect-node-es: 1.1.0 react: 18.2.0 tslib: 2.6.2 @@ -12830,7 +12808,7 @@ packages: vfile-message: 4.0.2 dev: false - /vite-node@0.34.6(@types/node@18.19.1): + /vite-node@0.34.6(@types/node@18.19.3): resolution: {integrity: sha512-nlBMJ9x6n7/Amaz6F3zJ97EBwR2FkzhBRxF5e+jE6LA3yi6Wtc2lyTij1OnDMIr34v5g/tVQtsVAzhT0jc5ygA==} engines: {node: '>=v14.18.0'} hasBin: true @@ -12840,7 +12818,7 @@ packages: mlly: 1.4.0 pathe: 1.1.1 picocolors: 1.0.0 - vite: 4.5.0(@types/node@18.19.1) + vite: 4.5.1(@types/node@18.19.3) transitivePeerDependencies: - '@types/node' - less @@ -12851,24 +12829,24 @@ packages: - supports-color - terser - /vite-plugin-full-reload@1.0.5(vite@4.5.0): + /vite-plugin-full-reload@1.0.5(vite@4.5.1): resolution: {integrity: sha512-kVZFDFWr0DxiHn6MuDVTQf7gnWIdETGlZh0hvTiMXzRN80vgF4PKbONSq8U1d0WtHsKaFODTQgJeakLacoPZEQ==} peerDependencies: vite: ^2 || ^3 || ^4 dependencies: picocolors: 1.0.0 picomatch: 2.3.1 - vite: 4.5.0(@types/node@18.19.1) + vite: 4.5.1(@types/node@18.19.3) dev: true - /vite-plugin-svgr@2.4.0(vite@4.5.0): + /vite-plugin-svgr@2.4.0(vite@4.5.1): resolution: {integrity: sha512-q+mJJol6ThvqkkJvvVFEndI4EaKIjSI0I3jNFgSoC9fXAz1M7kYTVUin8fhUsFojFDKZ9VHKtX6NXNaOLpbsHA==} peerDependencies: vite: ^2.6.0 || 3 || 4 dependencies: '@rollup/pluginutils': 5.0.2 '@svgr/core': 6.5.1 - vite: 4.5.0(@types/node@18.19.1) + vite: 4.5.1(@types/node@18.19.3) transitivePeerDependencies: - rollup - supports-color @@ -12881,8 +12859,8 @@ packages: minimatch: 5.1.6 dev: true - /vite@4.5.0(@types/node@18.19.1): - resolution: {integrity: sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw==} + /vite@4.5.1(@types/node@18.19.3): + resolution: {integrity: sha512-AXXFaAJ8yebyqzoNB9fu2pHoo/nWX+xZlaRwoeYUxEqBO+Zj4msE5G+BhGBll9lYEKv9Hfks52PAF2X7qDYXQA==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true peerDependencies: @@ -12909,7 +12887,7 @@ packages: terser: optional: true dependencies: - '@types/node': 18.19.1 + '@types/node': 18.19.3 esbuild: 0.18.20 postcss: 8.4.32 rollup: 3.29.2 @@ -12949,7 +12927,7 @@ packages: dependencies: '@types/chai': 4.3.5 '@types/chai-subset': 1.3.3 - '@types/node': 18.19.1 + '@types/node': 18.19.3 '@vitest/expect': 0.34.6 '@vitest/runner': 0.34.6 '@vitest/snapshot': 0.34.6 @@ -12969,8 +12947,8 @@ packages: strip-literal: 1.0.1 tinybench: 2.5.0 tinypool: 0.7.0 - vite: 4.5.0(@types/node@18.19.1) - vite-node: 0.34.6(@types/node@18.19.1) + vite: 4.5.1(@types/node@18.19.3) + vite-node: 0.34.6(@types/node@18.19.3) why-is-node-running: 2.2.2 transitivePeerDependencies: - less @@ -13010,8 +12988,8 @@ packages: graceful-fs: 4.2.11 dev: true - /wavesurfer.js@7.4.12: - resolution: {integrity: sha512-KzH4LkcOp8LECs9cOVIPBl6vsSoICKuZz+v5kh/zvxilpaVszU+QKC+4s2KEAqcCxBCecg3cNSg4RqAx278F8g==} + /wavesurfer.js@7.5.1: + resolution: {integrity: sha512-lFDzf9+4TLCiDoGTrwrhO7zzOG3FvDSA2uo2aE19TpTGL1tSaB0tDuRM9VyeQXJyKujHNgibWhn+pCbj6oa8UA==} dev: false /wcwidth@1.0.1: diff --git a/resources/js/Components/Tokens/TokenPriceChart.helpers.ts b/resources/js/Components/Tokens/TokenPriceChart.helpers.ts index 3cd2fcef0..f86fb3366 100644 --- a/resources/js/Components/Tokens/TokenPriceChart.helpers.ts +++ b/resources/js/Components/Tokens/TokenPriceChart.helpers.ts @@ -16,7 +16,7 @@ export const chartColors = { const labelFont = { size: 12, - weight: "500", + weight: 500, color: chartColors.primary.default, family: ["Ubuntu", ...defaultTheme.fontFamily.sans].join(", "), }; @@ -59,10 +59,10 @@ export const buildChartOptions = ({ intersect: false, displayColors: false, titleFont: { - weight: "400", + weight: 400, }, bodyFont: { - weight: "600", + weight: 600, }, callbacks: { title: getTooltipTitle, From 5f478ed9e4a003121e72035f5516ea4406299e7b Mon Sep 17 00:00:00 2001 From: Alfonso Bribiesca Date: Thu, 14 Dec 2023 01:47:03 -0600 Subject: [PATCH 048/145] feat: floor price change percentage (#554) --- .../Collections/PopularCollectionData.php | 4 +- .../Collections/VotableCollectionData.php | 2 + app/Http/Controllers/CollectionController.php | 3 +- .../PopularCollectionController.php | 2 +- app/Jobs/FetchCollectionFloorPrice.php | 10 ++- app/Models/Collection.php | 29 ++++++++- app/Models/FloorPriceHistory.php | 38 +++++++++++ app/Models/Traits/HasFloorPriceHistory.php | 19 ++++++ .../factories/FloorPriceHistoryFactory.php | 30 +++++++++ ...02944_create_floor_price_history_table.php | 23 +++++++ .../CollectionFloorPriceHistorySeeder.php | 33 ++++++++++ database/seeders/DatabaseSeeder.php | 1 + .../PopularCollectionsTable.blocks.tsx | 65 ++++++++++--------- .../PopularCollectionsTable.test.tsx | 9 ++- .../Collections/PopularCollectionFactory.ts | 1 + .../VotableCollectionDataFactory.ts | 1 + resources/types/generated.d.ts | 2 + .../Jobs/FetchCollectionFloorPriceTest.php | 10 +++ tests/App/Models/CollectionTest.php | 15 +++++ 19 files changed, 260 insertions(+), 37 deletions(-) create mode 100644 app/Models/FloorPriceHistory.php create mode 100644 app/Models/Traits/HasFloorPriceHistory.php create mode 100644 database/factories/FloorPriceHistoryFactory.php create mode 100644 database/migrations/2023_12_11_202944_create_floor_price_history_table.php create mode 100644 database/seeders/CollectionFloorPriceHistorySeeder.php diff --git a/app/Data/Collections/PopularCollectionData.php b/app/Data/Collections/PopularCollectionData.php index 192a29d34..5cf57332b 100644 --- a/app/Data/Collections/PopularCollectionData.php +++ b/app/Data/Collections/PopularCollectionData.php @@ -25,6 +25,7 @@ public function __construct( public ?string $floorPrice, public ?string $floorPriceCurrency, public ?int $floorPriceDecimals, + public ?float $floorPriceChange, public ?string $volume, public ?float $volumeFiat, public ?string $volumeCurrency, @@ -36,7 +37,7 @@ public function __construct( public static function fromModel(Collection $collection, CurrencyCode $currency): self { - /** @var mixed $collection (volume_fiat is add with the `scopeSelectVolumeFiat`) */ + /** @var mixed $collection (volume_fiat is added with the `scopeAddSelectVolumeFiat` and `price_change_24h` with the `scopeAddFloorPriceChange`) */ return new self( id: $collection->id, name: $collection->name, @@ -45,6 +46,7 @@ public static function fromModel(Collection $collection, CurrencyCode $currency) floorPrice: $collection->floor_price, floorPriceCurrency: $collection->floorPriceToken ? Str::lower($collection->floorPriceToken->symbol) : null, floorPriceDecimals: $collection->floorPriceToken?->decimals, + floorPriceChange: $collection->price_change_24h !== null ? (float) $collection->price_change_24h : null, volume: $collection->volume, volumeFiat: (float) $collection->volume_fiat, // Volume is normalized to `ETH` diff --git a/app/Data/Collections/VotableCollectionData.php b/app/Data/Collections/VotableCollectionData.php index de89d0433..2a196117f 100644 --- a/app/Data/Collections/VotableCollectionData.php +++ b/app/Data/Collections/VotableCollectionData.php @@ -26,6 +26,7 @@ public function __construct( public ?float $floorPriceFiat, public ?string $floorPriceCurrency, public ?int $floorPriceDecimals, + public ?float $floorPriceChange, public ?string $volume, public ?float $volumeFiat, public string $volumeCurrency, @@ -51,6 +52,7 @@ public static function fromModel(Collection $collection, CurrencyCode $currency, floorPriceFiat: (float) $collection->fiatValue($currency), floorPriceCurrency: $collection->floor_price_symbol, floorPriceDecimals: $collection->floor_price_decimals, + floorPriceChange: $collection->price_change_24h !== null ? (float) $collection->price_change_24h : null, volume: $collection->volume, volumeFiat: (float) $collection->volume_fiat, // Volume is normalized to `ETH` diff --git a/app/Http/Controllers/CollectionController.php b/app/Http/Controllers/CollectionController.php index 1bc68590f..d451854d3 100644 --- a/app/Http/Controllers/CollectionController.php +++ b/app/Http/Controllers/CollectionController.php @@ -150,7 +150,8 @@ private function getPopularCollections(Request $request): Paginator 'network', 'floorPriceToken', ]) - ->selectVolumeFiat($currency) + ->addSelectVolumeFiat($currency) + ->addFloorPriceChange() ->addSelect('collections.*') ->groupBy('collections.id') ->simplePaginate(12); diff --git a/app/Http/Controllers/PopularCollectionController.php b/app/Http/Controllers/PopularCollectionController.php index a75e1f823..21275dadc 100644 --- a/app/Http/Controllers/PopularCollectionController.php +++ b/app/Http/Controllers/PopularCollectionController.php @@ -45,7 +45,7 @@ public function index(Request $request): Response|JsonResponse|RedirectResponse 'nfts' => fn ($q) => $q->limit(4), ]) ->withCount('nfts') - ->selectVolumeFiat($currency) + ->addSelectVolumeFiat($currency) ->addSelect('collections.*') ->groupBy('collections.id') ->paginate($perPage) diff --git a/app/Jobs/FetchCollectionFloorPrice.php b/app/Jobs/FetchCollectionFloorPrice.php index 2d6ded945..14dde68de 100644 --- a/app/Jobs/FetchCollectionFloorPrice.php +++ b/app/Jobs/FetchCollectionFloorPrice.php @@ -79,9 +79,17 @@ public function handle(): void $collection->update([ 'floor_price' => $price, 'floor_price_token_id' => $token?->id, - 'floor_price_retrieved_at' => $token ? $floorPrice->retrievedAt : null, + 'floor_price_retrieved_at' => $floorPrice->retrievedAt, ]); + if ($price !== null) { + $collection->floorPriceHistory()->create([ + 'floor_price' => $price, + 'token_id' => $token->id, + 'retrieved_at' => $floorPrice->retrievedAt, + ]); + } + Log::info('FetchCollectionFloorPrice Job: Set floor price', [ 'chainId' => $this->chainId, 'address' => $this->address, diff --git a/app/Models/Collection.php b/app/Models/Collection.php index ccba5e533..41b0bd5c7 100644 --- a/app/Models/Collection.php +++ b/app/Models/Collection.php @@ -7,6 +7,7 @@ use App\Casts\StrippedHtml; use App\Enums\CurrencyCode; use App\Models\Traits\BelongsToNetwork; +use App\Models\Traits\HasFloorPriceHistory; use App\Models\Traits\HasWalletVotes; use App\Models\Traits\Reportable; use App\Notifications\CollectionReport; @@ -41,7 +42,7 @@ */ class Collection extends Model { - use BelongsToNetwork, HasEagerLimit, HasFactory, HasSlug, HasWalletVotes, Reportable, SoftDeletes; + use BelongsToNetwork, HasEagerLimit, HasFactory, HasFloorPriceHistory, HasSlug, HasWalletVotes, Reportable, SoftDeletes; const TWITTER_URL = 'https://x.com/'; @@ -625,7 +626,8 @@ public function scopeVotableWithRank(Builder $query, CurrencyCode $currency): Bu public function scopeVotable(Builder $query, CurrencyCode $currency, bool $orderByVotes = true): Builder { return $query - ->selectVolumeFiat($currency) + ->addSelectVolumeFiat($currency) + ->addFloorPriceChange() ->addSelect([ 'collections.*', DB::raw('MIN(floor_price_token.symbol) as floor_price_symbol'), @@ -649,7 +651,7 @@ public function scopeVotable(Builder $query, CurrencyCode $currency, bool $order * @param Builder $query * @return Builder */ - public function scopeSelectVolumeFiat(Builder $query, CurrencyCode $currency): Builder + public function scopeAddSelectVolumeFiat(Builder $query, CurrencyCode $currency): Builder { $currencyCode = Str::lower($currency->value); @@ -660,6 +662,27 @@ public function scopeSelectVolumeFiat(Builder $query, CurrencyCode $currency): B )->leftJoin('tokens as eth_token', 'eth_token.symbol', '=', DB::raw("'ETH'")); } + /** + * @param Builder $query + * @return Builder + */ + public function scopeAddFloorPriceChange(Builder $query): Builder + { + return $query->addSelect( + DB::raw("( + SELECT + (AVG(case when fp1.retrieved_at >= CURRENT_DATE then fp1.floor_price end) - + AVG(case when fp1.retrieved_at >= CURRENT_DATE - INTERVAL '1 DAY' AND fp1.retrieved_at < CURRENT_DATE then fp1.floor_price end)) / + AVG(case when fp1.retrieved_at >= CURRENT_DATE - INTERVAL '1 DAY' AND fp1.retrieved_at < CURRENT_DATE then fp1.floor_price end) * 100 + FROM + floor_price_history fp1 + WHERE + fp1.collection_id = collections.id AND + fp1.retrieved_at >= CURRENT_DATE - INTERVAL '1 DAY') AS price_change_24h + ") + ); + } + /** * @param Builder $query * @return Builder diff --git a/app/Models/FloorPriceHistory.php b/app/Models/FloorPriceHistory.php new file mode 100644 index 000000000..d90e08fb7 --- /dev/null +++ b/app/Models/FloorPriceHistory.php @@ -0,0 +1,38 @@ + + */ + protected $fillable = [ + 'floor_price', + 'token_id', + 'retrieved_at', + ]; + + /** + * The attributes that should be cast. + * + * @var array + */ + protected $casts = [ + 'retrieved_at' => 'datetime', + ]; +} diff --git a/app/Models/Traits/HasFloorPriceHistory.php b/app/Models/Traits/HasFloorPriceHistory.php new file mode 100644 index 000000000..51dd149ed --- /dev/null +++ b/app/Models/Traits/HasFloorPriceHistory.php @@ -0,0 +1,19 @@ + + */ + public function floorPriceHistory(): HasMany + { + return $this->hasMany(FloorPriceHistory::class); + } +} diff --git a/database/factories/FloorPriceHistoryFactory.php b/database/factories/FloorPriceHistoryFactory.php new file mode 100644 index 000000000..17f9d0bf9 --- /dev/null +++ b/database/factories/FloorPriceHistoryFactory.php @@ -0,0 +1,30 @@ + + */ +class FloorPriceHistoryFactory extends Factory +{ + /** + * Define the model's default state. + * + * @return array + */ + public function definition(): array + { + return [ + 'collection_id' => fn () => Collection::factory(), + 'floor_price' => (string) (random_int(50, 1000) * 1e18), + 'token_id' => fn () => Token::factory(), + 'retrieved_at' => $this->faker->dateTimeBetween('-3 days', 'now'), + ]; + } +} diff --git a/database/migrations/2023_12_11_202944_create_floor_price_history_table.php b/database/migrations/2023_12_11_202944_create_floor_price_history_table.php new file mode 100644 index 000000000..c96a983b4 --- /dev/null +++ b/database/migrations/2023_12_11_202944_create_floor_price_history_table.php @@ -0,0 +1,23 @@ +id(); + $table->foreignIdFor(Collection::class)->constrained()->cascadeOnDelete()->index(); + $table->addColumn('numeric', 'floor_price', ['numeric_type' => 'numeric']); + $table->foreignIdFor(Token::class, 'token_id')->cascadeOnDelete(); + $table->timestamp('retrieved_at')->index(); + }); + } +}; diff --git a/database/seeders/CollectionFloorPriceHistorySeeder.php b/database/seeders/CollectionFloorPriceHistorySeeder.php new file mode 100644 index 000000000..0debcd247 --- /dev/null +++ b/database/seeders/CollectionFloorPriceHistorySeeder.php @@ -0,0 +1,33 @@ +flatMap(function (Collection $collection) { + // 30% chance of no entries, 70% chance of 1-10 entries + $totalEntries = fake()->boolean(30) ? 0 : fake()->numberBetween(1, 10); + + return collect(range(0, $totalEntries))->map(fn ($index) => FloorPriceHistory::factory()->raw([ + 'collection_id' => $collection->id, + ]))->sortBy('retrieved_at')->toArray(); + })->toArray(); + + FloorPriceHistory::insert($data); + + } +} diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index 0f3073710..07c5a15e0 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -34,6 +34,7 @@ public function run(): void if (Feature::active(Features::Collections->value) || Feature::active(Features::Galleries->value)) { $this->call(NftSeeder::class); $this->call(CollectionVotesSeeder::class); + $this->call(CollectionFloorPriceHistorySeeder::class); } if (Feature::active(Features::Galleries->value)) { diff --git a/resources/js/Components/Collections/PopularCollectionsTable/PopularCollectionsTable.blocks.tsx b/resources/js/Components/Collections/PopularCollectionsTable/PopularCollectionsTable.blocks.tsx index 089cf70c9..75c44e29e 100644 --- a/resources/js/Components/Collections/PopularCollectionsTable/PopularCollectionsTable.blocks.tsx +++ b/resources/js/Components/Collections/PopularCollectionsTable/PopularCollectionsTable.blocks.tsx @@ -66,38 +66,45 @@ export const PopularCollectionFloorPrice = ({ }: { collection: Pick< App.Data.Collections.PopularCollectionData, - "floorPrice" | "floorPriceCurrency" | "floorPriceDecimals" + "floorPrice" | "floorPriceCurrency" | "floorPriceDecimals" | "floorPriceChange" >; -}): JSX.Element => ( -
    -
    -
    - -
    +}): JSX.Element => { + const { t } = useTranslation(); - - {/* @TODO: Make dynamic */} - - + return ( +
    +
    +
    + +
    + + + {collection.floorPriceChange != null ? ( + + ) : ( + {t("common.na")} + )} + +
    -
    -); + ); +}; export const PopularCollectionVolume = ({ collection, diff --git a/resources/js/Components/Collections/PopularCollectionsTable/PopularCollectionsTable.test.tsx b/resources/js/Components/Collections/PopularCollectionsTable/PopularCollectionsTable.test.tsx index 6b6d39301..159bbb440 100644 --- a/resources/js/Components/Collections/PopularCollectionsTable/PopularCollectionsTable.test.tsx +++ b/resources/js/Components/Collections/PopularCollectionsTable/PopularCollectionsTable.test.tsx @@ -26,7 +26,14 @@ describe("PopularCollectionsTable", () => { useAuthorizedActionSpy.mockRestore(); }); - const collections = new PopularCollectionFactory().createMany(3); + const collections = [ + ...new PopularCollectionFactory().createMany(2, { + floorPriceChange: 50, + }), + ...new PopularCollectionFactory().createMany(2, { + floorPriceChange: null, + }), + ]; const user = new UserDataFactory().create(); diff --git a/resources/js/Tests/Factories/Collections/PopularCollectionFactory.ts b/resources/js/Tests/Factories/Collections/PopularCollectionFactory.ts index 103069e08..5e3abbc3a 100644 --- a/resources/js/Tests/Factories/Collections/PopularCollectionFactory.ts +++ b/resources/js/Tests/Factories/Collections/PopularCollectionFactory.ts @@ -11,6 +11,7 @@ export default class PopularCollectionFactory extends ModelFactoryfloor_price)->toBe('1229900000000000000') ->and($collection->floor_price_token_id)->toBe($token->id); + + expect($collection->floorPriceHistory()->count())->toBe(1); + + $floorPriceHistory = $collection->floorPriceHistory()->first(); + + expect($floorPriceHistory->floor_price)->toBe('1229900000000000000') + ->and($floorPriceHistory->token_id)->toBe($token->id) + ->and($floorPriceHistory->retrieved_at)->toBeInstanceOf(Carbon::class); }); it('should handle null floor price in response', function () { @@ -77,6 +85,8 @@ expect($collection->floor_price)->toBe(null) ->and($collection->floor_price_token_id)->toBe(null) ->and($collection->floor_price_retrieved_at->gt($retrievedAt))->toBe(true); + + expect($collection->floorPriceHistory()->count())->toBe(0); }); it('should handle non existing collection when fetching floor price', function () { diff --git a/tests/App/Models/CollectionTest.php b/tests/App/Models/CollectionTest.php index d254a506b..92ec3f022 100644 --- a/tests/App/Models/CollectionTest.php +++ b/tests/App/Models/CollectionTest.php @@ -8,6 +8,7 @@ use App\Models\Collection; use App\Models\CollectionTrait; use App\Models\CollectionVote; +use App\Models\FloorPriceHistory; use App\Models\Gallery; use App\Models\Network; use App\Models\Nft; @@ -1361,3 +1362,17 @@ $collectionWith1Vote->id, ]); }); + +it('has floor price history', function () { + $collection = Collection::factory()->create(); + + FloorPriceHistory::factory()->count(3)->create([ + 'collection_id' => $collection->id, + ]); + + FloorPriceHistory::factory()->count(2)->create(); + + expect($collection->floorPriceHistory()->count())->toBe(3); + + expect($collection->floorPriceHistory()->first())->toBeInstanceOf(FloorPriceHistory::class); +}); From 24375870be68d0935cff6a0dec6ce00ca1e8eef8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josip=20Crnkovi=C4=87?= Date: Thu, 14 Dec 2023 09:01:54 +0100 Subject: [PATCH 049/145] fix: add `typeNumeric` macro to migration (#560) --- .../2023_12_11_202944_create_floor_price_history_table.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/database/migrations/2023_12_11_202944_create_floor_price_history_table.php b/database/migrations/2023_12_11_202944_create_floor_price_history_table.php index c96a983b4..9a2a7eee9 100644 --- a/database/migrations/2023_12_11_202944_create_floor_price_history_table.php +++ b/database/migrations/2023_12_11_202944_create_floor_price_history_table.php @@ -4,14 +4,20 @@ use App\Models\Collection; use App\Models\Token; +use Illuminate\Database\Grammar; use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; +use Illuminate\Support\Fluent; return new class extends Migration { public function up(): void { + Grammar::macro('typeNumeric', function (Fluent $column) { + return $column->get('numeric_type'); + }); + Schema::create('floor_price_history', function (Blueprint $table) { $table->id(); $table->foreignIdFor(Collection::class)->constrained()->cascadeOnDelete()->index(); From e82dfc9b9a48fbc60a7710f6212d01c188060492 Mon Sep 17 00:00:00 2001 From: George Mamoulasvili Date: Thu, 14 Dec 2023 09:33:02 +0100 Subject: [PATCH 050/145] feat: show previous month winners (#546) --- .../Collections/CollectionOfTheMonthData.php | 15 + .../CollectionOfTheMonthController.php | 17 +- database/seeders/LiveSeeder.php | 2 + database/seeders/WinnerCollectionSeeder.php | 37 ++ lang/en/pages.php | 1 + resources/images/winner-badge-first.svg | 1 + resources/images/winner-badge-second.svg | 1 + resources/images/winner-badge-third.svg | 1 + resources/js/I18n/Locales/en.json | 2 +- .../Collections/CollectionOfTheMonth.tsx | 42 +-- .../Hooks/useWinnerCollections.ts | 78 ++++ .../WinnerCollections.blocks.tsx | 344 ++++++++++++++++++ .../WinnerCollections/WinnerCollections.tsx | 38 ++ .../Components/WinnerCollections/index.tsx | 3 + .../CollectionOfTheMonthFactory.ts | 7 + resources/js/images.ts | 6 + resources/types/generated.d.ts | 7 + .../CollectionOfTheMonthControllerTest.php | 4 +- 18 files changed, 570 insertions(+), 36 deletions(-) create mode 100644 database/seeders/WinnerCollectionSeeder.php create mode 100644 resources/images/winner-badge-first.svg create mode 100644 resources/images/winner-badge-second.svg create mode 100644 resources/images/winner-badge-third.svg create mode 100644 resources/js/Pages/Collections/Components/WinnerCollections/Hooks/useWinnerCollections.ts create mode 100644 resources/js/Pages/Collections/Components/WinnerCollections/WinnerCollections.blocks.tsx create mode 100644 resources/js/Pages/Collections/Components/WinnerCollections/WinnerCollections.tsx create mode 100644 resources/js/Pages/Collections/Components/WinnerCollections/index.tsx diff --git a/app/Data/Collections/CollectionOfTheMonthData.php b/app/Data/Collections/CollectionOfTheMonthData.php index 48b5b6297..71042e353 100644 --- a/app/Data/Collections/CollectionOfTheMonthData.php +++ b/app/Data/Collections/CollectionOfTheMonthData.php @@ -6,6 +6,7 @@ use App\Models\Collection; use App\Transformers\IpfsGatewayUrlTransformer; +use DateTime; use Spatie\LaravelData\Attributes\WithTransformer; use Spatie\LaravelData\Data; use Spatie\TypeScriptTransformer\Attributes\TypeScript; @@ -17,6 +18,13 @@ public function __construct( #[WithTransformer(IpfsGatewayUrlTransformer::class)] public ?string $image, public int $votes, + public ?string $volume, + public ?string $floorPrice, + public ?string $floorPriceCurrency, + public ?int $floorPriceDecimals, + public ?string $name, + public ?DateTime $hasWonAt, + public string $slug, ) { } @@ -25,6 +33,13 @@ public static function fromModel(Collection $collection): self return new self( image: $collection->extra_attributes->get('image'), votes: $collection->votes()->inPreviousMonth()->count(), + volume: $collection->volume, + floorPrice: $collection->floor_price, + floorPriceCurrency: $collection->floorPriceToken?->symbol, + floorPriceDecimals: $collection->floorPriceToken?->decimals, + name: $collection->name, + hasWonAt: $collection->has_won_at, + slug: $collection->slug ); } } diff --git a/app/Http/Controllers/CollectionOfTheMonthController.php b/app/Http/Controllers/CollectionOfTheMonthController.php index 6c2a7f47b..a72a2701f 100644 --- a/app/Http/Controllers/CollectionOfTheMonthController.php +++ b/app/Http/Controllers/CollectionOfTheMonthController.php @@ -16,7 +16,7 @@ class CollectionOfTheMonthController extends Controller public function __invoke(): Response { return Inertia::render('Collections/CollectionOfTheMonth', [ - 'collections' => fn () => $this->getCollectionsOfTheMonth(), + 'winners' => fn () => $this->getWinnerColletions(), 'allowsGuests' => true, 'title' => fn () => trans('metatags.collections.of-the-month.title', [ 'month' => Carbon::now()->startOfMonth()->subMonth()->format('F Y'), @@ -27,14 +27,21 @@ public function __invoke(): Response /** * @return DataCollection */ - private function getCollectionsOfTheMonth(): DataCollection + private function getWinnerColletions(): DataCollection { - $collections = CollectionOfTheMonthData::collection(Collection::winnersOfThePreviousMonth()->limit(3)->get()); - if ($collections->count() === 0) { + $winners = CollectionOfTheMonthData::collection( + Collection::query() + ->whereNotNull('has_won_at') + ->get() + ->sortByDesc('has_won_at') + ->values() + ); + + if ($winners->count() === 0) { abort(404); } - return $collections; + return $winners; } } diff --git a/database/seeders/LiveSeeder.php b/database/seeders/LiveSeeder.php index 76780abdc..00e5feb0d 100644 --- a/database/seeders/LiveSeeder.php +++ b/database/seeders/LiveSeeder.php @@ -16,6 +16,8 @@ public function run(): void $this->call(DatabaseSeeder::class); $this->call(LiveUserSeeder::class); + $this->call(WinnerCollectionSeeder::class); + Cache::clear(); } } diff --git a/database/seeders/WinnerCollectionSeeder.php b/database/seeders/WinnerCollectionSeeder.php new file mode 100644 index 000000000..15ce84296 --- /dev/null +++ b/database/seeders/WinnerCollectionSeeder.php @@ -0,0 +1,37 @@ +generateWinners(Carbon::now()->year); + $this->generateWinners(Carbon::now()->subYear()->year); + } + + public function generateWinners(int $year): void + { + + for ($month = 1; $month <= 12; $month++) { + + $monthlyWinnerCollections = Collection::query() + ->whereNull('has_won_at') + ->limit(3) + ->get(); + + $currentDate = Carbon::createFromDate($year, $month, 1); + + $monthlyWinnerCollections->each(function ($collection) use ($currentDate) { + $collection->update(['has_won_at' => $currentDate->toString()]); + }); + + } + } +} diff --git a/lang/en/pages.php b/lang/en/pages.php index 5a26fdaaf..2b15905e8 100644 --- a/lang/en/pages.php +++ b/lang/en/pages.php @@ -82,6 +82,7 @@ 'winners_month' => 'Winners: :month', 'vote_for_next_months_winners' => 'Vote now for next month\'s winners', 'view_previous_winners' => 'View Previous Winners', + 'previous_winners' => 'Previous Winners', 'vote_received_modal' => [ 'title' => 'Vote Received', 'description' => 'Your vote has been recorded. Share your vote on X and let everyone know!', diff --git a/resources/images/winner-badge-first.svg b/resources/images/winner-badge-first.svg new file mode 100644 index 000000000..9d587984b --- /dev/null +++ b/resources/images/winner-badge-first.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/images/winner-badge-second.svg b/resources/images/winner-badge-second.svg new file mode 100644 index 000000000..5f28e4a62 --- /dev/null +++ b/resources/images/winner-badge-second.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/images/winner-badge-third.svg b/resources/images/winner-badge-third.svg new file mode 100644 index 000000000..d4bf507ff --- /dev/null +++ b/resources/images/winner-badge-third.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/js/I18n/Locales/en.json b/resources/js/I18n/Locales/en.json index 0f04ad684..2cc70144e 100644 --- a/resources/js/I18n/Locales/en.json +++ b/resources/js/I18n/Locales/en.json @@ -1 +1 @@ -{"auth.welcome":"Welcome to Dashbrd","auth.logged_in":"You're logged in!","auth.log_out":"Log out","auth.failed":"These credentials do not match our records.","auth.session_timeout":"Your session has timed out. Please refresh the page and try connecting your account again.","auth.session_timeout_modal":"Seems like your session has timed out. Please connnect your wallet again.","auth.password":"The provided password is incorrect.","auth.throttle":"Too many login attempts. Please try again in {{seconds}} seconds.","auth.wallet.connecting":"Connecting …","auth.wallet.waiting_for_signature":"Waiting for Signature …","auth.wallet.switching_wallet":"Switching Wallet …","auth.wallet.connect":"Connect Wallet","auth.wallet.connect_long":"Connect Your Wallet to Get Started","auth.wallet.sign_subtitle":"Connect Your Wallet to Continue","auth.wallet.disconnect":"Disconnect Wallet","auth.wallet.install":"Install MetaMask","auth.wallet.install_long":"Install MetaMask to Get Started","auth.wallet.sign":"Sign Message","auth.wallet.sign_message":"Welcome to Dashbrd. In order to login, sign this message with your wallet. It doesn't cost you anything!\n\nSigning ID (you can ignore this): {{nonce}}","auth.wallet.connect_subtitle":"Click on the MetaMask icon in your browser to confirm the action and connect your wallet.","auth.wallet.requires_signature":"In order to prevent impersonation, we require a signature to perform this action. This signature is only a signed message and does not give any access to your wallet.","auth.errors.metamask.no_account":"No account found. Please connect your wallet and try again.","auth.errors.metamask.generic":"Connection attempt error. Please retry and follow the steps to connect your wallet.","auth.errors.metamask.invalid_network":"Please switch to Polygon or Ethereum Mainnet in your MetaMask plugin to connect to Dashbrd.","auth.errors.metamask.provider_missing":"You don't have MetaMask installed in your browser. Please install and try again.","auth.errors.metamask.user_rejected":"It looks like you cancelled signing of the authentication message. Please try again.","auth.errors.metamask.provider_not_set":"Ethereum provider is not set","auth.validation.wallet_login_failed":"There was a problem trying to verify your signature. Please try again.","auth.validation.invalid_address":"Your wallet address is invalid. Please try again.","auth.validation.invalid_signature":"Signature is invalid. Please try again.","auth.validation.invalid_network":"Please switch to Polygon or Ethereum Mainnet in your MetaMask plugin to connect to Dashbrd.","common.author":"Author","common.add":"Add","common.amount":"Amount","common.balance":"Balance","common.cancel":"Cancel","common.delete":"Delete","common.edit":"Edit","common.confirm":"Confirm","common.connect":"Connect","common.continue":"Continue","common.done":"Done","common.filter":"Filter","common.items":"Items","common.receive":"Receive","common.received":"Received","common.retry":"Retry","common.records":"Records","common.save":"Save","common.send":"Send","common.sent":"Sent","common.show":"Show","common.searching":"Searching...","common.other":"Other","common.owned":"Owned","common.token":"Token","common.tokens":"Tokens","common.wallet":"Wallet","common.pending":"Pending","common.publish":"Publish","common.published":"Published","common.empty":"Empty","common.your_address":"Your Address","common.warning":"Warning","common.my_address":"My Address","common.my_wallet":"My Wallet","common.my_collections":"My Collections","common.my_balance":"My Balance","common.na":"N/A","common.simple_plural_without_data":"One comment|Many comments","common.simple_plural_with_data":"{{count}} comment|{{count}} comments","common.advanced_plural_without_data":"{0} no comments yet|{1} 1 comment|[2,*] Many comments","common.advanced_plural_with_data":"{0} no comments yet|{1} 1 comment|[2,*] {{count}} comments","common.copy_clipboard":"Copy to Clipboard","common.copy":"Copy","common.download":"Download","common.zoom":"Zoom","common.my_collection":"My Collection","common.max":"Max","common.chain":"Chain","common.search":"Search","common.copied":"Copied!","common.coming_soon":"Coming Soon","common.more_details":"More Details","common.close":"Close","common.close_toast":"Close toast","common.loading":"Loading","common.price":"Price","common.articles":"Articles","common.most_popular":"Most Popular","common.market_cap":"Market Cap","common.volume":"Volume","common.volume_frequency":"Volume {{frequency}}","common.value":"Value","common.last_n_days":"Last {{count}} Days","common.details":"Details","common.view_all":"View All","common.view_more_on_polygonscan":"View More on Polygonscan","common.view_more_on_etherscan":"View More on Etherscan","common.view_nft_on_etherscan":"View NFT on Etherscan","common.view_nft_on_polygonscan":"View NFT on Polygonscan","common.view_nft_on_goerli_tesnet":"View NFT on Goerli Testnet Explorer","common.view_nft_on_mumbai_tesnet":"View NFT on Mumbai Testnet Explorer","common.polygonscan":"Polygonscan","common.etherscan":"Etherscan","common.featured":"Featured","common.floor_price":"Floor Price","common.floor":"Floor","common.supply":"Supply","common.owners":"Owners","common.created":"Created","common.nft":"NFT","common.collection":"Collection","common.collections":"Collections","common.gallery":"Gallery","common.basic_gallery":"Basic Gallery","common.gallery_name":"Gallery Name","common.create_gallery":"Create Gallery","common.external_link":"External Link","common.follow_link":"Follow Link","common.cover":"Cover","common.template":"Template","common.page":"Page","common.polygon":"Polygon","common.ethereum":"Ethereum","common.mumbai":"Mumbai","common.goerli":"Goerli","common.of":"of","common.pagination_input_placeholder":"Enter the page number","common.pagination_input_placeholder_mobile":"Page number","common.nft_count":"{0} {{count}} NFTs|{1} {{count}} NFT|[2,*] {{count}} NFTs","common.nft_gallery":"NFT Gallery","common.unable_to_retrieve_image":"Unable to retrieve your NFT image at this time","common.optional":"Optional","common.selected":"Selected","common.select":"Select","common.preview":"Preview","common.image_size_error":"Image size must not exceed 2MB","common.image_dimensions_error":"Image dimensions must exceed 287px x 190px","common.write_to_confirm":"Write {{word}} to confirm","common.n_hours":"{0} {{count}} hour|{1} {{count}} hour|[2,*] {{count}} hours","common.n_minutes":"{0} {{count}} minute|{1} {{count}} minute|[2,*] {{count}} minutes","common.report":"Report","common.nfts":"NFTs","common.n_nfts":"{0}NFTs|{1}NFT|[2,*]NFTs","common.n_collections":"{0}collections|{1}collection|[2,*]collections","common.back":"Back","common.back_to":"Back to","common.name":"Name","common.type":"Type","common.from":"From","common.to":"To","common.sale_price":"Sale Price","common.recent_activity":"Recent Activity","common.time":"Time","common.datetime.few_seconds_ago":"A few seconds ago","common.datetime.minutes_ago":"{0} Less than a minute ago|{1} A minute ago|[2,*] {{count}} minutes ago","common.datetime.hours_ago":"{0} Less than an hour ago|{1} An hour ago|[2,*] {{count}} hours ago","common.datetime.days_ago":"{0} Less than a day ago|{1} A day ago|[2,*] {{count}} days ago","common.datetime.weeks_ago":"{0} Less than a week ago|{1} A week ago|[2,*] {{count}} weeks ago","common.datetime.months_ago":"{0} Less than a month ago|{1} A month ago|[2,*] {{count}} months ago","common.datetime.years_ago":"{0} Less than a year ago|{1} A year ago|[2,*] {{count}} years ago","common.no_traits_found":"No traits found.","common.empty_transactions":"You don't have any transactions yet. Once transactions have been made, they will show up here.","common.error":"Error","common.refresh":"Refresh","common.refresh_metadata":"Refresh Metadata","common.refreshing_metadata":"Refreshing Metadata... Please check back later.","common.refreshing_activity":"Refreshing Activity... Please check back later.","common.pending_confirmation":"Pending Confirmation","common.confirmed_transaction":"Confirmed Transaction","common.transaction_error":"Transaction Error","common.transaction_error_description_first_part":"Your transaction encountered an error. View this transaction on","common.transaction_error_description_second_part":"for more details.","common.home":"Home","common.contact":"Contact","common.menu":"Menu","common.website":"Website","common.twitter":"Twitter","common.discord":"Discord","common.facebook":"Facebook","common.reddit":"Reddit","common.x":"X","common.sort":"Sort","common.drafts":"Drafts","common.draft":"Draft","common.delete_draft":"Delete Draft","common.share_on":"Share on {{platform}}","common.top":"Top","common.all_chains":"All chains","common.votes":"Votes","common.vote":"Vote","common.vol":"Vol","common.collection_preview":"Collection Preview","common.24h":"24h","common.7d":"7d","common.30d":"30d","footer.copyright":"{{year}} © Dashbrd. All rights reserved.","footer.all_rights_reserved":"All rights reserved","footer.privacy_policy":"Privacy Policy","footer.terms_of_service":"Terms of Service","footer.powered_by":"Powered by","format.fiat":"{{ value, currency }}","format.number":"{{ value, number }}","metatags.home.title":"Dashbrd | Web3 Portfolio Management Made Simple","metatags.home.description":"Simplify your Web3 journey with Dashbrd. Manage your portfolio of tokens, NFTs, and other digital collectibles across the Ethereum and Polygon blockchains.","metatags.home.image":"/images/meta/home.png","metatags.error.title":"Error {{code}} | Dashbrd","metatags.wallet.title":"My Wallet | Dashbrd","metatags.galleries.title":"Top NFT Galleries | Dashbrd","metatags.galleries.image":"/images/meta/nft-galleries.png","metatags.galleries.description":"Explore user published NFT galleries to find custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.most_popular.title":"Most Popular Galleries | Dashbrd","metatags.galleries.most_popular.image":"/images/meta/most-popular-nft-galleries.png","metatags.galleries.most_popular.description":"Explore and discover Most Popular NFT Galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.newest.title":"Newest Galleries | Dashbrd","metatags.galleries.newest.image":"/images/meta/newest-nft-galleries.png","metatags.galleries.newest.description":"Explore and discover most recent NFT galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More","metatags.galleries.most_valuable.title":"Most Valuable Galleries | Dashbrd","metatags.galleries.most_valuable.image":"/images/meta/most-valuable-nft-galleries.png","metatags.galleries.most_valuable.description":"Explore and discover Most Valuable NFT Galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.view.title":"{{name}} | Dashbrd","metatags.galleries.view.description":"{{name}} | A Curated NFT Gallery at Dashbrd","metatags.galleries.view.image":"/images/meta/nft-gallery.png","metatags.my_galleries.title":"My Galleries | Dashbrd","metatags.my_galleries.title_draft":"My Draft Galleries | Dashbrd","metatags.my_galleries.create.title":"Create Gallery | Dashbrd","metatags.my_galleries.edit.title":"Edit {{name}} | Dashbrd","metatags.collections.title":"Collections | Dashbrd","metatags.collections.view.title":"{{name}} Collection | Dashbrd","metatags.collections.view.description":"Immerse yourself in the intricate details of {{name}} collection, featuring remarkable digital assets. Start your NFT journey today!","metatags.collections.view.image":"/images/meta/nft-collection.png","metatags.collections.of-the-month.title":"Collection of the Month {{month}} | Dashbrd","metatags.my-collections.title":"My Collections | Dashbrd","metatags.popular-collections.title":"Popular NFT Collections | Dashbrd","metatags.nfts.view.title":"{{nft}} NFT | Dashbrd","metatags.nfts.view.description":"Uncover the complete story of {{nft}} NFT from the {{collection}} collection, delving into its unique attributes and distinctive features.","metatags.nfts.view.image":"/images/meta/nft-details.png","metatags.settings.title":"Settings | Dashbrd","metatags.articles.title":"Articles | Dashbrd","metatags.articles.view.title":"{{title}} | Dashbrd","metatags.login.title":"Login | Dashbrd","metatags.privacy_policy.title":"Privacy Policy | Dashbrd","metatags.privacy_policy.description":"Dashbrd’s privacy policy outlines the information we collect and explains your choices surrounding how we use information about you.","metatags.terms_of_service.title":"Terms of Service | Dashbrd","metatags.terms_of_service.description":"These Terms of Service cover your use and access to services, products or websites of Dashbrd.","metatags.cookie_policy.title":"Cookie Policy | Dashbrd","metatags.cookie_policy.description":"Dashbrd uses cookies to make the website more user-friendly. Find out about the main types of cookies we use, and what we use them for.","metatags.welcome.title":"Welcome to Dashbrd | Web3 Simplified","pages.onboarding.title":"Get Started","pages.onboarding.heading":"Your monkeys were bored and ran off, we are trying to round them up.","pages.onboarding.message":"We are setting up your account. This process usually takes just a few minutes, but can take up to 15 minutes.","pages.error.heading":"Oops, something went wrong ...","pages.error.message":"Please try again or get in touch if the issue persists.","pages.maintenance.title":"Dashbrd is currently down for scheduled maintenance.","pages.maintenance.description":"We expect to be back soon. Thanks for your patience.","pages.dashboard.title":"My Wallet","pages.dashboard.breakdown.title":"Portfolio Breakdown","pages.dashboard.line_chart.data_error":"Could not load chart data","pages.articles.title":"Articles","pages.articles.featured_collections":"Featured Collections","pages.articles.placeholder_more_soon":"More Soon","pages.articles.no_articles":"No articles have been published yet. Please check back later!","pages.articles.header_title":"Explore our collection of","pages.articles.header_suffix_one":"published article","pages.articles.header_suffix_other":"published articles","pages.articles.audio_version":"Audio version","pages.articles.consists_of_collections":"{0} This article highlights {{count}} collections|{1} This article highlights {{count}} collection|[2,*] This article highlights {{count}} collections","pages.collections.title":"Collections","pages.collections.collections":"Collections","pages.collections.popular_collections":"Popular Collections","pages.collections.collection_value":"Collection Value","pages.collections.nfts_owned":"NFTs Owned","pages.collections.header_title":"You own <0>{{nftsCount}} {{nfts}} across <0>{{collectionsCount}} {{collections}}, worth about <0><1>{{worth}}","pages.collections.search_placeholder":"Search by Collection","pages.collections.properties":"Properties","pages.collections.collections_network":"Collections Network","pages.collections.property_search_placeholder":"Feature Search","pages.collections.floor_price":"Floor Price","pages.collections.value":"Value","pages.collections.rarity":"Rarity","pages.collections.report":"Report","pages.collections.search_by_name":"Search by Collection Name","pages.collections.hide_collection":"Hide Collection","pages.collections.unhide_collection":"Unhide Collection","pages.collections.no_collections":"You do not own any NFTs yet. Once you do they will be shown here.","pages.collections.all_collections_hidden":"You have hidden all your collections. Unhide and they will appear here.","pages.collections.about_collection":"About Collection","pages.collections.show_hidden":"Show Hidden","pages.collections.show_my_collection":"Show My Collection","pages.collections.owned":"Owned","pages.collections.activities.loading_activities":"We're fetching Activity for this NFT, please hang tight, this can take a while.","pages.collections.activities.loading_activities_collection":"We're fetching Activity for this collection, please hang tight, this can take a while.","pages.collections.activities.ignores_activities":"We don't support activity history for this collection yet.","pages.collections.activities.no_activity":"This collection does not have any activity yet.","pages.collections.activities.types.LABEL_MINT":"Mint","pages.collections.activities.types.LABEL_TRANSFER":"Transfer","pages.collections.activities.types.LABEL_SALE":"Sale","pages.collections.activities.types.LABEL_BURN":"Burn","pages.collections.collection_of_the_month.title":"Collection of the Month {{month}}","pages.collections.collection_of_the_month.winners_month":"Winners: {{month}}","pages.collections.collection_of_the_month.vote_for_next_months_winners":"Vote now for next month's winners","pages.collections.collection_of_the_month.view_previous_winners":"View Previous Winners","pages.collections.collection_of_the_month.vote_received_modal.title":"Vote Received","pages.collections.collection_of_the_month.vote_received_modal.description":"Your vote has been recorded. Share your vote on X and let everyone know!","pages.collections.collection_of_the_month.vote_received_modal.share_vote":"Share Vote","pages.collections.collection_of_the_month.vote_received_modal.img_alt":"I voted for Dashbrd Project of the Month","pages.collections.collection_of_the_month.vote_received_modal.x_text":"I voted for {{collection}} for collection of the month @dashbrdapp! Go show your support!","pages.collections.collection_of_the_month.vote_success":"Your vote has been successfully submitted","pages.collections.collection_of_the_month.content_to_be_added.title":"Content to be added","pages.collections.collection_of_the_month.content_to_be_added.description":"There will be a list of previous month winners here soon!","pages.collections.collection_of_the_month.has_won_already":"This collection has already
    won Collection of the Month.","pages.collections.articles.heading":"Latest NFT News & Features","pages.collections.articles.no_articles":"No articles have been linked to this collection as of now.","pages.collections.articles.no_articles_with_filters":"We could not find any articles matching your search criteria, please try again!","pages.collections.articles.search_placeholder":"Search in Articles","pages.collections.articles.sort_latest":"Latest","pages.collections.articles.sort_popularity":"Most Popular","pages.collections.search.loading_results":"Loading results...","pages.collections.search.no_results":"We could not find anything matching your search criteria, please try again!","pages.collections.search.no_results_with_filters":"We could not find anything matching your filters, please try again!","pages.collections.search.no_results_ownership":"You do not own any NFTs in this collection","pages.collections.search.error":"Could not load search results. Please try again later.","pages.collections.vote.vote_for_top_collection":"Vote for Top Collection of the Month","pages.collections.vote.vote":"Vote","pages.collections.vote.time_left":"Time Left","pages.collections.vote.or_nominate_collection":"Or nominate a collection","pages.collections.vote.nominate_collection":"Nominate a collection","pages.collections.vote.vote_to_reveal":"Vote to reveal data","pages.collections.vote.already_voted":"You’ve already nominated. Come back next month!","pages.collections.sorting.token_number":"Token Number","pages.collections.sorting.recently_received":"Recently Received","pages.collections.sorting.recently_created":"Recently Created","pages.collections.sorting.oldest_collection":"Oldest Collection","pages.collections.traits.description":"List of NFT traits by % of occurrence in the collection","pages.collections.traits.no_traits":"No Properties can be found for this NFT","pages.collections.menu.collection":"Collection","pages.collections.menu.articles":"Articles","pages.collections.menu.activity":"Activity","pages.collections.hidden_modal.collection_hidden":"Collection Hidden","pages.collections.hidden_modal.description":"This collection is currently set to Hidden. Are you sure you want to unhide this collection? You can\n reset the collection to hidden from the collection menu.","pages.collections.hidden_modal.unhide":"Unhide","pages.collections.hidden_modal.error":"Something went wrong. Please try again.","pages.collections.external_modal.you_wish_continue":"You are about to leave Dashbrd to an external website. Dashbrd has no control over the content of\n this site. Are you sure you wish to continue?","pages.collections.external_modal.not_show":"Do not show this message again.","pages.collections.refresh.title":"Refresh your collection","pages.collections.refresh.notice":"You can refresh data every 15 minutes.","pages.collections.refresh.notice_wait":"Please wait. You can refresh data every 15 minutes.","pages.collections.refresh.toast":"We're updating information for your collection.","pages.collections.featured.title":"Featured Collections","pages.collections.featured.button":"Explore Collection","pages.collections.footer.heading_broken.0":"Connect with MetaMask","pages.collections.footer.heading_broken.1":"& Manage Your Collection","pages.collections.footer.subtitle":"Explore, Filter, & Share your favorite NFTs with Dashbrd.","pages.collections.footer.button":"Manage Collections","pages.nfts.nft":"nft","pages.nfts.about_nft":"About NFT","pages.nfts.owned_by":"Owned by","pages.nfts.collection_image":"collection image","pages.nfts.menu.properties":"Properties","pages.nfts.menu.activity":"Activity","pages.reports.title":"Submit a Report","pages.reports.description":"Thanks for looking out by reporting things that break the rules. Let us know what's happening and we'll receive the report.","pages.reports.success":"Thank you for your report. We'll review it and see if it breaks our ToS.","pages.reports.failed":"Something went wrong. Please try again.","pages.reports.throttle":"You have made too many requests. Please wait {{time}} before reporting again.","pages.reports.reported":"You have already reported this {{model}}.","pages.reports.reasons.spam":"Spam","pages.reports.reasons.violence":"Promoting Violence","pages.reports.reasons.hate":"Hate","pages.reports.reasons.inappropriate_content":"Inappropriate Content","pages.reports.reasons.impersonation":"Impersonation","pages.reports.reasons.trademark":"Trademark or Copyright","pages.reports.reasons.selfharm":"Self-Harm","pages.reports.reasons.harassment":"Harassment","pages.galleries.title":"Galleries","pages.galleries.empty_title":"No galleries have been published yet. Once they do they will appear here.","pages.galleries.search.loading_results":"Loading results...","pages.galleries.search.no_results":"We could not find anything matching your search criteria, please try again!","pages.galleries.search.placeholder":"Search by name or curator address","pages.galleries.search.placeholder_nfts":"Search by NFTs","pages.galleries.search.error":"Could not load search results. Please try again later.","pages.galleries.my_galleries.title":"My Galleries","pages.galleries.my_galleries.subtitle":"Manage your galleries","pages.galleries.my_galleries.new_gallery":"New Gallery","pages.galleries.my_galleries.no_galleries":"You have not created any galleries yet. To create a gallery, click on the \"Create Gallery\" button.","pages.galleries.my_galleries.no_available_collections":"You have hidden all your collections. If you want to create a gallery, make sure you have at least 1 collection available.","pages.galleries.my_galleries.no_draft_galleries":"You have no draft galleries yet. To create a gallery, click on the \"Create Gallery\" button.","pages.galleries.my_galleries.succesfully_deleted":"Gallery has been successfully removed","pages.galleries.my_galleries.draft_succesfully_deleted":"Draft has been successfully removed","pages.galleries.my_galleries.successfully_created":"Gallery has been successfully created","pages.galleries.my_galleries.successfully_updated":"Gallery has been successfully updated","pages.galleries.my_galleries.new_gallery_no_nfts":"Creating a Gallery requires you to own an NFT.","pages.galleries.my_galleries.new_gallery_all_collections_hidden":"Creating a Gallery requires you to have at least 1 collection available.","pages.galleries.my_galleries.delete_modal.title":"Delete Draft","pages.galleries.my_galleries.delete_modal.text":"Are you sure you want to delete the draft? Everything you've done will be deleted and you won't be able to get it back.","pages.galleries.my_galleries.nfts_no_longer_owned":"NFTs no longer owned by this wallet have been removed from the draft”","pages.galleries.copy_gallery_link":"Copy Gallery Link","pages.galleries.my_nfts":"My NFTs","pages.galleries.show_hidden_collections":"Show hidden collections","pages.galleries.value":"Value","pages.galleries.floor_price":"Floor Price","pages.galleries.nfts":"NFTs","pages.galleries.collections":"Collections","pages.galleries.galleries_count_simple":"{0} galleries|{1} gallery|[2,*] galleries","pages.galleries.galleries_count":"{0} {{count}} Galleries|{1} {{count}} Gallery|[2,*] {{count}} Galleries","pages.galleries.collections_count_simple":"{0} collections|{1} collection|[2,*] collections","pages.galleries.collections_count":"{0} {{count}} Collections|{1} {{count}} Collection|[2,*] {{count}} Collections","pages.galleries.nfts_count_simple":"{0} NFTs|{1} NFT|[2,*] NFTs","pages.galleries.nfts_count":"{0} {{count}} NFTs|{1} {{count}} NFT|[2,*] {{count}} NFTs","pages.galleries.users_count_simple":"{0} users|{1} user|[2,*] users","pages.galleries.users_count":"{0} {{count}} Users|{1} {{count}} User|[2,*] {{count}} Users","pages.galleries.featuring":"Featuring","pages.galleries.curated_by":"Curated by","pages.galleries.worth_about":"Worth About","pages.galleries.valued_at":"valued at","pages.galleries.from":"From","pages.galleries.most_popular_galleries":"Most Popular Galleries","pages.galleries.newest_galleries":"Newest Galleries","pages.galleries.most_valuable_galleries":"Most Valuable Galleries","pages.galleries.most_popular":"Most Popular","pages.galleries.newest":"Newest","pages.galleries.most_valuable":"Most Valuable","pages.galleries.create.search_by_nfts":"Search by NFTs","pages.galleries.create.input_placeholder":"Enter gallery name","pages.galleries.create.title_too_long":"Gallery name must not exceed {{max}} characters.","pages.galleries.create.already_selected_nft":"NFT already exists in this gallery","pages.galleries.create.nft_missing_image":"Only NFTs with images can be added to galleries","pages.galleries.create.nft_gallery_limit":"You can only add 16 NFTs per gallery","pages.galleries.create.gallery_cover":"Gallery Cover","pages.galleries.create.gallery_cover_description":"The cover is used for the card on the gallery list page. While the cover is not a requirement it will allow you to add personality and stand out from the crowd.","pages.galleries.create.gallery_cover_information":"Image dimensions must be at least 287px x 190px, with a max size of 2 MB (JPG, PNG or GIF)","pages.galleries.create.no_results":"We could not find anything matching your search criteria, please try again!","pages.galleries.create.templates.cover":"Cover","pages.galleries.create.templates.template":"Template","pages.galleries.create.templates.select":"Select Gallery Template","pages.galleries.create.templates.basic":"Basic Gallery","pages.galleries.create.templates.coming_soon":"More Coming Soon","pages.galleries.create.load_more_collections_one":"Load {{count}} More Collection","pages.galleries.create.load_more_collections_other":"Load {{count}} More Collections","pages.galleries.create.load_more_nfts":"Load More NFTs","pages.galleries.create.can_purchase":"You can purchase NFTs with these top NFT Marketplaces:","pages.galleries.create.must_own_one_nft":"You must own at least one (1) NFT in order to create a gallery.","pages.galleries.create.back_to_galleries":"Back to Galleries","pages.galleries.create.draft_saved":"Draft Saved","pages.galleries.create.saving_to_draft":"Saving to draft","pages.galleries.create.drafts_limit_modal_title":"Draft Gallery Limit","pages.galleries.create.drafts_limit_modal_message":"You’ve hit your limit for draft galleries. While you can still make new galleries and publish them, they won’t be saved as drafts. To Free up space, you can either delete existing drafts or publish them.","pages.galleries.create.drafts_limit_modal_cancel":"Go to Drafts","pages.galleries.delete_modal.title":"Delete Gallery","pages.galleries.delete_modal.confirmation_text":"Are you sure you want to delete the gallery? Deleting a Gallery is permanent, all associated views and likes will be lost.","pages.galleries.consists_of_collections":"{0} This gallery consists of {{count}} collections|{1} This gallery consists of {{count}} collection|[2,*] This gallery consists of {{count}} collections","pages.galleries.guest_banner.title":"Craft the ultimate","pages.galleries.guest_banner.subtitle":"Pick your favorites, curate your gallery, & share it with the world.","pages.profile.title":"Profile","pages.token_panel.balance_tooltip":"Total percentage of the portfolio held in this token","pages.token_panel.insufficient_funds":"Insufficient Balance","pages.token_panel.error":"Dashbrd has failed to load token information. Please try again later.","pages.token_panel.failed_to_retrieve_transactions":"We were unable to fetch your transactions.","pages.token_panel.tabs.transaction_history":"Transaction History","pages.token_panel.tabs.history":"History","pages.token_panel.tabs.market_data":"Market Data","pages.token_panel.details.current_price":"Current Price","pages.token_panel.details.title":"Token Details","pages.token_panel.details.market_cap":"Market Cap","pages.token_panel.details.volume":"Daily Volume","pages.token_panel.details.supply":"Minted Supply","pages.token_panel.details.ath":"All-Time High","pages.token_panel.details.atl":"All-Time Low","pages.token_panel.chart.failed":"Dashbrd has failed to load chart information. Please try again later.","pages.transaction_details_panel.title":"Transaction Details","pages.transaction_details_panel.details.blockchain":"Blockchain","pages.transaction_details_panel.details.timestamp":"Timestamp","pages.transaction_details_panel.details.transaction_hash":"Transaction Hash","pages.transaction_details_panel.details.transaction_fee":"Transaction Fee","pages.transaction_details_panel.details.gas_price":"Gas Price","pages.transaction_details_panel.details.gas_used":"Gas Used","pages.transaction_details_panel.details.nonce":"Nonce","pages.send_receive_panel.send.labels.token_and_amount":"Token and Amount","pages.send_receive_panel.send.labels.destination_address":"Destination Address","pages.send_receive_panel.send.labels.projected_fee":"Projected Fee","pages.send_receive_panel.send.placeholders.enter_amount":"Enter Amount","pages.send_receive_panel.send.placeholders.insert_recipient_address":"Insert Recipient Address","pages.send_receive_panel.send.placeholders.projected_fee":"Projected Fee","pages.send_receive_panel.send.errors.amount":"Insufficient Funds: You do not have enough to cover the amount + fee.","pages.send_receive_panel.send.errors.destination":"Destination address is not correct. Check and input again.","pages.send_receive_panel.send.hints.token_price":"Token Price","pages.send_receive_panel.send.fees.Fast":"Fast","pages.send_receive_panel.send.fees.Avg":"Avg","pages.send_receive_panel.send.fees.Slow":"Slow","pages.send_receive_panel.send.search_dropdown.placeholder":"Search token","pages.send_receive_panel.send.search_dropdown.no_results":"No Results","pages.send_receive_panel.send.search_dropdown.error":"Error occurred while searching tokens.","pages.send_receive_panel.send.transaction_time":"Transaction Time: ~{{ time }} minutes","pages.send_receive_panel.send.from":"From","pages.send_receive_panel.send.to":"To","pages.send_receive_panel.send.amount":"Amount","pages.send_receive_panel.send.fee":"Fee","pages.send_receive_panel.send.total_amount":"Total Amount","pages.send_receive_panel.send.waiting_message":"Review and verify the information on your MetaMask. Sign to send the transaction.","pages.send_receive_panel.send.waiting_spinner_text":"Waiting for confirmation...","pages.send_receive_panel.send.failed_message":"It looks like something went wrong while sending your transaction. Press 'Retry' to make another attempt.","pages.send_receive_panel.receive.alert":"Send only Polygon or Ethereum Network compatible tokens to this address or you could permanently lose your funds!","pages.settings.title":"Settings","pages.settings.sidebar.general":"General","pages.settings.sidebar.notifications":"Notifications","pages.settings.sidebar.session_history":"Sessions History","pages.settings.general.title":"Settings","pages.settings.general.subtitle":"Customize your App Experience","pages.settings.general.currency":"Currency","pages.settings.general.currency_subtitle":"Select your default currency which will be used throughout the app.","pages.settings.general.time_date":"Time & Date","pages.settings.general.time_date_subtitle":"Select how you want time and date be shown inside app.","pages.settings.general.date_format":"Date Format","pages.settings.general.time_format":"Time Format","pages.settings.general.timezone":"Timezone","pages.settings.general.set_defaults":"Set Defaults","pages.settings.general.set_defaults_content":"Reverting to the default settings will remove any customizations previously made. Are you sure?","pages.settings.general.save":"Save Settings","pages.settings.general.saved":"Your settings have been successfully saved","pages.wallet.title":"Wallet","pages.privacy_policy.title":"Privacy Policy","pages.terms_of_service.title":"Terms of Service","pages.popular_collections.title":"Popular NFT Collections","pages.popular_collections.header_title":"<0>{{nftsCount}} {{nfts}} from <0>{{collectionsCount}} {{collections}}, worth about <0><1>{{worth}}","pagination.previous":"« Previous","pagination.next":"Next »","passwords.reset":"Your password has been reset!","passwords.sent":"We have emailed your password reset link!","passwords.throttled":"Please wait before retrying.","passwords.token":"This password reset token is invalid.","passwords.user":"We can't find a user with that email address.","urls.landing":"https://dashbrd.com","urls.cookie_policy":"https://dashbrd.com/cookie-policy","urls.privacy_policy":"https://dashbrd.com/privacy-policy","urls.terms_of_service":"https://dashbrd.com/terms-of-service","urls.twitter":"https://x.com/DashbrdApp","urls.discord":"https://discord.gg/MJyWKkCJ5k","urls.github":"https://github.com/ArdentHQ/dashbrd","urls.coingecko":"https://www.coingecko.com","urls.etherscan":"https://etherscan.io","urls.polygonscan":"https://polygonscan.com","urls.alchemy":"https://www.alchemy.com","urls.moralis":"https://moralis.io","urls.mnemonic":"https://www.mnemonichq.com","urls.opensea":"https://opensea.io/","urls.explorers.etherscan.token_transactions":"https://etherscan.io/token/{{token}}?a={{address}}","urls.explorers.etherscan.addresses":"https://etherscan.io/address/{{address}}","urls.explorers.etherscan.transactions":"https://etherscan.io/tx/{{id}}","urls.explorers.etherscan.nft":"https://etherscan.io/nft/{{address}}/{{nftId}}","urls.explorers.polygonscan.token_transactions":"https://polygonscan.com/token/{{token}}?a={{address}}","urls.explorers.polygonscan.addresses":"https://polygonscan.com/address/{{address}}","urls.explorers.polygonscan.transactions":"https://polygonscan.com/tx/{{id}}","urls.explorers.polygonscan.nft":"https://polygonscan.com/nft/{{address}}/{{nftId}}","urls.explorers.mumbai.token_transactions":"https://mumbai.polygonscan.com/token/{{token}}?a={{address}}","urls.explorers.mumbai.addresses":"https://mumbai.polygonscan.com/address/{{address}}","urls.explorers.mumbai.transactions":"https://mumbai.polygonscan.com/tx/{{id}}","urls.explorers.mumbai.nft":"https://mumbai.polygonscan.com/nft/{{address}}/{{nftId}}","urls.explorers.goerli.token_transactions":"https://goerli.etherscan.io/token/{{token}}?a={{address}}","urls.explorers.goerli.addresses":"https://goerli.etherscan.io/address/{{address}}","urls.explorers.goerli.transactions":"https://goerli.etherscan.io/tx/{{id}}","urls.explorers.goerli.nft":"https://goerli.etherscan.io/nft/{{address}}/{{nftId}}","urls.marketplaces.opensea.collection":"https://opensea.io/assets/{{network}}/{{address}}","urls.marketplaces.opensea.nft":"https://opensea.io/assets/{{network}}/{{address}}/{{nftId}}","urls.marketplaces.rarible.collection":"https://rarible.com/collection/{{address}}/items","urls.marketplaces.rarible.nft":"https://rarible.com/token/{{address}}:{{nftId}}","urls.marketplaces.blur.collection":"https://blur.io/collection/{{address}}","urls.marketplaces.blur.nft":"https://blur.io/asset/{{address}}/{{nftId}}","urls.marketplaces.looksrare.collection":"https://looksrare.org/collections/{{address}}","urls.marketplaces.looksrare.nft":"https://looksrare.org/collections/{{address}}/{{nftId}}","validation.accepted":"The {{attribute}} must be accepted.","validation.accepted_if":"The {{attribute}} must be accepted when {{other}} is {{value}}.","validation.active_url":"The {{attribute}} is not a valid URL.","validation.after":"The {{attribute}} must be a date after {{date}}.","validation.after_or_equal":"The {{attribute}} must be a date after or equal to {{date}}.","validation.alpha":"The {{attribute}} must only contain letters.","validation.alpha_dash":"The {{attribute}} must only contain letters, numbers, dashes and underscores.","validation.alpha_num":"The {{attribute}} must only contain letters and numbers.","validation.array":"The {{attribute}} must be an array.","validation.ascii":"The {{attribute}} must only contain single-byte alphanumeric characters and symbols.","validation.before":"The {{attribute}} must be a date before {{date}}.","validation.before_or_equal":"The {{attribute}} must be a date before or equal to {{date}}.","validation.between.array":"The {{attribute}} must have between {{min}} and {{max}} items.","validation.between.file":"The {{attribute}} must be between {{min}} and {{max}} kilobytes.","validation.between.numeric":"The {{attribute}} must be between {{min}} and {{max}}.","validation.between.string":"The {{attribute}} must be between {{min}} and {{max}} characters.","validation.boolean":"The {{attribute}} field must be true or false.","validation.confirmed":"The {{attribute}} confirmation does not match.","validation.current_password":"The password is incorrect.","validation.date":"The {{attribute}} is not a valid date.","validation.date_equals":"The {{attribute}} must be a date equal to {{date}}.","validation.date_format":"The {{attribute}} does not match the format {{format}}.","validation.decimal":"The {{attribute}} must have {{decimal}} decimal places.","validation.declined":"The {{attribute}} must be declined.","validation.declined_if":"The {{attribute}} must be declined when {{other}} is {{value}}.","validation.different":"The {{attribute}} and {{other}} must be different.","validation.digits":"The {{attribute}} must be {{digits}} digits.","validation.digits_between":"The {{attribute}} must be between {{min}} and {{max}} digits.","validation.dimensions":"The {{attribute}} has invalid image dimensions.","validation.distinct":"The {{attribute}} field has a duplicate value.","validation.doesnt_end_with":"The {{attribute}} may not end with one of the following: {{values}}.","validation.doesnt_start_with":"The {{attribute}} may not start with one of the following: {{values}}.","validation.email":"The {{attribute}} must be a valid email address.","validation.ends_with":"The {{attribute}} must end with one of the following: {{values}}.","validation.enum":"The selected {{attribute}} is invalid.","validation.exists":"The selected {{attribute}} is invalid.","validation.file":"The {{attribute}} must be a file.","validation.filled":"The {{attribute}} field must have a value.","validation.gt.array":"The {{attribute}} must have more than {{value}} items.","validation.gt.file":"The {{attribute}} must be greater than {{value}} kilobytes.","validation.gt.numeric":"The {{attribute}} must be greater than {{value}}.","validation.gt.string":"The {{attribute}} must be greater than {{value}} characters.","validation.gte.array":"The {{attribute}} must have {{value}} items or more.","validation.gte.file":"The {{attribute}} must be greater than or equal to {{value}} kilobytes.","validation.gte.numeric":"The {{attribute}} must be greater than or equal to {{value}}.","validation.gte.string":"The {{attribute}} must be greater than or equal to {{value}} characters.","validation.image":"The {{attribute}} must be an image.","validation.in":"The selected {{attribute}} is invalid.","validation.in_array":"The {{attribute}} field does not exist in {{other}}.","validation.integer":"The {{attribute}} must be an integer.","validation.ip":"The {{attribute}} must be a valid IP address.","validation.ipv4":"The {{attribute}} must be a valid IPv4 address.","validation.ipv6":"The {{attribute}} must be a valid IPv6 address.","validation.json":"The {{attribute}} must be a valid JSON string.","validation.lowercase":"The {{attribute}} must be lowercase.","validation.lt.array":"The {{attribute}} must have less than {{value}} items.","validation.lt.file":"The {{attribute}} must be less than {{value}} kilobytes.","validation.lt.numeric":"The {{attribute}} must be less than {{value}}.","validation.lt.string":"The {{attribute}} must be less than {{value}} characters.","validation.lte.array":"The {{attribute}} must not have more than {{value}} items.","validation.lte.file":"The {{attribute}} must be less than or equal to {{value}} kilobytes.","validation.lte.numeric":"The {{attribute}} must be less than or equal to {{value}}.","validation.lte.string":"The {{attribute}} must be less than or equal to {{value}} characters.","validation.mac_address":"The {{attribute}} must be a valid MAC address.","validation.max.array":"The {{attribute}} must not have more than {{max}} items.","validation.max.file":"The {{attribute}} must not be greater than {{max}} kilobytes.","validation.max.numeric":"The {{attribute}} must not be greater than {{max}}.","validation.max.string":"The {{attribute}} must not be greater than {{max}} characters.","validation.max_digits":"The {{attribute}} must not have more than {{max}} digits.","validation.mimes":"The {{attribute}} must be a file of type: {{values}}.","validation.mimetypes":"The {{attribute}} must be a file of type: {{values}}.","validation.min.array":"The {{attribute}} must have at least {{min}} items.","validation.min.file":"The {{attribute}} must be at least {{min}} kilobytes.","validation.min.numeric":"The {{attribute}} must be at least {{min}}.","validation.min.string":"The {{attribute}} must be at least {{min}} characters.","validation.min_digits":"The {{attribute}} must have at least {{min}} digits.","validation.missing":"The {{attribute}} field must be missing.","validation.missing_if":"The {{attribute}} field must be missing when {{other}} is {{value}}.","validation.missing_unless":"The {{attribute}} field must be missing unless {{other}} is {{value}}.","validation.missing_with":"The {{attribute}} field must be missing when {{values}} is present.","validation.missing_with_all":"The {{attribute}} field must be missing when {{values}} are present.","validation.multiple_of":"The {{attribute}} must be a multiple of {{value}}.","validation.not_in":"The selected {{attribute}} is invalid.","validation.not_regex":"The {{attribute}} format is invalid.","validation.numeric":"The {{attribute}} must be a number.","validation.password.letters":"The {{attribute}} must contain at least one letter.","validation.password.mixed":"The {{attribute}} must contain at least one uppercase and one lowercase letter.","validation.password.numbers":"The {{attribute}} must contain at least one number.","validation.password.symbols":"The {{attribute}} must contain at least one symbol.","validation.password.uncompromised":"The given {{attribute}} has appeared in a data leak. Please choose a different {{attribute}}.","validation.present":"The {{attribute}} field must be present.","validation.prohibited":"The {{attribute}} field is prohibited.","validation.prohibited_if":"The {{attribute}} field is prohibited when {{other}} is {{value}}.","validation.prohibited_unless":"The {{attribute}} field is prohibited unless {{other}} is in {{values}}.","validation.prohibits":"The {{attribute}} field prohibits {{other}} from being present.","validation.regex":"The {{attribute}} format is invalid.","validation.required":"The {{attribute}} field is required.","validation.required_array_keys":"The {{attribute}} field must contain entries for: {{values}}.","validation.required_if":"The {{attribute}} field is required when {{other}} is {{value}}.","validation.required_if_accepted":"The {{attribute}} field is required when {{other}} is accepted.","validation.required_unless":"The {{attribute}} field is required unless {{other}} is in {{values}}.","validation.required_with":"The {{attribute}} field is required when {{values}} is present.","validation.required_with_all":"The {{attribute}} field is required when {{values}} are present.","validation.required_without":"The {{attribute}} field is required when {{values}} is not present.","validation.required_without_all":"The {{attribute}} field is required when none of {{values}} are present.","validation.same":"The {{attribute}} and {{other}} must match.","validation.size.array":"The {{attribute}} must contain {{size}} items.","validation.size.file":"The {{attribute}} must be {{size}} kilobytes.","validation.size.numeric":"The {{attribute}} must be {{size}}.","validation.size.string":"The {{attribute}} must be {{size}} characters.","validation.starts_with":"The {{attribute}} must start with one of the following: {{values}}.","validation.string":"The {{attribute}} must be a string.","validation.timezone":"The {{attribute}} must be a valid timezone.","validation.unique":"The {{attribute}} has already been taken.","validation.uploaded":"The {{attribute}} failed to upload.","validation.uppercase":"The {{attribute}} must be uppercase.","validation.url":"The {{attribute}} must be a valid URL.","validation.ulid":"The {{attribute}} must be a valid ULID.","validation.uuid":"The {{attribute}} must be a valid UUID.","validation.custom.attribute-name.rule-name":"custom-message","validation.unsupported_currency_code":"The currency code you provided is invalid or not supported.","validation.unsupported_period":"The period you provided is invalid or not supported.","validation.unsupported_token_symbol":"The token symbol you provided is invalid or not supported.","validation.gallery_title_required":"Gallery name is required.","validation.gallery_title_max_characters":"The gallery name should not exceed 50 characters.","validation.gallery_title_invalid":"The gallery name is invalid.","validation.nfts_required":"Please add at least one NFT.","validation.nfts_max_size":"Galleries can contain no more than {{limit}} NFTs","validation.invalid_nfts":"The NFT in position {{position}} is invalid, please select another one.","validation.invalid_cover":"You have selected an invalid cover image, please try another one."} \ No newline at end of file +{"auth.welcome":"Welcome to Dashbrd","auth.logged_in":"You're logged in!","auth.log_out":"Log out","auth.failed":"These credentials do not match our records.","auth.session_timeout":"Your session has timed out. Please refresh the page and try connecting your account again.","auth.session_timeout_modal":"Seems like your session has timed out. Please connnect your wallet again.","auth.password":"The provided password is incorrect.","auth.throttle":"Too many login attempts. Please try again in {{seconds}} seconds.","auth.wallet.connecting":"Connecting …","auth.wallet.waiting_for_signature":"Waiting for Signature …","auth.wallet.switching_wallet":"Switching Wallet …","auth.wallet.connect":"Connect Wallet","auth.wallet.connect_long":"Connect Your Wallet to Get Started","auth.wallet.sign_subtitle":"Connect Your Wallet to Continue","auth.wallet.disconnect":"Disconnect Wallet","auth.wallet.install":"Install MetaMask","auth.wallet.install_long":"Install MetaMask to Get Started","auth.wallet.sign":"Sign Message","auth.wallet.sign_message":"Welcome to Dashbrd. In order to login, sign this message with your wallet. It doesn't cost you anything!\n\nSigning ID (you can ignore this): {{nonce}}","auth.wallet.connect_subtitle":"Click on the MetaMask icon in your browser to confirm the action and connect your wallet.","auth.wallet.requires_signature":"In order to prevent impersonation, we require a signature to perform this action. This signature is only a signed message and does not give any access to your wallet.","auth.errors.metamask.no_account":"No account found. Please connect your wallet and try again.","auth.errors.metamask.generic":"Connection attempt error. Please retry and follow the steps to connect your wallet.","auth.errors.metamask.invalid_network":"Please switch to Polygon or Ethereum Mainnet in your MetaMask plugin to connect to Dashbrd.","auth.errors.metamask.provider_missing":"You don't have MetaMask installed in your browser. Please install and try again.","auth.errors.metamask.user_rejected":"It looks like you cancelled signing of the authentication message. Please try again.","auth.errors.metamask.provider_not_set":"Ethereum provider is not set","auth.validation.wallet_login_failed":"There was a problem trying to verify your signature. Please try again.","auth.validation.invalid_address":"Your wallet address is invalid. Please try again.","auth.validation.invalid_signature":"Signature is invalid. Please try again.","auth.validation.invalid_network":"Please switch to Polygon or Ethereum Mainnet in your MetaMask plugin to connect to Dashbrd.","common.author":"Author","common.add":"Add","common.amount":"Amount","common.balance":"Balance","common.cancel":"Cancel","common.delete":"Delete","common.edit":"Edit","common.confirm":"Confirm","common.connect":"Connect","common.continue":"Continue","common.done":"Done","common.filter":"Filter","common.items":"Items","common.receive":"Receive","common.received":"Received","common.retry":"Retry","common.records":"Records","common.save":"Save","common.send":"Send","common.sent":"Sent","common.show":"Show","common.searching":"Searching...","common.other":"Other","common.owned":"Owned","common.token":"Token","common.tokens":"Tokens","common.wallet":"Wallet","common.pending":"Pending","common.publish":"Publish","common.published":"Published","common.empty":"Empty","common.your_address":"Your Address","common.warning":"Warning","common.my_address":"My Address","common.my_wallet":"My Wallet","common.my_collections":"My Collections","common.my_balance":"My Balance","common.na":"N/A","common.simple_plural_without_data":"One comment|Many comments","common.simple_plural_with_data":"{{count}} comment|{{count}} comments","common.advanced_plural_without_data":"{0} no comments yet|{1} 1 comment|[2,*] Many comments","common.advanced_plural_with_data":"{0} no comments yet|{1} 1 comment|[2,*] {{count}} comments","common.copy_clipboard":"Copy to Clipboard","common.copy":"Copy","common.download":"Download","common.zoom":"Zoom","common.my_collection":"My Collection","common.max":"Max","common.chain":"Chain","common.search":"Search","common.copied":"Copied!","common.coming_soon":"Coming Soon","common.more_details":"More Details","common.close":"Close","common.close_toast":"Close toast","common.loading":"Loading","common.price":"Price","common.articles":"Articles","common.most_popular":"Most Popular","common.market_cap":"Market Cap","common.volume":"Volume","common.volume_frequency":"Volume {{frequency}}","common.value":"Value","common.last_n_days":"Last {{count}} Days","common.details":"Details","common.view_all":"View All","common.view_more_on_polygonscan":"View More on Polygonscan","common.view_more_on_etherscan":"View More on Etherscan","common.view_nft_on_etherscan":"View NFT on Etherscan","common.view_nft_on_polygonscan":"View NFT on Polygonscan","common.view_nft_on_goerli_tesnet":"View NFT on Goerli Testnet Explorer","common.view_nft_on_mumbai_tesnet":"View NFT on Mumbai Testnet Explorer","common.polygonscan":"Polygonscan","common.etherscan":"Etherscan","common.featured":"Featured","common.floor_price":"Floor Price","common.floor":"Floor","common.supply":"Supply","common.owners":"Owners","common.created":"Created","common.nft":"NFT","common.collection":"Collection","common.collections":"Collections","common.gallery":"Gallery","common.basic_gallery":"Basic Gallery","common.gallery_name":"Gallery Name","common.create_gallery":"Create Gallery","common.external_link":"External Link","common.follow_link":"Follow Link","common.cover":"Cover","common.template":"Template","common.page":"Page","common.polygon":"Polygon","common.ethereum":"Ethereum","common.mumbai":"Mumbai","common.goerli":"Goerli","common.of":"of","common.pagination_input_placeholder":"Enter the page number","common.pagination_input_placeholder_mobile":"Page number","common.nft_count":"{0} {{count}} NFTs|{1} {{count}} NFT|[2,*] {{count}} NFTs","common.nft_gallery":"NFT Gallery","common.unable_to_retrieve_image":"Unable to retrieve your NFT image at this time","common.optional":"Optional","common.selected":"Selected","common.select":"Select","common.preview":"Preview","common.image_size_error":"Image size must not exceed 2MB","common.image_dimensions_error":"Image dimensions must exceed 287px x 190px","common.write_to_confirm":"Write {{word}} to confirm","common.n_hours":"{0} {{count}} hour|{1} {{count}} hour|[2,*] {{count}} hours","common.n_minutes":"{0} {{count}} minute|{1} {{count}} minute|[2,*] {{count}} minutes","common.report":"Report","common.nfts":"NFTs","common.n_nfts":"{0}NFTs|{1}NFT|[2,*]NFTs","common.n_collections":"{0}collections|{1}collection|[2,*]collections","common.back":"Back","common.back_to":"Back to","common.name":"Name","common.type":"Type","common.from":"From","common.to":"To","common.sale_price":"Sale Price","common.recent_activity":"Recent Activity","common.time":"Time","common.datetime.few_seconds_ago":"A few seconds ago","common.datetime.minutes_ago":"{0} Less than a minute ago|{1} A minute ago|[2,*] {{count}} minutes ago","common.datetime.hours_ago":"{0} Less than an hour ago|{1} An hour ago|[2,*] {{count}} hours ago","common.datetime.days_ago":"{0} Less than a day ago|{1} A day ago|[2,*] {{count}} days ago","common.datetime.weeks_ago":"{0} Less than a week ago|{1} A week ago|[2,*] {{count}} weeks ago","common.datetime.months_ago":"{0} Less than a month ago|{1} A month ago|[2,*] {{count}} months ago","common.datetime.years_ago":"{0} Less than a year ago|{1} A year ago|[2,*] {{count}} years ago","common.no_traits_found":"No traits found.","common.empty_transactions":"You don't have any transactions yet. Once transactions have been made, they will show up here.","common.error":"Error","common.refresh":"Refresh","common.refresh_metadata":"Refresh Metadata","common.refreshing_metadata":"Refreshing Metadata... Please check back later.","common.refreshing_activity":"Refreshing Activity... Please check back later.","common.pending_confirmation":"Pending Confirmation","common.confirmed_transaction":"Confirmed Transaction","common.transaction_error":"Transaction Error","common.transaction_error_description_first_part":"Your transaction encountered an error. View this transaction on","common.transaction_error_description_second_part":"for more details.","common.home":"Home","common.contact":"Contact","common.menu":"Menu","common.website":"Website","common.twitter":"Twitter","common.discord":"Discord","common.facebook":"Facebook","common.reddit":"Reddit","common.x":"X","common.sort":"Sort","common.drafts":"Drafts","common.draft":"Draft","common.delete_draft":"Delete Draft","common.share_on":"Share on {{platform}}","common.top":"Top","common.all_chains":"All chains","common.votes":"Votes","common.vote":"Vote","common.vol":"Vol","common.collection_preview":"Collection Preview","common.24h":"24h","common.7d":"7d","common.30d":"30d","footer.copyright":"{{year}} © Dashbrd. All rights reserved.","footer.all_rights_reserved":"All rights reserved","footer.privacy_policy":"Privacy Policy","footer.terms_of_service":"Terms of Service","footer.powered_by":"Powered by","format.fiat":"{{ value, currency }}","format.number":"{{ value, number }}","metatags.home.title":"Dashbrd | Web3 Portfolio Management Made Simple","metatags.home.description":"Simplify your Web3 journey with Dashbrd. Manage your portfolio of tokens, NFTs, and other digital collectibles across the Ethereum and Polygon blockchains.","metatags.home.image":"/images/meta/home.png","metatags.error.title":"Error {{code}} | Dashbrd","metatags.wallet.title":"My Wallet | Dashbrd","metatags.galleries.title":"Top NFT Galleries | Dashbrd","metatags.galleries.image":"/images/meta/nft-galleries.png","metatags.galleries.description":"Explore user published NFT galleries to find custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.most_popular.title":"Most Popular Galleries | Dashbrd","metatags.galleries.most_popular.image":"/images/meta/most-popular-nft-galleries.png","metatags.galleries.most_popular.description":"Explore and discover Most Popular NFT Galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.newest.title":"Newest Galleries | Dashbrd","metatags.galleries.newest.image":"/images/meta/newest-nft-galleries.png","metatags.galleries.newest.description":"Explore and discover most recent NFT galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More","metatags.galleries.most_valuable.title":"Most Valuable Galleries | Dashbrd","metatags.galleries.most_valuable.image":"/images/meta/most-valuable-nft-galleries.png","metatags.galleries.most_valuable.description":"Explore and discover Most Valuable NFT Galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.view.title":"{{name}} | Dashbrd","metatags.galleries.view.description":"{{name}} | A Curated NFT Gallery at Dashbrd","metatags.galleries.view.image":"/images/meta/nft-gallery.png","metatags.my_galleries.title":"My Galleries | Dashbrd","metatags.my_galleries.title_draft":"My Draft Galleries | Dashbrd","metatags.my_galleries.create.title":"Create Gallery | Dashbrd","metatags.my_galleries.edit.title":"Edit {{name}} | Dashbrd","metatags.collections.title":"Collections | Dashbrd","metatags.collections.view.title":"{{name}} Collection | Dashbrd","metatags.collections.view.description":"Immerse yourself in the intricate details of {{name}} collection, featuring remarkable digital assets. Start your NFT journey today!","metatags.collections.view.image":"/images/meta/nft-collection.png","metatags.collections.of-the-month.title":"Collection of the Month {{month}} | Dashbrd","metatags.my-collections.title":"My Collections | Dashbrd","metatags.popular-collections.title":"Popular NFT Collections | Dashbrd","metatags.nfts.view.title":"{{nft}} NFT | Dashbrd","metatags.nfts.view.description":"Uncover the complete story of {{nft}} NFT from the {{collection}} collection, delving into its unique attributes and distinctive features.","metatags.nfts.view.image":"/images/meta/nft-details.png","metatags.settings.title":"Settings | Dashbrd","metatags.articles.title":"Articles | Dashbrd","metatags.articles.view.title":"{{title}} | Dashbrd","metatags.login.title":"Login | Dashbrd","metatags.privacy_policy.title":"Privacy Policy | Dashbrd","metatags.privacy_policy.description":"Dashbrd’s privacy policy outlines the information we collect and explains your choices surrounding how we use information about you.","metatags.terms_of_service.title":"Terms of Service | Dashbrd","metatags.terms_of_service.description":"These Terms of Service cover your use and access to services, products or websites of Dashbrd.","metatags.cookie_policy.title":"Cookie Policy | Dashbrd","metatags.cookie_policy.description":"Dashbrd uses cookies to make the website more user-friendly. Find out about the main types of cookies we use, and what we use them for.","metatags.welcome.title":"Welcome to Dashbrd | Web3 Simplified","pages.onboarding.title":"Get Started","pages.onboarding.heading":"Your monkeys were bored and ran off, we are trying to round them up.","pages.onboarding.message":"We are setting up your account. This process usually takes just a few minutes, but can take up to 15 minutes.","pages.error.heading":"Oops, something went wrong ...","pages.error.message":"Please try again or get in touch if the issue persists.","pages.maintenance.title":"Dashbrd is currently down for scheduled maintenance.","pages.maintenance.description":"We expect to be back soon. Thanks for your patience.","pages.dashboard.title":"My Wallet","pages.dashboard.breakdown.title":"Portfolio Breakdown","pages.dashboard.line_chart.data_error":"Could not load chart data","pages.articles.title":"Articles","pages.articles.featured_collections":"Featured Collections","pages.articles.placeholder_more_soon":"More Soon","pages.articles.no_articles":"No articles have been published yet. Please check back later!","pages.articles.header_title":"Explore our collection of","pages.articles.header_suffix_one":"published article","pages.articles.header_suffix_other":"published articles","pages.articles.audio_version":"Audio version","pages.articles.consists_of_collections":"{0} This article highlights {{count}} collections|{1} This article highlights {{count}} collection|[2,*] This article highlights {{count}} collections","pages.collections.title":"Collections","pages.collections.collections":"Collections","pages.collections.popular_collections":"Popular Collections","pages.collections.collection_value":"Collection Value","pages.collections.nfts_owned":"NFTs Owned","pages.collections.header_title":"You own <0>{{nftsCount}} {{nfts}} across <0>{{collectionsCount}} {{collections}}, worth about <0><1>{{worth}}","pages.collections.search_placeholder":"Search by Collection","pages.collections.properties":"Properties","pages.collections.collections_network":"Collections Network","pages.collections.property_search_placeholder":"Feature Search","pages.collections.floor_price":"Floor Price","pages.collections.value":"Value","pages.collections.rarity":"Rarity","pages.collections.report":"Report","pages.collections.search_by_name":"Search by Collection Name","pages.collections.hide_collection":"Hide Collection","pages.collections.unhide_collection":"Unhide Collection","pages.collections.no_collections":"You do not own any NFTs yet. Once you do they will be shown here.","pages.collections.all_collections_hidden":"You have hidden all your collections. Unhide and they will appear here.","pages.collections.about_collection":"About Collection","pages.collections.show_hidden":"Show Hidden","pages.collections.show_my_collection":"Show My Collection","pages.collections.owned":"Owned","pages.collections.activities.loading_activities":"We're fetching Activity for this NFT, please hang tight, this can take a while.","pages.collections.activities.loading_activities_collection":"We're fetching Activity for this collection, please hang tight, this can take a while.","pages.collections.activities.ignores_activities":"We don't support activity history for this collection yet.","pages.collections.activities.no_activity":"This collection does not have any activity yet.","pages.collections.activities.types.LABEL_MINT":"Mint","pages.collections.activities.types.LABEL_TRANSFER":"Transfer","pages.collections.activities.types.LABEL_SALE":"Sale","pages.collections.activities.types.LABEL_BURN":"Burn","pages.collections.collection_of_the_month.title":"Collection of the Month {{month}}","pages.collections.collection_of_the_month.winners_month":"Winners: {{month}}","pages.collections.collection_of_the_month.vote_for_next_months_winners":"Vote now for next month's winners","pages.collections.collection_of_the_month.view_previous_winners":"View Previous Winners","pages.collections.collection_of_the_month.previous_winners":"Previous Winners","pages.collections.collection_of_the_month.vote_received_modal.title":"Vote Received","pages.collections.collection_of_the_month.vote_received_modal.description":"Your vote has been recorded. Share your vote on X and let everyone know!","pages.collections.collection_of_the_month.vote_received_modal.share_vote":"Share Vote","pages.collections.collection_of_the_month.vote_received_modal.img_alt":"I voted for Dashbrd Project of the Month","pages.collections.collection_of_the_month.vote_received_modal.x_text":"I voted for {{collection}} for collection of the month @dashbrdapp! Go show your support!","pages.collections.collection_of_the_month.vote_success":"Your vote has been successfully submitted","pages.collections.collection_of_the_month.content_to_be_added.title":"Content to be added","pages.collections.collection_of_the_month.content_to_be_added.description":"There will be a list of previous month winners here soon!","pages.collections.collection_of_the_month.has_won_already":"This collection has already
    won Collection of the Month.","pages.collections.articles.heading":"Latest NFT News & Features","pages.collections.articles.no_articles":"No articles have been linked to this collection as of now.","pages.collections.articles.no_articles_with_filters":"We could not find any articles matching your search criteria, please try again!","pages.collections.articles.search_placeholder":"Search in Articles","pages.collections.articles.sort_latest":"Latest","pages.collections.articles.sort_popularity":"Most Popular","pages.collections.search.loading_results":"Loading results...","pages.collections.search.no_results":"We could not find anything matching your search criteria, please try again!","pages.collections.search.no_results_with_filters":"We could not find anything matching your filters, please try again!","pages.collections.search.no_results_ownership":"You do not own any NFTs in this collection","pages.collections.search.error":"Could not load search results. Please try again later.","pages.collections.vote.vote_for_top_collection":"Vote for Top Collection of the Month","pages.collections.vote.vote":"Vote","pages.collections.vote.time_left":"Time Left","pages.collections.vote.or_nominate_collection":"Or nominate a collection","pages.collections.vote.nominate_collection":"Nominate a collection","pages.collections.vote.vote_to_reveal":"Vote to reveal data","pages.collections.vote.already_voted":"You’ve already nominated. Come back next month!","pages.collections.sorting.token_number":"Token Number","pages.collections.sorting.recently_received":"Recently Received","pages.collections.sorting.recently_created":"Recently Created","pages.collections.sorting.oldest_collection":"Oldest Collection","pages.collections.traits.description":"List of NFT traits by % of occurrence in the collection","pages.collections.traits.no_traits":"No Properties can be found for this NFT","pages.collections.menu.collection":"Collection","pages.collections.menu.articles":"Articles","pages.collections.menu.activity":"Activity","pages.collections.hidden_modal.collection_hidden":"Collection Hidden","pages.collections.hidden_modal.description":"This collection is currently set to Hidden. Are you sure you want to unhide this collection? You can\n reset the collection to hidden from the collection menu.","pages.collections.hidden_modal.unhide":"Unhide","pages.collections.hidden_modal.error":"Something went wrong. Please try again.","pages.collections.external_modal.you_wish_continue":"You are about to leave Dashbrd to an external website. Dashbrd has no control over the content of\n this site. Are you sure you wish to continue?","pages.collections.external_modal.not_show":"Do not show this message again.","pages.collections.refresh.title":"Refresh your collection","pages.collections.refresh.notice":"You can refresh data every 15 minutes.","pages.collections.refresh.notice_wait":"Please wait. You can refresh data every 15 minutes.","pages.collections.refresh.toast":"We're updating information for your collection.","pages.collections.featured.title":"Featured Collections","pages.collections.featured.button":"Explore Collection","pages.collections.footer.heading_broken.0":"Connect with MetaMask","pages.collections.footer.heading_broken.1":"& Manage Your Collection","pages.collections.footer.subtitle":"Explore, Filter, & Share your favorite NFTs with Dashbrd.","pages.collections.footer.button":"Manage Collections","pages.nfts.nft":"nft","pages.nfts.about_nft":"About NFT","pages.nfts.owned_by":"Owned by","pages.nfts.collection_image":"collection image","pages.nfts.menu.properties":"Properties","pages.nfts.menu.activity":"Activity","pages.reports.title":"Submit a Report","pages.reports.description":"Thanks for looking out by reporting things that break the rules. Let us know what's happening and we'll receive the report.","pages.reports.success":"Thank you for your report. We'll review it and see if it breaks our ToS.","pages.reports.failed":"Something went wrong. Please try again.","pages.reports.throttle":"You have made too many requests. Please wait {{time}} before reporting again.","pages.reports.reported":"You have already reported this {{model}}.","pages.reports.reasons.spam":"Spam","pages.reports.reasons.violence":"Promoting Violence","pages.reports.reasons.hate":"Hate","pages.reports.reasons.inappropriate_content":"Inappropriate Content","pages.reports.reasons.impersonation":"Impersonation","pages.reports.reasons.trademark":"Trademark or Copyright","pages.reports.reasons.selfharm":"Self-Harm","pages.reports.reasons.harassment":"Harassment","pages.galleries.title":"Galleries","pages.galleries.empty_title":"No galleries have been published yet. Once they do they will appear here.","pages.galleries.search.loading_results":"Loading results...","pages.galleries.search.no_results":"We could not find anything matching your search criteria, please try again!","pages.galleries.search.placeholder":"Search by name or curator address","pages.galleries.search.placeholder_nfts":"Search by NFTs","pages.galleries.search.error":"Could not load search results. Please try again later.","pages.galleries.my_galleries.title":"My Galleries","pages.galleries.my_galleries.subtitle":"Manage your galleries","pages.galleries.my_galleries.new_gallery":"New Gallery","pages.galleries.my_galleries.no_galleries":"You have not created any galleries yet. To create a gallery, click on the \"Create Gallery\" button.","pages.galleries.my_galleries.no_available_collections":"You have hidden all your collections. If you want to create a gallery, make sure you have at least 1 collection available.","pages.galleries.my_galleries.no_draft_galleries":"You have no draft galleries yet. To create a gallery, click on the \"Create Gallery\" button.","pages.galleries.my_galleries.succesfully_deleted":"Gallery has been successfully removed","pages.galleries.my_galleries.draft_succesfully_deleted":"Draft has been successfully removed","pages.galleries.my_galleries.successfully_created":"Gallery has been successfully created","pages.galleries.my_galleries.successfully_updated":"Gallery has been successfully updated","pages.galleries.my_galleries.new_gallery_no_nfts":"Creating a Gallery requires you to own an NFT.","pages.galleries.my_galleries.new_gallery_all_collections_hidden":"Creating a Gallery requires you to have at least 1 collection available.","pages.galleries.my_galleries.delete_modal.title":"Delete Draft","pages.galleries.my_galleries.delete_modal.text":"Are you sure you want to delete the draft? Everything you've done will be deleted and you won't be able to get it back.","pages.galleries.my_galleries.nfts_no_longer_owned":"NFTs no longer owned by this wallet have been removed from the draft”","pages.galleries.copy_gallery_link":"Copy Gallery Link","pages.galleries.my_nfts":"My NFTs","pages.galleries.show_hidden_collections":"Show hidden collections","pages.galleries.value":"Value","pages.galleries.floor_price":"Floor Price","pages.galleries.nfts":"NFTs","pages.galleries.collections":"Collections","pages.galleries.galleries_count_simple":"{0} galleries|{1} gallery|[2,*] galleries","pages.galleries.galleries_count":"{0} {{count}} Galleries|{1} {{count}} Gallery|[2,*] {{count}} Galleries","pages.galleries.collections_count_simple":"{0} collections|{1} collection|[2,*] collections","pages.galleries.collections_count":"{0} {{count}} Collections|{1} {{count}} Collection|[2,*] {{count}} Collections","pages.galleries.nfts_count_simple":"{0} NFTs|{1} NFT|[2,*] NFTs","pages.galleries.nfts_count":"{0} {{count}} NFTs|{1} {{count}} NFT|[2,*] {{count}} NFTs","pages.galleries.users_count_simple":"{0} users|{1} user|[2,*] users","pages.galleries.users_count":"{0} {{count}} Users|{1} {{count}} User|[2,*] {{count}} Users","pages.galleries.featuring":"Featuring","pages.galleries.curated_by":"Curated by","pages.galleries.worth_about":"Worth About","pages.galleries.valued_at":"valued at","pages.galleries.from":"From","pages.galleries.most_popular_galleries":"Most Popular Galleries","pages.galleries.newest_galleries":"Newest Galleries","pages.galleries.most_valuable_galleries":"Most Valuable Galleries","pages.galleries.most_popular":"Most Popular","pages.galleries.newest":"Newest","pages.galleries.most_valuable":"Most Valuable","pages.galleries.create.search_by_nfts":"Search by NFTs","pages.galleries.create.input_placeholder":"Enter gallery name","pages.galleries.create.title_too_long":"Gallery name must not exceed {{max}} characters.","pages.galleries.create.already_selected_nft":"NFT already exists in this gallery","pages.galleries.create.nft_missing_image":"Only NFTs with images can be added to galleries","pages.galleries.create.nft_gallery_limit":"You can only add 16 NFTs per gallery","pages.galleries.create.gallery_cover":"Gallery Cover","pages.galleries.create.gallery_cover_description":"The cover is used for the card on the gallery list page. While the cover is not a requirement it will allow you to add personality and stand out from the crowd.","pages.galleries.create.gallery_cover_information":"Image dimensions must be at least 287px x 190px, with a max size of 2 MB (JPG, PNG or GIF)","pages.galleries.create.no_results":"We could not find anything matching your search criteria, please try again!","pages.galleries.create.templates.cover":"Cover","pages.galleries.create.templates.template":"Template","pages.galleries.create.templates.select":"Select Gallery Template","pages.galleries.create.templates.basic":"Basic Gallery","pages.galleries.create.templates.coming_soon":"More Coming Soon","pages.galleries.create.load_more_collections_one":"Load {{count}} More Collection","pages.galleries.create.load_more_collections_other":"Load {{count}} More Collections","pages.galleries.create.load_more_nfts":"Load More NFTs","pages.galleries.create.can_purchase":"You can purchase NFTs with these top NFT Marketplaces:","pages.galleries.create.must_own_one_nft":"You must own at least one (1) NFT in order to create a gallery.","pages.galleries.create.back_to_galleries":"Back to Galleries","pages.galleries.create.draft_saved":"Draft Saved","pages.galleries.create.saving_to_draft":"Saving to draft","pages.galleries.create.drafts_limit_modal_title":"Draft Gallery Limit","pages.galleries.create.drafts_limit_modal_message":"You’ve hit your limit for draft galleries. While you can still make new galleries and publish them, they won’t be saved as drafts. To Free up space, you can either delete existing drafts or publish them.","pages.galleries.create.drafts_limit_modal_cancel":"Go to Drafts","pages.galleries.delete_modal.title":"Delete Gallery","pages.galleries.delete_modal.confirmation_text":"Are you sure you want to delete the gallery? Deleting a Gallery is permanent, all associated views and likes will be lost.","pages.galleries.consists_of_collections":"{0} This gallery consists of {{count}} collections|{1} This gallery consists of {{count}} collection|[2,*] This gallery consists of {{count}} collections","pages.galleries.guest_banner.title":"Craft the ultimate","pages.galleries.guest_banner.subtitle":"Pick your favorites, curate your gallery, & share it with the world.","pages.profile.title":"Profile","pages.token_panel.balance_tooltip":"Total percentage of the portfolio held in this token","pages.token_panel.insufficient_funds":"Insufficient Balance","pages.token_panel.error":"Dashbrd has failed to load token information. Please try again later.","pages.token_panel.failed_to_retrieve_transactions":"We were unable to fetch your transactions.","pages.token_panel.tabs.transaction_history":"Transaction History","pages.token_panel.tabs.history":"History","pages.token_panel.tabs.market_data":"Market Data","pages.token_panel.details.current_price":"Current Price","pages.token_panel.details.title":"Token Details","pages.token_panel.details.market_cap":"Market Cap","pages.token_panel.details.volume":"Daily Volume","pages.token_panel.details.supply":"Minted Supply","pages.token_panel.details.ath":"All-Time High","pages.token_panel.details.atl":"All-Time Low","pages.token_panel.chart.failed":"Dashbrd has failed to load chart information. Please try again later.","pages.transaction_details_panel.title":"Transaction Details","pages.transaction_details_panel.details.blockchain":"Blockchain","pages.transaction_details_panel.details.timestamp":"Timestamp","pages.transaction_details_panel.details.transaction_hash":"Transaction Hash","pages.transaction_details_panel.details.transaction_fee":"Transaction Fee","pages.transaction_details_panel.details.gas_price":"Gas Price","pages.transaction_details_panel.details.gas_used":"Gas Used","pages.transaction_details_panel.details.nonce":"Nonce","pages.send_receive_panel.send.labels.token_and_amount":"Token and Amount","pages.send_receive_panel.send.labels.destination_address":"Destination Address","pages.send_receive_panel.send.labels.projected_fee":"Projected Fee","pages.send_receive_panel.send.placeholders.enter_amount":"Enter Amount","pages.send_receive_panel.send.placeholders.insert_recipient_address":"Insert Recipient Address","pages.send_receive_panel.send.placeholders.projected_fee":"Projected Fee","pages.send_receive_panel.send.errors.amount":"Insufficient Funds: You do not have enough to cover the amount + fee.","pages.send_receive_panel.send.errors.destination":"Destination address is not correct. Check and input again.","pages.send_receive_panel.send.hints.token_price":"Token Price","pages.send_receive_panel.send.fees.Fast":"Fast","pages.send_receive_panel.send.fees.Avg":"Avg","pages.send_receive_panel.send.fees.Slow":"Slow","pages.send_receive_panel.send.search_dropdown.placeholder":"Search token","pages.send_receive_panel.send.search_dropdown.no_results":"No Results","pages.send_receive_panel.send.search_dropdown.error":"Error occurred while searching tokens.","pages.send_receive_panel.send.transaction_time":"Transaction Time: ~{{ time }} minutes","pages.send_receive_panel.send.from":"From","pages.send_receive_panel.send.to":"To","pages.send_receive_panel.send.amount":"Amount","pages.send_receive_panel.send.fee":"Fee","pages.send_receive_panel.send.total_amount":"Total Amount","pages.send_receive_panel.send.waiting_message":"Review and verify the information on your MetaMask. Sign to send the transaction.","pages.send_receive_panel.send.waiting_spinner_text":"Waiting for confirmation...","pages.send_receive_panel.send.failed_message":"It looks like something went wrong while sending your transaction. Press 'Retry' to make another attempt.","pages.send_receive_panel.receive.alert":"Send only Polygon or Ethereum Network compatible tokens to this address or you could permanently lose your funds!","pages.settings.title":"Settings","pages.settings.sidebar.general":"General","pages.settings.sidebar.notifications":"Notifications","pages.settings.sidebar.session_history":"Sessions History","pages.settings.general.title":"Settings","pages.settings.general.subtitle":"Customize your App Experience","pages.settings.general.currency":"Currency","pages.settings.general.currency_subtitle":"Select your default currency which will be used throughout the app.","pages.settings.general.time_date":"Time & Date","pages.settings.general.time_date_subtitle":"Select how you want time and date be shown inside app.","pages.settings.general.date_format":"Date Format","pages.settings.general.time_format":"Time Format","pages.settings.general.timezone":"Timezone","pages.settings.general.set_defaults":"Set Defaults","pages.settings.general.set_defaults_content":"Reverting to the default settings will remove any customizations previously made. Are you sure?","pages.settings.general.save":"Save Settings","pages.settings.general.saved":"Your settings have been successfully saved","pages.wallet.title":"Wallet","pages.privacy_policy.title":"Privacy Policy","pages.terms_of_service.title":"Terms of Service","pages.popular_collections.title":"Popular NFT Collections","pages.popular_collections.header_title":"<0>{{nftsCount}} {{nfts}} from <0>{{collectionsCount}} {{collections}}, worth about <0><1>{{worth}}","pagination.previous":"« Previous","pagination.next":"Next »","passwords.reset":"Your password has been reset!","passwords.sent":"We have emailed your password reset link!","passwords.throttled":"Please wait before retrying.","passwords.token":"This password reset token is invalid.","passwords.user":"We can't find a user with that email address.","urls.landing":"https://dashbrd.com","urls.cookie_policy":"https://dashbrd.com/cookie-policy","urls.privacy_policy":"https://dashbrd.com/privacy-policy","urls.terms_of_service":"https://dashbrd.com/terms-of-service","urls.twitter":"https://x.com/DashbrdApp","urls.discord":"https://discord.gg/MJyWKkCJ5k","urls.github":"https://github.com/ArdentHQ/dashbrd","urls.coingecko":"https://www.coingecko.com","urls.etherscan":"https://etherscan.io","urls.polygonscan":"https://polygonscan.com","urls.alchemy":"https://www.alchemy.com","urls.moralis":"https://moralis.io","urls.mnemonic":"https://www.mnemonichq.com","urls.opensea":"https://opensea.io/","urls.explorers.etherscan.token_transactions":"https://etherscan.io/token/{{token}}?a={{address}}","urls.explorers.etherscan.addresses":"https://etherscan.io/address/{{address}}","urls.explorers.etherscan.transactions":"https://etherscan.io/tx/{{id}}","urls.explorers.etherscan.nft":"https://etherscan.io/nft/{{address}}/{{nftId}}","urls.explorers.polygonscan.token_transactions":"https://polygonscan.com/token/{{token}}?a={{address}}","urls.explorers.polygonscan.addresses":"https://polygonscan.com/address/{{address}}","urls.explorers.polygonscan.transactions":"https://polygonscan.com/tx/{{id}}","urls.explorers.polygonscan.nft":"https://polygonscan.com/nft/{{address}}/{{nftId}}","urls.explorers.mumbai.token_transactions":"https://mumbai.polygonscan.com/token/{{token}}?a={{address}}","urls.explorers.mumbai.addresses":"https://mumbai.polygonscan.com/address/{{address}}","urls.explorers.mumbai.transactions":"https://mumbai.polygonscan.com/tx/{{id}}","urls.explorers.mumbai.nft":"https://mumbai.polygonscan.com/nft/{{address}}/{{nftId}}","urls.explorers.goerli.token_transactions":"https://goerli.etherscan.io/token/{{token}}?a={{address}}","urls.explorers.goerli.addresses":"https://goerli.etherscan.io/address/{{address}}","urls.explorers.goerli.transactions":"https://goerli.etherscan.io/tx/{{id}}","urls.explorers.goerli.nft":"https://goerli.etherscan.io/nft/{{address}}/{{nftId}}","urls.marketplaces.opensea.collection":"https://opensea.io/assets/{{network}}/{{address}}","urls.marketplaces.opensea.nft":"https://opensea.io/assets/{{network}}/{{address}}/{{nftId}}","urls.marketplaces.rarible.collection":"https://rarible.com/collection/{{address}}/items","urls.marketplaces.rarible.nft":"https://rarible.com/token/{{address}}:{{nftId}}","urls.marketplaces.blur.collection":"https://blur.io/collection/{{address}}","urls.marketplaces.blur.nft":"https://blur.io/asset/{{address}}/{{nftId}}","urls.marketplaces.looksrare.collection":"https://looksrare.org/collections/{{address}}","urls.marketplaces.looksrare.nft":"https://looksrare.org/collections/{{address}}/{{nftId}}","validation.accepted":"The {{attribute}} must be accepted.","validation.accepted_if":"The {{attribute}} must be accepted when {{other}} is {{value}}.","validation.active_url":"The {{attribute}} is not a valid URL.","validation.after":"The {{attribute}} must be a date after {{date}}.","validation.after_or_equal":"The {{attribute}} must be a date after or equal to {{date}}.","validation.alpha":"The {{attribute}} must only contain letters.","validation.alpha_dash":"The {{attribute}} must only contain letters, numbers, dashes and underscores.","validation.alpha_num":"The {{attribute}} must only contain letters and numbers.","validation.array":"The {{attribute}} must be an array.","validation.ascii":"The {{attribute}} must only contain single-byte alphanumeric characters and symbols.","validation.before":"The {{attribute}} must be a date before {{date}}.","validation.before_or_equal":"The {{attribute}} must be a date before or equal to {{date}}.","validation.between.array":"The {{attribute}} must have between {{min}} and {{max}} items.","validation.between.file":"The {{attribute}} must be between {{min}} and {{max}} kilobytes.","validation.between.numeric":"The {{attribute}} must be between {{min}} and {{max}}.","validation.between.string":"The {{attribute}} must be between {{min}} and {{max}} characters.","validation.boolean":"The {{attribute}} field must be true or false.","validation.confirmed":"The {{attribute}} confirmation does not match.","validation.current_password":"The password is incorrect.","validation.date":"The {{attribute}} is not a valid date.","validation.date_equals":"The {{attribute}} must be a date equal to {{date}}.","validation.date_format":"The {{attribute}} does not match the format {{format}}.","validation.decimal":"The {{attribute}} must have {{decimal}} decimal places.","validation.declined":"The {{attribute}} must be declined.","validation.declined_if":"The {{attribute}} must be declined when {{other}} is {{value}}.","validation.different":"The {{attribute}} and {{other}} must be different.","validation.digits":"The {{attribute}} must be {{digits}} digits.","validation.digits_between":"The {{attribute}} must be between {{min}} and {{max}} digits.","validation.dimensions":"The {{attribute}} has invalid image dimensions.","validation.distinct":"The {{attribute}} field has a duplicate value.","validation.doesnt_end_with":"The {{attribute}} may not end with one of the following: {{values}}.","validation.doesnt_start_with":"The {{attribute}} may not start with one of the following: {{values}}.","validation.email":"The {{attribute}} must be a valid email address.","validation.ends_with":"The {{attribute}} must end with one of the following: {{values}}.","validation.enum":"The selected {{attribute}} is invalid.","validation.exists":"The selected {{attribute}} is invalid.","validation.file":"The {{attribute}} must be a file.","validation.filled":"The {{attribute}} field must have a value.","validation.gt.array":"The {{attribute}} must have more than {{value}} items.","validation.gt.file":"The {{attribute}} must be greater than {{value}} kilobytes.","validation.gt.numeric":"The {{attribute}} must be greater than {{value}}.","validation.gt.string":"The {{attribute}} must be greater than {{value}} characters.","validation.gte.array":"The {{attribute}} must have {{value}} items or more.","validation.gte.file":"The {{attribute}} must be greater than or equal to {{value}} kilobytes.","validation.gte.numeric":"The {{attribute}} must be greater than or equal to {{value}}.","validation.gte.string":"The {{attribute}} must be greater than or equal to {{value}} characters.","validation.image":"The {{attribute}} must be an image.","validation.in":"The selected {{attribute}} is invalid.","validation.in_array":"The {{attribute}} field does not exist in {{other}}.","validation.integer":"The {{attribute}} must be an integer.","validation.ip":"The {{attribute}} must be a valid IP address.","validation.ipv4":"The {{attribute}} must be a valid IPv4 address.","validation.ipv6":"The {{attribute}} must be a valid IPv6 address.","validation.json":"The {{attribute}} must be a valid JSON string.","validation.lowercase":"The {{attribute}} must be lowercase.","validation.lt.array":"The {{attribute}} must have less than {{value}} items.","validation.lt.file":"The {{attribute}} must be less than {{value}} kilobytes.","validation.lt.numeric":"The {{attribute}} must be less than {{value}}.","validation.lt.string":"The {{attribute}} must be less than {{value}} characters.","validation.lte.array":"The {{attribute}} must not have more than {{value}} items.","validation.lte.file":"The {{attribute}} must be less than or equal to {{value}} kilobytes.","validation.lte.numeric":"The {{attribute}} must be less than or equal to {{value}}.","validation.lte.string":"The {{attribute}} must be less than or equal to {{value}} characters.","validation.mac_address":"The {{attribute}} must be a valid MAC address.","validation.max.array":"The {{attribute}} must not have more than {{max}} items.","validation.max.file":"The {{attribute}} must not be greater than {{max}} kilobytes.","validation.max.numeric":"The {{attribute}} must not be greater than {{max}}.","validation.max.string":"The {{attribute}} must not be greater than {{max}} characters.","validation.max_digits":"The {{attribute}} must not have more than {{max}} digits.","validation.mimes":"The {{attribute}} must be a file of type: {{values}}.","validation.mimetypes":"The {{attribute}} must be a file of type: {{values}}.","validation.min.array":"The {{attribute}} must have at least {{min}} items.","validation.min.file":"The {{attribute}} must be at least {{min}} kilobytes.","validation.min.numeric":"The {{attribute}} must be at least {{min}}.","validation.min.string":"The {{attribute}} must be at least {{min}} characters.","validation.min_digits":"The {{attribute}} must have at least {{min}} digits.","validation.missing":"The {{attribute}} field must be missing.","validation.missing_if":"The {{attribute}} field must be missing when {{other}} is {{value}}.","validation.missing_unless":"The {{attribute}} field must be missing unless {{other}} is {{value}}.","validation.missing_with":"The {{attribute}} field must be missing when {{values}} is present.","validation.missing_with_all":"The {{attribute}} field must be missing when {{values}} are present.","validation.multiple_of":"The {{attribute}} must be a multiple of {{value}}.","validation.not_in":"The selected {{attribute}} is invalid.","validation.not_regex":"The {{attribute}} format is invalid.","validation.numeric":"The {{attribute}} must be a number.","validation.password.letters":"The {{attribute}} must contain at least one letter.","validation.password.mixed":"The {{attribute}} must contain at least one uppercase and one lowercase letter.","validation.password.numbers":"The {{attribute}} must contain at least one number.","validation.password.symbols":"The {{attribute}} must contain at least one symbol.","validation.password.uncompromised":"The given {{attribute}} has appeared in a data leak. Please choose a different {{attribute}}.","validation.present":"The {{attribute}} field must be present.","validation.prohibited":"The {{attribute}} field is prohibited.","validation.prohibited_if":"The {{attribute}} field is prohibited when {{other}} is {{value}}.","validation.prohibited_unless":"The {{attribute}} field is prohibited unless {{other}} is in {{values}}.","validation.prohibits":"The {{attribute}} field prohibits {{other}} from being present.","validation.regex":"The {{attribute}} format is invalid.","validation.required":"The {{attribute}} field is required.","validation.required_array_keys":"The {{attribute}} field must contain entries for: {{values}}.","validation.required_if":"The {{attribute}} field is required when {{other}} is {{value}}.","validation.required_if_accepted":"The {{attribute}} field is required when {{other}} is accepted.","validation.required_unless":"The {{attribute}} field is required unless {{other}} is in {{values}}.","validation.required_with":"The {{attribute}} field is required when {{values}} is present.","validation.required_with_all":"The {{attribute}} field is required when {{values}} are present.","validation.required_without":"The {{attribute}} field is required when {{values}} is not present.","validation.required_without_all":"The {{attribute}} field is required when none of {{values}} are present.","validation.same":"The {{attribute}} and {{other}} must match.","validation.size.array":"The {{attribute}} must contain {{size}} items.","validation.size.file":"The {{attribute}} must be {{size}} kilobytes.","validation.size.numeric":"The {{attribute}} must be {{size}}.","validation.size.string":"The {{attribute}} must be {{size}} characters.","validation.starts_with":"The {{attribute}} must start with one of the following: {{values}}.","validation.string":"The {{attribute}} must be a string.","validation.timezone":"The {{attribute}} must be a valid timezone.","validation.unique":"The {{attribute}} has already been taken.","validation.uploaded":"The {{attribute}} failed to upload.","validation.uppercase":"The {{attribute}} must be uppercase.","validation.url":"The {{attribute}} must be a valid URL.","validation.ulid":"The {{attribute}} must be a valid ULID.","validation.uuid":"The {{attribute}} must be a valid UUID.","validation.custom.attribute-name.rule-name":"custom-message","validation.unsupported_currency_code":"The currency code you provided is invalid or not supported.","validation.unsupported_period":"The period you provided is invalid or not supported.","validation.unsupported_token_symbol":"The token symbol you provided is invalid or not supported.","validation.gallery_title_required":"Gallery name is required.","validation.gallery_title_max_characters":"The gallery name should not exceed 50 characters.","validation.gallery_title_invalid":"The gallery name is invalid.","validation.nfts_required":"Please add at least one NFT.","validation.nfts_max_size":"Galleries can contain no more than {{limit}} NFTs","validation.invalid_nfts":"The NFT in position {{position}} is invalid, please select another one.","validation.invalid_cover":"You have selected an invalid cover image, please try another one."} \ No newline at end of file diff --git a/resources/js/Pages/Collections/CollectionOfTheMonth.tsx b/resources/js/Pages/Collections/CollectionOfTheMonth.tsx index aea4d1098..cb9c3381b 100644 --- a/resources/js/Pages/Collections/CollectionOfTheMonth.tsx +++ b/resources/js/Pages/Collections/CollectionOfTheMonth.tsx @@ -1,25 +1,29 @@ +import { DateTime } from "@ardenthq/sdk-intl"; import { type PageProps, router } from "@inertiajs/core"; import { Head } from "@inertiajs/react"; import cn from "classnames"; import { useTranslation } from "react-i18next"; +import { WinnerCollections } from "./Components/WinnerCollections"; import { IconButton } from "@/Components/Buttons"; import { WinnersChart } from "@/Components/Collections/CollectionOfTheMonthWinners/CollectionOfTheMonthWinners.blocks"; import { Heading } from "@/Components/Heading"; -import { Icon } from "@/Components/Icon"; import { Link } from "@/Components/Link"; import { DefaultLayout } from "@/Layouts/DefaultLayout"; interface CollectionOfTheMonthProperties extends PageProps { title: string; - collections: App.Data.Collections.CollectionOfTheMonthData[]; + winners: App.Data.Collections.CollectionOfTheMonthData[]; } -const CollectionOfTheMonth = ({ title, collections }: CollectionOfTheMonthProperties): JSX.Element => { +const CollectionOfTheMonth = ({ title, winners }: CollectionOfTheMonthProperties): JSX.Element => { const { t } = useTranslation(); - const date = new Date(); - date.setMonth(date.getMonth() - 1); - const previousMonth = `${date.toLocaleString("default", { month: "long" })} ${date.getFullYear()}`; + const latestMonthWinners = winners.filter( + (winner) => + DateTime.make(winner.hasWonAt ?? undefined).format("MMMM:YYYY") === DateTime.make().format("MMMM:YYYY"), + ); + + const month = DateTime.make(latestMonthWinners[0]?.hasWonAt ?? undefined).format("MMMM"); return ( @@ -58,38 +62,18 @@ const CollectionOfTheMonth = ({ title, collections }: CollectionOfTheMonthProper
    {t("pages.collections.collection_of_the_month.winners_month", { - month: previousMonth, + month, })}
    -
    -
    -
    - -
    - - {t("pages.collections.collection_of_the_month.content_to_be_added.title")} - - -

    - {t("pages.collections.collection_of_the_month.content_to_be_added.description")} -

    -
    -
    +
    diff --git a/resources/js/Pages/Collections/Components/WinnerCollections/Hooks/useWinnerCollections.ts b/resources/js/Pages/Collections/Components/WinnerCollections/Hooks/useWinnerCollections.ts new file mode 100644 index 000000000..a2c6b3018 --- /dev/null +++ b/resources/js/Pages/Collections/Components/WinnerCollections/Hooks/useWinnerCollections.ts @@ -0,0 +1,78 @@ +import { sortByDesc, uniq } from "@ardenthq/sdk-helpers"; +import { DateTime } from "@ardenthq/sdk-intl"; +import { useState } from "react"; +import { isTruthy } from "@/Utils/is-truthy"; + +const filterCollections = ({ + year, + month, + collections, +}: { + year: string; + month?: string; + collections: App.Data.Collections.CollectionOfTheMonthData[]; +}): App.Data.Collections.CollectionOfTheMonthData[] => + sortByDesc( + collections.filter((collection) => { + if (!isTruthy(collection.hasWonAt)) { + return false; + } + + if (DateTime.make(collection.hasWonAt).format("YYYY") !== year) { + return false; + } + + if (isTruthy(month)) { + return DateTime.make(collection.hasWonAt).format("MMMM") === month; + } + + return true; + }), + "votes", + ); + +export const useWinnerCollections = ({ + collections, +}: { + collections: App.Data.Collections.CollectionOfTheMonthData[]; +}): { + availableYears: string[]; + availableMonths: (year: string) => string[]; + selectedYear: string; + setSelectedYear: (year: string) => void; + filterCollections: ({ + year, + month, + }: { + year: string; + month: string; + }) => App.Data.Collections.CollectionOfTheMonthData[]; +} => { + const availableYears = uniq(collections.map(({ hasWonAt }) => DateTime.make(hasWonAt ?? undefined).format("YYYY"))); + const [selectedYear, setSelectedYear] = useState(availableYears[0]); + + const winners = filterCollections({ year: selectedYear, collections }); + + const availableMonths = (year: string): string[] => { + const months = winners.map(({ hasWonAt }) => DateTime.make(hasWonAt ?? undefined).getMonth()); + return sortByDesc(uniq(months)) + .map((month) => DateTime.make().setMonth(month).format("MMMM")) + .filter((month) => { + if (year !== DateTime.make().format("YYYY")) { + return true; + } + + // Exclude this month. + return month !== DateTime.make().format("MMMM"); + }); + }; + + return { + availableYears, + availableMonths, + selectedYear, + setSelectedYear, + filterCollections: ({ year, month }: { year: string; month: string }) => + filterCollections({ year, month, collections }), + }; +}; diff --git a/resources/js/Pages/Collections/Components/WinnerCollections/WinnerCollections.blocks.tsx b/resources/js/Pages/Collections/Components/WinnerCollections/WinnerCollections.blocks.tsx new file mode 100644 index 000000000..fc3f812b8 --- /dev/null +++ b/resources/js/Pages/Collections/Components/WinnerCollections/WinnerCollections.blocks.tsx @@ -0,0 +1,344 @@ +import { router } from "@inertiajs/core"; +import cn from "classnames"; +import { type ReactNode } from "react"; +import { useTranslation } from "react-i18next"; +import { Dropdown } from "@/Components/Dropdown"; +import { Heading } from "@/Components/Heading"; +import { Icon } from "@/Components/Icon"; +import { Img } from "@/Components/Image"; +import { DropdownButton } from "@/Components/SortDropdown"; +import { Table, TableCell, TableRow } from "@/Components/Table"; +import { WinnerBadgeFirst, WinnerBadgeSecond, WinnerBadgeThird } from "@/images"; +import { FormatCrypto } from "@/Utils/Currency"; +import { formatNumbershort } from "@/Utils/format-number"; +import { isTruthy } from "@/Utils/is-truthy"; + +const WinnerCollectionLabel = ({ label, children }: { label: string; children: ReactNode }): JSX.Element => { + const { t } = useTranslation(); + + return ( +

    + {label} + + {isTruthy(children) && {children}} + + {!isTruthy(children) && ( + {t("common.na")} + )} +

    + ); +}; + +export const WinnerCollectionMainInfo = ({ + position, + collection, +}: { + position: number; + collection: App.Data.Collections.CollectionOfTheMonthData; +}): JSX.Element => { + const { t } = useTranslation(); + + const token = { + symbol: collection.floorPriceCurrency ?? "ETH", + name: collection.floorPriceCurrency ?? "ETH", + decimals: collection.floorPriceDecimals ?? 18, + }; + + return ( +
    +
    +
    + + + {position === 0 && ( + + )} + + {position === 1 && ( + + )} + + {position === 2 && ( + + )} +
    + +

    + {collection.name} +

    +
    + +
    + + + + + + + + + + {formatNumbershort(collection.votes)} + +
    +
    + ); +}; + +export const WinnerCollectionsEmptyBlock = (): JSX.Element => { + const { t } = useTranslation(); + + return ( +
    +
    +
    + +
    + + + {t("pages.collections.collection_of_the_month.content_to_be_added.title")} + + +

    + {t("pages.collections.collection_of_the_month.content_to_be_added.description")} +

    +
    +
    + ); +}; + +const YearSelectionDropdown = ({ + onChange, + options, + selectedYear, +}: { + onChange?: (year: string) => void; + options: string[]; + selectedYear: string; +}): JSX.Element => ( + + + {({ open }) => ( + + )} + + + + {({ setOpen }) => + options.map((year) => ( + { + setOpen(false); + onChange?.(year); + }} + > + {year} + + )) + } + + +); + +export const WinnerCollectionsFilter = ({ + availableYears = [], + selectedYear, + onChange, +}: { + availableYears: string[]; + selectedYear: string; + onChange?: (year: string) => void; +}): JSX.Element => { + const { t } = useTranslation(); + + return ( +
    +
    + {t("pages.collections.collection_of_the_month.previous_winners")} + + +
    +
    + ); +}; + +export const WinnerCollectionTableRow = ({ + index, + collection, + onClick, +}: { + index: number; + collection: App.Data.Collections.CollectionOfTheMonthData; + onClick: () => void; +}): JSX.Element => { + const { t } = useTranslation(); + + const token = { + symbol: collection.floorPriceCurrency ?? "ETH", + name: collection.floorPriceCurrency ?? "ETH", + decimals: collection.floorPriceDecimals ?? 18, + }; + + return ( + + + + + + + + + + + + + + + + + + + + {formatNumbershort(collection.votes)} + + + + ); +}; + +export const WinnerCollectionsTable = ({ + month, + collections, +}: { + month: string; + collections: App.Data.Collections.CollectionOfTheMonthData[]; +}): JSX.Element => { + const { t } = useTranslation(); + + const columns = [ + { + id: "info", + cellWidth: "w-full", + }, + { + id: "volume", + className: "justify-end", + }, + { + id: "floorPrice", + }, + { + id: "votes", + sortDescFirst: true, + }, + ]; + + return ( +
    +
    + + {t("pages.collections.collection_of_the_month.winners_month", { + month, + })} + + +
    ( + { + router.visit( + route("collections.view", { + slug: collection.slug, + }), + ); + }} + collection={collection} + index={index} + key={index} + /> + )} + /> + + + ); +}; diff --git a/resources/js/Pages/Collections/Components/WinnerCollections/WinnerCollections.tsx b/resources/js/Pages/Collections/Components/WinnerCollections/WinnerCollections.tsx new file mode 100644 index 000000000..36db178f7 --- /dev/null +++ b/resources/js/Pages/Collections/Components/WinnerCollections/WinnerCollections.tsx @@ -0,0 +1,38 @@ +import { useWinnerCollections } from "./Hooks/useWinnerCollections"; +import { + WinnerCollectionsEmptyBlock, + WinnerCollectionsFilter, + WinnerCollectionsTable, +} from "./WinnerCollections.blocks"; + +export const WinnerCollections = ({ + collections, +}: { + collections: App.Data.Collections.CollectionOfTheMonthData[]; +}): JSX.Element => { + const { availableYears, availableMonths, selectedYear, setSelectedYear, filterCollections } = useWinnerCollections({ + collections, + }); + + if (availableYears.length === 0 || availableMonths(selectedYear).length === 0) { + return ; + } + + return ( + <> + + + {availableMonths(selectedYear).map((month) => ( + + ))} + + ); +}; diff --git a/resources/js/Pages/Collections/Components/WinnerCollections/index.tsx b/resources/js/Pages/Collections/Components/WinnerCollections/index.tsx new file mode 100644 index 000000000..1c028ba83 --- /dev/null +++ b/resources/js/Pages/Collections/Components/WinnerCollections/index.tsx @@ -0,0 +1,3 @@ +export * from "./WinnerCollections"; +export * from "./WinnerCollections.blocks"; +export * from "./Hooks/useWinnerCollections"; diff --git a/resources/js/Tests/Factories/Collections/CollectionOfTheMonthFactory.ts b/resources/js/Tests/Factories/Collections/CollectionOfTheMonthFactory.ts index d5406783f..decf61aff 100644 --- a/resources/js/Tests/Factories/Collections/CollectionOfTheMonthFactory.ts +++ b/resources/js/Tests/Factories/Collections/CollectionOfTheMonthFactory.ts @@ -6,6 +6,13 @@ export default class CollectionOfTheMonthFactory extends ModelFactorycreate(); + $collection = Collection::factory()->create([ + 'has_won_at' => now()->subMonth()->subDay(), + ]); CollectionVote::factory()->create([ 'collection_id' => $collection->id, From 4380535efe3b770b88eefd1ccd1ab3d098d32827 Mon Sep 17 00:00:00 2001 From: shahin-hq <132887516+shahin-hq@users.noreply.github.com> Date: Fri, 15 Dec 2023 12:14:48 +0400 Subject: [PATCH 051/145] feat: add popular collection stats (#562) --- .../PopularCollectionController.php | 16 ++++++++-- app/Models/Collection.php | 23 +++++++++++--- tests/App/Models/CollectionTest.php | 31 +++++++++++++++++++ 3 files changed, 62 insertions(+), 8 deletions(-) diff --git a/app/Http/Controllers/PopularCollectionController.php b/app/Http/Controllers/PopularCollectionController.php index 21275dadc..619e7bb25 100644 --- a/app/Http/Controllers/PopularCollectionController.php +++ b/app/Http/Controllers/PopularCollectionController.php @@ -10,9 +10,11 @@ use App\Enums\CurrencyCode; use App\Http\Controllers\Traits\HasCollectionFilters; use App\Models\Collection; +use App\Models\Nft; use Illuminate\Http\JsonResponse; use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; +use Illuminate\Support\Facades\Cache; use Inertia\Inertia; use Inertia\Response; @@ -51,6 +53,14 @@ public function index(Request $request): Response|JsonResponse|RedirectResponse ->paginate($perPage) ->withQueryString(); + $stats = Cache::remember('popular-collections-stats', now()->addHour(), function () { + return [ + 'fiatValues' => collect(Collection::getFiatValueSum()), + 'collectionsCount' => Collection::query()->count(), + 'nftsCount' => Nft::query()->count(), + ]; + }); + return Inertia::render('Collections/PopularCollections/Index', [ 'title' => trans('metatags.popular-collections.title'), 'allowsGuests' => true, @@ -58,9 +68,9 @@ public function index(Request $request): Response|JsonResponse|RedirectResponse $collections->through(fn ($collection) => CollectionData::fromModel($collection, $currency)) ), 'stats' => new CollectionStatsData( - nfts: 145, - collections: 25, - value: 256000, + nfts: $stats['nftsCount'], + collections: $stats['collectionsCount'], + value: (float) $stats['fiatValues']->where('key', $currency->value)->first()?->total ?: 0 ), 'filters' => $this->getFilters($request), ]); diff --git a/app/Models/Collection.php b/app/Models/Collection.php index 41b0bd5c7..2aafdbbdc 100644 --- a/app/Models/Collection.php +++ b/app/Models/Collection.php @@ -670,13 +670,13 @@ public function scopeAddFloorPriceChange(Builder $query): Builder { return $query->addSelect( DB::raw("( - SELECT - (AVG(case when fp1.retrieved_at >= CURRENT_DATE then fp1.floor_price end) - - AVG(case when fp1.retrieved_at >= CURRENT_DATE - INTERVAL '1 DAY' AND fp1.retrieved_at < CURRENT_DATE then fp1.floor_price end)) / + SELECT + (AVG(case when fp1.retrieved_at >= CURRENT_DATE then fp1.floor_price end) - + AVG(case when fp1.retrieved_at >= CURRENT_DATE - INTERVAL '1 DAY' AND fp1.retrieved_at < CURRENT_DATE then fp1.floor_price end)) / AVG(case when fp1.retrieved_at >= CURRENT_DATE - INTERVAL '1 DAY' AND fp1.retrieved_at < CURRENT_DATE then fp1.floor_price end) * 100 - FROM + FROM floor_price_history fp1 - WHERE + WHERE fp1.collection_id = collections.id AND fp1.retrieved_at >= CURRENT_DATE - INTERVAL '1 DAY') AS price_change_24h ") @@ -704,4 +704,17 @@ public function scopeWinnersOfThePreviousMonth(Builder $query): Builder ->whereHas('votes', fn ($query) => $query->inPreviousMonth()) ->orderBy('votes_count', 'desc'); } + + /** + * @return array + */ + public static function getFiatValueSum(): array + { + return DB::select('SELECT + key, COALESCE(SUM(value::numeric), 0) as total + FROM + collections, jsonb_each_text(fiat_value) as currencies(key,value) + GROUP BY key;' + ); + } } diff --git a/tests/App/Models/CollectionTest.php b/tests/App/Models/CollectionTest.php index 92ec3f022..8a564a36e 100644 --- a/tests/App/Models/CollectionTest.php +++ b/tests/App/Models/CollectionTest.php @@ -1376,3 +1376,34 @@ expect($collection->floorPriceHistory()->first())->toBeInstanceOf(FloorPriceHistory::class); }); + +it('should get sum of fiat values of collections', function () { + Collection::factory()->create([ + 'fiat_value' => [ + 'USD' => 10, + 'EUR' => 20, + ], + ]); + + Collection::factory()->create([ + 'fiat_value' => [ + 'USD' => 20, + 'EUR' => 30, + 'AZN' => 45, + ], + ]); + + Collection::factory()->create([ + 'fiat_value' => [ + 'EUR' => 30, + ], + ]); + + Collection::factory()->create(); + + $fiatValues = collect(Collection::getFiatValueSum()); + + expect($fiatValues->where('key', 'USD')->first()->total)->toBeString(30); + expect($fiatValues->where('key', 'EUR')->first()->total)->toBeString(80); + expect($fiatValues->where('key', 'AZN')->first()->total)->toBeString(45); +}); From 49e466e5d23eb25ee4593fb7602951f126778556 Mon Sep 17 00:00:00 2001 From: shahin-hq <132887516+shahin-hq@users.noreply.github.com> Date: Fri, 15 Dec 2023 12:19:12 +0400 Subject: [PATCH 052/145] fix: use my collections URL for sorting (#563) --- resources/js/Pages/Collections/MyCollections/Index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/js/Pages/Collections/MyCollections/Index.tsx b/resources/js/Pages/Collections/MyCollections/Index.tsx index a53680777..cdd81763a 100644 --- a/resources/js/Pages/Collections/MyCollections/Index.tsx +++ b/resources/js/Pages/Collections/MyCollections/Index.tsx @@ -24,7 +24,7 @@ const sort = ({ selectedChainIds?: number[]; }): void => { router.get( - route("collections"), + route("my-collections"), { ...getQueryParameters(), sort: sortBy, From 9311811a39022cf0f4275a7a37c9c4b0de522077 Mon Sep 17 00:00:00 2001 From: shahin-hq <132887516+shahin-hq@users.noreply.github.com> Date: Fri, 15 Dec 2023 12:28:53 +0400 Subject: [PATCH 053/145] feat: add popular collection column sorting (#564) --- .../PopularCollectionController.php | 12 ++- .../Traits/HasCollectionFilters.php | 6 ++ app/Models/Collection.php | 6 +- .../CollectionsFullTable.contracts.ts | 18 ++-- .../CollectionsFullTable.test.tsx | 35 ++++++-- .../CollectionsFullTable.tsx | 23 ++---- .../PeriodFilters.tsx | 2 +- .../PopularCollectionsSorting.tsx | 5 +- .../Collections/Hooks/useCollectionFilters.ts | 8 +- .../Collections/PopularCollections/Index.tsx | 3 + tests/App/Models/CollectionTest.php | 82 +++++++++++++++++++ 11 files changed, 158 insertions(+), 42 deletions(-) diff --git a/app/Http/Controllers/PopularCollectionController.php b/app/Http/Controllers/PopularCollectionController.php index 619e7bb25..6a2a9d3b4 100644 --- a/app/Http/Controllers/PopularCollectionController.php +++ b/app/Http/Controllers/PopularCollectionController.php @@ -36,9 +36,19 @@ public function index(Request $request): Response|JsonResponse|RedirectResponse $perPage = min($request->has('perPage') ? (int) $request->get('perPage') : 50, 100); + $sortBy = in_array($request->query('sort'), $this->allowedSortByValues) ? $request->query('sort') : null; + + $defaultSortDirection = $sortBy === null ? 'desc' : 'asc'; + + $sortDirection = in_array($request->query('direction'), ['asc', 'desc']) ? $request->query('direction') : $defaultSortDirection; + $collections = Collection::query() ->searchByName($request->get('query')) - ->when($request->query('sort') !== 'floor-price', fn ($q) => $q->orderBy('volume', 'desc')) // TODO: order by top... + ->when($sortBy === null, fn ($q) => $q->orderBy('volume', 'desc')) // @TODO handle top sorting + ->when($sortBy === 'name', fn ($q) => $q->orderByName($sortDirection)) + ->when($sortBy === 'value', fn ($q) => $q->orderByValue(null, $sortDirection, $currency)) + ->when($sortBy === 'floor-price', fn ($q) => $q->orderByFloorPrice($sortDirection, $currency)) + ->when($sortBy === 'chain', fn ($q) => $q->orderByChainId($sortDirection)) ->filterByChainId($chainId) ->orderByFloorPrice('desc', $currency) ->with([ diff --git a/app/Http/Controllers/Traits/HasCollectionFilters.php b/app/Http/Controllers/Traits/HasCollectionFilters.php index 75eeb797a..64e86850d 100644 --- a/app/Http/Controllers/Traits/HasCollectionFilters.php +++ b/app/Http/Controllers/Traits/HasCollectionFilters.php @@ -8,6 +8,11 @@ trait HasCollectionFilters { + /** + * @var array + */ + private array $allowedSortByValues = ['name', 'floor-price', 'value', 'chain']; + /** * @return object{chain?: string, sort?: string, period?: string} */ @@ -18,6 +23,7 @@ private function getFilters(Request $request): object 'sort' => $this->getValidValue($request->get('sort'), ['floor-price']), 'period' => $this->getValidValue($request->get('period'), ['24h', '7d', '30d']), 'query' => boolval($query = $request->get('query')) ? $query : null, + 'direction' => $this->getValidValue($request->get('direction'), ['asc', 'desc']), ]; // If value is not defined (or invalid), remove it from the array since diff --git a/app/Models/Collection.php b/app/Models/Collection.php index 2aafdbbdc..9eb196004 100644 --- a/app/Models/Collection.php +++ b/app/Models/Collection.php @@ -223,10 +223,12 @@ public function fiatValue(CurrencyCode $currency): ?float * @param Builder $query * @return Builder */ - public function scopeOrderByValue(Builder $query, Wallet $wallet, string $direction, CurrencyCode $currency = CurrencyCode::USD): Builder + public function scopeOrderByValue(Builder $query, ?Wallet $wallet, ?string $direction, ?CurrencyCode $currency = CurrencyCode::USD): Builder { $nullsPosition = strtolower($direction) === 'asc' ? 'NULLS FIRST' : 'NULLS LAST'; + $walletFilter = $wallet ? "WHERE nfts.wallet_id = $wallet->id" : ''; + return $query->selectRaw( sprintf('collections.*, (CAST(collections.fiat_value->>\'%s\' AS float)::float * MAX(nc.nfts_count)::float) as total_value', $currency->value) ) @@ -235,7 +237,7 @@ public function scopeOrderByValue(Builder $query, Wallet $wallet, string $direct collection_id, count(*) as nfts_count FROM nfts - WHERE nfts.wallet_id = $wallet->id + {$walletFilter} GROUP BY collection_id ) nc"), 'collections.id', '=', 'nc.collection_id') ->groupBy('collections.id') diff --git a/resources/js/Components/Collections/CollectionsFullTable/CollectionsFullTable.contracts.ts b/resources/js/Components/Collections/CollectionsFullTable/CollectionsFullTable.contracts.ts index d51a589f2..a21de2d0e 100644 --- a/resources/js/Components/Collections/CollectionsFullTable/CollectionsFullTable.contracts.ts +++ b/resources/js/Components/Collections/CollectionsFullTable/CollectionsFullTable.contracts.ts @@ -1,3 +1,6 @@ +import { type PopularCollectionsSortBy } from "@/Pages/Collections/Components/PopularCollectionsSorting"; +import { type SortByDirection } from "@/Pages/Collections/Hooks/useCollectionFilters"; + export interface CollectionTableItemProperties { collection: App.Data.Collections.CollectionData; uniqueKey: string; @@ -7,16 +10,7 @@ export interface CollectionTableItemProperties { export interface CollectionTableProperties { collections: App.Data.Collections.CollectionData[]; user: App.Data.UserData | null; - activeSort?: string; - sortDirection?: "asc" | "desc"; - onSort?: ({ - sortBy, - direction, - selectedChainIds, - }: { - sortBy: string; - direction?: string; - selectedChainIds?: number[]; - }) => void; - selectedChainIds?: number[]; + setSortBy: (sortBy: PopularCollectionsSortBy | undefined, direction?: SortByDirection) => void; + activeSort: PopularCollectionsSortBy | ""; + direction?: SortByDirection; } diff --git a/resources/js/Components/Collections/CollectionsFullTable/CollectionsFullTable.test.tsx b/resources/js/Components/Collections/CollectionsFullTable/CollectionsFullTable.test.tsx index bff9d1fd6..888d9271a 100644 --- a/resources/js/Components/Collections/CollectionsFullTable/CollectionsFullTable.test.tsx +++ b/resources/js/Components/Collections/CollectionsFullTable/CollectionsFullTable.test.tsx @@ -41,6 +41,8 @@ describe("CollectionsFullTable", () => { , { breakpoint }, ); @@ -53,6 +55,8 @@ describe("CollectionsFullTable", () => { , ); @@ -67,6 +71,8 @@ describe("CollectionsFullTable", () => { , ); @@ -84,7 +90,8 @@ describe("CollectionsFullTable", () => { , ); @@ -96,7 +103,7 @@ describe("CollectionsFullTable", () => { await userEvent.click(tableHeader); - expect(sortFunction).toHaveBeenCalledWith({ direction: "asc", selectedChainIds: undefined, sortBy: "name" }); + expect(sortFunction).toHaveBeenCalledWith("name", "asc"); }); it("should sort the table when sortable heading is clicked but reverse the direction", async () => { @@ -106,9 +113,9 @@ describe("CollectionsFullTable", () => { , ); @@ -120,7 +127,7 @@ describe("CollectionsFullTable", () => { await userEvent.click(tableHeader); - expect(sortFunction).toHaveBeenCalledWith({ direction: "desc", selectedChainIds: undefined, sortBy: "name" }); + expect(sortFunction).toHaveBeenCalledWith("name", "desc"); }); it("should sort the table when sortable heading is clicked but reverse the direction to asc", async () => { @@ -128,6 +135,8 @@ describe("CollectionsFullTable", () => { , ); @@ -148,8 +157,8 @@ describe("CollectionsFullTable", () => { collections={collections} user={user} activeSort="name" - sortDirection="desc" - onSort={sortFunction} + direction="desc" + setSortBy={sortFunction} />, ); @@ -161,7 +170,7 @@ describe("CollectionsFullTable", () => { await userEvent.click(tableHeader); - expect(sortFunction).toHaveBeenCalledWith({ direction: "asc", selectedChainIds: undefined, sortBy: "name" }); + expect(sortFunction).toHaveBeenCalledWith("name", "asc"); }); it.each(allBreakpoints)("should render without crashing on %s screen if no floor price data", (breakpoint) => { @@ -169,6 +178,8 @@ describe("CollectionsFullTable", () => { , { breakpoint }, ); @@ -181,6 +192,8 @@ describe("CollectionsFullTable", () => { , ); @@ -192,6 +205,8 @@ describe("CollectionsFullTable", () => { , ); @@ -211,6 +226,8 @@ describe("CollectionsFullTable", () => { }, ]} user={user} + activeSort={""} + setSortBy={vi.fn()} />, ); @@ -229,6 +246,8 @@ describe("CollectionsFullTable", () => { , ); diff --git a/resources/js/Components/Collections/CollectionsFullTable/CollectionsFullTable.tsx b/resources/js/Components/Collections/CollectionsFullTable/CollectionsFullTable.tsx index 384e4bc38..498b1a238 100644 --- a/resources/js/Components/Collections/CollectionsFullTable/CollectionsFullTable.tsx +++ b/resources/js/Components/Collections/CollectionsFullTable/CollectionsFullTable.tsx @@ -6,14 +6,14 @@ import { type CollectionTableProperties } from "./CollectionsFullTable.contracts import { CollectionsFullTableItem } from "./CollectionsFullTableItem"; import { Table } from "@/Components/Table"; import { useBreakpoint } from "@/Hooks/useBreakpoint"; +import { type PopularCollectionsSortBy } from "@/Pages/Collections/Components/PopularCollectionsSorting"; export const CollectionsFullTable = ({ collections, user, - activeSort = "", - sortDirection = "asc", - onSort, - selectedChainIds, + activeSort, + setSortBy, + direction, }: CollectionTableProperties): JSX.Element => { const { t } = useTranslation(); @@ -92,18 +92,13 @@ export const CollectionsFullTable = ({ columns={columns} initialState={activeSort.length > 0 ? initialState : {}} activeSort={activeSort} - sortDirection={sortDirection} + sortDirection={direction} manualSortBy={true} - onSort={ - onSort != null - ? (column) => { - const direction = - column.id === activeSort ? (sortDirection === "asc" ? "desc" : "asc") : "asc"; + onSort={(column) => { + const newDirection = column.id === activeSort ? (direction === "asc" ? "desc" : "asc") : "asc"; - onSort({ sortBy: column.id, direction, selectedChainIds }); - } - : undefined - } + setSortBy(column.id as PopularCollectionsSortBy, newDirection); + }} data={collections} row={(collection: App.Data.Collections.CollectionData) => ( { setPeriod(option); }} - disabled={sortBy === "floor-price"} + disabled={sortBy !== undefined} > {t(`common.${option}`)} diff --git a/resources/js/Pages/Collections/Components/PopularCollectionsSorting/PopularCollectionsSorting.tsx b/resources/js/Pages/Collections/Components/PopularCollectionsSorting/PopularCollectionsSorting.tsx index 6eae8bbd5..ba2d9c7e6 100644 --- a/resources/js/Pages/Collections/Components/PopularCollectionsSorting/PopularCollectionsSorting.tsx +++ b/resources/js/Pages/Collections/Components/PopularCollectionsSorting/PopularCollectionsSorting.tsx @@ -2,12 +2,13 @@ import { Tab } from "@headlessui/react"; import { Fragment } from "react"; import { useTranslation } from "react-i18next"; import { Tabs } from "@/Components/Tabs"; +import { type SortByDirection } from "@/Pages/Collections/Hooks/useCollectionFilters"; // null means "top" -export type PopularCollectionsSortBy = "floor-price"; +export type PopularCollectionsSortBy = "floor-price" | "name" | "value" | "chain"; export interface PopularCollectionsSortingProperties { sortBy: PopularCollectionsSortBy | undefined; - setSortBy: (sortBy: PopularCollectionsSortBy | undefined) => void; + setSortBy: (sortBy: PopularCollectionsSortBy | undefined, direction?: SortByDirection) => void; } export const PopularCollectionsSorting = ({ sortBy, setSortBy }: PopularCollectionsSortingProperties): JSX.Element => { diff --git a/resources/js/Pages/Collections/Hooks/useCollectionFilters.ts b/resources/js/Pages/Collections/Hooks/useCollectionFilters.ts index 3f8afca7a..ab0e755cb 100644 --- a/resources/js/Pages/Collections/Hooks/useCollectionFilters.ts +++ b/resources/js/Pages/Collections/Hooks/useCollectionFilters.ts @@ -7,12 +7,15 @@ import { useIsFirstRender } from "@/Hooks/useIsFirstRender"; import { type ChainFilter, type PeriodFilterOptions } from "@/Pages/Collections/Components/PopularCollectionsFilters"; import { type PopularCollectionsSortBy } from "@/Pages/Collections/Components/PopularCollectionsSorting"; +export type SortByDirection = "asc" | "desc"; + export interface Filters extends Record { chain?: ChainFilter; sort?: PopularCollectionsSortBy; period?: PeriodFilterOptions; query?: string; perPage?: number; + direction?: SortByDirection; } interface CollectionFiltersState { @@ -70,11 +73,12 @@ export const useCollectionFilters = ({ })); }; - const setSortBy = (sort: PopularCollectionsSortBy | undefined): void => { + const setSortBy = (sort: PopularCollectionsSortBy | undefined, direction?: SortByDirection): void => { setCurrentFilters((filters) => ({ ...filters, - period: sort === "floor-price" ? undefined : filters.period, + period: sort === undefined ? filters.period : undefined, sort, + direction, })); }; diff --git a/resources/js/Pages/Collections/PopularCollections/Index.tsx b/resources/js/Pages/Collections/PopularCollections/Index.tsx index 8db95b08e..587e24187 100644 --- a/resources/js/Pages/Collections/PopularCollections/Index.tsx +++ b/resources/js/Pages/Collections/PopularCollections/Index.tsx @@ -98,6 +98,9 @@ const Index = ({ {collections.data.length === 0 && ( diff --git a/tests/App/Models/CollectionTest.php b/tests/App/Models/CollectionTest.php index 8a564a36e..8f84d2fe6 100644 --- a/tests/App/Models/CollectionTest.php +++ b/tests/App/Models/CollectionTest.php @@ -1407,3 +1407,85 @@ expect($fiatValues->where('key', 'EUR')->first()->total)->toBeString(80); expect($fiatValues->where('key', 'AZN')->first()->total)->toBeString(45); }); + +it('should sort collections', function () { + // 4 eur * 2 nft = 8 eur + $collection1 = Collection::factory()->create([ + 'fiat_value' => [ + 'USD' => 5, + 'EUR' => 4, + ], + ])->id; + + Nft::factory()->count(2)->create([ + 'collection_id' => $collection1, + ]); + + // 1 eur * 2 nft = 2 eur + $collection2 = Collection::factory()->create([ + 'fiat_value' => [ + 'USD' => 3, + 'EUR' => 1, + ], + ])->id; + + Nft::factory()->count(2)->create([ + 'collection_id' => $collection2, + ]); + + // 5 eur * 2 = 10 eur + $collection3 = Collection::factory()->create([ + 'fiat_value' => [ + 'USD' => 8, + 'EUR' => 5, + ], + ])->id; + + Nft::factory()->count(2)->create([ + 'collection_id' => $collection3, + ]); + + // 1 eur * 10 nft = 10 eur + $collection4 = Collection::factory()->create([ + 'fiat_value' => [ + 'USD' => null, + 'EUR' => 1, + ], + ])->id; + + Nft::factory()->count(10)->create([ + 'collection_id' => $collection4, + ]); + + // 0 eur * 7 nft = 0 + $collection5 = Collection::factory()->create([ + 'fiat_value' => [ + 'USD' => 1, + 'EUR' => 0, + ], + ])->id; + + Nft::factory()->count(7)->create([ + 'collection_id' => $collection5, + ]); + + $ordered = Collection::query()->orderByValue(null, 'asc', CurrencyCode::EUR)->pluck('id')->toArray(); + + expect($ordered)->toEqual([ + $collection5, // 0 + $collection2, // 1 + $collection1, // 4 + $collection3, // 8 + $collection4, // 10 + ]); + + $ordered = Collection::query()->orderByValue(null, 'desc', CurrencyCode::EUR)->pluck('id')->toArray(); + + expect($ordered)->toEqual([ + $collection4, // 10 + $collection3, // 8 + $collection1, // 4 + $collection2, // 1 + $collection5, // 0 + ]); +}); From bbb1fe6b0ed867dbac61ae67365bda037f5de1e7 Mon Sep 17 00:00:00 2001 From: shahin-hq <132887516+shahin-hq@users.noreply.github.com> Date: Fri, 15 Dec 2023 12:37:27 +0400 Subject: [PATCH 054/145] fix: use supply data for items column (#566) --- app/Data/Collections/CollectionData.php | 2 ++ .../CollectionsFullTable.test.tsx | 13 +++++++++++++ .../CollectionsFullTableItem.tsx | 11 ++++++++++- .../Factories/Collections/CollectionFactory.ts | 2 ++ resources/js/Tests/SampleData/SampleCollection.ts | 1 + resources/types/generated.d.ts | 1 + 6 files changed, 29 insertions(+), 1 deletion(-) diff --git a/app/Data/Collections/CollectionData.php b/app/Data/Collections/CollectionData.php index ad8966dfc..8c1c9baab 100644 --- a/app/Data/Collections/CollectionData.php +++ b/app/Data/Collections/CollectionData.php @@ -32,6 +32,7 @@ public function __construct( public ?float $floorPriceFiat, public ?string $floorPriceCurrency, public ?int $floorPriceDecimals, + public ?int $supply, #[WithTransformer(IpfsGatewayUrlTransformer::class)] public ?string $image, public ?string $banner, @@ -55,6 +56,7 @@ public static function fromModel(Collection $collection, CurrencyCode $currency) floorPriceFiat: (float) $collection->fiatValue($currency), floorPriceCurrency: $collection->floorPriceToken ? Str::lower($collection->floorPriceToken->symbol) : null, floorPriceDecimals: $collection->floorPriceToken?->decimals, + supply: $collection->supply, image: $collection->extra_attributes->get('image'), banner: $collection->extra_attributes->get('banner'), openSeaSlug: $collection->extra_attributes->get('opensea_slug'), diff --git a/resources/js/Components/Collections/CollectionsFullTable/CollectionsFullTable.test.tsx b/resources/js/Components/Collections/CollectionsFullTable/CollectionsFullTable.test.tsx index 888d9271a..5f7c41f8b 100644 --- a/resources/js/Components/Collections/CollectionsFullTable/CollectionsFullTable.test.tsx +++ b/resources/js/Components/Collections/CollectionsFullTable/CollectionsFullTable.test.tsx @@ -253,4 +253,17 @@ describe("CollectionsFullTable", () => { expect(getAllByTestId(`CollectionImages__Image`).length).toBe(2); }); + + it("should show N/A if collection supply is null", () => { + const { getByTestId } = render( + , + ); + + expect(getByTestId("CollectionsTableItem__unknown-supply")).toBeInTheDocument(); + }); }); diff --git a/resources/js/Components/Collections/CollectionsFullTable/CollectionsFullTableItem.tsx b/resources/js/Components/Collections/CollectionsFullTable/CollectionsFullTableItem.tsx index 711f042f9..5e7e091dd 100644 --- a/resources/js/Components/Collections/CollectionsFullTable/CollectionsFullTableItem.tsx +++ b/resources/js/Components/Collections/CollectionsFullTable/CollectionsFullTableItem.tsx @@ -120,7 +120,16 @@ export const CollectionsFullTableItem = ({ hoverClassName="" >
    - {formatNumbershort(collection.nftsCount)} + {collection.supply !== null ? ( + formatNumbershort(collection.supply) + ) : ( + + {t("common.na")} + + )}
    )} diff --git a/resources/js/Tests/Factories/Collections/CollectionFactory.ts b/resources/js/Tests/Factories/Collections/CollectionFactory.ts index f0258a0e6..3dc68a743 100644 --- a/resources/js/Tests/Factories/Collections/CollectionFactory.ts +++ b/resources/js/Tests/Factories/Collections/CollectionFactory.ts @@ -13,6 +13,7 @@ export default class CollectionFactory extends ModelFactory Date: Fri, 15 Dec 2023 14:28:46 +0100 Subject: [PATCH 055/145] fix: warnings in tests (#569) --- .../GalleryActionToolbar/GalleryActionToolbar.test.tsx | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/resources/js/Components/Galleries/GalleryPage/GalleryActionToolbar/GalleryActionToolbar.test.tsx b/resources/js/Components/Galleries/GalleryPage/GalleryActionToolbar/GalleryActionToolbar.test.tsx index f7a1a0cc1..474eaacd7 100644 --- a/resources/js/Components/Galleries/GalleryPage/GalleryActionToolbar/GalleryActionToolbar.test.tsx +++ b/resources/js/Components/Galleries/GalleryPage/GalleryActionToolbar/GalleryActionToolbar.test.tsx @@ -1,7 +1,7 @@ import React from "react"; import { GalleryActionToolbar } from "./GalleryActionToolbar"; import { type GalleryDraft } from "@/Pages/Galleries/hooks/useWalletDraftGalleries"; -import { render, screen } from "@/Tests/testing-library"; +import { render, screen, waitFor } from "@/Tests/testing-library"; import { allBreakpoints } from "@/Tests/utils"; interface IndexedDBMockResponse { @@ -116,7 +116,7 @@ describe("GalleryActionToolbar", () => { expect(screen.getByTestId("Icon_SavingDraft")).toBeInTheDocument(); }); - it("should show draft saved icon", () => { + it("should show draft saved icon", async () => { render( { />, ); - expect(screen.getByTestId("Icon_DraftSaved")).toBeInTheDocument(); + await waitFor(() => { + expect(screen.getByTestId("Icon_DraftSaved")).toBeInTheDocument(); + }); }); it.each(allBreakpoints)("should render without delete button in %s screen", (breakpoint) => { From 493fd17328d6d9b6e7ca44cb9e14ddb465d33625 Mon Sep 17 00:00:00 2001 From: ItsANameToo <35610748+ItsANameToo@users.noreply.github.com> Date: Mon, 18 Dec 2023 10:58:20 +0100 Subject: [PATCH 056/145] chore: update JavaScript dependencies (#573) --- package.json | 40 +- pnpm-lock.yaml | 2084 +++++++++++++++++++++++++----------------------- 2 files changed, 1093 insertions(+), 1031 deletions(-) diff --git a/package.json b/package.json index f753a0b82..5f6da502c 100644 --- a/package.json +++ b/package.json @@ -23,22 +23,22 @@ "prepare": "husky install" }, "devDependencies": { - "@babel/core": "^7.23.5", + "@babel/core": "^7.23.6", "@ethersproject/abstract-provider": "^5.7.0", "@faker-js/faker": "^7.6.0", "@headlessui/react": "1.7.14", "@inertiajs/core": "^1.0.14", "@inertiajs/react": "^1.0.14", "@radix-ui/react-accordion": "^1.1.2", - "@storybook/addon-actions": "^7.6.4", - "@storybook/addon-essentials": "^7.6.4", - "@storybook/addon-interactions": "^7.6.4", - "@storybook/addon-links": "^7.6.4", - "@storybook/blocks": "^7.6.4", - "@storybook/react": "^7.6.4", - "@storybook/react-vite": "^7.6.4", + "@storybook/addon-actions": "^7.6.5", + "@storybook/addon-essentials": "^7.6.5", + "@storybook/addon-interactions": "^7.6.5", + "@storybook/addon-links": "^7.6.5", + "@storybook/blocks": "^7.6.5", + "@storybook/react": "^7.6.5", + "@storybook/react-vite": "^7.6.5", "@storybook/testing-library": "^0.2.2", - "@storybook/types": "^7.6.4", + "@storybook/types": "^7.6.5", "@tailwindcss/forms": "^0.5.7", "@testing-library/dom": "^9.3.3", "@testing-library/react": "^14.1.2", @@ -50,14 +50,14 @@ "@types/lodash": "^4.14.202", "@types/lru-cache": "^7.10.10", "@types/node": "^18.19.3", - "@types/react": "^18.2.43", - "@types/react-dom": "^18.2.17", + "@types/react": "^18.2.45", + "@types/react-dom": "^18.2.18", "@types/react-table": "^7.7.18", "@types/sortablejs": "^1.15.7", "@types/testing-library__jest-dom": "^6.0.0", "@types/ziggy-js": "^1.3.3", - "@typescript-eslint/eslint-plugin": "^6.13.2", - "@typescript-eslint/parser": "^6.13.2", + "@typescript-eslint/eslint-plugin": "^6.14.0", + "@typescript-eslint/parser": "^6.14.0", "@vavt/vite-plugin-import-markdown": "^1.0.0", "@vitejs/plugin-react": "^4.2.1", "@vitest/coverage-istanbul": "^0.34.6", @@ -69,11 +69,11 @@ "chartjs-adapter-date-fns": "^3.0.0", "chromatic": "^6.24.1", "date-fns": "^2.30.0", - "eslint": "^8.55.0", + "eslint": "^8.56.0", "eslint-config-prettier": "^9.1.0", "eslint-config-standard-with-typescript": "^39.1.1", - "eslint-plugin-import": "^2.29.0", - "eslint-plugin-n": "^16.3.1", + "eslint-plugin-import": "^2.29.1", + "eslint-plugin-n": "^16.4.0", "eslint-plugin-prefer-arrow": "^1.2.3", "eslint-plugin-prettier": "^5.0.1", "eslint-plugin-promise": "^6.1.1", @@ -93,7 +93,7 @@ "msw": "^1.3.2", "php-parser": "^3.1.5", "postcss": "^8.4.32", - "prettier": "^3.1.0", + "prettier": "^3.1.1", "prettier-plugin-tailwindcss": "^0.5.9", "react": "^18.2.0", "react-chartjs-2": "^5.2.0", @@ -119,7 +119,7 @@ "@ardenthq/sdk-intl": "^1.2.7", "@metamask/providers": "^10.2.1", "@popperjs/core": "^2.11.8", - "@storybook/addon-docs": "^7.6.4", + "@storybook/addon-docs": "^7.6.5", "@tanstack/react-query": "^4.36.1", "@testing-library/jest-dom": "^6.1.5", "@types/string-hash": "^1.1.3", @@ -134,7 +134,7 @@ "file-saver": "^2.0.5", "i18next": "^22.5.1", "lru-cache": "^10.1.0", - "puppeteer": "^21.6.0", + "puppeteer": "^21.6.1", "react-chartjs-2": "^5.2.0", "react-i18next": "^12.3.1", "react-in-viewport": "1.0.0-alpha.30", @@ -157,6 +157,6 @@ "tippy.js": "^6.3.7", "unified": "^11.0.4", "unist-util-visit": "^5.0.0", - "wavesurfer.js": "^7.5.1" + "wavesurfer.js": "^7.5.2" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6d7a9e113..a815821b6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -18,8 +18,8 @@ dependencies: specifier: ^2.11.8 version: 2.11.8 '@storybook/addon-docs': - specifier: ^7.6.4 - version: 7.6.4(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) + specifier: ^7.6.5 + version: 7.6.5(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) '@tanstack/react-query': specifier: ^4.36.1 version: 4.36.1(react-dom@18.2.0)(react@18.2.0) @@ -63,8 +63,8 @@ dependencies: specifier: ^10.1.0 version: 10.1.0 puppeteer: - specifier: ^21.6.0 - version: 21.6.0(typescript@5.3.3) + specifier: ^21.6.1 + version: 21.6.1(typescript@5.3.3) react-chartjs-2: specifier: ^5.2.0 version: 5.2.0(chart.js@4.4.1)(react@18.2.0) @@ -82,7 +82,7 @@ dependencies: version: 3.3.1(react@18.2.0) react-markdown: specifier: ^9.0.1 - version: 9.0.1(@types/react@18.2.43)(react@18.2.0) + version: 9.0.1(@types/react@18.2.45)(react@18.2.0) react-popper: specifier: ^2.3.0 version: 2.3.0(@popperjs/core@2.11.8)(react-dom@18.2.0)(react@18.2.0) @@ -132,13 +132,13 @@ dependencies: specifier: ^5.0.0 version: 5.0.0 wavesurfer.js: - specifier: ^7.5.1 - version: 7.5.1 + specifier: ^7.5.2 + version: 7.5.2 devDependencies: '@babel/core': - specifier: ^7.23.5 - version: 7.23.5 + specifier: ^7.23.6 + version: 7.23.6 '@ethersproject/abstract-provider': specifier: ^5.7.0 version: 5.7.0 @@ -156,34 +156,34 @@ devDependencies: version: 1.0.14(react@18.2.0) '@radix-ui/react-accordion': specifier: ^1.1.2 - version: 1.1.2(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) + version: 1.1.2(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) '@storybook/addon-actions': - specifier: ^7.6.4 - version: 7.6.4 + specifier: ^7.6.5 + version: 7.6.5 '@storybook/addon-essentials': - specifier: ^7.6.4 - version: 7.6.4(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) + specifier: ^7.6.5 + version: 7.6.5(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) '@storybook/addon-interactions': - specifier: ^7.6.4 - version: 7.6.4 + specifier: ^7.6.5 + version: 7.6.5 '@storybook/addon-links': - specifier: ^7.6.4 - version: 7.6.4(react@18.2.0) + specifier: ^7.6.5 + version: 7.6.5(react@18.2.0) '@storybook/blocks': - specifier: ^7.6.4 - version: 7.6.4(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) + specifier: ^7.6.5 + version: 7.6.5(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) '@storybook/react': - specifier: ^7.6.4 - version: 7.6.4(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + specifier: ^7.6.5 + version: 7.6.5(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) '@storybook/react-vite': - specifier: ^7.6.4 - version: 7.6.4(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3)(vite@4.5.1) + specifier: ^7.6.5 + version: 7.6.5(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3)(vite@4.5.1) '@storybook/testing-library': specifier: ^0.2.2 version: 0.2.2 '@storybook/types': - specifier: ^7.6.4 - version: 7.6.4 + specifier: ^7.6.5 + version: 7.6.5 '@tailwindcss/forms': specifier: ^0.5.7 version: 0.5.7(tailwindcss@3.3.6) @@ -195,7 +195,7 @@ devDependencies: version: 14.1.2(react-dom@18.2.0)(react@18.2.0) '@testing-library/react-hooks': specifier: ^8.0.1 - version: 8.0.1(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) + version: 8.0.1(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) '@testing-library/user-event': specifier: ^14.5.1 version: 14.5.1(@testing-library/dom@9.3.3) @@ -218,11 +218,11 @@ devDependencies: specifier: ^18.19.3 version: 18.19.3 '@types/react': - specifier: ^18.2.43 - version: 18.2.43 + specifier: ^18.2.45 + version: 18.2.45 '@types/react-dom': - specifier: ^18.2.17 - version: 18.2.17 + specifier: ^18.2.18 + version: 18.2.18 '@types/react-table': specifier: ^7.7.18 version: 7.7.18 @@ -236,11 +236,11 @@ devDependencies: specifier: ^1.3.3 version: 1.3.3 '@typescript-eslint/eslint-plugin': - specifier: ^6.13.2 - version: 6.13.2(@typescript-eslint/parser@6.13.2)(eslint@8.55.0)(typescript@5.3.3) + specifier: ^6.14.0 + version: 6.14.0(@typescript-eslint/parser@6.14.0)(eslint@8.56.0)(typescript@5.3.3) '@typescript-eslint/parser': - specifier: ^6.13.2 - version: 6.13.2(eslint@8.55.0)(typescript@5.3.3) + specifier: ^6.14.0 + version: 6.14.0(eslint@8.56.0)(typescript@5.3.3) '@vavt/vite-plugin-import-markdown': specifier: ^1.0.0 version: 1.0.0(vite@4.5.1) @@ -258,7 +258,7 @@ devDependencies: version: 1.6.2 babel-loader: specifier: ^8.3.0 - version: 8.3.0(@babel/core@7.23.5)(webpack@5.88.2) + version: 8.3.0(@babel/core@7.23.6)(webpack@5.88.2) bignumber.js: specifier: ^9.1.2 version: 9.1.2 @@ -272,44 +272,44 @@ devDependencies: specifier: ^2.30.0 version: 2.30.0 eslint: - specifier: ^8.55.0 - version: 8.55.0 + specifier: ^8.56.0 + version: 8.56.0 eslint-config-prettier: specifier: ^9.1.0 - version: 9.1.0(eslint@8.55.0) + version: 9.1.0(eslint@8.56.0) eslint-config-standard-with-typescript: specifier: ^39.1.1 - version: 39.1.1(@typescript-eslint/eslint-plugin@6.13.2)(eslint-plugin-import@2.29.0)(eslint-plugin-n@16.3.1)(eslint-plugin-promise@6.1.1)(eslint@8.55.0)(typescript@5.3.3) + version: 39.1.1(@typescript-eslint/eslint-plugin@6.14.0)(eslint-plugin-import@2.29.1)(eslint-plugin-n@16.4.0)(eslint-plugin-promise@6.1.1)(eslint@8.56.0)(typescript@5.3.3) eslint-plugin-import: - specifier: ^2.29.0 - version: 2.29.0(@typescript-eslint/parser@6.13.2)(eslint@8.55.0) + specifier: ^2.29.1 + version: 2.29.1(@typescript-eslint/parser@6.14.0)(eslint@8.56.0) eslint-plugin-n: - specifier: ^16.3.1 - version: 16.3.1(eslint@8.55.0) + specifier: ^16.4.0 + version: 16.4.0(eslint@8.56.0) eslint-plugin-prefer-arrow: specifier: ^1.2.3 - version: 1.2.3(eslint@8.55.0) + version: 1.2.3(eslint@8.56.0) eslint-plugin-prettier: specifier: ^5.0.1 - version: 5.0.1(eslint-config-prettier@9.1.0)(eslint@8.55.0)(prettier@3.1.0) + version: 5.0.1(eslint-config-prettier@9.1.0)(eslint@8.56.0)(prettier@3.1.1) eslint-plugin-promise: specifier: ^6.1.1 - version: 6.1.1(eslint@8.55.0) + version: 6.1.1(eslint@8.56.0) eslint-plugin-react: specifier: ^7.33.2 - version: 7.33.2(eslint@8.55.0) + version: 7.33.2(eslint@8.56.0) eslint-plugin-sonarjs: specifier: ^0.23.0 - version: 0.23.0(eslint@8.55.0) + version: 0.23.0(eslint@8.56.0) eslint-plugin-storybook: specifier: ^0.6.15 - version: 0.6.15(eslint@8.55.0)(typescript@5.3.3) + version: 0.6.15(eslint@8.56.0)(typescript@5.3.3) eslint-plugin-unicorn: specifier: ^48.0.1 - version: 48.0.1(eslint@8.55.0) + version: 48.0.1(eslint@8.56.0) eslint-plugin-unused-imports: specifier: ^3.0.0 - version: 3.0.0(@typescript-eslint/eslint-plugin@6.13.2)(eslint@8.55.0) + version: 3.0.0(@typescript-eslint/eslint-plugin@6.14.0)(eslint@8.56.0) husky: specifier: ^8.0.3 version: 8.0.3 @@ -344,11 +344,11 @@ devDependencies: specifier: ^8.4.32 version: 8.4.32 prettier: - specifier: ^3.1.0 - version: 3.1.0 + specifier: ^3.1.1 + version: 3.1.1 prettier-plugin-tailwindcss: specifier: ^0.5.9 - version: 0.5.9(prettier@3.1.0) + version: 0.5.9(prettier@3.1.1) react: specifier: ^18.2.0 version: 18.2.0 @@ -372,7 +372,7 @@ devDependencies: version: 7.6.0-beta.2 storybook-react-i18next: specifier: ^2.0.9 - version: 2.0.9(@storybook/components@7.6.3)(@storybook/manager-api@7.6.3)(@storybook/preview-api@7.6.3)(@storybook/types@7.6.4)(i18next-browser-languagedetector@7.2.0)(i18next-http-backend@2.4.2)(i18next@22.5.1)(react-dom@18.2.0)(react-i18next@12.3.1)(react@18.2.0) + version: 2.0.9(@storybook/components@7.6.4)(@storybook/manager-api@7.6.4)(@storybook/preview-api@7.6.4)(@storybook/types@7.6.5)(i18next-browser-languagedetector@7.2.0)(i18next-http-backend@2.4.2)(i18next@22.5.1)(react-dom@18.2.0)(react-i18next@12.3.1)(react@18.2.0) swiper: specifier: ^9.4.1 version: 9.4.1 @@ -455,18 +455,11 @@ packages: default-browser-id: 3.0.0 dev: true - /@babel/code-frame@7.22.13: - resolution: {integrity: sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/highlight': 7.22.20 - chalk: 2.4.2 - /@babel/code-frame@7.22.5: resolution: {integrity: sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/highlight': 7.22.20 + '@babel/highlight': 7.23.4 dev: true /@babel/code-frame@7.23.5: @@ -479,21 +472,26 @@ packages: /@babel/compat-data@7.23.3: resolution: {integrity: sha512-BmR4bWbDIoFJmJ9z2cZ8Gmm2MXgEDgjdWgpKmKWUt54UGFJdlj31ECtbaDvCG/qVdG3AQ1SfpZEs01lUFbzLOQ==} engines: {node: '>=6.9.0'} + dev: true + + /@babel/compat-data@7.23.5: + resolution: {integrity: sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==} + engines: {node: '>=6.9.0'} - /@babel/core@7.23.5: - resolution: {integrity: sha512-Cwc2XjUrG4ilcfOw4wBAK+enbdgwAcAJCfGUItPBKR7Mjw4aEfAFYrLxeRp4jWgtNIKn3n2AlBOfwwafl+42/g==} + /@babel/core@7.23.6: + resolution: {integrity: sha512-FxpRyGjrMJXh7X3wGLGhNDCRiwpWEF74sKjTLDJSG5Kyvow3QZaG0Adbqzi9ZrVjTWpsX+2cxWXD71NMg93kdw==} engines: {node: '>=6.9.0'} dependencies: '@ampproject/remapping': 2.2.1 '@babel/code-frame': 7.23.5 - '@babel/generator': 7.23.5 - '@babel/helper-compilation-targets': 7.22.15 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.5) - '@babel/helpers': 7.23.5 - '@babel/parser': 7.23.5 + '@babel/generator': 7.23.6 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.6) + '@babel/helpers': 7.23.6 + '@babel/parser': 7.23.6 '@babel/template': 7.22.15 - '@babel/traverse': 7.23.5 - '@babel/types': 7.23.5 + '@babel/traverse': 7.23.6 + '@babel/types': 7.23.6 convert-source-map: 2.0.0 debug: 4.3.4 gensync: 1.0.0-beta.2 @@ -511,6 +509,15 @@ packages: '@jridgewell/trace-mapping': 0.3.19 jsesc: 2.5.2 + /@babel/generator@7.23.6: + resolution: {integrity: sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.6 + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.19 + jsesc: 2.5.2 + /@babel/helper-annotate-as-pure@7.22.5: resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} engines: {node: '>=6.9.0'} @@ -534,43 +541,54 @@ packages: browserslist: 4.22.1 lru-cache: 5.1.1 semver: 6.3.1 + dev: true + + /@babel/helper-compilation-targets@7.23.6: + resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/compat-data': 7.23.5 + '@babel/helper-validator-option': 7.23.5 + browserslist: 4.22.2 + lru-cache: 5.1.1 + semver: 6.3.1 - /@babel/helper-create-class-features-plugin@7.22.15(@babel/core@7.23.5): + /@babel/helper-create-class-features-plugin@7.22.15(@babel/core@7.23.6): resolution: {integrity: sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-function-name': 7.23.0 '@babel/helper-member-expression-to-functions': 7.23.0 '@babel/helper-optimise-call-expression': 7.22.5 - '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.5) + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.6) '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 semver: 6.3.1 dev: true - /@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.23.5): + /@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.23.6): resolution: {integrity: sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 '@babel/helper-annotate-as-pure': 7.22.5 regexpu-core: 5.3.2 semver: 6.3.1 dev: true - /@babel/helper-define-polyfill-provider@0.4.3(@babel/core@7.23.5): + /@babel/helper-define-polyfill-provider@0.4.3(@babel/core@7.23.6): resolution: {integrity: sha512-WBrLmuPP47n7PNwsZ57pqam6G/RGo1vw/87b0Blc53tZNGZ4x7YvZ6HgQe2vo1W/FR20OgjeZuGXzudPiXHFug==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 '@babel/helper-compilation-targets': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 debug: 4.3.4 @@ -589,13 +607,13 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.22.15 - '@babel/types': 7.23.5 + '@babel/types': 7.23.6 /@babel/helper-hoist-variables@7.22.5: resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.5 + '@babel/types': 7.23.6 /@babel/helper-member-expression-to-functions@7.23.0: resolution: {integrity: sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==} @@ -608,15 +626,15 @@ packages: resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.5 + '@babel/types': 7.23.6 - /@babel/helper-module-transforms@7.23.3(@babel/core@7.23.5): + /@babel/helper-module-transforms@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-module-imports': 7.22.15 '@babel/helper-simple-access': 7.22.5 @@ -634,25 +652,25 @@ packages: resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} engines: {node: '>=6.9.0'} - /@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.23.5): + /@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.23.6): resolution: {integrity: sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-wrap-function': 7.22.20 dev: true - /@babel/helper-replace-supers@7.22.20(@babel/core@7.23.5): + /@babel/helper-replace-supers@7.22.20(@babel/core@7.23.6): resolution: {integrity: sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-member-expression-to-functions': 7.23.0 '@babel/helper-optimise-call-expression': 7.22.5 @@ -662,7 +680,7 @@ packages: resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.5 + '@babel/types': 7.23.6 /@babel/helper-skip-transparent-expression-wrappers@7.22.5: resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==} @@ -675,12 +693,7 @@ packages: resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.5 - - /@babel/helper-string-parser@7.22.5: - resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==} - engines: {node: '>=6.9.0'} - dev: true + '@babel/types': 7.23.6 /@babel/helper-string-parser@7.23.4: resolution: {integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==} @@ -693,6 +706,11 @@ packages: /@babel/helper-validator-option@7.22.15: resolution: {integrity: sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==} engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-validator-option@7.23.5: + resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} + engines: {node: '>=6.9.0'} /@babel/helper-wrap-function@7.22.20: resolution: {integrity: sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==} @@ -703,24 +721,16 @@ packages: '@babel/types': 7.23.5 dev: true - /@babel/helpers@7.23.5: - resolution: {integrity: sha512-oO7us8FzTEsG3U6ag9MfdF1iA/7Z6dz+MtFhifZk8C8o453rGJFFWUP1t+ULM9TUIAzC9uxXEiXjOiVMyd7QPg==} + /@babel/helpers@7.23.6: + resolution: {integrity: sha512-wCfsbN4nBidDRhpDhvcKlzHWCTlgJYUUdSJfzXb2NuBssDSIjc3xcb+znA7l+zYsFljAcGM0aFkN40cR3lXiGA==} engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.22.15 - '@babel/traverse': 7.23.5 - '@babel/types': 7.23.5 + '@babel/traverse': 7.23.6 + '@babel/types': 7.23.6 transitivePeerDependencies: - supports-color - /@babel/highlight@7.22.20: - resolution: {integrity: sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-validator-identifier': 7.22.20 - chalk: 2.4.2 - js-tokens: 4.0.0 - /@babel/highlight@7.23.4: resolution: {integrity: sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==} engines: {node: '>=6.9.0'} @@ -729,973 +739,972 @@ packages: chalk: 2.4.2 js-tokens: 4.0.0 - /@babel/parser@7.23.3: - resolution: {integrity: sha512-uVsWNvlVsIninV2prNz/3lHCb+5CJ+e+IUBfbjToAHODtfGYLfCFuY4AU7TskI+dAKk+njsPiBjq1gKTvZOBaw==} + /@babel/parser@7.23.5: + resolution: {integrity: sha512-hOOqoiNXrmGdFbhgCzu6GiURxUgM27Xwd/aPuu8RfHEZPBzL1Z54okAHAQjXfcQNwvrlkAmAp4SlRTZ45vlthQ==} engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@babel/types': 7.23.3 - dev: true + '@babel/types': 7.23.5 - /@babel/parser@7.23.5: - resolution: {integrity: sha512-hOOqoiNXrmGdFbhgCzu6GiURxUgM27Xwd/aPuu8RfHEZPBzL1Z54okAHAQjXfcQNwvrlkAmAp4SlRTZ45vlthQ==} + /@babel/parser@7.23.6: + resolution: {integrity: sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==} engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@babel/types': 7.23.5 + '@babel/types': 7.23.6 - /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.23.3(@babel/core@7.23.5): + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.23.3(@babel/core@7.23.5): + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.13.0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-transform-optional-chaining': 7.23.3(@babel/core@7.23.5) + '@babel/plugin-transform-optional-chaining': 7.23.3(@babel/core@7.23.6) dev: true - /@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.23.3(@babel/core@7.23.5): + /@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-XaJak1qcityzrX0/IU5nKHb34VaibwP3saKqG6a/tppelgllOH13LUann4ZCIBcVOeE6H18K4Vx9QKkVww3z/w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.5): + /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.6): resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 dev: true - /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.23.5): + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.23.6): resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.23.5): + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.23.6): resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.23.5): + /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.23.6): resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.23.5): + /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.23.6): resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.23.5): + /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.23.6): resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-flow@7.22.5(@babel/core@7.23.5): + /@babel/plugin-syntax-flow@7.22.5(@babel/core@7.23.6): resolution: {integrity: sha512-9RdCl0i+q0QExayk2nOS7853w08yLucnnPML6EN9S8fgMPVtdLDCdx/cOQ/i44Lb9UeQX9A35yaqBBOMMZxPxQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-import-assertions@7.23.3(@babel/core@7.23.5): + /@babel/plugin-syntax-import-assertions@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-import-attributes@7.23.3(@babel/core@7.23.5): + /@babel/plugin-syntax-import-attributes@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.23.5): + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.23.6): resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.23.5): + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.23.6): resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.23.5): + /@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.23.6): resolution: {integrity: sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.23.5): + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.23.6): resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.23.5): + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.23.6): resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.23.5): + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.23.6): resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.23.5): + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.23.6): resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.23.5): + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.23.6): resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.23.5): + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.23.6): resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.23.5): + /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.23.6): resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.23.5): + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.23.6): resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-typescript@7.22.5(@babel/core@7.23.5): + /@babel/plugin-syntax-typescript@7.22.5(@babel/core@7.23.6): resolution: {integrity: sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.23.5): + /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.23.6): resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.5 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.5) + '@babel/core': 7.23.6 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.6) '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-arrow-functions@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-arrow-functions@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-async-generator-functions@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-async-generator-functions@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-59GsVNavGxAXCDDbakWSMJhajASb4kBCqDjqJsv+p5nKdbz7istmZ3HrX3L2LuiI80+zsOADCvooqQH3qGCucQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.5) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.5) + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.6) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.6) dev: true - /@babel/plugin-transform-async-to-generator@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-async-to-generator@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 '@babel/helper-module-imports': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.5) + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.6) dev: true - /@babel/plugin-transform-block-scoped-functions@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-block-scoped-functions@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-block-scoping@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-block-scoping@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-QPZxHrThbQia7UdvfpaRRlq/J9ciz1J4go0k+lPBXbgaNeY7IQrBj/9ceWjvMMI07/ZBzHl/F0R/2K0qH7jCVw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-class-properties@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-class-properties@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 - '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.5) + '@babel/core': 7.23.6 + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.6) '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-class-static-block@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-class-static-block@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-PENDVxdr7ZxKPyi5Ffc0LjXdnJyrJxyqF5T5YjlVg4a0VFfQHW0r8iAtRiDXkfHlu1wwcvdtnndGYIeJLSuRMQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.12.0 dependencies: - '@babel/core': 7.23.5 - '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.5) + '@babel/core': 7.23.6 + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.6) '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.5) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.6) dev: true - /@babel/plugin-transform-classes@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-classes@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-FGEQmugvAEu2QtgtU0uTASXevfLMFfBeVCIIdcQhn/uBQsMTjBajdnAtanQlOcuihWh10PZ7+HWvc7NtBwP74w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-compilation-targets': 7.22.15 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-function-name': 7.23.0 '@babel/helper-optimise-call-expression': 7.22.5 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.5) + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.6) '@babel/helper-split-export-declaration': 7.22.6 globals: 11.12.0 dev: true - /@babel/plugin-transform-computed-properties@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-computed-properties@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 '@babel/template': 7.22.15 dev: true - /@babel/plugin-transform-destructuring@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-destructuring@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-dotall-regex@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-dotall-regex@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.5) + '@babel/core': 7.23.6 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.6) '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-duplicate-keys@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-duplicate-keys@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-dynamic-import@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-dynamic-import@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-vTG+cTGxPFou12Rj7ll+eD5yWeNl5/8xvQvF08y5Gv3v4mZQoyFf8/n9zg4q5vvCWt5jmgymfzMAldO7orBn7A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.5) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.6) dev: true - /@babel/plugin-transform-exponentiation-operator@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-exponentiation-operator@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-export-namespace-from@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-export-namespace-from@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-yCLhW34wpJWRdTxxWtFZASJisihrfyMOTOQexhVzA78jlU+dH7Dw+zQgcPepQ5F3C6bAIiblZZ+qBggJdHiBAg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.5) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.6) dev: true - /@babel/plugin-transform-flow-strip-types@7.22.5(@babel/core@7.23.5): + /@babel/plugin-transform-flow-strip-types@7.22.5(@babel/core@7.23.6): resolution: {integrity: sha512-tujNbZdxdG0/54g/oua8ISToaXTFBf8EnSb5PgQSciIXWOWKX3S4+JR7ZE9ol8FZwf9kxitzkGQ+QWeov/mCiA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-flow': 7.22.5(@babel/core@7.23.5) + '@babel/plugin-syntax-flow': 7.22.5(@babel/core@7.23.6) dev: true - /@babel/plugin-transform-for-of@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-for-of@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-X8jSm8X1CMwxmK878qsUGJRmbysKNbdpTv/O1/v0LuY/ZkZrng5WYiekYSdg9m09OTmDDUWeEDsTE+17WYbAZw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-function-name@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-function-name@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 '@babel/helper-compilation-targets': 7.22.15 '@babel/helper-function-name': 7.23.0 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-json-strings@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-json-strings@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-H9Ej2OiISIZowZHaBwF0tsJOih1PftXJtE8EWqlEIwpc7LMTGq0rPOrywKLQ4nefzx8/HMR0D3JGXoMHYvhi0A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.5) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.6) dev: true - /@babel/plugin-transform-literals@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-literals@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-logical-assignment-operators@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-logical-assignment-operators@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-+pD5ZbxofyOygEp+zZAfujY2ShNCXRpDRIPOiBmTO693hhyOEteZgl876Xs9SAHPQpcV0vz8LvA/T+w8AzyX8A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.5) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.6) dev: true - /@babel/plugin-transform-member-expression-literals@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-member-expression-literals@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-modules-amd@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-modules-amd@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.5) + '@babel/core': 7.23.6 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.6) '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-modules-commonjs@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-modules-commonjs@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.5) + '@babel/core': 7.23.6 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.6) '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-simple-access': 7.22.5 dev: true - /@babel/plugin-transform-modules-systemjs@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-modules-systemjs@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-ZxyKGTkF9xT9YJuKQRo19ewf3pXpopuYQd8cDXqNzc3mUNbOME0RKMoZxviQk74hwzfQsEe66dE92MaZbdHKNQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.5) + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.6) '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-validator-identifier': 7.22.20 dev: true - /@babel/plugin-transform-modules-umd@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-modules-umd@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.5) + '@babel/core': 7.23.6 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.6) '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.23.5): + /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.23.6): resolution: {integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.5 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.5) + '@babel/core': 7.23.6 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.6) '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-new-target@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-new-target@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-nullish-coalescing-operator@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-nullish-coalescing-operator@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-xzg24Lnld4DYIdysyf07zJ1P+iIfJpxtVFOzX4g+bsJ3Ng5Le7rXx9KwqKzuyaUeRnt+I1EICwQITqc0E2PmpA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.5) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.6) dev: true - /@babel/plugin-transform-numeric-separator@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-numeric-separator@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-s9GO7fIBi/BLsZ0v3Rftr6Oe4t0ctJ8h4CCXfPoEJwmvAPMyNrfkOOJzm6b9PX9YXcCJWWQd/sBF/N26eBiMVw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.5) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.6) dev: true - /@babel/plugin-transform-object-rest-spread@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-object-rest-spread@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-VxHt0ANkDmu8TANdE9Kc0rndo/ccsmfe2Cx2y5sI4hu3AukHQ5wAu4cM7j3ba8B9548ijVyclBU+nuDQftZsog==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/compat-data': 7.23.3 - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 '@babel/helper-compilation-targets': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.5) - '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.5) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.6) + '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.6) dev: true - /@babel/plugin-transform-object-super@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-object-super@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.5) + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.6) dev: true - /@babel/plugin-transform-optional-catch-binding@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-optional-catch-binding@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-LxYSb0iLjUamfm7f1D7GpiS4j0UAC8AOiehnsGAP8BEsIX8EOi3qV6bbctw8M7ZvLtcoZfZX5Z7rN9PlWk0m5A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.5) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.6) dev: true - /@babel/plugin-transform-optional-chaining@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-optional-chaining@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-zvL8vIfIUgMccIAK1lxjvNv572JHFJIKb4MWBz5OGdBQA0fB0Xluix5rmOby48exiJc987neOmP/m9Fnpkz3Tg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.5) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.6) dev: true - /@babel/plugin-transform-parameters@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-parameters@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-private-methods@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-private-methods@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 - '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.5) + '@babel/core': 7.23.6 + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.6) '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-private-property-in-object@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-private-property-in-object@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-a5m2oLNFyje2e/rGKjVfAELTVI5mbA0FeZpBnkOWWV7eSmKQ+T/XW0Vf+29ScLzSxX+rnsarvU0oie/4m6hkxA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.5) + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.6) '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.5) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.6) dev: true - /@babel/plugin-transform-property-literals@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-property-literals@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-react-jsx-self@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-react-jsx-self@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-qXRvbeKDSfwnlJnanVRp0SfuWE5DQhwQr5xtLBzp56Wabyo+4CMosF6Kfp+eOD/4FYpql64XVJ2W0pVLlJZxOQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-react-jsx-source@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-react-jsx-source@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-91RS0MDnAWDNvGC6Wio5XYkyWI39FMFO+JK9+4AlgaTH+yWwVTsw7/sn6LK0lH7c5F+TFkpv/3LfCJ1Ydwof/g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-regenerator@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-regenerator@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 regenerator-transform: 0.15.2 dev: true - /@babel/plugin-transform-reserved-words@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-reserved-words@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-shorthand-properties@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-shorthand-properties@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-spread@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-spread@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 dev: true - /@babel/plugin-transform-sticky-regex@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-sticky-regex@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-template-literals@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-template-literals@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-typeof-symbol@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-typeof-symbol@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-typescript@7.22.15(@babel/core@7.23.5): + /@babel/plugin-transform-typescript@7.22.15(@babel/core@7.23.6): resolution: {integrity: sha512-1uirS0TnijxvQLnlv5wQBwOX3E1wCFX7ITv+9pBV2wKEk4K+M5tqDaoNXnTH8tjEIYHLO98MwiTWO04Ggz4XuA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.5) + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.23.6) '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.23.5) + '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.23.6) dev: true - /@babel/plugin-transform-unicode-escapes@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-unicode-escapes@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-unicode-property-regex@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-unicode-property-regex@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.5) + '@babel/core': 7.23.6 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.6) '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-unicode-regex@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-unicode-regex@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.5) + '@babel/core': 7.23.6 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.6) '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-unicode-sets-regex@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-unicode-sets-regex@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.5 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.5) + '@babel/core': 7.23.6 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.6) '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/preset-env@7.23.3(@babel/core@7.23.5): + /@babel/preset-env@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-ovzGc2uuyNfNAs/jyjIGxS8arOHS5FENZaNn4rtE7UdKMMkqHCvboHfcuhWLZNX5cB44QfcGNWjaevxMzzMf+Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/compat-data': 7.23.3 - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 '@babel/helper-compilation-targets': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-validator-option': 7.22.15 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.5) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.5) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.23.5) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.5) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.5) - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.5) - '@babel/plugin-syntax-import-assertions': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-syntax-import-attributes': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.23.5) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.5) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.5) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.5) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.5) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.5) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.5) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.5) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.5) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.23.5) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.23.5) - '@babel/plugin-transform-arrow-functions': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-async-generator-functions': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-async-to-generator': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-block-scoped-functions': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-block-scoping': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-class-properties': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-class-static-block': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-classes': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-computed-properties': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-destructuring': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-dotall-regex': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-duplicate-keys': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-dynamic-import': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-exponentiation-operator': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-export-namespace-from': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-for-of': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-function-name': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-json-strings': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-literals': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-logical-assignment-operators': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-member-expression-literals': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-modules-amd': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-modules-systemjs': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-modules-umd': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.23.5) - '@babel/plugin-transform-new-target': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-nullish-coalescing-operator': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-numeric-separator': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-object-rest-spread': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-object-super': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-optional-catch-binding': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-optional-chaining': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-private-methods': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-private-property-in-object': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-property-literals': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-regenerator': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-reserved-words': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-shorthand-properties': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-spread': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-sticky-regex': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-template-literals': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-typeof-symbol': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-unicode-escapes': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-unicode-property-regex': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-unicode-regex': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-unicode-sets-regex': 7.23.3(@babel/core@7.23.5) - '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.23.5) - babel-plugin-polyfill-corejs2: 0.4.6(@babel/core@7.23.5) - babel-plugin-polyfill-corejs3: 0.8.6(@babel/core@7.23.5) - babel-plugin-polyfill-regenerator: 0.5.3(@babel/core@7.23.5) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.6) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.6) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.23.6) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.6) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.6) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.6) + '@babel/plugin-syntax-import-assertions': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-syntax-import-attributes': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.23.6) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.6) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.6) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.6) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.6) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.6) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.6) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.6) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.6) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.23.6) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.23.6) + '@babel/plugin-transform-arrow-functions': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-async-generator-functions': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-async-to-generator': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-block-scoped-functions': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-block-scoping': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-class-properties': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-class-static-block': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-classes': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-computed-properties': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-destructuring': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-dotall-regex': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-duplicate-keys': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-dynamic-import': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-exponentiation-operator': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-export-namespace-from': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-for-of': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-function-name': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-json-strings': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-literals': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-logical-assignment-operators': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-member-expression-literals': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-modules-amd': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-modules-systemjs': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-modules-umd': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.23.6) + '@babel/plugin-transform-new-target': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-nullish-coalescing-operator': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-numeric-separator': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-object-rest-spread': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-object-super': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-optional-catch-binding': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-optional-chaining': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-private-methods': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-private-property-in-object': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-property-literals': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-regenerator': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-reserved-words': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-shorthand-properties': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-spread': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-sticky-regex': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-template-literals': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-typeof-symbol': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-unicode-escapes': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-unicode-property-regex': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-unicode-regex': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-unicode-sets-regex': 7.23.3(@babel/core@7.23.6) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.23.6) + babel-plugin-polyfill-corejs2: 0.4.6(@babel/core@7.23.6) + babel-plugin-polyfill-corejs3: 0.8.6(@babel/core@7.23.6) + babel-plugin-polyfill-regenerator: 0.5.3(@babel/core@7.23.6) core-js-compat: 3.33.2 semver: 6.3.1 transitivePeerDependencies: - supports-color dev: true - /@babel/preset-flow@7.22.15(@babel/core@7.23.5): + /@babel/preset-flow@7.22.15(@babel/core@7.23.6): resolution: {integrity: sha512-dB5aIMqpkgbTfN5vDdTRPzjqtWiZcRESNR88QYnoPR+bmdYoluOzMX9tQerTv0XzSgZYctPfO1oc0N5zdog1ew==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-validator-option': 7.22.15 - '@babel/plugin-transform-flow-strip-types': 7.22.5(@babel/core@7.23.5) + '@babel/plugin-transform-flow-strip-types': 7.22.5(@babel/core@7.23.6) dev: true - /@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.23.5): + /@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.23.6): 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 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 '@babel/types': 7.23.5 esutils: 2.0.3 dev: true - /@babel/preset-typescript@7.23.0(@babel/core@7.23.5): + /@babel/preset-typescript@7.23.0(@babel/core@7.23.6): resolution: {integrity: sha512-6P6VVa/NM/VlAYj5s2Aq/gdVg8FSENCg3wlZ6Qau9AcPaoF5LbN1nyGlR9DTRIw9PpxI94e+ReydsJHcjwAweg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-validator-option': 7.22.15 - '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.23.5) - '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-typescript': 7.22.15(@babel/core@7.23.5) + '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.23.6) + '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-typescript': 7.22.15(@babel/core@7.23.6) dev: true - /@babel/register@7.22.15(@babel/core@7.23.5): + /@babel/register@7.22.15(@babel/core@7.23.6): resolution: {integrity: sha512-V3Q3EqoQdn65RCgTLwauZaTfd1ShhwPmbBv+1dkZV/HpCGMKVyn6oFcRlI7RaKqiDQjX2Qd3AuoEguBgdjIKlg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 clone-deep: 4.0.1 find-cache-dir: 2.1.0 make-dir: 2.1.0 @@ -1724,8 +1733,8 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.23.5 - '@babel/parser': 7.23.5 - '@babel/types': 7.23.5 + '@babel/parser': 7.23.6 + '@babel/types': 7.23.6 /@babel/traverse@7.23.5: resolution: {integrity: sha512-czx7Xy5a6sapWWRx61m1Ke1Ra4vczu1mCTtJam5zRTBOonfdJ+S/B6HYmGYu3fJtr8GGET3si6IhgWVBhJ/m8w==} @@ -1744,14 +1753,22 @@ packages: transitivePeerDependencies: - supports-color - /@babel/types@7.23.3: - resolution: {integrity: sha512-OZnvoH2l8PK5eUvEcUyCt/sXgr/h+UWpVuBbOljwcrAgUl6lpchoQ++PHGyQy1AtYnVA6CEq3y5xeEI10brpXw==} + /@babel/traverse@7.23.6: + resolution: {integrity: sha512-czastdK1e8YByZqezMPFiZ8ahwVMh/ESl9vPgvgdB9AmFMGP5jfpFax74AQgl5zj4XHzqeYAg2l8PuUeRS1MgQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-string-parser': 7.22.5 - '@babel/helper-validator-identifier': 7.22.20 - to-fast-properties: 2.0.0 - dev: true + '@babel/code-frame': 7.23.5 + '@babel/generator': 7.23.6 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/parser': 7.23.6 + '@babel/types': 7.23.6 + debug: 4.3.4 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color /@babel/types@7.23.5: resolution: {integrity: sha512-ON5kSOJwVO6xXVRTvOI0eOnWe7VdUcIpsovGo9U/Br4Ie4UVFQTboO2cYnDhAGU6Fp+UxSiT+pMft0SMHfuq6w==} @@ -1761,6 +1778,14 @@ packages: '@babel/helper-validator-identifier': 7.22.20 to-fast-properties: 2.0.0 + /@babel/types@7.23.6: + resolution: {integrity: sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.23.4 + '@babel/helper-validator-identifier': 7.22.20 + to-fast-properties: 2.0.0 + /@base2/pretty-print-object@1.0.1: resolution: {integrity: sha512-4iri8i1AqYHJE2DstZYkyEprg6Pq6sKx3xn5FpySk9sNhH7qN2LLlHJCfDTZRILNwQNPD7mATWM0TBui7uC1pA==} dev: true @@ -1960,13 +1985,13 @@ packages: requiresBuild: true optional: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.55.0): + /@eslint-community/eslint-utils@4.4.0(eslint@8.56.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 8.55.0 + eslint: 8.56.0 eslint-visitor-keys: 3.4.3 dev: true @@ -1992,8 +2017,8 @@ packages: - supports-color dev: true - /@eslint/js@8.55.0: - resolution: {integrity: sha512-qQfo2mxH5yVom1kacMtZZJFVdW+E70mqHMJvVg6WTLo+VBuQJ4TojZlfWBjK0ve5BdEeNAVxOsl/nvNMpJOaJA==} + /@eslint/js@8.56.0: + resolution: {integrity: sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true @@ -2434,7 +2459,7 @@ packages: resolution: {integrity: sha512-URnTneIU3ZjRSaf906cvf6Hpox3hIeJXRnz3VDSw5/X93gR8ycdfSIEy19FlVx8NFmpN7fe3Gb1xF+NjXaQLWg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 '@jest/types': 29.6.1 '@jridgewell/trace-mapping': 0.3.19 babel-plugin-istanbul: 6.1.1 @@ -2535,7 +2560,7 @@ packages: react: '>=16' dependencies: '@types/mdx': 2.0.5 - '@types/react': 18.2.43 + '@types/react': 18.2.45 react: 18.2.0 /@metamask/object-multiplex@1.2.0: @@ -2678,7 +2703,7 @@ packages: dependencies: '@babel/runtime': 7.23.2 - /@radix-ui/react-accordion@1.1.2(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-accordion@1.1.2(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-fDG7jcoNKVjSK6yfmuAs0EnPDro0WMXIhMtXdTBWqEioVW206ku+4Lw07e+13lUkFkpoEQ2PdeMIAGpdqEAmDg==} peerDependencies: '@types/react': '*' @@ -2693,21 +2718,21 @@ packages: dependencies: '@babel/runtime': 7.22.6 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collapsible': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.43)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.43)(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(@types/react@18.2.43)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.43)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.43)(react@18.2.0) - '@types/react': 18.2.43 - '@types/react-dom': 18.2.17 + '@radix-ui/react-collapsible': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@types/react': 18.2.45 + '@types/react-dom': 18.2.18 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: true - /@radix-ui/react-arrow@1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-arrow@1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-wSP+pHsB/jQRaL6voubsQ/ZlrGBHHrOjmBnr19hxYgtS0WvAFwZhK2WP/YY5yF9uKECCEEDGxuLxq1NBK51wFA==} peerDependencies: '@types/react': '*' @@ -2721,13 +2746,13 @@ packages: optional: true dependencies: '@babel/runtime': 7.23.2 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.2.43 - '@types/react-dom': 18.2.17 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.45 + '@types/react-dom': 18.2.18 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - /@radix-ui/react-collapsible@1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-collapsible@1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-UBmVDkmR6IvDsloHVN+3rtx4Mi5TFvylYXpluuv0f37dtaz3H99bp8No0LGXRigVpl3UAT4l9j6bIchh42S/Gg==} peerDependencies: '@types/react': '*' @@ -2742,20 +2767,20 @@ packages: dependencies: '@babel/runtime': 7.23.2 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.43)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.43)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.43)(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.43)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.43)(react@18.2.0) - '@types/react': 18.2.43 - '@types/react-dom': 18.2.17 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@types/react': 18.2.45 + '@types/react-dom': 18.2.18 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: true - /@radix-ui/react-collection@1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-collection@1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-3SzW+0PW7yBBoQlT8wNcGtaxaD0XSu0uLUFgrtHY08Acx05TaHaOmVLR73c0j/cqpDy53KBMO7s0dx2wmOIDIA==} peerDependencies: '@types/react': '*' @@ -2769,16 +2794,16 @@ packages: optional: true dependencies: '@babel/runtime': 7.23.2 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.43)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.43)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-slot': 1.0.2(@types/react@18.2.43)(react@18.2.0) - '@types/react': 18.2.43 - '@types/react-dom': 18.2.17 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-slot': 1.0.2(@types/react@18.2.45)(react@18.2.0) + '@types/react': 18.2.45 + '@types/react-dom': 18.2.18 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - /@radix-ui/react-compose-refs@1.0.1(@types/react@18.2.43)(react@18.2.0): + /@radix-ui/react-compose-refs@1.0.1(@types/react@18.2.45)(react@18.2.0): resolution: {integrity: sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==} peerDependencies: '@types/react': '*' @@ -2788,10 +2813,10 @@ packages: optional: true dependencies: '@babel/runtime': 7.23.2 - '@types/react': 18.2.43 + '@types/react': 18.2.45 react: 18.2.0 - /@radix-ui/react-context@1.0.1(@types/react@18.2.43)(react@18.2.0): + /@radix-ui/react-context@1.0.1(@types/react@18.2.45)(react@18.2.0): resolution: {integrity: sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg==} peerDependencies: '@types/react': '*' @@ -2801,10 +2826,10 @@ packages: optional: true dependencies: '@babel/runtime': 7.23.2 - '@types/react': 18.2.43 + '@types/react': 18.2.45 react: 18.2.0 - /@radix-ui/react-direction@1.0.1(@types/react@18.2.43)(react@18.2.0): + /@radix-ui/react-direction@1.0.1(@types/react@18.2.45)(react@18.2.0): resolution: {integrity: sha512-RXcvnXgyvYvBEOhCBuddKecVkoMiI10Jcm5cTI7abJRAHYfFxeu+FBQs/DvdxSYucxR5mna0dNsL6QFlds5TMA==} peerDependencies: '@types/react': '*' @@ -2814,10 +2839,10 @@ packages: optional: true dependencies: '@babel/runtime': 7.23.2 - '@types/react': 18.2.43 + '@types/react': 18.2.45 react: 18.2.0 - /@radix-ui/react-dismissable-layer@1.0.4(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-dismissable-layer@1.0.4(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-7UpBa/RKMoHJYjie1gkF1DlK8l1fdU/VKDpoS3rCCo8YBJR294GwcEHyxHw72yvphJ7ld0AXEcSLAzY2F/WyCg==} peerDependencies: '@types/react': '*' @@ -2832,16 +2857,16 @@ packages: dependencies: '@babel/runtime': 7.23.2 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.43)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.43)(react@18.2.0) - '@radix-ui/react-use-escape-keydown': 1.0.3(@types/react@18.2.43)(react@18.2.0) - '@types/react': 18.2.43 - '@types/react-dom': 18.2.17 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-use-escape-keydown': 1.0.3(@types/react@18.2.45)(react@18.2.0) + '@types/react': 18.2.45 + '@types/react-dom': 18.2.18 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - /@radix-ui/react-focus-guards@1.0.1(@types/react@18.2.43)(react@18.2.0): + /@radix-ui/react-focus-guards@1.0.1(@types/react@18.2.45)(react@18.2.0): resolution: {integrity: sha512-Rect2dWbQ8waGzhMavsIbmSVCgYxkXLxxR3ZvCX79JOglzdEy4JXMb98lq4hPxUbLr77nP0UOGf4rcMU+s1pUA==} peerDependencies: '@types/react': '*' @@ -2851,10 +2876,10 @@ packages: optional: true dependencies: '@babel/runtime': 7.23.2 - '@types/react': 18.2.43 + '@types/react': 18.2.45 react: 18.2.0 - /@radix-ui/react-focus-scope@1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-focus-scope@1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-upXdPfqI4islj2CslyfUBNlaJCPybbqRHAi1KER7Isel9Q2AtSJ0zRBZv8mWQiFXD2nyAJ4BhC3yXgZ6kMBSrQ==} peerDependencies: '@types/react': '*' @@ -2868,15 +2893,15 @@ packages: optional: true dependencies: '@babel/runtime': 7.23.2 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.43)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.43)(react@18.2.0) - '@types/react': 18.2.43 - '@types/react-dom': 18.2.17 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@types/react': 18.2.45 + '@types/react-dom': 18.2.18 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - /@radix-ui/react-id@1.0.1(@types/react@18.2.43)(react@18.2.0): + /@radix-ui/react-id@1.0.1(@types/react@18.2.45)(react@18.2.0): resolution: {integrity: sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ==} peerDependencies: '@types/react': '*' @@ -2886,11 +2911,11 @@ packages: optional: true dependencies: '@babel/runtime': 7.23.2 - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.43)(react@18.2.0) - '@types/react': 18.2.43 + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@types/react': 18.2.45 react: 18.2.0 - /@radix-ui/react-popper@1.1.2(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-popper@1.1.2(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-1CnGGfFi/bbqtJZZ0P/NQY20xdG3E0LALJaLUEoKwPLwl6PPPfbeiCqMVQnhoFRAxjJj4RpBRJzDmUgsex2tSg==} peerDependencies: '@types/react': '*' @@ -2905,21 +2930,21 @@ packages: dependencies: '@babel/runtime': 7.23.2 '@floating-ui/react-dom': 2.0.2(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-arrow': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.43)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.43)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.43)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.43)(react@18.2.0) - '@radix-ui/react-use-rect': 1.0.1(@types/react@18.2.43)(react@18.2.0) - '@radix-ui/react-use-size': 1.0.1(@types/react@18.2.43)(react@18.2.0) + '@radix-ui/react-arrow': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-use-rect': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-use-size': 1.0.1(@types/react@18.2.45)(react@18.2.0) '@radix-ui/rect': 1.0.1 - '@types/react': 18.2.43 - '@types/react-dom': 18.2.17 + '@types/react': 18.2.45 + '@types/react-dom': 18.2.18 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - /@radix-ui/react-portal@1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-portal@1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-xLYZeHrWoPmA5mEKEfZZevoVRK/Q43GfzRXkWV6qawIWWK8t6ifIiLQdd7rmQ4Vk1bmI21XhqF9BN3jWf+phpA==} peerDependencies: '@types/react': '*' @@ -2933,13 +2958,13 @@ packages: optional: true dependencies: '@babel/runtime': 7.23.2 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.2.43 - '@types/react-dom': 18.2.17 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.45 + '@types/react-dom': 18.2.18 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - /@radix-ui/react-presence@1.0.1(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-presence@1.0.1(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-UXLW4UAbIY5ZjcvzjfRFo5gxva8QirC9hF7wRE4U5gz+TP0DbRk+//qyuAQ1McDxBt1xNMBTaciFGvEmJvAZCg==} peerDependencies: '@types/react': '*' @@ -2953,15 +2978,15 @@ packages: optional: true dependencies: '@babel/runtime': 7.23.2 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.43)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.43)(react@18.2.0) - '@types/react': 18.2.43 - '@types/react-dom': 18.2.17 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@types/react': 18.2.45 + '@types/react-dom': 18.2.18 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: true - /@radix-ui/react-primitive@1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-primitive@1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==} peerDependencies: '@types/react': '*' @@ -2975,13 +3000,13 @@ packages: optional: true dependencies: '@babel/runtime': 7.23.2 - '@radix-ui/react-slot': 1.0.2(@types/react@18.2.43)(react@18.2.0) - '@types/react': 18.2.43 - '@types/react-dom': 18.2.17 + '@radix-ui/react-slot': 1.0.2(@types/react@18.2.45)(react@18.2.0) + '@types/react': 18.2.45 + '@types/react-dom': 18.2.18 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - /@radix-ui/react-roving-focus@1.0.4(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-roving-focus@1.0.4(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-2mUg5Mgcu001VkGy+FfzZyzbmuUWzgWkj3rvv4yu+mLw03+mTzbxZHvfcGyFp2b8EkQeMkpRQ5FiA2Vr2O6TeQ==} peerDependencies: '@types/react': '*' @@ -2996,20 +3021,20 @@ packages: dependencies: '@babel/runtime': 7.23.2 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.43)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.43)(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(@types/react@18.2.43)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.43)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.43)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.43)(react@18.2.0) - '@types/react': 18.2.43 - '@types/react-dom': 18.2.17 + '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@types/react': 18.2.45 + '@types/react-dom': 18.2.18 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - /@radix-ui/react-select@1.2.2(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-select@1.2.2(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-zI7McXr8fNaSrUY9mZe4x/HC0jTLY9fWNhO1oLWYMQGDXuV4UCivIGTxwioSzO0ZCYX9iSLyWmAh/1TOmX3Cnw==} peerDependencies: '@types/react': '*' @@ -3025,31 +3050,31 @@ packages: '@babel/runtime': 7.23.2 '@radix-ui/number': 1.0.1 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.43)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.43)(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(@types/react@18.2.43)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.0.4(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.43)(react@18.2.0) - '@radix-ui/react-focus-scope': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.43)(react@18.2.0) - '@radix-ui/react-popper': 1.1.2(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-portal': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-slot': 1.0.2(@types/react@18.2.43)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.43)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.43)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.43)(react@18.2.0) - '@radix-ui/react-use-previous': 1.0.1(@types/react@18.2.43)(react@18.2.0) - '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.2.43 - '@types/react-dom': 18.2.17 + '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.0.4(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-focus-scope': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-popper': 1.1.2(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-portal': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-slot': 1.0.2(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-use-previous': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.45 + '@types/react-dom': 18.2.18 aria-hidden: 1.2.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - react-remove-scroll: 2.5.5(@types/react@18.2.43)(react@18.2.0) + react-remove-scroll: 2.5.5(@types/react@18.2.45)(react@18.2.0) - /@radix-ui/react-separator@1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-separator@1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-itYmTy/kokS21aiV5+Z56MZB54KrhPgn6eHDKkFeOLR34HMN2s8PaN47qZZAGnvupcjxHaFZnW4pQEh0BvvVuw==} peerDependencies: '@types/react': '*' @@ -3063,13 +3088,13 @@ packages: optional: true dependencies: '@babel/runtime': 7.23.2 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.2.43 - '@types/react-dom': 18.2.17 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.45 + '@types/react-dom': 18.2.18 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - /@radix-ui/react-slot@1.0.2(@types/react@18.2.43)(react@18.2.0): + /@radix-ui/react-slot@1.0.2(@types/react@18.2.45)(react@18.2.0): resolution: {integrity: sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==} peerDependencies: '@types/react': '*' @@ -3079,11 +3104,11 @@ packages: optional: true dependencies: '@babel/runtime': 7.23.2 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.43)(react@18.2.0) - '@types/react': 18.2.43 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@types/react': 18.2.45 react: 18.2.0 - /@radix-ui/react-toggle-group@1.0.4(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-toggle-group@1.0.4(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-Uaj/M/cMyiyT9Bx6fOZO0SAG4Cls0GptBWiBmBxofmDbNVnYYoyRWj/2M/6VCi/7qcXFWnHhRUfdfZFvvkuu8A==} peerDependencies: '@types/react': '*' @@ -3098,18 +3123,18 @@ packages: dependencies: '@babel/runtime': 7.23.2 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-context': 1.0.1(@types/react@18.2.43)(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(@types/react@18.2.43)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-toggle': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.43)(react@18.2.0) - '@types/react': 18.2.43 - '@types/react-dom': 18.2.17 + '@radix-ui/react-context': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-toggle': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@types/react': 18.2.45 + '@types/react-dom': 18.2.18 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - /@radix-ui/react-toggle@1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-toggle@1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-Pkqg3+Bc98ftZGsl60CLANXQBBQ4W3mTFS9EJvNxKMZ7magklKV69/id1mlAlOFDDfHvlCms0fx8fA4CMKDJHg==} peerDependencies: '@types/react': '*' @@ -3124,14 +3149,14 @@ packages: dependencies: '@babel/runtime': 7.23.2 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.43)(react@18.2.0) - '@types/react': 18.2.43 - '@types/react-dom': 18.2.17 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@types/react': 18.2.45 + '@types/react-dom': 18.2.18 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - /@radix-ui/react-toolbar@1.0.4(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-toolbar@1.0.4(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-tBgmM/O7a07xbaEkYJWYTXkIdU/1pW4/KZORR43toC/4XWyBCURK0ei9kMUdp+gTPPKBgYLxXmRSH1EVcIDp8Q==} peerDependencies: '@types/react': '*' @@ -3146,18 +3171,18 @@ packages: dependencies: '@babel/runtime': 7.23.2 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-context': 1.0.1(@types/react@18.2.43)(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(@types/react@18.2.43)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-separator': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-toggle-group': 1.0.4(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.2.43 - '@types/react-dom': 18.2.17 + '@radix-ui/react-context': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-separator': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-toggle-group': 1.0.4(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.45 + '@types/react-dom': 18.2.18 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - /@radix-ui/react-use-callback-ref@1.0.1(@types/react@18.2.43)(react@18.2.0): + /@radix-ui/react-use-callback-ref@1.0.1(@types/react@18.2.45)(react@18.2.0): resolution: {integrity: sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==} peerDependencies: '@types/react': '*' @@ -3167,10 +3192,10 @@ packages: optional: true dependencies: '@babel/runtime': 7.23.2 - '@types/react': 18.2.43 + '@types/react': 18.2.45 react: 18.2.0 - /@radix-ui/react-use-controllable-state@1.0.1(@types/react@18.2.43)(react@18.2.0): + /@radix-ui/react-use-controllable-state@1.0.1(@types/react@18.2.45)(react@18.2.0): resolution: {integrity: sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==} peerDependencies: '@types/react': '*' @@ -3180,11 +3205,11 @@ packages: optional: true dependencies: '@babel/runtime': 7.23.2 - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.43)(react@18.2.0) - '@types/react': 18.2.43 + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@types/react': 18.2.45 react: 18.2.0 - /@radix-ui/react-use-escape-keydown@1.0.3(@types/react@18.2.43)(react@18.2.0): + /@radix-ui/react-use-escape-keydown@1.0.3(@types/react@18.2.45)(react@18.2.0): resolution: {integrity: sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg==} peerDependencies: '@types/react': '*' @@ -3194,11 +3219,11 @@ packages: optional: true dependencies: '@babel/runtime': 7.23.2 - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.43)(react@18.2.0) - '@types/react': 18.2.43 + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@types/react': 18.2.45 react: 18.2.0 - /@radix-ui/react-use-layout-effect@1.0.1(@types/react@18.2.43)(react@18.2.0): + /@radix-ui/react-use-layout-effect@1.0.1(@types/react@18.2.45)(react@18.2.0): resolution: {integrity: sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==} peerDependencies: '@types/react': '*' @@ -3208,10 +3233,10 @@ packages: optional: true dependencies: '@babel/runtime': 7.23.2 - '@types/react': 18.2.43 + '@types/react': 18.2.45 react: 18.2.0 - /@radix-ui/react-use-previous@1.0.1(@types/react@18.2.43)(react@18.2.0): + /@radix-ui/react-use-previous@1.0.1(@types/react@18.2.45)(react@18.2.0): resolution: {integrity: sha512-cV5La9DPwiQ7S0gf/0qiD6YgNqM5Fk97Kdrlc5yBcrF3jyEZQwm7vYFqMo4IfeHgJXsRaMvLABFtd0OVEmZhDw==} peerDependencies: '@types/react': '*' @@ -3221,10 +3246,10 @@ packages: optional: true dependencies: '@babel/runtime': 7.23.2 - '@types/react': 18.2.43 + '@types/react': 18.2.45 react: 18.2.0 - /@radix-ui/react-use-rect@1.0.1(@types/react@18.2.43)(react@18.2.0): + /@radix-ui/react-use-rect@1.0.1(@types/react@18.2.45)(react@18.2.0): resolution: {integrity: sha512-Cq5DLuSiuYVKNU8orzJMbl15TXilTnJKUCltMVQg53BQOF1/C5toAaGrowkgksdBQ9H+SRL23g0HDmg9tvmxXw==} peerDependencies: '@types/react': '*' @@ -3235,10 +3260,10 @@ packages: dependencies: '@babel/runtime': 7.23.2 '@radix-ui/rect': 1.0.1 - '@types/react': 18.2.43 + '@types/react': 18.2.45 react: 18.2.0 - /@radix-ui/react-use-size@1.0.1(@types/react@18.2.43)(react@18.2.0): + /@radix-ui/react-use-size@1.0.1(@types/react@18.2.45)(react@18.2.0): resolution: {integrity: sha512-ibay+VqrgcaI6veAojjofPATwledXiSmX+C0KrBk/xgpX9rBzPV3OsfwlhQdUOFbh+LKQorLYT+xTXW9V8yd0g==} peerDependencies: '@types/react': '*' @@ -3248,11 +3273,11 @@ packages: optional: true dependencies: '@babel/runtime': 7.23.2 - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.43)(react@18.2.0) - '@types/react': 18.2.43 + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@types/react': 18.2.45 react: 18.2.0 - /@radix-ui/react-visually-hidden@1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-visually-hidden@1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-D4w41yN5YRKtu464TLnByKzMDG/JlMPHtfZgQAu9v6mNakUqGUI9vUrfQKz8NK41VMm/xbZbh76NUTVtIYqOMA==} peerDependencies: '@types/react': '*' @@ -3266,9 +3291,9 @@ packages: optional: true dependencies: '@babel/runtime': 7.23.2 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.2.43 - '@types/react-dom': 18.2.17 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.45 + '@types/react-dom': 18.2.18 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -3308,10 +3333,10 @@ packages: /@sinclair/typebox@0.27.8: resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} - /@storybook/addon-actions@7.6.4: - resolution: {integrity: sha512-91UD5KPDik74VKVioPMcbwwvDXN/non8p1wArYAHCHCmd/Pts5MJRiFueSdfomSpNjUtjtn6eSXtwpIL3XVOfQ==} + /@storybook/addon-actions@7.6.5: + resolution: {integrity: sha512-lW/m9YcaNfBZk+TZLxyzHdd563mBWpsUIveOKYjcPdl/q0FblWWZrRsFHqwLK1ldZ4AZXs8J/47G8CBr6Ew2uQ==} dependencies: - '@storybook/core-events': 7.6.4 + '@storybook/core-events': 7.6.5 '@storybook/global': 5.0.0 '@types/uuid': 9.0.7 dequal: 2.0.3 @@ -3319,18 +3344,18 @@ packages: uuid: 9.0.0 dev: true - /@storybook/addon-backgrounds@7.6.4: - resolution: {integrity: sha512-gNy3kIkHSr+Lg/jVDHwbZjIe1po5SDGZNVe39vrJwnqGz8T1clWes9WHCL6zk/uaCDA3yUna2Nt/KlOFAWDSoQ==} + /@storybook/addon-backgrounds@7.6.5: + resolution: {integrity: sha512-wZZOL19vg4TTRtOTl71XKqPe5hQx3XUh9Fle0wOi91FiFrBdqusrppnyS89wPS8RQG5lXEOFEUvYcMmdCcdZfw==} dependencies: '@storybook/global': 5.0.0 memoizerific: 1.11.3 ts-dedent: 2.2.0 dev: true - /@storybook/addon-controls@7.6.4(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-k4AtZfazmD/nL3JAtLGAB7raPhkhUo0jWnaZWrahd9h1Fm13mBU/RW+JzTRhCw3Mp2HPERD7NI5Qcd2fUP6WDA==} + /@storybook/addon-controls@7.6.5(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-EdSZ2pYf74mOXZGGJ22lrDvdvL0YKc95iWv9FFEhUFOloMy/0OZPB2ybYmd2KVCy3SeIE4Zfeiw8pDXdCUniOQ==} dependencies: - '@storybook/blocks': 7.6.4(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) + '@storybook/blocks': 7.6.5(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) lodash: 4.17.21 ts-dedent: 2.2.0 transitivePeerDependencies: @@ -3342,27 +3367,27 @@ packages: - supports-color dev: true - /@storybook/addon-docs@7.6.4(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-PbFMbvC9sK3sGdMhwmagXs9TqopTp9FySji+L8O7W9SHRC6wSmdwoWWPWybkOYxr/z/wXi7EM0azSAX7yQxLbw==} + /@storybook/addon-docs@7.6.5(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-D9tZyD41IujCHiPYdfS2bKtZRJPNwO4EydzyqODXppomluhFbY3uTEaf0H1UFnJLQxWNXZ7rr3aS0V3O6yu8pA==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: '@jest/transform': 29.6.1 '@mdx-js/react': 2.3.0(react@18.2.0) - '@storybook/blocks': 7.6.4(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) - '@storybook/client-logger': 7.6.4 - '@storybook/components': 7.6.4(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) - '@storybook/csf-plugin': 7.6.4 - '@storybook/csf-tools': 7.6.4 + '@storybook/blocks': 7.6.5(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@storybook/client-logger': 7.6.5 + '@storybook/components': 7.6.5(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@storybook/csf-plugin': 7.6.5 + '@storybook/csf-tools': 7.6.5 '@storybook/global': 5.0.0 '@storybook/mdx2-csf': 1.1.0 - '@storybook/node-logger': 7.6.4 - '@storybook/postinstall': 7.6.4 - '@storybook/preview-api': 7.6.4 - '@storybook/react-dom-shim': 7.6.4(react-dom@18.2.0)(react@18.2.0) - '@storybook/theming': 7.6.4(react-dom@18.2.0)(react@18.2.0) - '@storybook/types': 7.6.4 + '@storybook/node-logger': 7.6.5 + '@storybook/postinstall': 7.6.5 + '@storybook/preview-api': 7.6.5 + '@storybook/react-dom-shim': 7.6.5(react-dom@18.2.0)(react@18.2.0) + '@storybook/theming': 7.6.5(react-dom@18.2.0)(react@18.2.0) + '@storybook/types': 7.6.5 fs-extra: 11.1.1 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -3375,25 +3400,25 @@ packages: - encoding - supports-color - /@storybook/addon-essentials@7.6.4(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-J+zPmP4pbuuFxQ3pjLRYQRnxEtp7jF3xRXGFO8brVnEqtqoxwJ6j3euUrRLe0rpGAU3AD7dYfaaFjd3xkENgTw==} + /@storybook/addon-essentials@7.6.5(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-VCLj1JAEpGoqF5iFJOo1CZFFck/tg4m/98DLdQuNuXvxT6jqaF0NI9UUQuJLIGteDCR7NKRbTFc1hV3/Ev+Ziw==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: - '@storybook/addon-actions': 7.6.4 - '@storybook/addon-backgrounds': 7.6.4 - '@storybook/addon-controls': 7.6.4(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) - '@storybook/addon-docs': 7.6.4(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) - '@storybook/addon-highlight': 7.6.4 - '@storybook/addon-measure': 7.6.4 - '@storybook/addon-outline': 7.6.4 - '@storybook/addon-toolbars': 7.6.4 - '@storybook/addon-viewport': 7.6.4 - '@storybook/core-common': 7.6.4 - '@storybook/manager-api': 7.6.4(react-dom@18.2.0)(react@18.2.0) - '@storybook/node-logger': 7.6.4 - '@storybook/preview-api': 7.6.4 + '@storybook/addon-actions': 7.6.5 + '@storybook/addon-backgrounds': 7.6.5 + '@storybook/addon-controls': 7.6.5(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@storybook/addon-docs': 7.6.5(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@storybook/addon-highlight': 7.6.5 + '@storybook/addon-measure': 7.6.5 + '@storybook/addon-outline': 7.6.5 + '@storybook/addon-toolbars': 7.6.5 + '@storybook/addon-viewport': 7.6.5 + '@storybook/core-common': 7.6.5 + '@storybook/manager-api': 7.6.5(react-dom@18.2.0)(react@18.2.0) + '@storybook/node-logger': 7.6.5 + '@storybook/preview-api': 7.6.5 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) ts-dedent: 2.2.0 @@ -3404,24 +3429,24 @@ packages: - supports-color dev: true - /@storybook/addon-highlight@7.6.4: - resolution: {integrity: sha512-0kvjDzquoPwWWU61QYmEtcSGWXufnV7Z/bfBTYh132uxvV/X9YzDFcXXrxGL7sBJkK32gNUUBDuiTOxs5NxyOQ==} + /@storybook/addon-highlight@7.6.5: + resolution: {integrity: sha512-CxzmIb30F9nLPQwT0lCPYhOAwGlGF4IkgkO8hYA7VfGCGUkJZEyyN/YkP/ZCUSdCIRChDBouR3KiFFd4mDFKzg==} dependencies: '@storybook/global': 5.0.0 dev: true - /@storybook/addon-interactions@7.6.4: - resolution: {integrity: sha512-LjK9uhkgnbGyDwwa7pQhLptDEHeTIFmy+KurfJs9T08DpvRFfuuzyW4mj/hA63R1W5yjFSAhRiZj26+D7kBIyw==} + /@storybook/addon-interactions@7.6.5: + resolution: {integrity: sha512-8Hzt9u1DQzFvtGER/hCGIvGpCoVwzVoqpM98f2KAIVx/NMFmRW7UyKihXzw1j2t4q2ZaF2jZDYWCBqlP+iwILA==} dependencies: '@storybook/global': 5.0.0 - '@storybook/types': 7.6.4 + '@storybook/types': 7.6.5 jest-mock: 27.5.1 polished: 4.2.2 ts-dedent: 2.2.0 dev: true - /@storybook/addon-links@7.6.4(react@18.2.0): - resolution: {integrity: sha512-TEhxYdMhJO28gD84ej1FCwLv9oLuCPt77bRXip9ndaNPRTdHYdWv6IP94dhbuDi8eHux7Z4A/mllciFuDFrnCw==} + /@storybook/addon-links@7.6.5(react@18.2.0): + resolution: {integrity: sha512-Lx4Ng+iXt0YpIrKGr+nOZlpN9ypOoEDoP/7bZ6m7GXuVAkDm3JrRCBp7e2ZKSKcTxPdjPuO9HVKkIjtqjINlpw==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 peerDependenciesMeta: @@ -3434,47 +3459,47 @@ packages: ts-dedent: 2.2.0 dev: true - /@storybook/addon-measure@7.6.4: - resolution: {integrity: sha512-73wsJ8PALsgWniR3MA/cmxcFuU6cRruWdIyYzOMgM8ife2Jm3xSkV7cTTXAqXt2H9Uuki4PGnuMHWWFLpPeyVA==} + /@storybook/addon-measure@7.6.5: + resolution: {integrity: sha512-tlUudVQSrA+bwI4dhO8J7nYHtYdylcBZ86ybnqMmdTthsnyc7jnaFVQwbb6bbQJpPxvEvoNds5bVGUFocuvymQ==} dependencies: '@storybook/global': 5.0.0 tiny-invariant: 1.3.1 dev: true - /@storybook/addon-outline@7.6.4: - resolution: {integrity: sha512-CFxGASRse/qeFocetDKFNeWZ3Aa2wapVtRciDNa4Zx7k1wCnTjEsPIm54waOuCaNVcrvO+nJUAZG5WyiorQvcg==} + /@storybook/addon-outline@7.6.5: + resolution: {integrity: sha512-P7X4+Z9L/l/RZW9UvvM+iuK2SUHD22KPc+dbYOifRXDovUqhfmcKVh1CUqTDMyZrg2ZAbropehMz1eI9BlQfxg==} dependencies: '@storybook/global': 5.0.0 ts-dedent: 2.2.0 dev: true - /@storybook/addon-toolbars@7.6.4: - resolution: {integrity: sha512-ENMQJgU4sRCLLDVXYfa+P3cQVV9PC0ZxwVAKeM3NPYPNH/ODoryGNtq+Q68LwHlM4ObCE2oc9MzaQqPxloFcCw==} + /@storybook/addon-toolbars@7.6.5: + resolution: {integrity: sha512-/zqWbVNE/SHc8I5Prnd2Q8U57RGEIYvHfeXjfkuLcE2Quc4Iss4x/9eU7SKu4jm+IOO2s0wlN6HcqI3XEf2XxA==} dev: true - /@storybook/addon-viewport@7.6.4: - resolution: {integrity: sha512-SoTcHIoqybhYD28v7QExF1EZnl7FfxuP74VDhtze5LyMd2CbqmVnUfwewLCz/3IvCNce0GqdNyg1m6QJ7Eq1uw==} + /@storybook/addon-viewport@7.6.5: + resolution: {integrity: sha512-9ghKTaduIUvQ6oShmWLuwMeTjtMR4RgKeKHrTJ7THMqvE/ydDPCYeL7ugF65ocXZSEz/QmxdK7uL686ZMKsqNA==} dependencies: memoizerific: 1.11.3 dev: true - /@storybook/blocks@7.6.4(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-iXinXXhTUBtReREP1Jifpu35DnGg7FidehjvCM8sM4E4aymfb8czdg9DdvG46T2UFUPUct36nnjIdMLWOya8Bw==} + /@storybook/blocks@7.6.5(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-/NjuYkPks5w9lKn47KLgVC5cBkwfc+ERAp0CY0Xe//BQJkP+bcI8lE8d9Qc9IXFbOTvYEULeQrFgCkesk5BmLg==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: - '@storybook/channels': 7.6.4 - '@storybook/client-logger': 7.6.4 - '@storybook/components': 7.6.4(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) - '@storybook/core-events': 7.6.4 + '@storybook/channels': 7.6.5 + '@storybook/client-logger': 7.6.5 + '@storybook/components': 7.6.5(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@storybook/core-events': 7.6.5 '@storybook/csf': 0.1.2 - '@storybook/docs-tools': 7.6.4 + '@storybook/docs-tools': 7.6.5 '@storybook/global': 5.0.0 - '@storybook/manager-api': 7.6.4(react-dom@18.2.0)(react@18.2.0) - '@storybook/preview-api': 7.6.4 - '@storybook/theming': 7.6.4(react-dom@18.2.0)(react@18.2.0) - '@storybook/types': 7.6.4 + '@storybook/manager-api': 7.6.5(react-dom@18.2.0)(react@18.2.0) + '@storybook/preview-api': 7.6.5 + '@storybook/theming': 7.6.5(react-dom@18.2.0)(react@18.2.0) + '@storybook/types': 7.6.5 '@types/lodash': 4.14.202 color-convert: 2.0.1 dequal: 2.0.3 @@ -3519,8 +3544,8 @@ packages: - supports-color dev: true - /@storybook/builder-vite@7.6.4(typescript@5.3.3)(vite@4.5.1): - resolution: {integrity: sha512-eqb3mLUfuXd4a7+46cWevQ9qH81FvHy1lrAbZGwp4bQ/Tj0YF8Ej7lKBbg7zoIwiu2zDci+BbMiaDOY1kPtILw==} + /@storybook/builder-vite@7.6.5(typescript@5.3.3)(vite@4.5.1): + resolution: {integrity: sha512-VbAYTGr92lgCWTwO2Z7NgSW3f5/K4Vr0Qxa2IlTgMCymWdDbWdIQiREcmCP0vjAGM2ftq1+vxngohVgx/r7pUw==} peerDependencies: '@preact/preset-vite': '*' typescript: '>= 4.3.x' @@ -3534,14 +3559,14 @@ packages: vite-plugin-glimmerx: optional: true dependencies: - '@storybook/channels': 7.6.4 - '@storybook/client-logger': 7.6.4 - '@storybook/core-common': 7.6.4 - '@storybook/csf-plugin': 7.6.4 - '@storybook/node-logger': 7.6.4 - '@storybook/preview': 7.6.4 - '@storybook/preview-api': 7.6.4 - '@storybook/types': 7.6.4 + '@storybook/channels': 7.6.5 + '@storybook/client-logger': 7.6.5 + '@storybook/core-common': 7.6.5 + '@storybook/csf-plugin': 7.6.5 + '@storybook/node-logger': 7.6.5 + '@storybook/preview': 7.6.5 + '@storybook/preview-api': 7.6.5 + '@storybook/types': 7.6.5 '@types/find-cache-dir': 3.2.1 browser-assert: 1.2.1 es-module-lexer: 0.9.3 @@ -3568,22 +3593,22 @@ packages: tiny-invariant: 1.3.1 dev: true - /@storybook/channels@7.6.3: - resolution: {integrity: sha512-o9J0TBbFon16tUlU5V6kJgzAlsloJcS1cTHWqh3VWczohbRm+X1PLNUihJ7Q8kBWXAuuJkgBu7RQH7Ib46WyYg==} + /@storybook/channels@7.6.4: + resolution: {integrity: sha512-Z4PY09/Czl70ap4ObmZ4bgin+EQhPaA3HdrEDNwpnH7A9ttfEO5u5KThytIjMq6kApCCihmEPDaYltoVrfYJJA==} dependencies: - '@storybook/client-logger': 7.6.3 - '@storybook/core-events': 7.6.3 + '@storybook/client-logger': 7.6.4 + '@storybook/core-events': 7.6.4 '@storybook/global': 5.0.0 qs: 6.11.2 telejson: 7.2.0 tiny-invariant: 1.3.1 dev: true - /@storybook/channels@7.6.4: - resolution: {integrity: sha512-Z4PY09/Czl70ap4ObmZ4bgin+EQhPaA3HdrEDNwpnH7A9ttfEO5u5KThytIjMq6kApCCihmEPDaYltoVrfYJJA==} + /@storybook/channels@7.6.5: + resolution: {integrity: sha512-FIlNkyfQy9uHoJfAFL2/wO3ASGJELFvBzURBE2rcEF/TS7GcUiqWnBfiDxAbwSEjSOm2F0eEq3UXhaZEjpJHDw==} dependencies: - '@storybook/client-logger': 7.6.4 - '@storybook/core-events': 7.6.4 + '@storybook/client-logger': 7.6.5 + '@storybook/core-events': 7.6.5 '@storybook/global': 5.0.0 qs: 6.11.2 telejson: 7.2.0 @@ -3593,9 +3618,9 @@ packages: resolution: {integrity: sha512-VYn9Rck3gSpa7RL/yAkMszx/6mscFr0EOII8yZd/JZqbwfBQYjyJ0e4w0exNMFWF0PXgqtYgm5LJ3j6P7kHNtA==} hasBin: true dependencies: - '@babel/core': 7.23.5 - '@babel/preset-env': 7.23.3(@babel/core@7.23.5) - '@babel/types': 7.23.3 + '@babel/core': 7.23.6 + '@babel/preset-env': 7.23.3(@babel/core@7.23.6) + '@babel/types': 7.23.5 '@ndelangen/get-tarball': 3.0.9 '@storybook/codemod': 7.6.0-beta.2 '@storybook/core-common': 7.6.0-beta.2 @@ -3647,22 +3672,22 @@ packages: '@storybook/global': 5.0.0 dev: true - /@storybook/client-logger@7.6.3: - resolution: {integrity: sha512-BpsCnefrBFdxD6ukMjAblm1D6zB4U5HR1I85VWw6LOqZrfzA6l/1uBxItz0XG96HTjngbvAabWf5k7ZFCx5UCg==} + /@storybook/client-logger@7.6.4: + resolution: {integrity: sha512-vJwMShC98tcoFruRVQ4FphmFqvAZX1FqZqjFyk6IxtFumPKTVSnXJjlU1SnUIkSK2x97rgdUMqkdI+wAv/tugQ==} dependencies: '@storybook/global': 5.0.0 dev: true - /@storybook/client-logger@7.6.4: - resolution: {integrity: sha512-vJwMShC98tcoFruRVQ4FphmFqvAZX1FqZqjFyk6IxtFumPKTVSnXJjlU1SnUIkSK2x97rgdUMqkdI+wAv/tugQ==} + /@storybook/client-logger@7.6.5: + resolution: {integrity: sha512-S5aROWgssqg7tcs9lgW5wmCAz4SxMAtioiyVj5oFecmPCbQtFVIAREYzeoxE4GfJL+plrfRkum4BzziANn8EhQ==} dependencies: '@storybook/global': 5.0.0 /@storybook/codemod@7.6.0-beta.2: resolution: {integrity: sha512-rntgqX0saQPmr/bdTcc1xw4IDE373acLvNLimzBWHIWb1N8ITMuGHBZ7xNUQ48+JyvO7iO0BPwes9JJSiWjq8A==} dependencies: - '@babel/core': 7.23.5 - '@babel/preset-env': 7.23.3(@babel/core@7.23.5) + '@babel/core': 7.23.6 + '@babel/preset-env': 7.23.3(@babel/core@7.23.6) '@babel/types': 7.23.5 '@storybook/csf': 0.1.2 '@storybook/csf-tools': 7.6.0-beta.2 @@ -3679,19 +3704,19 @@ packages: - supports-color dev: true - /@storybook/components@7.6.3(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-UNV0WoUo+W0huOLvoEMuqRN/VB4p0CNswrXN1mi/oGWvAFJ8idu63lSuV4uQ/LKxAZ6v3Kpdd+oK/o+OeOoL6w==} + /@storybook/components@7.6.4(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-K5RvEObJAnX+SbGJbkM1qrZEk+VR2cUhRCSrFnlfMwsn8/60T3qoH7U8bCXf8krDgbquhMwqev5WzDB+T1VV8g==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: - '@radix-ui/react-select': 1.2.2(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-toolbar': 1.0.4(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) - '@storybook/client-logger': 7.6.3 + '@radix-ui/react-select': 1.2.2(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-toolbar': 1.0.4(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@storybook/client-logger': 7.6.4 '@storybook/csf': 0.1.2 '@storybook/global': 5.0.0 - '@storybook/theming': 7.6.3(react-dom@18.2.0)(react@18.2.0) - '@storybook/types': 7.6.3 + '@storybook/theming': 7.6.4(react-dom@18.2.0)(react@18.2.0) + '@storybook/types': 7.6.4 memoizerific: 1.11.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -3702,19 +3727,19 @@ packages: - '@types/react-dom' dev: true - /@storybook/components@7.6.4(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-K5RvEObJAnX+SbGJbkM1qrZEk+VR2cUhRCSrFnlfMwsn8/60T3qoH7U8bCXf8krDgbquhMwqev5WzDB+T1VV8g==} + /@storybook/components@7.6.5(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-w4ZucbBBZ+NKMWlJKVj2I/bMBBq7gzDp9lzc4+8QaQ3vUPXKqc1ilIPYo/7UR5oxwDVMZocmMSgl9L8lvf7+Mw==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: - '@radix-ui/react-select': 1.2.2(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-toolbar': 1.0.4(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) - '@storybook/client-logger': 7.6.4 + '@radix-ui/react-select': 1.2.2(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-toolbar': 1.0.4(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@storybook/client-logger': 7.6.5 '@storybook/csf': 0.1.2 '@storybook/global': 5.0.0 - '@storybook/theming': 7.6.4(react-dom@18.2.0)(react@18.2.0) - '@storybook/types': 7.6.4 + '@storybook/theming': 7.6.5(react-dom@18.2.0)(react@18.2.0) + '@storybook/types': 7.6.5 memoizerific: 1.11.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -3724,11 +3749,11 @@ packages: - '@types/react' - '@types/react-dom' - /@storybook/core-client@7.6.4: - resolution: {integrity: sha512-0msqdGd+VYD1dRgAJ2StTu4d543Wveb7LVVujX3PwD/QCxmCaVUHuAoZrekM/H7jZLw546ZIbLZo0xWrADAUMw==} + /@storybook/core-client@7.6.5: + resolution: {integrity: sha512-6FtyJcz8MSl+JYwNJZ53FM6rkT27pFHWcJPdtw/9229Ec8as9RpkNeZ/NBZjRTeDkn9Ki0VOiVAefNie9tZ/8Q==} dependencies: - '@storybook/client-logger': 7.6.4 - '@storybook/preview-api': 7.6.4 + '@storybook/client-logger': 7.6.5 + '@storybook/preview-api': 7.6.5 dev: true /@storybook/core-common@7.6.0-beta.2: @@ -3762,12 +3787,12 @@ packages: - supports-color dev: true - /@storybook/core-common@7.6.4: - resolution: {integrity: sha512-qes4+mXqINu0kCgSMFjk++GZokmYjb71esId0zyJsk0pcIPkAiEjnhbSEQkMhbUfcvO1lztoaQTBW2P7Rd1tag==} + /@storybook/core-common@7.6.5: + resolution: {integrity: sha512-z4EgzZSIVbID6Ib0jhh3jimKeaDWU8OOhoZYfn3galFmgQWowWOv1oMgipWiXfRLWw9DaLFQiCHIdLANH+VO2g==} dependencies: - '@storybook/core-events': 7.6.4 - '@storybook/node-logger': 7.6.4 - '@storybook/types': 7.6.4 + '@storybook/core-events': 7.6.5 + '@storybook/node-logger': 7.6.5 + '@storybook/types': 7.6.5 '@types/find-cache-dir': 3.2.1 '@types/node': 18.19.3 '@types/node-fetch': 2.6.6 @@ -3798,14 +3823,14 @@ packages: ts-dedent: 2.2.0 dev: true - /@storybook/core-events@7.6.3: - resolution: {integrity: sha512-Vu3JX1mjtR8AX84lyqWsi2s2lhD997jKRWVznI3wx+UpTk8t7TTMLFk2rGYJRjaornhrqwvLYpnmtxRSxW9BOQ==} + /@storybook/core-events@7.6.4: + resolution: {integrity: sha512-i3xzcJ19ILSy4oJL5Dz9y0IlyApynn5RsGhAMIsW+mcfri+hGfeakq1stNCo0o7jW4Y3A7oluFTtIoK8DOxQdQ==} dependencies: ts-dedent: 2.2.0 dev: true - /@storybook/core-events@7.6.4: - resolution: {integrity: sha512-i3xzcJ19ILSy4oJL5Dz9y0IlyApynn5RsGhAMIsW+mcfri+hGfeakq1stNCo0o7jW4Y3A7oluFTtIoK8DOxQdQ==} + /@storybook/core-events@7.6.5: + resolution: {integrity: sha512-zk2q/qicYXAzHA4oV3GDbIql+Kd4TOHUgDE8e4jPCOPp856z2ScqEKUAbiJizs6eEJOH4nW9Db1kuzgrBVEykQ==} dependencies: ts-dedent: 2.2.0 @@ -3860,10 +3885,10 @@ packages: - utf-8-validate dev: true - /@storybook/csf-plugin@7.6.4: - resolution: {integrity: sha512-7g9p8s2ITX+Z9iThK5CehPhJOcusVN7JcUEEW+gVF5PlYT+uk/x+66gmQno+scQuNkV9+8UJD6RLFjP+zg2uCA==} + /@storybook/csf-plugin@7.6.5: + resolution: {integrity: sha512-iQ8Y/Qq1IUhHRddjDVicWJA2sM7OZA1FR97OvWUT2240WjCuQSCfy32JD8TQlYjqXgEolJeLPv3zW4qH5om4LQ==} dependencies: - '@storybook/csf-tools': 7.6.4 + '@storybook/csf-tools': 7.6.5 unplugin: 1.4.0 transitivePeerDependencies: - supports-color @@ -3884,15 +3909,15 @@ packages: - supports-color dev: true - /@storybook/csf-tools@7.6.4: - resolution: {integrity: sha512-6sLayuhgReIK3/QauNj5BW4o4ZfEMJmKf+EWANPEM/xEOXXqrog6Un8sjtBuJS9N1DwyhHY6xfkEiPAwdttwqw==} + /@storybook/csf-tools@7.6.5: + resolution: {integrity: sha512-1iaCh7nt+WE7Q5UwRhLLc5flMNoAV/vBr0tvDSCKiHaO+D3dZzlZOe/U+S6wegdyN2QNcvT2xs179CcrX6Qp6w==} dependencies: '@babel/generator': 7.23.5 '@babel/parser': 7.23.5 '@babel/traverse': 7.23.5 '@babel/types': 7.23.5 '@storybook/csf': 0.1.2 - '@storybook/types': 7.6.4 + '@storybook/types': 7.6.5 fs-extra: 11.1.1 recast: 0.23.4 ts-dedent: 2.2.0 @@ -3914,12 +3939,12 @@ packages: resolution: {integrity: sha512-JDaBR9lwVY4eSH5W8EGHrhODjygPd6QImRbwjAuJNEnY0Vw4ie3bPkeGfnacB3OBW6u/agqPv2aRlR46JcAQLg==} dev: true - /@storybook/docs-tools@7.6.4: - resolution: {integrity: sha512-2eGam43aD7O3cocA72Z63kRi7t/ziMSpst0qB218QwBWAeZjT4EYDh8V6j/Xhv6zVQL3msW7AglrQP5kCKPvPA==} + /@storybook/docs-tools@7.6.5: + resolution: {integrity: sha512-UyHkHu5Af6jMpYsR4lZ69D32GQGeA0pLAn7jaBbQndgAjBdK1ykZcifiUC7Wz1hG7+YpuYspEGuDEddOh+X8FQ==} dependencies: - '@storybook/core-common': 7.6.4 - '@storybook/preview-api': 7.6.4 - '@storybook/types': 7.6.4 + '@storybook/core-common': 7.6.5 + '@storybook/preview-api': 7.6.5 + '@storybook/types': 7.6.5 '@types/doctrine': 0.0.3 assert: 2.1.0 doctrine: 3.0.0 @@ -3931,17 +3956,17 @@ packages: /@storybook/global@5.0.0: resolution: {integrity: sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==} - /@storybook/manager-api@7.6.3(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-soDH7GZuukkhYRGzlw4jhCm5EzjfkuIAtb37/DFplqxuVbvlyJEVzkMUM2KQO7kq0/8GlWPiZ5mn56wagYyhKQ==} + /@storybook/manager-api@7.6.4(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-RFb/iaBJfXygSgXkINPRq8dXu7AxBicTGX7MxqKXbz5FU7ANwV7abH6ONBYURkSDOH9//TQhRlVkF5u8zWg3bw==} dependencies: - '@storybook/channels': 7.6.3 - '@storybook/client-logger': 7.6.3 - '@storybook/core-events': 7.6.3 + '@storybook/channels': 7.6.4 + '@storybook/client-logger': 7.6.4 + '@storybook/core-events': 7.6.4 '@storybook/csf': 0.1.2 '@storybook/global': 5.0.0 - '@storybook/router': 7.6.3 - '@storybook/theming': 7.6.3(react-dom@18.2.0)(react@18.2.0) - '@storybook/types': 7.6.3 + '@storybook/router': 7.6.4 + '@storybook/theming': 7.6.4(react-dom@18.2.0)(react@18.2.0) + '@storybook/types': 7.6.4 dequal: 2.0.3 lodash: 4.17.21 memoizerific: 1.11.3 @@ -3954,17 +3979,17 @@ packages: - react-dom dev: true - /@storybook/manager-api@7.6.4(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-RFb/iaBJfXygSgXkINPRq8dXu7AxBicTGX7MxqKXbz5FU7ANwV7abH6ONBYURkSDOH9//TQhRlVkF5u8zWg3bw==} + /@storybook/manager-api@7.6.5(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-tE3OShOcs6A3XtI3NJd6hYQOZLaP++Fn0dCtowBwYh/vS1EN/AyroVmL97tsxn1DZTyoRt0GidwbB6dvLMBOwA==} dependencies: - '@storybook/channels': 7.6.4 - '@storybook/client-logger': 7.6.4 - '@storybook/core-events': 7.6.4 + '@storybook/channels': 7.6.5 + '@storybook/client-logger': 7.6.5 + '@storybook/core-events': 7.6.5 '@storybook/csf': 0.1.2 '@storybook/global': 5.0.0 - '@storybook/router': 7.6.4 - '@storybook/theming': 7.6.4(react-dom@18.2.0)(react@18.2.0) - '@storybook/types': 7.6.4 + '@storybook/router': 7.6.5 + '@storybook/theming': 7.6.5(react-dom@18.2.0)(react@18.2.0) + '@storybook/types': 7.6.5 dequal: 2.0.3 lodash: 4.17.21 memoizerific: 1.11.3 @@ -3987,11 +4012,11 @@ packages: resolution: {integrity: sha512-MwIBjG4ICVKT2DjB6kZWohogBIiN70FmMNZOaKPKJtzgJ+cyn6xjBTDH2JPBTfsUZovN/vQj+0OVFts6x2v99Q==} dev: true - /@storybook/node-logger@7.6.4: - resolution: {integrity: sha512-GDkEnnDj4Op+PExs8ZY/P6ox3wg453CdEIaR8PR9TxF/H/T2fBL6puzma3hN2CMam6yzfAL8U+VeIIDLQ5BZdQ==} + /@storybook/node-logger@7.6.5: + resolution: {integrity: sha512-xKw6IH1wLkIssekdBv3bd13xYKUF1t8EwqDR8BYcN8AVjZlqJMTifssqG4bYV+G/B7J3tz4ugJ5nmtWg6RQ0Qw==} - /@storybook/postinstall@7.6.4: - resolution: {integrity: sha512-7uoB82hSzlFSdDMS3hKQD+AaeSvPit/fAMvXCBxn0/D0UGJUZcq4M9JcKBwEHkZJcbuDROgOTJ6TUeXi/FWO0w==} + /@storybook/postinstall@7.6.5: + resolution: {integrity: sha512-12WxfpqGKsk7GQ3KWiZSbamsYK8vtRmhOTkavZ9IQkcJ/zuVfmqK80/Mds+njJMudUPzuREuSFGWACczo17EDA==} /@storybook/preview-api@7.6.0-beta.2: resolution: {integrity: sha512-7T1qdcjAVOO8TGZMlrO9Nx+8ih4suG53YPGFyCn6drd3TJ4w8IefxLtp3zrYdrvCXiW26G8aKRmgvdQmzg70XQ==} @@ -4012,15 +4037,15 @@ packages: util-deprecate: 1.0.2 dev: true - /@storybook/preview-api@7.6.3: - resolution: {integrity: sha512-uPaK7yLE1P++F+IOb/1j9pgdCwfMYZrUPHogF/Mf9r4cfEjDCcIeKgGMcsbU1KnkzNQQGPh8JRzRr/iYnLjswg==} + /@storybook/preview-api@7.6.4: + resolution: {integrity: sha512-KhisNdQX5NdfAln+spLU4B82d804GJQp/CnI5M1mm/taTnjvMgs/wTH9AmR89OPoq+tFZVW0vhy2zgPS3ar71A==} dependencies: - '@storybook/channels': 7.6.3 - '@storybook/client-logger': 7.6.3 - '@storybook/core-events': 7.6.3 + '@storybook/channels': 7.6.4 + '@storybook/client-logger': 7.6.4 + '@storybook/core-events': 7.6.4 '@storybook/csf': 0.1.2 '@storybook/global': 5.0.0 - '@storybook/types': 7.6.3 + '@storybook/types': 7.6.4 '@types/qs': 6.9.8 dequal: 2.0.3 lodash: 4.17.21 @@ -4031,15 +4056,15 @@ packages: util-deprecate: 1.0.2 dev: true - /@storybook/preview-api@7.6.4: - resolution: {integrity: sha512-KhisNdQX5NdfAln+spLU4B82d804GJQp/CnI5M1mm/taTnjvMgs/wTH9AmR89OPoq+tFZVW0vhy2zgPS3ar71A==} + /@storybook/preview-api@7.6.5: + resolution: {integrity: sha512-9XzuDXXgNuA6dDZ3DXsUwEG6ElxeTbzLuYuzcjtS1FusSICZ2iYmxfS0GfSud9MjPPYOJYoSOvMdIHjorjgByA==} dependencies: - '@storybook/channels': 7.6.4 - '@storybook/client-logger': 7.6.4 - '@storybook/core-events': 7.6.4 + '@storybook/channels': 7.6.5 + '@storybook/client-logger': 7.6.5 + '@storybook/core-events': 7.6.5 '@storybook/csf': 0.1.2 '@storybook/global': 5.0.0 - '@storybook/types': 7.6.4 + '@storybook/types': 7.6.5 '@types/qs': 6.9.8 dequal: 2.0.3 lodash: 4.17.21 @@ -4049,12 +4074,12 @@ packages: ts-dedent: 2.2.0 util-deprecate: 1.0.2 - /@storybook/preview@7.6.4: - resolution: {integrity: sha512-p9xIvNkgXgTpSRphOMV9KpIiNdkymH61jBg3B0XyoF6IfM1S2/mQGvC89lCVz1dMGk2SrH4g87/WcOapkU5ArA==} + /@storybook/preview@7.6.5: + resolution: {integrity: sha512-zmLa7C7yFGTYhgGZXoecdww9rx0Z5HpNi/GDBRWoNSK+FEdE8Jj2jF5NJ2ncldtYIyegz9ku29JFMKbhMj9K5Q==} dev: true - /@storybook/react-dom-shim@7.6.4(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-wGJfomlDEBnowNmhmumWDu/AcUInxSoPqUUJPgk2f5oL0EW17fR9fDP/juG3XOEdieMDM0jDX48GML7lyvL2fg==} + /@storybook/react-dom-shim@7.6.5(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-Qp3N3zENdvx20ikHmz5yI03z+mAWF8bUAwUofqXarVtZUkBNtvfTfUwgAezOAF0eClClH+ktIziIKd976tLSPw==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -4062,8 +4087,8 @@ packages: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - /@storybook/react-vite@7.6.4(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3)(vite@4.5.1): - resolution: {integrity: sha512-1NYzCJRO6k/ZyoMzpu1FQiaUaiLNjAvTAB1x3HE7oY/tEIT8kGpzXGYH++LJVWvyP/5dSWlUnRSy2rJvySraiw==} + /@storybook/react-vite@7.6.5(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3)(vite@4.5.1): + resolution: {integrity: sha512-fIoSBbou3rQdOo6qX/nD5givb3qIOSwXeZWjAqRB6560cqmeSQFlRGtKUJ0nzQYADwJ0/iNHz3nOvJOOSnPepA==} engines: {node: '>=16'} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -4072,8 +4097,8 @@ packages: dependencies: '@joshwooding/vite-plugin-react-docgen-typescript': 0.3.0(typescript@5.3.3)(vite@4.5.1) '@rollup/pluginutils': 5.0.2 - '@storybook/builder-vite': 7.6.4(typescript@5.3.3)(vite@4.5.1) - '@storybook/react': 7.6.4(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@storybook/builder-vite': 7.6.5(typescript@5.3.3)(vite@4.5.1) + '@storybook/react': 7.6.5(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) '@vitejs/plugin-react': 3.1.0(vite@4.5.1) magic-string: 0.30.1 react: 18.2.0 @@ -4089,8 +4114,8 @@ packages: - vite-plugin-glimmerx dev: true - /@storybook/react@7.6.4(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): - resolution: {integrity: sha512-XYRP+eylH3JqkCuziwtQGY5vOCeDreOibRYJmj5na6k4QbURjGVB44WCIW04gWVlmBXM9SqLAmserUi3HP890Q==} + /@storybook/react@7.6.5(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): + resolution: {integrity: sha512-z0l5T+gL//VekMXnHi+lW5qr7OQ8X7WoeIRMk38e62ppSpGUZRfoxRmmhU/9YcIFAlCgMaoLSYmhOceKGRZuVw==} engines: {node: '>=16.0.0'} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -4100,13 +4125,13 @@ packages: typescript: optional: true dependencies: - '@storybook/client-logger': 7.6.4 - '@storybook/core-client': 7.6.4 - '@storybook/docs-tools': 7.6.4 + '@storybook/client-logger': 7.6.5 + '@storybook/core-client': 7.6.5 + '@storybook/docs-tools': 7.6.5 '@storybook/global': 5.0.0 - '@storybook/preview-api': 7.6.4 - '@storybook/react-dom-shim': 7.6.4(react-dom@18.2.0)(react@18.2.0) - '@storybook/types': 7.6.4 + '@storybook/preview-api': 7.6.5 + '@storybook/react-dom-shim': 7.6.5(react-dom@18.2.0)(react@18.2.0) + '@storybook/types': 7.6.5 '@types/escodegen': 0.0.6 '@types/estree': 0.0.51 '@types/node': 18.19.3 @@ -4129,18 +4154,18 @@ packages: - supports-color dev: true - /@storybook/router@7.6.3: - resolution: {integrity: sha512-NZfhJqsXYca9mZCL/LGx6FmZDbrxX2S4ImW7Tqdtcc/sSlZ0BpCDkNUTesCA287cmoKMhXZRh/+bU+C2h2a+bw==} + /@storybook/router@7.6.4: + resolution: {integrity: sha512-5MQ7Z4D7XNPN2yhFgjey7hXOYd6s8CggUqeAwhzGTex90SMCkKHSz1hfkcXn1ZqBPaall2b53uK553OvPLp9KQ==} dependencies: - '@storybook/client-logger': 7.6.3 + '@storybook/client-logger': 7.6.4 memoizerific: 1.11.3 qs: 6.11.2 dev: true - /@storybook/router@7.6.4: - resolution: {integrity: sha512-5MQ7Z4D7XNPN2yhFgjey7hXOYd6s8CggUqeAwhzGTex90SMCkKHSz1hfkcXn1ZqBPaall2b53uK553OvPLp9KQ==} + /@storybook/router@7.6.5: + resolution: {integrity: sha512-QiTC86gRuoepzzmS6HNJZTwfz/n27NcqtaVEIxJi1Yvsx2/kLa9NkRhylNkfTuZ1gEry9stAlKWanMsB2aKyjQ==} dependencies: - '@storybook/client-logger': 7.6.4 + '@storybook/client-logger': 7.6.5 memoizerific: 1.11.3 qs: 6.11.2 @@ -4168,28 +4193,28 @@ packages: ts-dedent: 2.2.0 dev: true - /@storybook/theming@7.6.3(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-9ToNU2LM6a2kVBjOXitXEeEOuMurVLhn+uaZO1dJjv8NGnJVYiLwNPwrLsImiUD8/XXNuil972aanBR6+Aj9jw==} + /@storybook/theming@7.6.4(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-Z/dcC5EpkIXelYCkt9ojnX6D7qGOng8YHxV/OWlVE9TrEGYVGPOEfwQryR0RhmGpDha1TYESLYrsDb4A8nJ1EA==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: '@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.2.0) - '@storybook/client-logger': 7.6.3 + '@storybook/client-logger': 7.6.4 '@storybook/global': 5.0.0 memoizerific: 1.11.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: true - /@storybook/theming@7.6.4(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-Z/dcC5EpkIXelYCkt9ojnX6D7qGOng8YHxV/OWlVE9TrEGYVGPOEfwQryR0RhmGpDha1TYESLYrsDb4A8nJ1EA==} + /@storybook/theming@7.6.5(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-RpcWT0YEgiobO41McVPDfQQHHFnjyr1sJnNTPJIvOUgSfURdgSj17mQVxtD5xcXcPWUdle5UhIOrCixHbL/NNw==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: '@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.2.0) - '@storybook/client-logger': 7.6.4 + '@storybook/client-logger': 7.6.5 '@storybook/global': 5.0.0 memoizerific: 1.11.3 react: 18.2.0 @@ -4199,123 +4224,123 @@ packages: resolution: {integrity: sha512-UJRRGxeqiD42leHMpLdd4XQ9IgMVgggozrFHhhg5sj1msPmwNz+tHv87TSMkcpqkNOgjIIBK2Z9iP670mbPHVQ==} dependencies: '@storybook/channels': 7.6.0-beta.2 - '@types/babel__core': 7.20.4 + '@types/babel__core': 7.20.5 '@types/express': 4.17.18 file-system-cache: 2.3.0 dev: true - /@storybook/types@7.6.3: - resolution: {integrity: sha512-vj9Jzg5eR52l8O9512QywbQpNdo67Z6BQWR8QoZRcG+/Bhzt08YI8IZMPQLFMKzcmWDPK0blQ4GfyKDYplMjPA==} + /@storybook/types@7.6.4: + resolution: {integrity: sha512-qyiiXPCvol5uVgfubcIMzJBA0awAyFPU+TyUP1mkPYyiTHnsHYel/mKlSdPjc8a97N3SlJXHOCx41Hde4IyJgg==} dependencies: - '@storybook/channels': 7.6.3 - '@types/babel__core': 7.20.4 + '@storybook/channels': 7.6.4 + '@types/babel__core': 7.20.5 '@types/express': 4.17.18 file-system-cache: 2.3.0 dev: true - /@storybook/types@7.6.4: - resolution: {integrity: sha512-qyiiXPCvol5uVgfubcIMzJBA0awAyFPU+TyUP1mkPYyiTHnsHYel/mKlSdPjc8a97N3SlJXHOCx41Hde4IyJgg==} + /@storybook/types@7.6.5: + resolution: {integrity: sha512-Q757v+fYZZSaEpks/zDL5YgXRozxkgKakXFc+BoQHK5q5sVhJ+0jvpLJiAQAniIIaMIkqY/G24Kd6Uo6UdKBCg==} dependencies: - '@storybook/channels': 7.6.4 - '@types/babel__core': 7.20.4 + '@storybook/channels': 7.6.5 + '@types/babel__core': 7.20.5 '@types/express': 4.17.18 file-system-cache: 2.3.0 - /@svgr/babel-plugin-add-jsx-attribute@6.5.1(@babel/core@7.23.5): + /@svgr/babel-plugin-add-jsx-attribute@6.5.1(@babel/core@7.23.6): resolution: {integrity: sha512-9PYGcXrAxitycIjRmZB+Q0JaN07GZIWaTBIGQzfaZv+qr1n8X1XUEJ5rZ/vx6OVD9RRYlrNnXWExQXcmZeD/BQ==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 dev: true - /@svgr/babel-plugin-remove-jsx-attribute@8.0.0(@babel/core@7.23.5): + /@svgr/babel-plugin-remove-jsx-attribute@8.0.0(@babel/core@7.23.6): resolution: {integrity: sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==} engines: {node: '>=14'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 dev: true - /@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0(@babel/core@7.23.5): + /@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0(@babel/core@7.23.6): resolution: {integrity: sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==} engines: {node: '>=14'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 dev: true - /@svgr/babel-plugin-replace-jsx-attribute-value@6.5.1(@babel/core@7.23.5): + /@svgr/babel-plugin-replace-jsx-attribute-value@6.5.1(@babel/core@7.23.6): resolution: {integrity: sha512-8DPaVVE3fd5JKuIC29dqyMB54sA6mfgki2H2+swh+zNJoynC8pMPzOkidqHOSc6Wj032fhl8Z0TVn1GiPpAiJg==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 dev: true - /@svgr/babel-plugin-svg-dynamic-title@6.5.1(@babel/core@7.23.5): + /@svgr/babel-plugin-svg-dynamic-title@6.5.1(@babel/core@7.23.6): resolution: {integrity: sha512-FwOEi0Il72iAzlkaHrlemVurgSQRDFbk0OC8dSvD5fSBPHltNh7JtLsxmZUhjYBZo2PpcU/RJvvi6Q0l7O7ogw==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 dev: true - /@svgr/babel-plugin-svg-em-dimensions@6.5.1(@babel/core@7.23.5): + /@svgr/babel-plugin-svg-em-dimensions@6.5.1(@babel/core@7.23.6): resolution: {integrity: sha512-gWGsiwjb4tw+ITOJ86ndY/DZZ6cuXMNE/SjcDRg+HLuCmwpcjOktwRF9WgAiycTqJD/QXqL2f8IzE2Rzh7aVXA==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 dev: true - /@svgr/babel-plugin-transform-react-native-svg@6.5.1(@babel/core@7.23.5): + /@svgr/babel-plugin-transform-react-native-svg@6.5.1(@babel/core@7.23.6): resolution: {integrity: sha512-2jT3nTayyYP7kI6aGutkyfJ7UMGtuguD72OjeGLwVNyfPRBD8zQthlvL+fAbAKk5n9ZNcvFkp/b1lZ7VsYqVJg==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 dev: true - /@svgr/babel-plugin-transform-svg-component@6.5.1(@babel/core@7.23.5): + /@svgr/babel-plugin-transform-svg-component@6.5.1(@babel/core@7.23.6): resolution: {integrity: sha512-a1p6LF5Jt33O3rZoVRBqdxL350oge54iZWHNI6LJB5tQ7EelvD/Mb1mfBiZNAan0dt4i3VArkFRjA4iObuNykQ==} engines: {node: '>=12'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 dev: true - /@svgr/babel-preset@6.5.1(@babel/core@7.23.5): + /@svgr/babel-preset@6.5.1(@babel/core@7.23.6): resolution: {integrity: sha512-6127fvO/FF2oi5EzSQOAjo1LE3OtNVh11R+/8FXa+mHx1ptAaS4cknIjnUA7e6j6fwGGJ17NzaTJFUwOV2zwCw==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 - '@svgr/babel-plugin-add-jsx-attribute': 6.5.1(@babel/core@7.23.5) - '@svgr/babel-plugin-remove-jsx-attribute': 8.0.0(@babel/core@7.23.5) - '@svgr/babel-plugin-remove-jsx-empty-expression': 8.0.0(@babel/core@7.23.5) - '@svgr/babel-plugin-replace-jsx-attribute-value': 6.5.1(@babel/core@7.23.5) - '@svgr/babel-plugin-svg-dynamic-title': 6.5.1(@babel/core@7.23.5) - '@svgr/babel-plugin-svg-em-dimensions': 6.5.1(@babel/core@7.23.5) - '@svgr/babel-plugin-transform-react-native-svg': 6.5.1(@babel/core@7.23.5) - '@svgr/babel-plugin-transform-svg-component': 6.5.1(@babel/core@7.23.5) + '@babel/core': 7.23.6 + '@svgr/babel-plugin-add-jsx-attribute': 6.5.1(@babel/core@7.23.6) + '@svgr/babel-plugin-remove-jsx-attribute': 8.0.0(@babel/core@7.23.6) + '@svgr/babel-plugin-remove-jsx-empty-expression': 8.0.0(@babel/core@7.23.6) + '@svgr/babel-plugin-replace-jsx-attribute-value': 6.5.1(@babel/core@7.23.6) + '@svgr/babel-plugin-svg-dynamic-title': 6.5.1(@babel/core@7.23.6) + '@svgr/babel-plugin-svg-em-dimensions': 6.5.1(@babel/core@7.23.6) + '@svgr/babel-plugin-transform-react-native-svg': 6.5.1(@babel/core@7.23.6) + '@svgr/babel-plugin-transform-svg-component': 6.5.1(@babel/core@7.23.6) dev: true /@svgr/core@6.5.1: resolution: {integrity: sha512-/xdLSWxK5QkqG524ONSjvg3V/FkNyCv538OIBdQqPNaAta3AsXj/Bd2FbvR87yMbXO2hFSWiAe/Q6IkVPDw+mw==} engines: {node: '>=10'} dependencies: - '@babel/core': 7.23.5 - '@svgr/babel-preset': 6.5.1(@babel/core@7.23.5) + '@babel/core': 7.23.6 + '@svgr/babel-preset': 6.5.1(@babel/core@7.23.6) '@svgr/plugin-jsx': 6.5.1(@svgr/core@6.5.1) camelcase: 6.3.0 cosmiconfig: 7.1.0 @@ -4327,7 +4352,7 @@ packages: resolution: {integrity: sha512-1hnUxxjd83EAxbL4a0JDJoD3Dao3hmjvyvyEV8PzWmLK3B9m9NPlW7GKjFyoWE8nM7HnXzPcmmSyOW8yOddSXw==} engines: {node: '>=10'} dependencies: - '@babel/types': 7.23.3 + '@babel/types': 7.23.5 entities: 4.5.0 dev: true @@ -4337,8 +4362,8 @@ packages: peerDependencies: '@svgr/core': ^6.0.0 dependencies: - '@babel/core': 7.23.5 - '@svgr/babel-preset': 6.5.1(@babel/core@7.23.5) + '@babel/core': 7.23.6 + '@svgr/babel-preset': 6.5.1(@babel/core@7.23.6) '@svgr/core': 6.5.1 '@svgr/hast-util-to-babel-ast': 6.5.1 svg-parser: 2.0.4 @@ -4419,7 +4444,7 @@ packages: redent: 3.0.0 vitest: 0.34.6(jsdom@21.1.2) - /@testing-library/react-hooks@8.0.1(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0): + /@testing-library/react-hooks@8.0.1(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-Aqhl2IVmLt8IovEVarNDFuJDVWVvhnr9/GCU6UUnrYXwgDFF9h2L2o2P9KBni1AST5sT6riAyoukFLyjQUgD/g==} engines: {node: '>=12'} peerDependencies: @@ -4436,7 +4461,7 @@ packages: optional: true dependencies: '@babel/runtime': 7.22.6 - '@types/react': 18.2.43 + '@types/react': 18.2.45 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) react-error-boundary: 3.1.4(react@18.2.0) @@ -4451,7 +4476,7 @@ packages: dependencies: '@babel/runtime': 7.23.2 '@testing-library/dom': 9.3.3 - '@types/react-dom': 18.2.17 + '@types/react-dom': 18.2.18 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: true @@ -4488,15 +4513,6 @@ packages: resolution: {integrity: sha512-XTIieEY+gvJ39ChLcB4If5zHtPxt3Syj5rgZR+e1ctpmK8NjPf0zFqsz4JpLJT0xla9GFDKjy8Cpu331nrmE1Q==} dev: true - /@types/babel__core@7.20.4: - resolution: {integrity: sha512-mLnSC22IC4vcWiuObSRjrLd9XcBTGf59vUSoq2jkQDJ/QQ8PMI9rSuzE+aEV8karUMbskw07bKYoUJCKTUaygg==} - dependencies: - '@babel/parser': 7.23.5 - '@babel/types': 7.23.5 - '@types/babel__generator': 7.6.4 - '@types/babel__template': 7.4.1 - '@types/babel__traverse': 7.20.1 - /@types/babel__core@7.20.5: resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} dependencies: @@ -4505,7 +4521,6 @@ packages: '@types/babel__generator': 7.6.4 '@types/babel__template': 7.4.1 '@types/babel__traverse': 7.20.1 - dev: true /@types/babel__generator@7.6.4: resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} @@ -4771,19 +4786,19 @@ packages: /@types/range-parser@1.2.5: resolution: {integrity: sha512-xrO9OoVPqFuYyR/loIHjnbvvyRZREYKLjxV4+dY6v3FQR3stQ9ZxIGkaclF7YhI9hfjpuTbu14hZEy94qKLtOA==} - /@types/react-dom@18.2.17: - resolution: {integrity: sha512-rvrT/M7Df5eykWFxn6MYt5Pem/Dbyc1N8Y0S9Mrkw2WFCRiqUgw9P7ul2NpwsXCSM1DVdENzdG9J5SreqfAIWg==} + /@types/react-dom@18.2.18: + resolution: {integrity: sha512-TJxDm6OfAX2KJWJdMEVTwWke5Sc/E/RlnPGvGfS0W7+6ocy2xhDVQVh/KvC2Uf7kACs+gDytdusDSdWfWkaNzw==} dependencies: - '@types/react': 18.2.43 + '@types/react': 18.2.45 /@types/react-table@7.7.18: resolution: {integrity: sha512-OncztdDERQ35pjcQCpNoQe8KPOE8Rg2Ox4PlZHMGNgHTEaM1JyT2lWfNNbj2sCnOtQOHrOH7SzUnGUAXzqdksg==} dependencies: - '@types/react': 18.2.43 + '@types/react': 18.2.45 dev: true - /@types/react@18.2.43: - resolution: {integrity: sha512-nvOV01ZdBdd/KW6FahSbcNplt2jCJfyWdTos61RYHV+FVv5L/g9AOX1bmbVcWcLFL8+KHQfh1zVIQrud6ihyQA==} + /@types/react@18.2.45: + resolution: {integrity: sha512-TtAxCNrlrBp8GoeEp1npd5g+d/OejJHFxS3OWmrPBMFaVQMSN0OFySozJio5BHxTuTeug00AVXVAjfDSfk+lUg==} dependencies: '@types/prop-types': 15.7.5 '@types/scheduler': 0.16.3 @@ -4877,8 +4892,8 @@ packages: '@types/history': 4.7.11 dev: true - /@typescript-eslint/eslint-plugin@6.13.2(@typescript-eslint/parser@6.13.2)(eslint@8.55.0)(typescript@5.3.3): - resolution: {integrity: sha512-3+9OGAWHhk4O1LlcwLBONbdXsAhLjyCFogJY/cWy2lxdVJ2JrcTF2pTGMaLl2AE7U1l31n8Py4a8bx5DLf/0dQ==} + /@typescript-eslint/eslint-plugin@6.14.0(@typescript-eslint/parser@6.14.0)(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-1ZJBykBCXaSHG94vMMKmiHoL0MhNHKSVlcHVYZNw+BKxufhqQVTOawNpwwI1P5nIFZ/4jLVop0mcY6mJJDFNaw==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha @@ -4889,13 +4904,13 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.6.1 - '@typescript-eslint/parser': 6.13.2(eslint@8.55.0)(typescript@5.3.3) - '@typescript-eslint/scope-manager': 6.13.2 - '@typescript-eslint/type-utils': 6.13.2(eslint@8.55.0)(typescript@5.3.3) - '@typescript-eslint/utils': 6.13.2(eslint@8.55.0)(typescript@5.3.3) - '@typescript-eslint/visitor-keys': 6.13.2 + '@typescript-eslint/parser': 6.14.0(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/scope-manager': 6.14.0 + '@typescript-eslint/type-utils': 6.14.0(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/utils': 6.14.0(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/visitor-keys': 6.14.0 debug: 4.3.4 - eslint: 8.55.0 + eslint: 8.56.0 graphemer: 1.4.0 ignore: 5.2.4 natural-compare: 1.4.0 @@ -4906,8 +4921,8 @@ packages: - supports-color dev: true - /@typescript-eslint/parser@6.13.2(eslint@8.55.0)(typescript@5.3.3): - resolution: {integrity: sha512-MUkcC+7Wt/QOGeVlM8aGGJZy1XV5YKjTpq9jK6r6/iLsGXhBVaGP5N0UYvFsu9BFlSpwY9kMretzdBH01rkRXg==} + /@typescript-eslint/parser@6.14.0(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-QjToC14CKacd4Pa7JK4GeB/vHmWFJckec49FR4hmIRf97+KXole0T97xxu9IFiPxVQ1DBWrQ5wreLwAGwWAVQA==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -4916,12 +4931,12 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 6.13.2 - '@typescript-eslint/types': 6.13.2 - '@typescript-eslint/typescript-estree': 6.13.2(typescript@5.3.3) - '@typescript-eslint/visitor-keys': 6.13.2 + '@typescript-eslint/scope-manager': 6.14.0 + '@typescript-eslint/types': 6.14.0 + '@typescript-eslint/typescript-estree': 6.14.0(typescript@5.3.3) + '@typescript-eslint/visitor-keys': 6.14.0 debug: 4.3.4 - eslint: 8.55.0 + eslint: 8.56.0 typescript: 5.3.3 transitivePeerDependencies: - supports-color @@ -4935,16 +4950,16 @@ packages: '@typescript-eslint/visitor-keys': 5.62.0 dev: true - /@typescript-eslint/scope-manager@6.13.2: - resolution: {integrity: sha512-CXQA0xo7z6x13FeDYCgBkjWzNqzBn8RXaE3QVQVIUm74fWJLkJkaHmHdKStrxQllGh6Q4eUGyNpMe0b1hMkXFA==} + /@typescript-eslint/scope-manager@6.14.0: + resolution: {integrity: sha512-VT7CFWHbZipPncAZtuALr9y3EuzY1b1t1AEkIq2bTXUPKw+pHoXflGNG5L+Gv6nKul1cz1VH8fz16IThIU0tdg==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.13.2 - '@typescript-eslint/visitor-keys': 6.13.2 + '@typescript-eslint/types': 6.14.0 + '@typescript-eslint/visitor-keys': 6.14.0 dev: true - /@typescript-eslint/type-utils@6.13.2(eslint@8.55.0)(typescript@5.3.3): - resolution: {integrity: sha512-Qr6ssS1GFongzH2qfnWKkAQmMUyZSyOr0W54nZNU1MDfo+U4Mv3XveeLZzadc/yq8iYhQZHYT+eoXJqnACM1tw==} + /@typescript-eslint/type-utils@6.14.0(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-x6OC9Q7HfYKqjnuNu5a7kffIYs3No30isapRBJl1iCHLitD8O0lFbRcVGiOcuyN837fqXzPZ1NS10maQzZMKqw==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -4953,10 +4968,10 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 6.13.2(typescript@5.3.3) - '@typescript-eslint/utils': 6.13.2(eslint@8.55.0)(typescript@5.3.3) + '@typescript-eslint/typescript-estree': 6.14.0(typescript@5.3.3) + '@typescript-eslint/utils': 6.14.0(eslint@8.56.0)(typescript@5.3.3) debug: 4.3.4 - eslint: 8.55.0 + eslint: 8.56.0 ts-api-utils: 1.0.3(typescript@5.3.3) typescript: 5.3.3 transitivePeerDependencies: @@ -4968,8 +4983,8 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/types@6.13.2: - resolution: {integrity: sha512-7sxbQ+EMRubQc3wTfTsycgYpSujyVbI1xw+3UMRUcrhSy+pN09y/lWzeKDbvhoqcRbHdc+APLs/PWYi/cisLPg==} + /@typescript-eslint/types@6.14.0: + resolution: {integrity: sha512-uty9H2K4Xs8E47z3SnXEPRNDfsis8JO27amp2GNCnzGETEW3yTqEIVg5+AI7U276oGF/tw6ZA+UesxeQ104ceA==} engines: {node: ^16.0.0 || >=18.0.0} dev: true @@ -4994,8 +5009,8 @@ packages: - supports-color dev: true - /@typescript-eslint/typescript-estree@6.13.2(typescript@5.3.3): - resolution: {integrity: sha512-SuD8YLQv6WHnOEtKv8D6HZUzOub855cfPnPMKvdM/Bh1plv1f7Q/0iFUDLKKlxHcEstQnaUU4QZskgQq74t+3w==} + /@typescript-eslint/typescript-estree@6.14.0(typescript@5.3.3): + resolution: {integrity: sha512-yPkaLwK0yH2mZKFE/bXkPAkkFgOv15GJAUzgUVonAbv0Hr4PK/N2yaA/4XQbTZQdygiDkpt5DkxPELqHguNvyw==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: typescript: '*' @@ -5003,8 +5018,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 6.13.2 - '@typescript-eslint/visitor-keys': 6.13.2 + '@typescript-eslint/types': 6.14.0 + '@typescript-eslint/visitor-keys': 6.14.0 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 @@ -5015,19 +5030,19 @@ packages: - supports-color dev: true - /@typescript-eslint/utils@5.62.0(eslint@8.55.0)(typescript@5.3.3): + /@typescript-eslint/utils@5.62.0(eslint@8.56.0)(typescript@5.3.3): resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.55.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) '@types/json-schema': 7.0.13 '@types/semver': 7.5.3 '@typescript-eslint/scope-manager': 5.62.0 '@typescript-eslint/types': 5.62.0 '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.3.3) - eslint: 8.55.0 + eslint: 8.56.0 eslint-scope: 5.1.1 semver: 7.5.4 transitivePeerDependencies: @@ -5035,19 +5050,19 @@ packages: - typescript dev: true - /@typescript-eslint/utils@6.13.2(eslint@8.55.0)(typescript@5.3.3): - resolution: {integrity: sha512-b9Ptq4eAZUym4idijCRzl61oPCwwREcfDI8xGk751Vhzig5fFZR9CyzDz4Sp/nxSLBYxUPyh4QdIDqWykFhNmQ==} + /@typescript-eslint/utils@6.14.0(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-XwRTnbvRr7Ey9a1NT6jqdKX8y/atWG+8fAIu3z73HSP8h06i3r/ClMhmaF/RGWGW1tHJEwij1uEg2GbEmPYvYg==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.55.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) '@types/json-schema': 7.0.13 '@types/semver': 7.5.3 - '@typescript-eslint/scope-manager': 6.13.2 - '@typescript-eslint/types': 6.13.2 - '@typescript-eslint/typescript-estree': 6.13.2(typescript@5.3.3) - eslint: 8.55.0 + '@typescript-eslint/scope-manager': 6.14.0 + '@typescript-eslint/types': 6.14.0 + '@typescript-eslint/typescript-estree': 6.14.0(typescript@5.3.3) + eslint: 8.56.0 semver: 7.5.4 transitivePeerDependencies: - supports-color @@ -5062,11 +5077,11 @@ packages: eslint-visitor-keys: 3.4.3 dev: true - /@typescript-eslint/visitor-keys@6.13.2: - resolution: {integrity: sha512-OGznFs0eAQXJsp+xSd6k/O1UbFi/K/L7WjqeRoFE7vadjAF9y0uppXhYNQNEqygjou782maGClOoZwPqF0Drlw==} + /@typescript-eslint/visitor-keys@6.14.0: + resolution: {integrity: sha512-fB5cw6GRhJUz03MrROVuj5Zm/Q+XWlVdIsFj+Zb1Hvqouc8t+XP2H5y53QYU/MGtd2dPg6/vJJlhoX3xc2ehfw==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.13.2 + '@typescript-eslint/types': 6.14.0 eslint-visitor-keys: 3.4.3 dev: true @@ -5087,9 +5102,9 @@ packages: peerDependencies: vite: ^4.1.0-beta.0 dependencies: - '@babel/core': 7.23.5 - '@babel/plugin-transform-react-jsx-self': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-react-jsx-source': 7.23.3(@babel/core@7.23.5) + '@babel/core': 7.23.6 + '@babel/plugin-transform-react-jsx-self': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-react-jsx-source': 7.23.3(@babel/core@7.23.6) magic-string: 0.27.0 react-refresh: 0.14.0 vite: 4.5.1(@types/node@18.19.3) @@ -5103,9 +5118,9 @@ packages: peerDependencies: vite: ^4.2.0 || ^5.0.0 dependencies: - '@babel/core': 7.23.5 - '@babel/plugin-transform-react-jsx-self': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-react-jsx-source': 7.23.3(@babel/core@7.23.5) + '@babel/core': 7.23.6 + '@babel/plugin-transform-react-jsx-self': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-react-jsx-source': 7.23.3(@babel/core@7.23.6) '@types/babel__core': 7.20.5 react-refresh: 0.14.0 vite: 4.5.1(@types/node@18.19.3) @@ -5557,16 +5572,6 @@ packages: get-intrinsic: 1.2.1 dev: true - /array.prototype.flat@1.3.1: - resolution: {integrity: sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.1 - es-abstract: 1.22.1 - es-shim-unscopables: 1.0.0 - dev: true - /array.prototype.flat@1.3.2: resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} engines: {node: '>= 0.4'} @@ -5704,22 +5709,22 @@ packages: resolution: {integrity: sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==} dev: false - /babel-core@7.0.0-bridge.0(@babel/core@7.23.5): + /babel-core@7.0.0-bridge.0(@babel/core@7.23.6): resolution: {integrity: sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 dev: true - /babel-loader@8.3.0(@babel/core@7.23.5)(webpack@5.88.2): + /babel-loader@8.3.0(@babel/core@7.23.6)(webpack@5.88.2): resolution: {integrity: sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==} engines: {node: '>= 8.9'} peerDependencies: '@babel/core': ^7.0.0 webpack: '>=2' dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 find-cache-dir: 3.3.2 loader-utils: 2.0.4 make-dir: 3.1.0 @@ -5739,38 +5744,38 @@ packages: transitivePeerDependencies: - supports-color - /babel-plugin-polyfill-corejs2@0.4.6(@babel/core@7.23.5): + /babel-plugin-polyfill-corejs2@0.4.6(@babel/core@7.23.6): resolution: {integrity: sha512-jhHiWVZIlnPbEUKSSNb9YoWcQGdlTLq7z1GHL4AjFxaoOUMuuEVJ+Y4pAaQUGOGk93YsVCKPbqbfw3m0SM6H8Q==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: '@babel/compat-data': 7.23.3 - '@babel/core': 7.23.5 - '@babel/helper-define-polyfill-provider': 0.4.3(@babel/core@7.23.5) + '@babel/core': 7.23.6 + '@babel/helper-define-polyfill-provider': 0.4.3(@babel/core@7.23.6) semver: 6.3.1 transitivePeerDependencies: - supports-color dev: true - /babel-plugin-polyfill-corejs3@0.8.6(@babel/core@7.23.5): + /babel-plugin-polyfill-corejs3@0.8.6(@babel/core@7.23.6): resolution: {integrity: sha512-leDIc4l4tUgU7str5BWLS2h8q2N4Nf6lGZP6UrNDxdtfF2g69eJ5L0H7S8A5Ln/arfFAfHor5InAdZuIOwZdgQ==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.23.5 - '@babel/helper-define-polyfill-provider': 0.4.3(@babel/core@7.23.5) + '@babel/core': 7.23.6 + '@babel/helper-define-polyfill-provider': 0.4.3(@babel/core@7.23.6) core-js-compat: 3.33.2 transitivePeerDependencies: - supports-color dev: true - /babel-plugin-polyfill-regenerator@0.5.3(@babel/core@7.23.5): + /babel-plugin-polyfill-regenerator@0.5.3(@babel/core@7.23.6): resolution: {integrity: sha512-8sHeDOmXC8csczMrYEOf0UTNa4yE2SxV5JGeT/LP1n0OYVDUUFPxG9vdk2AlDlIit4t+Kf0xCtpgXPBwnn/9pw==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.23.5 - '@babel/helper-define-polyfill-provider': 0.4.3(@babel/core@7.23.5) + '@babel/core': 7.23.6 + '@babel/helper-define-polyfill-provider': 0.4.3(@babel/core@7.23.6) transitivePeerDependencies: - supports-color dev: true @@ -5932,6 +5937,17 @@ packages: electron-to-chromium: 1.4.542 node-releases: 2.0.13 update-browserslist-db: 1.0.13(browserslist@4.22.1) + dev: true + + /browserslist@4.22.2: + resolution: {integrity: sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001570 + electron-to-chromium: 1.4.614 + node-releases: 2.0.14 + update-browserslist-db: 1.0.13(browserslist@4.22.2) /bser@2.1.1: resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} @@ -6013,6 +6029,10 @@ packages: /caniuse-lite@1.0.30001546: resolution: {integrity: sha512-zvtSJwuQFpewSyRrI3AsftF6rM0X80mZkChIt1spBGEvRglCrjTniXvinc8JKRoqTwXAgvqTImaN9igfSMtUBw==} + dev: true + + /caniuse-lite@1.0.30001570: + resolution: {integrity: sha512-+3e0ASu4sw1SWaoCtvPeyXp+5PsjigkSt8OXZbF9StH5pQWbxEjLAZE3n8Aup5udop1uRiKA7a4utUk/uoSpUw==} /ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} @@ -6758,6 +6778,10 @@ packages: /electron-to-chromium@1.4.542: resolution: {integrity: sha512-6+cpa00G09N3sfh2joln4VUXHquWrOFx3FLZqiVQvl45+zS9DskDBTPvob+BhvFRmTBkyDSk0vvLMMRo/qc6mQ==} + dev: true + + /electron-to-chromium@1.4.614: + resolution: {integrity: sha512-X4ze/9Sc3QWs6h92yerwqv7aB/uU8vCjZcrMjA8N9R1pjMFRe44dLsck5FzLilOYvcXuDn93B+bpGYyufc70gQ==} /elliptic@6.5.4: resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} @@ -6885,7 +6909,7 @@ packages: define-properties: 1.2.1 es-abstract: 1.22.1 es-set-tostringtag: 2.0.1 - function-bind: 1.1.1 + function-bind: 1.1.2 get-intrinsic: 1.2.1 globalthis: 1.0.3 has-property-descriptors: 1.0.0 @@ -7004,16 +7028,25 @@ packages: optionalDependencies: source-map: 0.6.1 - /eslint-config-prettier@9.1.0(eslint@8.55.0): + /eslint-compat-utils@0.1.2(eslint@8.56.0): + resolution: {integrity: sha512-Jia4JDldWnFNIru1Ehx1H5s9/yxiRHY/TimCuUc0jNexew3cF1gI6CYZil1ociakfWO3rRqFjl1mskBblB3RYg==} + engines: {node: '>=12'} + peerDependencies: + eslint: '>=6.0.0' + dependencies: + eslint: 8.56.0 + dev: true + + /eslint-config-prettier@9.1.0(eslint@8.56.0): resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 8.55.0 + eslint: 8.56.0 dev: true - /eslint-config-standard-with-typescript@39.1.1(@typescript-eslint/eslint-plugin@6.13.2)(eslint-plugin-import@2.29.0)(eslint-plugin-n@16.3.1)(eslint-plugin-promise@6.1.1)(eslint@8.55.0)(typescript@5.3.3): + /eslint-config-standard-with-typescript@39.1.1(@typescript-eslint/eslint-plugin@6.14.0)(eslint-plugin-import@2.29.1)(eslint-plugin-n@16.4.0)(eslint-plugin-promise@6.1.1)(eslint@8.56.0)(typescript@5.3.3): resolution: {integrity: sha512-t6B5Ep8E4I18uuoYeYxINyqcXb2UbC0SOOTxRtBSt2JUs+EzeXbfe2oaiPs71AIdnoWhXDO2fYOHz8df3kV84A==} peerDependencies: '@typescript-eslint/eslint-plugin': ^6.4.0 @@ -7023,19 +7056,19 @@ packages: eslint-plugin-promise: ^6.0.0 typescript: '*' dependencies: - '@typescript-eslint/eslint-plugin': 6.13.2(@typescript-eslint/parser@6.13.2)(eslint@8.55.0)(typescript@5.3.3) - '@typescript-eslint/parser': 6.13.2(eslint@8.55.0)(typescript@5.3.3) - eslint: 8.55.0 - eslint-config-standard: 17.1.0(eslint-plugin-import@2.29.0)(eslint-plugin-n@16.3.1)(eslint-plugin-promise@6.1.1)(eslint@8.55.0) - eslint-plugin-import: 2.29.0(@typescript-eslint/parser@6.13.2)(eslint@8.55.0) - eslint-plugin-n: 16.3.1(eslint@8.55.0) - eslint-plugin-promise: 6.1.1(eslint@8.55.0) + '@typescript-eslint/eslint-plugin': 6.14.0(@typescript-eslint/parser@6.14.0)(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/parser': 6.14.0(eslint@8.56.0)(typescript@5.3.3) + eslint: 8.56.0 + eslint-config-standard: 17.1.0(eslint-plugin-import@2.29.1)(eslint-plugin-n@16.4.0)(eslint-plugin-promise@6.1.1)(eslint@8.56.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.14.0)(eslint@8.56.0) + eslint-plugin-n: 16.4.0(eslint@8.56.0) + eslint-plugin-promise: 6.1.1(eslint@8.56.0) typescript: 5.3.3 transitivePeerDependencies: - supports-color dev: true - /eslint-config-standard@17.1.0(eslint-plugin-import@2.29.0)(eslint-plugin-n@16.3.1)(eslint-plugin-promise@6.1.1)(eslint@8.55.0): + /eslint-config-standard@17.1.0(eslint-plugin-import@2.29.1)(eslint-plugin-n@16.4.0)(eslint-plugin-promise@6.1.1)(eslint@8.56.0): resolution: {integrity: sha512-IwHwmaBNtDK4zDHQukFDW5u/aTb8+meQWZvNFWkiGmbWjD6bqyuSSBxxXKkCftCUzc1zwCH2m/baCNDLGmuO5Q==} engines: {node: '>=12.0.0'} peerDependencies: @@ -7044,10 +7077,10 @@ packages: eslint-plugin-n: '^15.0.0 || ^16.0.0 ' eslint-plugin-promise: ^6.0.0 dependencies: - eslint: 8.55.0 - eslint-plugin-import: 2.29.0(@typescript-eslint/parser@6.13.2)(eslint@8.55.0) - eslint-plugin-n: 16.3.1(eslint@8.55.0) - eslint-plugin-promise: 6.1.1(eslint@8.55.0) + eslint: 8.56.0 + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.14.0)(eslint@8.56.0) + eslint-plugin-n: 16.4.0(eslint@8.56.0) + eslint-plugin-promise: 6.1.1(eslint@8.56.0) dev: true /eslint-import-resolver-node@0.3.9: @@ -7060,7 +7093,7 @@ packages: - supports-color dev: true - /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.13.2)(eslint-import-resolver-node@0.3.9)(eslint@8.55.0): + /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.14.0)(eslint-import-resolver-node@0.3.9)(eslint@8.56.0): resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} peerDependencies: @@ -7081,27 +7114,28 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 6.13.2(eslint@8.55.0)(typescript@5.3.3) + '@typescript-eslint/parser': 6.14.0(eslint@8.56.0)(typescript@5.3.3) debug: 3.2.7 - eslint: 8.55.0 + eslint: 8.56.0 eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-es-x@7.2.0(eslint@8.55.0): - resolution: {integrity: sha512-9dvv5CcvNjSJPqnS5uZkqb3xmbeqRLnvXKK7iI5+oK/yTusyc46zbBZKENGsOfojm/mKfszyZb+wNqNPAPeGXA==} + /eslint-plugin-es-x@7.5.0(eslint@8.56.0): + resolution: {integrity: sha512-ODswlDSO0HJDzXU0XvgZ3lF3lS3XAZEossh15Q2UHjwrJggWeBoKqqEsLTZLXl+dh5eOAozG0zRcYtuE35oTuQ==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: eslint: '>=8' dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.55.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) '@eslint-community/regexpp': 4.6.1 - eslint: 8.55.0 + eslint: 8.56.0 + eslint-compat-utils: 0.1.2(eslint@8.56.0) dev: true - /eslint-plugin-import@2.29.0(@typescript-eslint/parser@6.13.2)(eslint@8.55.0): - resolution: {integrity: sha512-QPOO5NO6Odv5lpoTkddtutccQjysJuFxoPS7fAHO+9m9udNHvTCPSAMW9zGAYj8lAIdr40I8yPCdUYrncXtrwg==} + /eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.14.0)(eslint@8.56.0): + resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} engines: {node: '>=4'} peerDependencies: '@typescript-eslint/parser': '*' @@ -7110,16 +7144,16 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 6.13.2(eslint@8.55.0)(typescript@5.3.3) + '@typescript-eslint/parser': 6.14.0(eslint@8.56.0)(typescript@5.3.3) array-includes: 3.1.7 array.prototype.findlastindex: 1.2.3 array.prototype.flat: 1.3.2 array.prototype.flatmap: 1.3.2 debug: 3.2.7 doctrine: 2.1.0 - eslint: 8.55.0 + eslint: 8.56.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.13.2)(eslint-import-resolver-node@0.3.9)(eslint@8.55.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.14.0)(eslint-import-resolver-node@0.3.9)(eslint@8.56.0) hasown: 2.0.0 is-core-module: 2.13.1 is-glob: 4.0.3 @@ -7128,23 +7162,23 @@ packages: object.groupby: 1.0.1 object.values: 1.1.7 semver: 6.3.1 - tsconfig-paths: 3.14.2 + tsconfig-paths: 3.15.0 transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color dev: true - /eslint-plugin-n@16.3.1(eslint@8.55.0): - resolution: {integrity: sha512-w46eDIkxQ2FaTHcey7G40eD+FhTXOdKudDXPUO2n9WNcslze/i/HT2qJ3GXjHngYSGDISIgPNhwGtgoix4zeOw==} + /eslint-plugin-n@16.4.0(eslint@8.56.0): + resolution: {integrity: sha512-IkqJjGoWYGskVaJA7WQuN8PINIxc0N/Pk/jLeYT4ees6Fo5lAhpwGsYek6gS9tCUxgDC4zJ+OwY2bY/6/9OMKQ==} engines: {node: '>=16.0.0'} peerDependencies: eslint: '>=7.0.0' dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.55.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) builtins: 5.0.1 - eslint: 8.55.0 - eslint-plugin-es-x: 7.2.0(eslint@8.55.0) + eslint: 8.56.0 + eslint-plugin-es-x: 7.5.0(eslint@8.56.0) get-tsconfig: 4.7.2 ignore: 5.2.4 is-builtin-module: 3.2.1 @@ -7154,15 +7188,15 @@ packages: semver: 7.5.4 dev: true - /eslint-plugin-prefer-arrow@1.2.3(eslint@8.55.0): + /eslint-plugin-prefer-arrow@1.2.3(eslint@8.56.0): resolution: {integrity: sha512-J9I5PKCOJretVuiZRGvPQxCbllxGAV/viI20JO3LYblAodofBxyMnZAJ+WGeClHgANnSJberTNoFWWjrWKBuXQ==} peerDependencies: eslint: '>=2.0.0' dependencies: - eslint: 8.55.0 + eslint: 8.56.0 dev: true - /eslint-plugin-prettier@5.0.1(eslint-config-prettier@9.1.0)(eslint@8.55.0)(prettier@3.1.0): + /eslint-plugin-prettier@5.0.1(eslint-config-prettier@9.1.0)(eslint@8.56.0)(prettier@3.1.1): resolution: {integrity: sha512-m3u5RnR56asrwV/lDC4GHorlW75DsFfmUcjfCYylTUs85dBRnB7VM6xG8eCMJdeDRnppzmxZVf1GEPJvl1JmNg==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -7176,23 +7210,23 @@ packages: eslint-config-prettier: optional: true dependencies: - eslint: 8.55.0 - eslint-config-prettier: 9.1.0(eslint@8.55.0) - prettier: 3.1.0 + eslint: 8.56.0 + eslint-config-prettier: 9.1.0(eslint@8.56.0) + prettier: 3.1.1 prettier-linter-helpers: 1.0.0 synckit: 0.8.5 dev: true - /eslint-plugin-promise@6.1.1(eslint@8.55.0): + /eslint-plugin-promise@6.1.1(eslint@8.56.0): resolution: {integrity: sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 dependencies: - eslint: 8.55.0 + eslint: 8.56.0 dev: true - /eslint-plugin-react@7.33.2(eslint@8.55.0): + /eslint-plugin-react@7.33.2(eslint@8.56.0): resolution: {integrity: sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==} engines: {node: '>=4'} peerDependencies: @@ -7203,7 +7237,7 @@ packages: array.prototype.tosorted: 1.1.1 doctrine: 2.1.0 es-iterator-helpers: 1.0.15 - eslint: 8.55.0 + eslint: 8.56.0 estraverse: 5.3.0 jsx-ast-utils: 3.3.4 minimatch: 3.1.2 @@ -7217,24 +7251,24 @@ packages: string.prototype.matchall: 4.0.8 dev: true - /eslint-plugin-sonarjs@0.23.0(eslint@8.55.0): + /eslint-plugin-sonarjs@0.23.0(eslint@8.56.0): resolution: {integrity: sha512-z44T3PBf9W7qQ/aR+NmofOTyg6HLhSEZOPD4zhStqBpLoMp8GYhFksuUBnCxbnf1nfISpKBVkQhiBLFI/F4Wlg==} engines: {node: '>=14'} peerDependencies: eslint: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - eslint: 8.55.0 + eslint: 8.56.0 dev: true - /eslint-plugin-storybook@0.6.15(eslint@8.55.0)(typescript@5.3.3): + /eslint-plugin-storybook@0.6.15(eslint@8.56.0)(typescript@5.3.3): resolution: {integrity: sha512-lAGqVAJGob47Griu29KXYowI4G7KwMoJDOkEip8ujikuDLxU+oWJ1l0WL6F2oDO4QiyUFXvtDkEkISMOPzo+7w==} engines: {node: 12.x || 14.x || >= 16} peerDependencies: eslint: '>=6' dependencies: '@storybook/csf': 0.0.1 - '@typescript-eslint/utils': 5.62.0(eslint@8.55.0)(typescript@5.3.3) - eslint: 8.55.0 + '@typescript-eslint/utils': 5.62.0(eslint@8.56.0)(typescript@5.3.3) + eslint: 8.56.0 requireindex: 1.2.0 ts-dedent: 2.2.0 transitivePeerDependencies: @@ -7242,17 +7276,17 @@ packages: - typescript dev: true - /eslint-plugin-unicorn@48.0.1(eslint@8.55.0): + /eslint-plugin-unicorn@48.0.1(eslint@8.56.0): resolution: {integrity: sha512-FW+4r20myG/DqFcCSzoumaddKBicIPeFnTrifon2mWIzlfyvzwyqZjqVP7m4Cqr/ZYisS2aiLghkUWaPg6vtCw==} engines: {node: '>=16'} peerDependencies: eslint: '>=8.44.0' dependencies: '@babel/helper-validator-identifier': 7.22.20 - '@eslint-community/eslint-utils': 4.4.0(eslint@8.55.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) ci-info: 3.8.0 clean-regexp: 1.0.0 - eslint: 8.55.0 + eslint: 8.56.0 esquery: 1.5.0 indent-string: 4.0.0 is-builtin-module: 3.2.1 @@ -7266,7 +7300,7 @@ packages: strip-indent: 3.0.0 dev: true - /eslint-plugin-unused-imports@3.0.0(@typescript-eslint/eslint-plugin@6.13.2)(eslint@8.55.0): + /eslint-plugin-unused-imports@3.0.0(@typescript-eslint/eslint-plugin@6.14.0)(eslint@8.56.0): resolution: {integrity: sha512-sduiswLJfZHeeBJ+MQaG+xYzSWdRXoSw61DpU13mzWumCkR0ufD0HmO4kdNokjrkluMHpj/7PJeN35pgbhW3kw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -7276,8 +7310,8 @@ packages: '@typescript-eslint/eslint-plugin': optional: true dependencies: - '@typescript-eslint/eslint-plugin': 6.13.2(@typescript-eslint/parser@6.13.2)(eslint@8.55.0)(typescript@5.3.3) - eslint: 8.55.0 + '@typescript-eslint/eslint-plugin': 6.14.0(@typescript-eslint/parser@6.14.0)(eslint@8.56.0)(typescript@5.3.3) + eslint: 8.56.0 eslint-rule-composer: 0.3.0 dev: true @@ -7307,15 +7341,15 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint@8.55.0: - resolution: {integrity: sha512-iyUUAM0PCKj5QpwGfmCAG9XXbZCWsqP/eWAWrG/W0umvjuLRBECwSFdt+rCntju0xEH7teIABPwXpahftIaTdA==} + /eslint@8.56.0: + resolution: {integrity: sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.55.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) '@eslint-community/regexpp': 4.6.1 '@eslint/eslintrc': 2.1.4 - '@eslint/js': 8.55.0 + '@eslint/js': 8.56.0 '@humanwhocodes/config-array': 0.11.13 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 @@ -7829,7 +7863,6 @@ packages: /function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - dev: true /function.prototype.name@1.1.5: resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} @@ -7859,7 +7892,7 @@ packages: /get-intrinsic@1.2.1: resolution: {integrity: sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==} dependencies: - function-bind: 1.1.1 + function-bind: 1.1.2 has: 1.0.3 has-proto: 1.0.1 has-symbols: 1.0.3 @@ -8111,7 +8144,7 @@ packages: resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} engines: {node: '>= 0.4.0'} dependencies: - function-bind: 1.1.1 + function-bind: 1.1.2 /hash.js@1.1.7: resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} @@ -8774,7 +8807,7 @@ packages: resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} engines: {node: '>=8'} dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 '@babel/parser': 7.23.5 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.0 @@ -8786,8 +8819,8 @@ packages: resolution: {integrity: sha512-x58orMzEVfzPUKqlbLd1hXCnySCxKdDKa6Rjg97CwuLLRI4g3FHTdnExu1OqffVFay6zeMW+T6/DowFLndWnIw==} engines: {node: '>=10'} dependencies: - '@babel/core': 7.23.5 - '@babel/parser': 7.23.3 + '@babel/core': 7.23.6 + '@babel/parser': 7.23.5 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.0 semver: 7.5.4 @@ -8959,18 +8992,18 @@ packages: '@babel/preset-env': optional: true dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 '@babel/parser': 7.23.5 - '@babel/plugin-transform-class-properties': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-nullish-coalescing-operator': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-optional-chaining': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-private-methods': 7.23.3(@babel/core@7.23.5) - '@babel/preset-env': 7.23.3(@babel/core@7.23.5) - '@babel/preset-flow': 7.22.15(@babel/core@7.23.5) - '@babel/preset-typescript': 7.23.0(@babel/core@7.23.5) - '@babel/register': 7.22.15(@babel/core@7.23.5) - babel-core: 7.0.0-bridge.0(@babel/core@7.23.5) + '@babel/plugin-transform-class-properties': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-nullish-coalescing-operator': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-optional-chaining': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-private-methods': 7.23.3(@babel/core@7.23.6) + '@babel/preset-env': 7.23.3(@babel/core@7.23.6) + '@babel/preset-flow': 7.22.15(@babel/core@7.23.6) + '@babel/preset-typescript': 7.23.0(@babel/core@7.23.6) + '@babel/register': 7.22.15(@babel/core@7.23.6) + babel-core: 7.0.0-bridge.0(@babel/core@7.23.6) chalk: 4.1.2 flow-parser: 0.217.2 graceful-fs: 4.2.11 @@ -9099,10 +9132,10 @@ packages: resolution: {integrity: sha512-fX2TVdCViod6HwKEtSWGHs57oFhVfCMwieb9PuRDgjDPh5XeqJiHFFFJCHxU5cnTc3Bu/GRL+kPiFmw8XWOfKw==} engines: {node: '>=4.0'} dependencies: - array-includes: 3.1.6 - array.prototype.flat: 1.3.1 + array-includes: 3.1.7 + array.prototype.flat: 1.3.2 object.assign: 4.1.4 - object.values: 1.1.6 + object.values: 1.1.7 dev: true /kind-of@6.0.3: @@ -9988,6 +10021,10 @@ packages: /node-releases@2.0.13: resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==} + dev: true + + /node-releases@2.0.14: + resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} /normalize-package-data@2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} @@ -10295,7 +10332,7 @@ packages: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} dependencies: - '@babel/code-frame': 7.22.13 + '@babel/code-frame': 7.23.5 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 @@ -10520,7 +10557,7 @@ packages: fast-diff: 1.3.0 dev: true - /prettier-plugin-tailwindcss@0.5.9(prettier@3.1.0): + /prettier-plugin-tailwindcss@0.5.9(prettier@3.1.1): resolution: {integrity: sha512-9x3t1s2Cjbut2QiP+O0mDqV3gLXTe2CgRlQDgucopVkUdw26sQi53p/q4qvGxMLBDfk/dcTV57Aa/zYwz9l8Ew==} engines: {node: '>=14.21.3'} peerDependencies: @@ -10569,7 +10606,7 @@ packages: prettier-plugin-twig-melody: optional: true dependencies: - prettier: 3.1.0 + prettier: 3.1.1 dev: true /prettier@2.8.8: @@ -10578,8 +10615,8 @@ packages: hasBin: true dev: true - /prettier@3.1.0: - resolution: {integrity: sha512-TQLvXjq5IAibjh8EpBIkNKxO749UEWABoiIZehEPiY4GNpVdhaFKqSTu+QrlU6D2dPAfubRmtJTi4K4YkQ5eXw==} + /prettier@3.1.1: + resolution: {integrity: sha512-22UbSzg8luF4UuZtzgiUOfcGM8s4tjBv6dJRT7j275NXsy2jb4aJa4NNveul5x4eqlF1wuhuR2RElK71RvmVaw==} engines: {node: '>=14'} hasBin: true dev: true @@ -10712,8 +10749,8 @@ packages: - utf-8-validate dev: true - /puppeteer-core@21.6.0: - resolution: {integrity: sha512-1vrzbp2E1JpBwtIIrriWkN+A0afUxkqRuFTC3uASc5ql6iuK9ppOdIU/CPGKwOyB4YFIQ16mRbK0PK19mbXnaQ==} + /puppeteer-core@21.6.1: + resolution: {integrity: sha512-0chaaK/RL9S1U3bsyR4fUeUfoj51vNnjWvXgG6DcsyMjwYNpLcAThv187i1rZCo7QhJP0wZN8plQkjNyrq2h+A==} engines: {node: '>=16.13.2'} dependencies: '@puppeteer/browsers': 1.9.0 @@ -10721,7 +10758,7 @@ packages: cross-fetch: 4.0.0 debug: 4.3.4 devtools-protocol: 0.0.1203626 - ws: 8.14.2 + ws: 8.15.1 transitivePeerDependencies: - bufferutil - encoding @@ -10729,15 +10766,15 @@ packages: - utf-8-validate dev: false - /puppeteer@21.6.0(typescript@5.3.3): - resolution: {integrity: sha512-u6JhSF7xaPYZ2gd3tvhYI8MwVAjLc3Cazj7UWvMV95A07/y7cIjBwYUiMU9/jm4z0FSUORriLX/RZRaiASNWPw==} + /puppeteer@21.6.1(typescript@5.3.3): + resolution: {integrity: sha512-O+pbc61oj8ln6m8EJKncrsQFmytgRyFYERtk190PeLbJn5JKpmmynn2p1PiFrlhCitAQXLJ0MOy7F0TeyCRqBg==} engines: {node: '>=16.13.2'} hasBin: true requiresBuild: true dependencies: '@puppeteer/browsers': 1.9.0 cosmiconfig: 8.3.6(typescript@5.3.3) - puppeteer-core: 21.6.0 + puppeteer-core: 21.6.1 transitivePeerDependencies: - bufferutil - encoding @@ -10850,10 +10887,10 @@ packages: resolution: {integrity: sha512-rCz0HBIT0LWbIM+///LfRrJoTKftIzzwsYDf0ns5KwaEjejMHQRtphcns+IXFHDNY9pnz6G8l/JbbI6pD4EAIA==} engines: {node: '>=16.14.0'} dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.6 '@babel/traverse': 7.23.5 '@babel/types': 7.23.5 - '@types/babel__core': 7.20.4 + '@types/babel__core': 7.20.5 '@types/babel__traverse': 7.20.1 '@types/doctrine': 0.0.9 '@types/resolve': 1.20.4 @@ -10987,14 +11024,14 @@ packages: react: 18.2.0 dev: false - /react-markdown@9.0.1(@types/react@18.2.43)(react@18.2.0): + /react-markdown@9.0.1(@types/react@18.2.45)(react@18.2.0): resolution: {integrity: sha512-186Gw/vF1uRkydbsOIkcGXw7aHq0sZOCRFFjGrr7b9+nVZg4UfA4enXCaxm4fUzecU38sWfrNDitGhshuU7rdg==} peerDependencies: '@types/react': '>=18' react: '>=18' dependencies: '@types/hast': 3.0.2 - '@types/react': 18.2.43 + '@types/react': 18.2.45 devlop: 1.1.0 hast-util-to-jsx-runtime: 2.2.0 html-url-attributes: 3.0.0 @@ -11042,7 +11079,7 @@ packages: engines: {node: '>=0.10.0'} dev: true - /react-remove-scroll-bar@2.3.4(@types/react@18.2.43)(react@18.2.0): + /react-remove-scroll-bar@2.3.4(@types/react@18.2.45)(react@18.2.0): resolution: {integrity: sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==} engines: {node: '>=10'} peerDependencies: @@ -11052,12 +11089,12 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.2.43 + '@types/react': 18.2.45 react: 18.2.0 - react-style-singleton: 2.2.1(@types/react@18.2.43)(react@18.2.0) + react-style-singleton: 2.2.1(@types/react@18.2.45)(react@18.2.0) tslib: 2.6.2 - /react-remove-scroll@2.5.5(@types/react@18.2.43)(react@18.2.0): + /react-remove-scroll@2.5.5(@types/react@18.2.45)(react@18.2.0): resolution: {integrity: sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==} engines: {node: '>=10'} peerDependencies: @@ -11067,13 +11104,13 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.2.43 + '@types/react': 18.2.45 react: 18.2.0 - react-remove-scroll-bar: 2.3.4(@types/react@18.2.43)(react@18.2.0) - react-style-singleton: 2.2.1(@types/react@18.2.43)(react@18.2.0) + react-remove-scroll-bar: 2.3.4(@types/react@18.2.45)(react@18.2.0) + react-style-singleton: 2.2.1(@types/react@18.2.45)(react@18.2.0) tslib: 2.6.2 - use-callback-ref: 1.3.0(@types/react@18.2.43)(react@18.2.0) - use-sidecar: 1.1.2(@types/react@18.2.43)(react@18.2.0) + use-callback-ref: 1.3.0(@types/react@18.2.45)(react@18.2.0) + use-sidecar: 1.1.2(@types/react@18.2.45)(react@18.2.0) /react-resize-detector@8.1.0(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-S7szxlaIuiy5UqLhLL1KY3aoyGHbZzsTpYal9eYMwCyKqoqoVLCmIgAgNyIM1FhnP2KyBygASJxdhejrzjMb+w==} @@ -11115,7 +11152,7 @@ packages: tiny-invariant: 1.2.0 dev: false - /react-style-singleton@2.2.1(@types/react@18.2.43)(react@18.2.0): + /react-style-singleton@2.2.1(@types/react@18.2.45)(react@18.2.0): resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} engines: {node: '>=10'} peerDependencies: @@ -11125,7 +11162,7 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.2.43 + '@types/react': 18.2.45 get-nonce: 1.0.1 invariant: 2.2.4 react: 18.2.0 @@ -11799,7 +11836,7 @@ packages: /store2@2.14.2: resolution: {integrity: sha512-siT1RiqlfQnGqgT/YzXVUNsom9S0H1OX+dpdGN1xkyYATo4I6sep5NmsRD/40s3IIOvlCq6akxkqG82urIZW1w==} - /storybook-i18n@2.0.13(@storybook/components@7.6.3)(@storybook/manager-api@7.6.3)(@storybook/preview-api@7.6.3)(@storybook/types@7.6.4)(react-dom@18.2.0)(react@18.2.0): + /storybook-i18n@2.0.13(@storybook/components@7.6.4)(@storybook/manager-api@7.6.4)(@storybook/preview-api@7.6.4)(@storybook/types@7.6.5)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-p0VPL5QiHdeS3W9BvV7UnuTKw7Mj1HWLW67LK0EOoh5fpSQIchu7byfrUUe1RbCF1gT0gOOhdNuTSXMoVVoTDw==} peerDependencies: '@storybook/components': ^7.0.0 @@ -11814,15 +11851,15 @@ packages: react-dom: optional: true dependencies: - '@storybook/components': 7.6.3(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) - '@storybook/manager-api': 7.6.3(react-dom@18.2.0)(react@18.2.0) - '@storybook/preview-api': 7.6.3 - '@storybook/types': 7.6.4 + '@storybook/components': 7.6.4(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@storybook/manager-api': 7.6.4(react-dom@18.2.0)(react@18.2.0) + '@storybook/preview-api': 7.6.4 + '@storybook/types': 7.6.5 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: true - /storybook-react-i18next@2.0.9(@storybook/components@7.6.3)(@storybook/manager-api@7.6.3)(@storybook/preview-api@7.6.3)(@storybook/types@7.6.4)(i18next-browser-languagedetector@7.2.0)(i18next-http-backend@2.4.2)(i18next@22.5.1)(react-dom@18.2.0)(react-i18next@12.3.1)(react@18.2.0): + /storybook-react-i18next@2.0.9(@storybook/components@7.6.4)(@storybook/manager-api@7.6.4)(@storybook/preview-api@7.6.4)(@storybook/types@7.6.5)(i18next-browser-languagedetector@7.2.0)(i18next-http-backend@2.4.2)(i18next@22.5.1)(react-dom@18.2.0)(react-i18next@12.3.1)(react@18.2.0): resolution: {integrity: sha512-GFTOrYwOWShLqWNuTesPNhC79P3OHw1jkZ4gU3R50yTD2MUclF5DHLnuKeVfKZ323iV+I9fxLxuLIVHWVDJgXA==} peerDependencies: '@storybook/components': ^7.0.0 @@ -11841,17 +11878,17 @@ packages: react-dom: optional: true dependencies: - '@storybook/components': 7.6.3(@types/react-dom@18.2.17)(@types/react@18.2.43)(react-dom@18.2.0)(react@18.2.0) - '@storybook/manager-api': 7.6.3(react-dom@18.2.0)(react@18.2.0) - '@storybook/preview-api': 7.6.3 - '@storybook/types': 7.6.4 + '@storybook/components': 7.6.4(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@storybook/manager-api': 7.6.4(react-dom@18.2.0)(react@18.2.0) + '@storybook/preview-api': 7.6.4 + '@storybook/types': 7.6.5 i18next: 22.5.1 i18next-browser-languagedetector: 7.2.0 i18next-http-backend: 2.4.2 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) react-i18next: 12.3.1(i18next@22.5.1)(react-dom@18.2.0)(react@18.2.0) - storybook-i18n: 2.0.13(@storybook/components@7.6.3)(@storybook/manager-api@7.6.3)(@storybook/preview-api@7.6.3)(@storybook/types@7.6.4)(react-dom@18.2.0)(react@18.2.0) + storybook-i18n: 2.0.13(@storybook/components@7.6.4)(@storybook/manager-api@7.6.4)(@storybook/preview-api@7.6.4)(@storybook/types@7.6.5)(react-dom@18.2.0)(react@18.2.0) dev: true /storybook@7.6.0-beta.2: @@ -12388,8 +12425,8 @@ packages: webpack: 5.88.2(esbuild@0.18.20) dev: true - /tsconfig-paths@3.14.2: - resolution: {integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==} + /tsconfig-paths@3.15.0: + resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} dependencies: '@types/json5': 0.0.29 json5: 1.0.2 @@ -12684,6 +12721,17 @@ packages: browserslist: 4.22.1 escalade: 3.1.1 picocolors: 1.0.0 + dev: true + + /update-browserslist-db@1.0.13(browserslist@4.22.2): + resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.22.2 + escalade: 3.1.1 + picocolors: 1.0.0 /uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} @@ -12701,7 +12749,7 @@ packages: resolution: {integrity: sha512-WHN8KDQblxd32odxeIgo83rdVDE2bvdkb86it7bMhYZwWKJz0+O0RK/eZiHYnM+zgt/U7hAHOlCQGfjjvSkw2g==} dev: false - /use-callback-ref@1.3.0(@types/react@18.2.43)(react@18.2.0): + /use-callback-ref@1.3.0(@types/react@18.2.45)(react@18.2.0): resolution: {integrity: sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==} engines: {node: '>=10'} peerDependencies: @@ -12711,7 +12759,7 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.2.43 + '@types/react': 18.2.45 react: 18.2.0 tslib: 2.6.2 @@ -12725,7 +12773,7 @@ packages: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - /use-sidecar@1.1.2(@types/react@18.2.43)(react@18.2.0): + /use-sidecar@1.1.2(@types/react@18.2.45)(react@18.2.0): resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} engines: {node: '>=10'} peerDependencies: @@ -12735,7 +12783,7 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.2.43 + '@types/react': 18.2.45 detect-node-es: 1.1.0 react: 18.2.0 tslib: 2.6.2 @@ -12988,8 +13036,8 @@ packages: graceful-fs: 4.2.11 dev: true - /wavesurfer.js@7.5.1: - resolution: {integrity: sha512-lFDzf9+4TLCiDoGTrwrhO7zzOG3FvDSA2uo2aE19TpTGL1tSaB0tDuRM9VyeQXJyKujHNgibWhn+pCbj6oa8UA==} + /wavesurfer.js@7.5.2: + resolution: {integrity: sha512-hgO8p0MXxJ6oLm367jsjujve6QNEqt1B+T7muvXtMWWDn08efZ2DrVw6xaUI9NiX3Lo7BNYu9lPKnE5jubjoOg==} dev: false /wcwidth@1.0.1: @@ -13264,6 +13312,20 @@ packages: optional: true utf-8-validate: optional: true + dev: true + + /ws@8.15.1: + resolution: {integrity: sha512-W5OZiCjXEmk0yZ66ZN82beM5Sz7l7coYxpRkzS+p9PP+ToQry8szKh+61eNktr7EA9DOwvFGhfC605jDHbP6QQ==} + 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 + dev: false /xml-name-validator@4.0.0: resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} From ecc51b5e6be7d29707d1969324ae22fb02eadabc Mon Sep 17 00:00:00 2001 From: ItsANameToo <35610748+ItsANameToo@users.noreply.github.com> Date: Mon, 18 Dec 2023 10:58:34 +0100 Subject: [PATCH 057/145] chore: update PHP dependencies (#572) --- composer.json | 6 +- composer.lock | 274 +++++++++--------- public/css/filament/filament/app.css | 2 +- .../filament/forms/components/color-picker.js | 2 +- public/vendor/telescope/app.js | 2 +- public/vendor/telescope/mix-manifest.json | 2 +- 6 files changed, 143 insertions(+), 145 deletions(-) diff --git a/composer.json b/composer.json index da61f25f7..8c4fb1e32 100644 --- a/composer.json +++ b/composer.json @@ -10,7 +10,7 @@ "require": { "php": "^8.2", "atymic/twitter": "^3.2", - "aws/aws-sdk-php": "^3.293", + "aws/aws-sdk-php": "^3.294", "cyrildewit/eloquent-viewable": "dev-master", "filament/filament": "^3.1", "filament/spatie-laravel-media-library-plugin": "^3.1", @@ -19,7 +19,7 @@ "inertiajs/inertia-laravel": "^0.6", "jeffgreco13/filament-breezy": "^2.2", "kornrunner/keccak": "^1.1", - "laravel/framework": "^10.35", + "laravel/framework": "^10.37", "laravel/horizon": "^5.21", "laravel/pennant": "^1.5", "laravel/sanctum": "^3.3", @@ -32,7 +32,7 @@ "spatie/browsershot": "^3.60", "spatie/laravel-data": "^3.10", "spatie/laravel-markdown": "^2.4", - "spatie/laravel-medialibrary": "^10.15", + "spatie/laravel-medialibrary": "^10.0", "spatie/laravel-permission": "^5.2", "spatie/laravel-schemaless-attributes": "^2.4", "spatie/laravel-sluggable": "^3.5", diff --git a/composer.lock b/composer.lock index b81dc9e20..a0f782b45 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": "2569f085baced49d13799691d13ae8c7", + "content-hash": "ba5bcca85fd85f0dacd03617f7932cfb", "packages": [ { "name": "atymic/twitter", @@ -149,16 +149,16 @@ }, { "name": "aws/aws-sdk-php", - "version": "3.293.7", + "version": "3.294.1", "source": { "type": "git", "url": "https://github.com/aws/aws-sdk-php.git", - "reference": "3bf86ba8b9bbea2b298f89e6f5edc58de276690b" + "reference": "63c720229a9c9cdedff6bac98d6e72be8cc241f1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/3bf86ba8b9bbea2b298f89e6f5edc58de276690b", - "reference": "3bf86ba8b9bbea2b298f89e6f5edc58de276690b", + "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/63c720229a9c9cdedff6bac98d6e72be8cc241f1", + "reference": "63c720229a9c9cdedff6bac98d6e72be8cc241f1", "shasum": "" }, "require": { @@ -238,9 +238,9 @@ "support": { "forum": "https://forums.aws.amazon.com/forum.jspa?forumID=80", "issues": "https://github.com/aws/aws-sdk-php/issues", - "source": "https://github.com/aws/aws-sdk-php/tree/3.293.7" + "source": "https://github.com/aws/aws-sdk-php/tree/3.294.1" }, - "time": "2023-12-08T19:11:21+00:00" + "time": "2023-12-15T19:25:52+00:00" }, { "name": "bacon/bacon-qr-code", @@ -503,16 +503,16 @@ }, { "name": "carbonphp/carbon-doctrine-types", - "version": "2.0.0", + "version": "2.1.0", "source": { "type": "git", "url": "https://github.com/CarbonPHP/carbon-doctrine-types.git", - "reference": "67a77972b9f398ae7068dabacc39c08aeee170d5" + "reference": "99f76ffa36cce3b70a4a6abce41dba15ca2e84cb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/CarbonPHP/carbon-doctrine-types/zipball/67a77972b9f398ae7068dabacc39c08aeee170d5", - "reference": "67a77972b9f398ae7068dabacc39c08aeee170d5", + "url": "https://api.github.com/repos/CarbonPHP/carbon-doctrine-types/zipball/99f76ffa36cce3b70a4a6abce41dba15ca2e84cb", + "reference": "99f76ffa36cce3b70a4a6abce41dba15ca2e84cb", "shasum": "" }, "require": { @@ -552,7 +552,7 @@ ], "support": { "issues": "https://github.com/CarbonPHP/carbon-doctrine-types/issues", - "source": "https://github.com/CarbonPHP/carbon-doctrine-types/tree/2.0.0" + "source": "https://github.com/CarbonPHP/carbon-doctrine-types/tree/2.1.0" }, "funding": [ { @@ -568,7 +568,7 @@ "type": "tidelift" } ], - "time": "2023-10-01T14:29:01+00:00" + "time": "2023-12-11T17:09:12+00:00" }, { "name": "clue/stream-filter", @@ -1690,16 +1690,16 @@ }, { "name": "filament/actions", - "version": "v3.1.17", + "version": "v3.1.22", "source": { "type": "git", "url": "https://github.com/filamentphp/actions.git", - "reference": "ea8edab729453916e7e7b11f4508411baeedf3c9" + "reference": "d03c8dad2ec4ba21d0bc95cfc26e25435d467a26" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/actions/zipball/ea8edab729453916e7e7b11f4508411baeedf3c9", - "reference": "ea8edab729453916e7e7b11f4508411baeedf3c9", + "url": "https://api.github.com/repos/filamentphp/actions/zipball/d03c8dad2ec4ba21d0bc95cfc26e25435d467a26", + "reference": "d03c8dad2ec4ba21d0bc95cfc26e25435d467a26", "shasum": "" }, "require": { @@ -1737,20 +1737,20 @@ "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2023-12-08T22:45:03+00:00" + "time": "2023-12-15T12:41:24+00:00" }, { "name": "filament/filament", - "version": "v3.1.17", + "version": "v3.1.22", "source": { "type": "git", "url": "https://github.com/filamentphp/panels.git", - "reference": "8d1b3ad72457c208ad779887bdbc482bc62be061" + "reference": "d3ac68cf87a86b54e6d1e5f9e9050608489f67fa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/panels/zipball/8d1b3ad72457c208ad779887bdbc482bc62be061", - "reference": "8d1b3ad72457c208ad779887bdbc482bc62be061", + "url": "https://api.github.com/repos/filamentphp/panels/zipball/d3ac68cf87a86b54e6d1e5f9e9050608489f67fa", + "reference": "d3ac68cf87a86b54e6d1e5f9e9050608489f67fa", "shasum": "" }, "require": { @@ -1802,20 +1802,20 @@ "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2023-12-08T22:45:07+00:00" + "time": "2023-12-15T12:41:24+00:00" }, { "name": "filament/forms", - "version": "v3.1.17", + "version": "v3.1.22", "source": { "type": "git", "url": "https://github.com/filamentphp/forms.git", - "reference": "bb450d4e5615b8c4a4da17b17acc84449491c162" + "reference": "b9e6e9eb0c57c280be0fb529e546cee50534ff32" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/forms/zipball/bb450d4e5615b8c4a4da17b17acc84449491c162", - "reference": "bb450d4e5615b8c4a4da17b17acc84449491c162", + "url": "https://api.github.com/repos/filamentphp/forms/zipball/b9e6e9eb0c57c280be0fb529e546cee50534ff32", + "reference": "b9e6e9eb0c57c280be0fb529e546cee50534ff32", "shasum": "" }, "require": { @@ -1858,20 +1858,20 @@ "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2023-12-08T22:45:05+00:00" + "time": "2023-12-15T12:41:22+00:00" }, { "name": "filament/infolists", - "version": "v3.1.17", + "version": "v3.1.22", "source": { "type": "git", "url": "https://github.com/filamentphp/infolists.git", - "reference": "00798e2aa59602e9dc85f56d5d1743d16842125f" + "reference": "8ecb28d6f2f6145e5d972b0079be3442117a17a7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/infolists/zipball/00798e2aa59602e9dc85f56d5d1743d16842125f", - "reference": "00798e2aa59602e9dc85f56d5d1743d16842125f", + "url": "https://api.github.com/repos/filamentphp/infolists/zipball/8ecb28d6f2f6145e5d972b0079be3442117a17a7", + "reference": "8ecb28d6f2f6145e5d972b0079be3442117a17a7", "shasum": "" }, "require": { @@ -1909,20 +1909,20 @@ "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2023-12-07T12:32:29+00:00" + "time": "2023-12-15T12:41:23+00:00" }, { "name": "filament/notifications", - "version": "v3.1.17", + "version": "v3.1.22", "source": { "type": "git", "url": "https://github.com/filamentphp/notifications.git", - "reference": "13029b0f257ce9f0f9691b5fe8de933c581d03bc" + "reference": "702dfd12d46e8b431bad6e6b80f63f6638ce6230" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/notifications/zipball/13029b0f257ce9f0f9691b5fe8de933c581d03bc", - "reference": "13029b0f257ce9f0f9691b5fe8de933c581d03bc", + "url": "https://api.github.com/repos/filamentphp/notifications/zipball/702dfd12d46e8b431bad6e6b80f63f6638ce6230", + "reference": "702dfd12d46e8b431bad6e6b80f63f6638ce6230", "shasum": "" }, "require": { @@ -1961,20 +1961,20 @@ "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2023-12-07T12:32:30+00:00" + "time": "2023-12-14T16:20:58+00:00" }, { "name": "filament/spatie-laravel-media-library-plugin", - "version": "v3.1.17", + "version": "v3.1.22", "source": { "type": "git", "url": "https://github.com/filamentphp/spatie-laravel-media-library-plugin.git", - "reference": "da46347a3ba57994254707a4c9cd20feb6377496" + "reference": "bf31a2ff2574203fa819276cb37ae8958f31d43b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/spatie-laravel-media-library-plugin/zipball/da46347a3ba57994254707a4c9cd20feb6377496", - "reference": "da46347a3ba57994254707a4c9cd20feb6377496", + "url": "https://api.github.com/repos/filamentphp/spatie-laravel-media-library-plugin/zipball/bf31a2ff2574203fa819276cb37ae8958f31d43b", + "reference": "bf31a2ff2574203fa819276cb37ae8958f31d43b", "shasum": "" }, "require": { @@ -1998,20 +1998,20 @@ "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2023-10-30T09:52:29+00:00" + "time": "2023-12-12T14:20:38+00:00" }, { "name": "filament/support", - "version": "v3.1.17", + "version": "v3.1.22", "source": { "type": "git", "url": "https://github.com/filamentphp/support.git", - "reference": "c991278c9e3943b9a97c6b38fd27c329d535b808" + "reference": "7f82008931af9cc301e0b9c965dd1bcfbc44d584" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/support/zipball/c991278c9e3943b9a97c6b38fd27c329d535b808", - "reference": "c991278c9e3943b9a97c6b38fd27c329d535b808", + "url": "https://api.github.com/repos/filamentphp/support/zipball/7f82008931af9cc301e0b9c965dd1bcfbc44d584", + "reference": "7f82008931af9cc301e0b9c965dd1bcfbc44d584", "shasum": "" }, "require": { @@ -2055,20 +2055,20 @@ "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2023-12-05T13:29:28+00:00" + "time": "2023-12-14T16:21:19+00:00" }, { "name": "filament/tables", - "version": "v3.1.17", + "version": "v3.1.22", "source": { "type": "git", "url": "https://github.com/filamentphp/tables.git", - "reference": "2e7abcf4c1b95c073dc59806d9b12412a93a42d2" + "reference": "a7e3a44e7bc9d7e325857f64d24aa2e344dabd54" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/tables/zipball/2e7abcf4c1b95c073dc59806d9b12412a93a42d2", - "reference": "2e7abcf4c1b95c073dc59806d9b12412a93a42d2", + "url": "https://api.github.com/repos/filamentphp/tables/zipball/a7e3a44e7bc9d7e325857f64d24aa2e344dabd54", + "reference": "a7e3a44e7bc9d7e325857f64d24aa2e344dabd54", "shasum": "" }, "require": { @@ -2108,20 +2108,20 @@ "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2023-12-08T22:45:05+00:00" + "time": "2023-12-15T12:41:22+00:00" }, { "name": "filament/widgets", - "version": "v3.1.17", + "version": "v3.1.22", "source": { "type": "git", "url": "https://github.com/filamentphp/widgets.git", - "reference": "4a1f2e836ede27f9cc32d7ce43172c2d088376f8" + "reference": "f7e38b409e419a3675f9f4ed01b3544c566def5e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/widgets/zipball/4a1f2e836ede27f9cc32d7ce43172c2d088376f8", - "reference": "4a1f2e836ede27f9cc32d7ce43172c2d088376f8", + "url": "https://api.github.com/repos/filamentphp/widgets/zipball/f7e38b409e419a3675f9f4ed01b3544c566def5e", + "reference": "f7e38b409e419a3675f9f4ed01b3544c566def5e", "shasum": "" }, "require": { @@ -2152,7 +2152,7 @@ "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2023-12-04T15:57:33+00:00" + "time": "2023-12-12T14:20:54+00:00" }, { "name": "fruitcake/php-cors", @@ -3372,16 +3372,16 @@ }, { "name": "laravel/framework", - "version": "v10.35.0", + "version": "v10.37.3", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "91ec2d92d2f6007e9084fe06438b99c91845da69" + "reference": "996375dd61f8c6e4ac262b57ed485655d71fcbdc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/91ec2d92d2f6007e9084fe06438b99c91845da69", - "reference": "91ec2d92d2f6007e9084fe06438b99c91845da69", + "url": "https://api.github.com/repos/laravel/framework/zipball/996375dd61f8c6e4ac262b57ed485655d71fcbdc", + "reference": "996375dd61f8c6e4ac262b57ed485655d71fcbdc", "shasum": "" }, "require": { @@ -3570,7 +3570,7 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2023-12-05T14:50:33+00:00" + "time": "2023-12-13T20:10:58+00:00" }, { "name": "laravel/horizon", @@ -3972,16 +3972,16 @@ }, { "name": "laravel/telescope", - "version": "v4.17.2", + "version": "v4.17.3", "source": { "type": "git", "url": "https://github.com/laravel/telescope.git", - "reference": "64da53ee46b99ef328458eaed32202b51e325a11" + "reference": "17a420d0121b03ea90648dd4484b62abe6d3e261" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/telescope/zipball/64da53ee46b99ef328458eaed32202b51e325a11", - "reference": "64da53ee46b99ef328458eaed32202b51e325a11", + "url": "https://api.github.com/repos/laravel/telescope/zipball/17a420d0121b03ea90648dd4484b62abe6d3e261", + "reference": "17a420d0121b03ea90648dd4484b62abe6d3e261", "shasum": "" }, "require": { @@ -4037,9 +4037,9 @@ ], "support": { "issues": "https://github.com/laravel/telescope/issues", - "source": "https://github.com/laravel/telescope/tree/v4.17.2" + "source": "https://github.com/laravel/telescope/tree/v4.17.3" }, - "time": "2023-11-01T14:01:06+00:00" + "time": "2023-12-11T22:00:12+00:00" }, { "name": "laravel/tinker", @@ -4903,16 +4903,16 @@ }, { "name": "livewire/livewire", - "version": "v3.2.6", + "version": "v3.3.0", "source": { "type": "git", "url": "https://github.com/livewire/livewire.git", - "reference": "ecded08cdc4b36bbb4b26bcc7f7a171ea2e4368c" + "reference": "7c1f609515e74ef1197c08e56a5606571b3ec1d9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/livewire/livewire/zipball/ecded08cdc4b36bbb4b26bcc7f7a171ea2e4368c", - "reference": "ecded08cdc4b36bbb4b26bcc7f7a171ea2e4368c", + "url": "https://api.github.com/repos/livewire/livewire/zipball/7c1f609515e74ef1197c08e56a5606571b3ec1d9", + "reference": "7c1f609515e74ef1197c08e56a5606571b3ec1d9", "shasum": "" }, "require": { @@ -4965,7 +4965,7 @@ "description": "A front-end framework for Laravel.", "support": { "issues": "https://github.com/livewire/livewire/issues", - "source": "https://github.com/livewire/livewire/tree/v3.2.6" + "source": "https://github.com/livewire/livewire/tree/v3.3.0" }, "funding": [ { @@ -4973,7 +4973,7 @@ "type": "github" } ], - "time": "2023-12-04T21:20:19+00:00" + "time": "2023-12-11T18:04:00+00:00" }, { "name": "maennchen/zipstream-php", @@ -5547,16 +5547,16 @@ }, { "name": "nikic/php-parser", - "version": "v4.17.1", + "version": "v4.18.0", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d" + "reference": "1bcbb2179f97633e98bbbc87044ee2611c7d7999" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d", - "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/1bcbb2179f97633e98bbbc87044ee2611c7d7999", + "reference": "1bcbb2179f97633e98bbbc87044ee2611c7d7999", "shasum": "" }, "require": { @@ -5597,9 +5597,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.17.1" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.18.0" }, - "time": "2023-08-13T19:53:39+00:00" + "time": "2023-12-10T21:03:43+00:00" }, { "name": "nunomaduro/termwind", @@ -6578,16 +6578,16 @@ }, { "name": "phpstan/phpdoc-parser", - "version": "1.24.4", + "version": "1.24.5", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "6bd0c26f3786cd9b7c359675cb789e35a8e07496" + "reference": "fedf211ff14ec8381c9bf5714e33a7a552dd1acc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/6bd0c26f3786cd9b7c359675cb789e35a8e07496", - "reference": "6bd0c26f3786cd9b7c359675cb789e35a8e07496", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/fedf211ff14ec8381c9bf5714e33a7a552dd1acc", + "reference": "fedf211ff14ec8381c9bf5714e33a7a552dd1acc", "shasum": "" }, "require": { @@ -6619,9 +6619,9 @@ "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/1.24.4" + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.24.5" }, - "time": "2023-11-26T18:29:22+00:00" + "time": "2023-12-16T09:33:33+00:00" }, { "name": "pragmarx/google2fa", @@ -7828,16 +7828,16 @@ }, { "name": "react/socket", - "version": "v1.14.0", + "version": "v1.15.0", "source": { "type": "git", "url": "https://github.com/reactphp/socket.git", - "reference": "21591111d3ea62e31f2254280ca0656bc2b1bda6" + "reference": "216d3aec0b87f04a40ca04f481e6af01bdd1d038" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/socket/zipball/21591111d3ea62e31f2254280ca0656bc2b1bda6", - "reference": "21591111d3ea62e31f2254280ca0656bc2b1bda6", + "url": "https://api.github.com/repos/reactphp/socket/zipball/216d3aec0b87f04a40ca04f481e6af01bdd1d038", + "reference": "216d3aec0b87f04a40ca04f481e6af01bdd1d038", "shasum": "" }, "require": { @@ -7849,7 +7849,7 @@ "react/stream": "^1.2" }, "require-dev": { - "phpunit/phpunit": "^9.5 || ^5.7 || ^4.8.35", + "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36", "react/async": "^4 || ^3 || ^2", "react/promise-stream": "^1.4", "react/promise-timer": "^1.10" @@ -7857,7 +7857,7 @@ "type": "library", "autoload": { "psr-4": { - "React\\Socket\\": "src" + "React\\Socket\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -7896,7 +7896,7 @@ ], "support": { "issues": "https://github.com/reactphp/socket/issues", - "source": "https://github.com/reactphp/socket/tree/v1.14.0" + "source": "https://github.com/reactphp/socket/tree/v1.15.0" }, "funding": [ { @@ -7904,7 +7904,7 @@ "type": "open_collective" } ], - "time": "2023-08-25T13:48:09+00:00" + "time": "2023-12-15T11:02:10+00:00" }, { "name": "react/stream", @@ -13315,16 +13315,16 @@ }, { "name": "laravel/breeze", - "version": "v1.26.2", + "version": "v1.26.3", "source": { "type": "git", "url": "https://github.com/laravel/breeze.git", - "reference": "60f339c38098bc5adbf8614bf5d89b77647a06c5" + "reference": "a09d3664b5154377e2b0ebdf54fcae3d331e176d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/breeze/zipball/60f339c38098bc5adbf8614bf5d89b77647a06c5", - "reference": "60f339c38098bc5adbf8614bf5d89b77647a06c5", + "url": "https://api.github.com/repos/laravel/breeze/zipball/a09d3664b5154377e2b0ebdf54fcae3d331e176d", + "reference": "a09d3664b5154377e2b0ebdf54fcae3d331e176d", "shasum": "" }, "require": { @@ -13373,7 +13373,7 @@ "issues": "https://github.com/laravel/breeze/issues", "source": "https://github.com/laravel/breeze" }, - "time": "2023-11-24T14:41:28+00:00" + "time": "2023-12-06T18:27:17+00:00" }, { "name": "laravel/pint", @@ -13574,16 +13574,16 @@ }, { "name": "mockery/mockery", - "version": "1.6.6", + "version": "1.6.7", "source": { "type": "git", "url": "https://github.com/mockery/mockery.git", - "reference": "b8e0bb7d8c604046539c1115994632c74dcb361e" + "reference": "0cc058854b3195ba21dc6b1f7b1f60f4ef3a9c06" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/b8e0bb7d8c604046539c1115994632c74dcb361e", - "reference": "b8e0bb7d8c604046539c1115994632c74dcb361e", + "url": "https://api.github.com/repos/mockery/mockery/zipball/0cc058854b3195ba21dc6b1f7b1f60f4ef3a9c06", + "reference": "0cc058854b3195ba21dc6b1f7b1f60f4ef3a9c06", "shasum": "" }, "require": { @@ -13596,9 +13596,7 @@ }, "require-dev": { "phpunit/phpunit": "^8.5 || ^9.6.10", - "psalm/plugin-phpunit": "^0.18.4", - "symplify/easy-coding-standard": "^11.5.0", - "vimeo/psalm": "^4.30" + "symplify/easy-coding-standard": "^12.0.8" }, "type": "library", "autoload": { @@ -13655,7 +13653,7 @@ "security": "https://github.com/mockery/mockery/security/advisories", "source": "https://github.com/mockery/mockery" }, - "time": "2023-08-09T00:03:52+00:00" + "time": "2023-12-10T02:24:34+00:00" }, { "name": "myclabs/deep-copy", @@ -13916,16 +13914,16 @@ }, { "name": "pestphp/pest", - "version": "v2.28.0", + "version": "v2.28.1", "source": { "type": "git", "url": "https://github.com/pestphp/pest.git", - "reference": "9a8f6e64149592b2555a2519237abb39e9e4f1fe" + "reference": "9ee41910201ef8fc5f5b6d1390e5ec4558222927" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pestphp/pest/zipball/9a8f6e64149592b2555a2519237abb39e9e4f1fe", - "reference": "9a8f6e64149592b2555a2519237abb39e9e4f1fe", + "url": "https://api.github.com/repos/pestphp/pest/zipball/9ee41910201ef8fc5f5b6d1390e5ec4558222927", + "reference": "9ee41910201ef8fc5f5b6d1390e5ec4558222927", "shasum": "" }, "require": { @@ -13935,10 +13933,10 @@ "pestphp/pest-plugin": "^2.1.1", "pestphp/pest-plugin-arch": "^2.5.0", "php": "^8.1.0", - "phpunit/phpunit": "^10.5.2" + "phpunit/phpunit": "^10.5.3" }, "conflict": { - "phpunit/phpunit": ">10.5.2", + "phpunit/phpunit": ">10.5.3", "sebastian/exporter": "<5.1.0", "webmozart/assert": "<1.11.0" }, @@ -14008,7 +14006,7 @@ ], "support": { "issues": "https://github.com/pestphp/pest/issues", - "source": "https://github.com/pestphp/pest/tree/v2.28.0" + "source": "https://github.com/pestphp/pest/tree/v2.28.1" }, "funding": [ { @@ -14020,7 +14018,7 @@ "type": "github" } ], - "time": "2023-12-05T19:06:22+00:00" + "time": "2023-12-15T11:42:34+00:00" }, { "name": "pestphp/pest-plugin", @@ -14420,16 +14418,16 @@ }, { "name": "phpstan/phpstan", - "version": "1.10.48", + "version": "1.10.50", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "087ed4b5f4a7a6e8f3bbdfbfe98ce5c181380bc6" + "reference": "06a98513ac72c03e8366b5a0cb00750b487032e4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/087ed4b5f4a7a6e8f3bbdfbfe98ce5c181380bc6", - "reference": "087ed4b5f4a7a6e8f3bbdfbfe98ce5c181380bc6", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/06a98513ac72c03e8366b5a0cb00750b487032e4", + "reference": "06a98513ac72c03e8366b5a0cb00750b487032e4", "shasum": "" }, "require": { @@ -14478,20 +14476,20 @@ "type": "tidelift" } ], - "time": "2023-12-08T14:34:28+00:00" + "time": "2023-12-13T10:59:42+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "10.1.9", + "version": "10.1.10", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "a56a9ab2f680246adcf3db43f38ddf1765774735" + "reference": "599109c8ca6bae97b23482d557d2874c25a65e59" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/a56a9ab2f680246adcf3db43f38ddf1765774735", - "reference": "a56a9ab2f680246adcf3db43f38ddf1765774735", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/599109c8ca6bae97b23482d557d2874c25a65e59", + "reference": "599109c8ca6bae97b23482d557d2874c25a65e59", "shasum": "" }, "require": { @@ -14548,7 +14546,7 @@ "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/10.1.9" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.10" }, "funding": [ { @@ -14556,7 +14554,7 @@ "type": "github" } ], - "time": "2023-11-23T12:23:20+00:00" + "time": "2023-12-11T06:28:43+00:00" }, { "name": "phpunit/php-file-iterator", @@ -14803,16 +14801,16 @@ }, { "name": "phpunit/phpunit", - "version": "10.5.2", + "version": "10.5.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "5aedff46afba98dddecaa12349ec044d9103d4fe" + "reference": "6fce887c71076a73f32fd3e0774a6833fc5c7f19" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/5aedff46afba98dddecaa12349ec044d9103d4fe", - "reference": "5aedff46afba98dddecaa12349ec044d9103d4fe", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/6fce887c71076a73f32fd3e0774a6833fc5c7f19", + "reference": "6fce887c71076a73f32fd3e0774a6833fc5c7f19", "shasum": "" }, "require": { @@ -14884,7 +14882,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.2" + "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.3" }, "funding": [ { @@ -14900,7 +14898,7 @@ "type": "tidelift" } ], - "time": "2023-12-05T14:54:33+00:00" + "time": "2023-12-13T07:25:23+00:00" }, { "name": "rector/rector", @@ -16090,16 +16088,16 @@ }, { "name": "spatie/laravel-ignition", - "version": "2.3.1", + "version": "2.3.2", "source": { "type": "git", "url": "https://github.com/spatie/laravel-ignition.git", - "reference": "bf21cd15aa47fa4ec5d73bbc932005c70261efc8" + "reference": "4800661a195e15783477d99f7f8f669a49793996" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/bf21cd15aa47fa4ec5d73bbc932005c70261efc8", - "reference": "bf21cd15aa47fa4ec5d73bbc932005c70261efc8", + "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/4800661a195e15783477d99f7f8f669a49793996", + "reference": "4800661a195e15783477d99f7f8f669a49793996", "shasum": "" }, "require": { @@ -16178,7 +16176,7 @@ "type": "github" } ], - "time": "2023-10-09T12:55:26+00:00" + "time": "2023-12-15T13:44:49+00:00" }, { "name": "symfony/yaml", diff --git a/public/css/filament/filament/app.css b/public/css/filament/filament/app.css index f016ae297..453f8d29f 100644 --- a/public/css/filament/filament/app.css +++ b/public/css/filament/filament/app.css @@ -1 +1 @@ -/*! tailwindcss v3.3.5 | MIT License | https://tailwindcss.com*/*,:after,:before{border-color:rgba(var(--gray-200),1);border-style:solid;border-width:0;box-sizing:border-box}:after,:before{--tw-content:""}html{-webkit-text-size-adjust:100%;font-feature-settings:normal;font-family:var(--font-family),ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-variation-settings:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{font-feature-settings:inherit;color:inherit;font-family:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:rgba(var(--gray-400),1);opacity:1}input::placeholder,textarea::placeholder{color:rgba(var(--gray-400),1);opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]{display:none}[multiple],[type=date],[type=datetime-local],[type=email],[type=month],[type=number],[type=password],[type=search],[type=tel],[type=text],[type=time],[type=url],[type=week],input:where(:not([type])),select,textarea{--tw-shadow:0 0 #0000;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:rgba(var(--gray-500),var(--tw-border-opacity,1));border-radius:0;border-width:1px;font-size:1rem;line-height:1.5rem;padding:.5rem .75rem}[multiple]:focus,[type=date]:focus,[type=datetime-local]:focus,[type=email]:focus,[type=month]:focus,[type=number]:focus,[type=password]:focus,[type=search]:focus,[type=tel]:focus,[type=text]:focus,[type=time]:focus,[type=url]:focus,[type=week]:focus,input:where(:not([type])):focus,select:focus,textarea:focus{--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#2563eb;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);border-color:#2563eb;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);outline:2px solid transparent;outline-offset:2px}input::-moz-placeholder,textarea::-moz-placeholder{color:rgba(var(--gray-500),var(--tw-text-opacity,1));opacity:1}input::placeholder,textarea::placeholder{color:rgba(var(--gray-500),var(--tw-text-opacity,1));opacity:1}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-date-and-time-value{min-height:1.5em;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-meridiem-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-year-field{padding-bottom:0;padding-top:0}select{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3E%3Cpath stroke='rgba(var(--gray-500), var(--tw-stroke-opacity, 1))' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3E%3C/svg%3E");background-position:right .5rem center;background-repeat:no-repeat;background-size:1.5em 1.5em;padding-right:2.5rem;-webkit-print-color-adjust:exact;print-color-adjust:exact}[multiple],[size]:where(select:not([size="1"])){background-image:none;background-position:0 0;background-repeat:unset;background-size:initial;padding-right:.75rem;-webkit-print-color-adjust:unset;print-color-adjust:unset}[type=checkbox],[type=radio]{--tw-shadow:0 0 #0000;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;background-origin:border-box;border-color:rgba(var(--gray-500),var(--tw-border-opacity,1));border-width:1px;color:#2563eb;display:inline-block;flex-shrink:0;height:1rem;padding:0;-webkit-print-color-adjust:exact;print-color-adjust:exact;-webkit-user-select:none;-moz-user-select:none;user-select:none;vertical-align:middle;width:1rem}[type=checkbox]{border-radius:0}[type=radio]{border-radius:100%}[type=checkbox]:focus,[type=radio]:focus{--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:2px;--tw-ring-offset-color:#fff;--tw-ring-color:#2563eb;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);outline:2px solid transparent;outline-offset:2px}[type=checkbox]:checked,[type=radio]:checked{background-color:currentColor;background-position:50%;background-repeat:no-repeat;background-size:100% 100%;border-color:transparent}[type=checkbox]:checked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12.207 4.793a1 1 0 0 1 0 1.414l-5 5a1 1 0 0 1-1.414 0l-2-2a1 1 0 0 1 1.414-1.414L6.5 9.086l4.293-4.293a1 1 0 0 1 1.414 0z'/%3E%3C/svg%3E")}@media (forced-colors:active) {[type=checkbox]:checked{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=radio]:checked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='8' cy='8' r='3'/%3E%3C/svg%3E")}@media (forced-colors:active) {[type=radio]:checked{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=checkbox]:checked:focus,[type=checkbox]:checked:hover,[type=radio]:checked:focus,[type=radio]:checked:hover{background-color:currentColor;border-color:transparent}[type=checkbox]:indeterminate{background-color:currentColor;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3E%3Cpath stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8h8'/%3E%3C/svg%3E");background-position:50%;background-repeat:no-repeat;background-size:100% 100%;border-color:transparent}@media (forced-colors:active) {[type=checkbox]:indeterminate{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=checkbox]:indeterminate:focus,[type=checkbox]:indeterminate:hover{background-color:currentColor;border-color:transparent}[type=file]{background:unset;border-color:inherit;border-radius:0;border-width:0;font-size:unset;line-height:inherit;padding:0}[type=file]:focus{outline:1px solid ButtonText;outline:1px auto -webkit-focus-ring-color}html{-webkit-tap-highlight-color:transparent}:root.dark{color-scheme:dark}*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em;margin-top:1.25em}.prose :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-bottom:1.2em;margin-top:1.2em}.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);font-weight:500;text-decoration:underline}.prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal;margin-bottom:1.25em;margin-top:1.25em;padding-left:1.625em}.prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:disc;margin-bottom:1.25em;margin-top:1.25em;padding-left:1.625em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-counters);font-weight:400}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.25em}.prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-bottom:3em;margin-top:3em}.prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){border-left-color:var(--tw-prose-quote-borders);border-left-width:.25rem;color:var(--tw-prose-quotes);font-style:italic;font-weight:500;margin-bottom:1.6em;margin-top:1.6em;padding-left:1em;quotes:"\201C""\201D""\2018""\2019"}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-size:2.25em;font-weight:800;line-height:1.1111111;margin-bottom:.8888889em;margin-top:0}.prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:900}.prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-size:1.5em;font-weight:700;line-height:1.3333333;margin-bottom:1em;margin-top:2em}.prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:800}.prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-size:1.25em;font-weight:600;line-height:1.6;margin-bottom:.6em;margin-top:1.6em}.prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:700}.prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;line-height:1.5;margin-bottom:.5em;margin-top:1.5em}.prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:700}.prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){display:block;margin-bottom:2em;margin-top:2em}.prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.3125rem;box-shadow:0 0 0 1px rgb(var(--tw-prose-kbd-shadows)/10%),0 3px 0 rgb(var(--tw-prose-kbd-shadows)/10%);color:var(--tw-prose-kbd);font-family:inherit;font-size:.875em;font-weight:500;padding:.1875em .375em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code);font-size:.875em;font-weight:600}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:"`"}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:"`"}.prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:var(--tw-prose-pre-bg);border-radius:.375rem;color:var(--tw-prose-pre-code);font-size:.875em;font-weight:400;line-height:1.7142857;margin-bottom:1.7142857em;margin-top:1.7142857em;overflow-x:auto;padding:.8571429em 1.1428571em}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:transparent;border-radius:0;border-width:0;color:inherit;font-family:inherit;font-size:inherit;font-weight:inherit;line-height:inherit;padding:0}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:none}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em;line-height:1.7142857;margin-bottom:2em;margin-top:2em;table-layout:auto;text-align:left;width:100%}.prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-color:var(--tw-prose-th-borders);border-bottom-width:1px}.prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;padding-bottom:.5714286em;padding-left:.5714286em;padding-right:.5714286em;vertical-align:bottom}.prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-color:var(--tw-prose-td-borders);border-bottom-width:1px}.prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-color:var(--tw-prose-th-borders);border-top-width:1px}.prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose{--tw-prose-body:#374151;--tw-prose-headings:#111827;--tw-prose-lead:#4b5563;--tw-prose-links:#111827;--tw-prose-bold:#111827;--tw-prose-counters:#6b7280;--tw-prose-bullets:#d1d5db;--tw-prose-hr:#e5e7eb;--tw-prose-quotes:#111827;--tw-prose-quote-borders:#e5e7eb;--tw-prose-captions:#6b7280;--tw-prose-kbd:#111827;--tw-prose-kbd-shadows:17 24 39;--tw-prose-code:#111827;--tw-prose-pre-code:#e5e7eb;--tw-prose-pre-bg:#1f2937;--tw-prose-th-borders:#d1d5db;--tw-prose-td-borders:#e5e7eb;--tw-prose-invert-body:#d1d5db;--tw-prose-invert-headings:#fff;--tw-prose-invert-lead:#9ca3af;--tw-prose-invert-links:#fff;--tw-prose-invert-bold:#fff;--tw-prose-invert-counters:#9ca3af;--tw-prose-invert-bullets:#4b5563;--tw-prose-invert-hr:#374151;--tw-prose-invert-quotes:#f3f4f6;--tw-prose-invert-quote-borders:#374151;--tw-prose-invert-captions:#9ca3af;--tw-prose-invert-kbd:#fff;--tw-prose-invert-kbd-shadows:255 255 255;--tw-prose-invert-code:#fff;--tw-prose-invert-pre-code:#d1d5db;--tw-prose-invert-pre-bg:rgba(0,0,0,.5);--tw-prose-invert-th-borders:#4b5563;--tw-prose-invert-td-borders:#374151;font-size:1rem;line-height:1.75}.prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.5em;margin-top:.5em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.375em}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.75em;margin-top:.75em}.prose :where(.prose>ul>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.75em;margin-top:.75em}.prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em;margin-top:1.25em}.prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-left:1.625em}.prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding:.5714286em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.prose-sm{font-size:.875rem;line-height:1.7142857}.prose-sm :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em;margin-top:1.1428571em}.prose-sm :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.2857143em;line-height:1.5555556;margin-bottom:.8888889em;margin-top:.8888889em}.prose-sm :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em;margin-top:1.3333333em;padding-left:1.1111111em}.prose-sm :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:2.1428571em;line-height:1.2;margin-bottom:.8em;margin-top:0}.prose-sm :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.4285714em;line-height:1.4;margin-bottom:.8em;margin-top:1.6em}.prose-sm :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.2857143em;line-height:1.5555556;margin-bottom:.4444444em;margin-top:1.5555556em}.prose-sm :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){line-height:1.4285714;margin-bottom:.5714286em;margin-top:1.4285714em}.prose-sm :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7142857em;margin-top:1.7142857em}.prose-sm :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7142857em;margin-top:1.7142857em}.prose-sm :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose-sm :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7142857em;margin-top:1.7142857em}.prose-sm :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.3125rem;font-size:.8571429em;padding:.1428571em .3571429em}.prose-sm :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8571429em}.prose-sm :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.9em}.prose-sm :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8888889em}.prose-sm :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.25rem;font-size:.8571429em;line-height:1.6666667;margin-bottom:1.6666667em;margin-top:1.6666667em;padding:.6666667em 1em}.prose-sm :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em;margin-top:1.1428571em;padding-left:1.5714286em}.prose-sm :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em;margin-top:1.1428571em;padding-left:1.5714286em}.prose-sm :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.2857143em;margin-top:.2857143em}.prose-sm :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.4285714em}.prose-sm :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.4285714em}.prose-sm :where(.prose-sm>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.5714286em;margin-top:.5714286em}.prose-sm :where(.prose-sm>ul>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.1428571em}.prose-sm :where(.prose-sm>ul>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em}.prose-sm :where(.prose-sm>ol>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.1428571em}.prose-sm :where(.prose-sm>ol>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em}.prose-sm :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.5714286em;margin-top:.5714286em}.prose-sm :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em;margin-top:1.1428571em}.prose-sm :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.1428571em}.prose-sm :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.2857143em;padding-left:1.5714286em}.prose-sm :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2.8571429em;margin-top:2.8571429em}.prose-sm :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8571429em;line-height:1.5}.prose-sm :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){padding-bottom:.6666667em;padding-left:1em;padding-right:1em}.prose-sm :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose-sm :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose-sm :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding:.6666667em 1em}.prose-sm :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose-sm :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose-sm :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7142857em;margin-top:1.7142857em}.prose-sm :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose-sm :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8571429em;line-height:1.3333333;margin-top:.6666667em}.prose-sm :where(.prose-sm>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(.prose-sm>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.prose-base{font-size:1rem;line-height:1.75}.prose-base :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em;margin-top:1.25em}.prose-base :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.25em;line-height:1.6;margin-bottom:1.2em;margin-top:1.2em}.prose-base :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.6em;margin-top:1.6em;padding-left:1em}.prose-base :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:2.25em;line-height:1.1111111;margin-bottom:.8888889em;margin-top:0}.prose-base :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.5em;line-height:1.3333333;margin-bottom:1em;margin-top:2em}.prose-base :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.25em;line-height:1.6;margin-bottom:.6em;margin-top:1.6em}.prose-base :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){line-height:1.5;margin-bottom:.5em;margin-top:1.5em}.prose-base :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose-base :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose-base :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose-base :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose-base :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.3125rem;font-size:.875em;padding:.1875em .375em}.prose-base :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em}.prose-base :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em}.prose-base :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.9em}.prose-base :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.375rem;font-size:.875em;line-height:1.7142857;margin-bottom:1.7142857em;margin-top:1.7142857em;padding:.8571429em 1.1428571em}.prose-base :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em;margin-top:1.25em;padding-left:1.625em}.prose-base :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em;margin-top:1.25em;padding-left:1.625em}.prose-base :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.5em;margin-top:.5em}.prose-base :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.375em}.prose-base :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.375em}.prose-base :where(.prose-base>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.75em;margin-top:.75em}.prose-base :where(.prose-base>ul>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose-base :where(.prose-base>ul>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose-base :where(.prose-base>ol>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose-base :where(.prose-base>ol>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose-base :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.75em;margin-top:.75em}.prose-base :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em;margin-top:1.25em}.prose-base :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose-base :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-left:1.625em}.prose-base :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:3em;margin-top:3em}.prose-base :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-base :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-base :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-base :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-base :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em;line-height:1.7142857}.prose-base :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){padding-bottom:.5714286em;padding-left:.5714286em;padding-right:.5714286em}.prose-base :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose-base :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose-base :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding:.5714286em}.prose-base :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose-base :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose-base :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose-base :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose-base :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose-base :where(.prose-base>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-base :where(.prose-base>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.prose-lg{font-size:1.125rem;line-height:1.7777778}.prose-lg :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em;margin-top:1.3333333em}.prose-lg :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.2222222em;line-height:1.4545455;margin-bottom:1.0909091em;margin-top:1.0909091em}.prose-lg :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.6666667em;margin-top:1.6666667em;padding-left:1em}.prose-lg :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:2.6666667em;line-height:1;margin-bottom:.8333333em;margin-top:0}.prose-lg :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.6666667em;line-height:1.3333333;margin-bottom:1.0666667em;margin-top:1.8666667em}.prose-lg :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.3333333em;line-height:1.5;margin-bottom:.6666667em;margin-top:1.6666667em}.prose-lg :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){line-height:1.5555556;margin-bottom:.4444444em;margin-top:1.7777778em}.prose-lg :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7777778em;margin-top:1.7777778em}.prose-lg :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7777778em;margin-top:1.7777778em}.prose-lg :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose-lg :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7777778em;margin-top:1.7777778em}.prose-lg :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.3125rem;font-size:.8888889em;padding:.2222222em .4444444em}.prose-lg :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8888889em}.prose-lg :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8666667em}.prose-lg :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em}.prose-lg :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.375rem;font-size:.8888889em;line-height:1.75;margin-bottom:2em;margin-top:2em;padding:1em 1.5em}.prose-lg :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em;margin-top:1.3333333em;padding-left:1.5555556em}.prose-lg :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em;margin-top:1.3333333em;padding-left:1.5555556em}.prose-lg :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.6666667em;margin-top:.6666667em}.prose-lg :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.4444444em}.prose-lg :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.4444444em}.prose-lg :where(.prose-lg>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.8888889em;margin-top:.8888889em}.prose-lg :where(.prose-lg>ul>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.3333333em}.prose-lg :where(.prose-lg>ul>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em}.prose-lg :where(.prose-lg>ol>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.3333333em}.prose-lg :where(.prose-lg>ol>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em}.prose-lg :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.8888889em;margin-top:.8888889em}.prose-lg :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em;margin-top:1.3333333em}.prose-lg :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.3333333em}.prose-lg :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.6666667em;padding-left:1.5555556em}.prose-lg :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:3.1111111em;margin-top:3.1111111em}.prose-lg :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-lg :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-lg :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-lg :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-lg :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8888889em;line-height:1.5}.prose-lg :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){padding-bottom:.75em;padding-left:.75em;padding-right:.75em}.prose-lg :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose-lg :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose-lg :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding:.75em}.prose-lg :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose-lg :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose-lg :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7777778em;margin-top:1.7777778em}.prose-lg :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose-lg :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8888889em;line-height:1.5;margin-top:1em}.prose-lg :where(.prose-lg>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-lg :where(.prose-lg>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.sr-only{clip:rect(0,0,0,0);border-width:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.visible{visibility:visible}.invisible{visibility:hidden}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.inset-4{inset:1rem}.inset-x-0{left:0;right:0}.inset-x-4{left:1rem;right:1rem}.inset-y-0{bottom:0;top:0}.-bottom-1\/2{bottom:-50%}.-top-1{top:-.25rem}.-top-1\/2{top:-50%}.-top-2{top:-.5rem}.-top-3{top:-.75rem}.bottom-0{bottom:0}.bottom-1\/2{bottom:50%}.end-0{inset-inline-end:0}.end-4{inset-inline-end:1rem}.end-6{inset-inline-end:1.5rem}.left-3{left:.75rem}.start-0{inset-inline-start:0}.start-full{inset-inline-start:100%}.top-0{top:0}.top-1\/2{top:50%}.top-4{top:1rem}.top-6{top:1.5rem}.isolate{isolation:isolate}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.z-\[1\]{z-index:1}.col-\[--col-span-default\]{grid-column:var(--col-span-default)}.col-span-full{grid-column:1/-1}.col-start-2{grid-column-start:2}.col-start-3{grid-column-start:3}.col-start-\[--col-start-default\]{grid-column-start:var(--col-start-default)}.-m-0{margin:0}.-m-0\.5{margin:-.125rem}.-m-1{margin:-.25rem}.-m-1\.5{margin:-.375rem}.-m-2{margin:-.5rem}.-m-2\.5{margin:-.625rem}.-m-3{margin:-.75rem}.-m-3\.5{margin:-.875rem}.-mx-2{margin-left:-.5rem;margin-right:-.5rem}.-mx-4{margin-left:-1rem;margin-right:-1rem}.-mx-6{margin-left:-1.5rem;margin-right:-1.5rem}.-my-1{margin-bottom:-.25rem;margin-top:-.25rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-3{margin-left:.75rem;margin-right:.75rem}.mx-auto{margin-left:auto;margin-right:auto}.my-16{margin-bottom:4rem;margin-top:4rem}.my-2{margin-bottom:.5rem;margin-top:.5rem}.my-4{margin-bottom:1rem;margin-top:1rem}.my-auto{margin-bottom:auto;margin-top:auto}.\!mt-0{margin-top:0!important}.-mb-4{margin-bottom:-1rem}.-mb-6{margin-bottom:-1.5rem}.-me-2{margin-inline-end:-.5rem}.-ms-0{margin-inline-start:0}.-ms-0\.5{margin-inline-start:-.125rem}.-ms-1{margin-inline-start:-.25rem}.-ms-2{margin-inline-start:-.5rem}.-mt-4{margin-top:-1rem}.-mt-6{margin-top:-1.5rem}.mb-2{margin-bottom:.5rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.me-1{margin-inline-end:.25rem}.me-4{margin-inline-end:1rem}.me-6{margin-inline-end:1.5rem}.ml-auto{margin-left:auto}.ms-1{margin-inline-start:.25rem}.ms-auto{margin-inline-start:auto}.mt-0{margin-top:0}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-6{margin-top:1.5rem}.mt-auto{margin-top:auto}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.inline-grid{display:inline-grid}.hidden{display:none}.h-0{height:0}.h-1{height:.25rem}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-11{height:2.75rem}.h-16{height:4rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-32{height:8rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-96{height:24rem}.h-full{height:100%}.h-screen{height:100vh}.max-h-96{max-height:24rem}.min-h-\[theme\(spacing\.48\)\]{min-height:12rem}.min-h-full{min-height:100%}.min-h-screen{min-height:100vh}.w-1{width:.25rem}.w-1\.5{width:.375rem}.w-1\/2{width:50%}.w-10{width:2.5rem}.w-11{width:2.75rem}.w-16{width:4rem}.w-20{width:5rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-32{width:8rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-7{width:1.75rem}.w-72{width:18rem}.w-8{width:2rem}.w-9{width:2.25rem}.w-\[--sidebar-width\]{width:var(--sidebar-width)}.w-\[calc\(100\%\+2rem\)\]{width:calc(100% + 2rem)}.w-auto{width:auto}.w-full{width:100%}.w-max{width:-moz-max-content;width:max-content}.w-px{width:1px}.w-screen{width:100vw}.min-w-0{min-width:0}.min-w-\[theme\(spacing\.4\)\]{min-width:1rem}.min-w-\[theme\(spacing\.5\)\]{min-width:1.25rem}.min-w-\[theme\(spacing\.6\)\]{min-width:1.5rem}.min-w-\[theme\(spacing\.8\)\]{min-width:2rem}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.max-w-4xl{max-width:56rem}.max-w-5xl{max-width:64rem}.max-w-6xl{max-width:72rem}.max-w-7xl{max-width:80rem}.max-w-\[14rem\]{max-width:14rem}.max-w-fit{max-width:-moz-fit-content;max-width:fit-content}.max-w-full{max-width:100%}.max-w-lg{max-width:32rem}.max-w-max{max-width:-moz-max-content;max-width:max-content}.max-w-md{max-width:28rem}.max-w-min{max-width:-moz-min-content;max-width:min-content}.max-w-none{max-width:none}.max-w-prose{max-width:65ch}.max-w-screen-2xl{max-width:1536px}.max-w-screen-lg{max-width:1024px}.max-w-screen-md{max-width:768px}.max-w-screen-sm{max-width:640px}.max-w-screen-xl{max-width:1280px}.max-w-sm{max-width:24rem}.max-w-xl{max-width:36rem}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.shrink-0{flex-shrink:0}.flex-grow,.grow{flex-grow:1}.table-auto{table-layout:auto}.-translate-x-1\/2{--tw-translate-x:-50%}.-translate-x-12,.-translate-x-1\/2{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-x-12{--tw-translate-x:-3rem}.-translate-x-5{--tw-translate-x:-1.25rem}.-translate-x-5,.-translate-x-full{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-x-full{--tw-translate-x:-100%}.-translate-y-12{--tw-translate-y:-3rem}.-translate-y-12,.translate-x-0{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-0{--tw-translate-x:0px}.translate-x-12{--tw-translate-x:3rem}.translate-x-12,.translate-x-5{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-5{--tw-translate-x:1.25rem}.translate-x-full{--tw-translate-x:100%}.translate-x-full,.translate-y-12{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-12{--tw-translate-y:3rem}.-rotate-180{--tw-rotate:-180deg}.-rotate-180,.rotate-180{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180{--tw-rotate:180deg}.scale-100{--tw-scale-x:1;--tw-scale-y:1}.scale-100,.scale-95{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-95{--tw-scale-x:.95;--tw-scale-y:.95}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(1turn)}}.animate-spin{animation:spin 1s linear infinite}.cursor-default{cursor:default}.cursor-move{cursor:move}.cursor-pointer{cursor:pointer}.cursor-wait{cursor:wait}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize-none{resize:none}.list-inside{list-style-position:inside}.list-disc{list-style-type:disc}.columns-\[--cols-default\]{-moz-columns:var(--cols-default);columns:var(--cols-default)}.break-inside-avoid{-moz-column-break-inside:avoid;break-inside:avoid}.auto-cols-fr{grid-auto-columns:minmax(0,1fr)}.grid-flow-col{grid-auto-flow:column}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.grid-cols-\[--cols-default\]{grid-template-columns:var(--cols-default)}.grid-cols-\[1fr_auto_1fr\]{grid-template-columns:1fr auto 1fr}.grid-cols-\[repeat\(7\2c minmax\(theme\(spacing\.7\)\2c 1fr\)\)\]{grid-template-columns:repeat(7,minmax(1.75rem,1fr))}.grid-cols-\[repeat\(auto-fit\2c minmax\(0\2c 1fr\)\)\]{grid-template-columns:repeat(auto-fit,minmax(0,1fr))}.flex-row-reverse{flex-direction:row-reverse}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.content-start{align-content:flex-start}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-items-start{justify-items:start}.justify-items-center{justify-items:center}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.gap-x-1{-moz-column-gap:.25rem;column-gap:.25rem}.gap-x-1\.5{-moz-column-gap:.375rem;column-gap:.375rem}.gap-x-2{-moz-column-gap:.5rem;column-gap:.5rem}.gap-x-2\.5{-moz-column-gap:.625rem;column-gap:.625rem}.gap-x-3{-moz-column-gap:.75rem;column-gap:.75rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-x-5{-moz-column-gap:1.25rem;column-gap:1.25rem}.gap-x-6{-moz-column-gap:1.5rem;column-gap:1.5rem}.gap-y-1{row-gap:.25rem}.gap-y-1\.5{row-gap:.375rem}.gap-y-2{row-gap:.5rem}.gap-y-3{row-gap:.75rem}.gap-y-4{row-gap:1rem}.gap-y-6{row-gap:1.5rem}.gap-y-7{row-gap:1.75rem}.gap-y-8{row-gap:2rem}.gap-y-px{row-gap:1px}.-space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-.25rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-.25rem*var(--tw-space-x-reverse))}.-space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-.5rem*var(--tw-space-x-reverse))}.-space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-.75rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-.75rem*var(--tw-space-x-reverse))}.-space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-1rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-1rem*var(--tw-space-x-reverse))}.-space-x-5>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-1.25rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-1.25rem*var(--tw-space-x-reverse))}.-space-x-6>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-1.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-1.5rem*var(--tw-space-x-reverse))}.-space-x-7>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-1.75rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-1.75rem*var(--tw-space-x-reverse))}.-space-x-8>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-2rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-2rem*var(--tw-space-x-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.25rem*var(--tw-space-y-reverse));margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.5rem*var(--tw-space-y-reverse));margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.75rem*var(--tw-space-y-reverse));margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1rem*var(--tw-space-y-reverse));margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1.5rem*var(--tw-space-y-reverse));margin-top:calc(1.5rem*(1 - var(--tw-space-y-reverse)))}.divide-x>:not([hidden])~:not([hidden]){--tw-divide-x-reverse:0;border-left-width:calc(1px*(1 - var(--tw-divide-x-reverse)));border-right-width:calc(1px*var(--tw-divide-x-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-bottom-width:calc(1px*var(--tw-divide-y-reverse));border-top-width:calc(1px*(1 - var(--tw-divide-y-reverse)))}.divide-gray-100>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgba(var(--gray-100),var(--tw-divide-opacity))}.divide-gray-200>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgba(var(--gray-200),var(--tw-divide-opacity))}.divide-gray-950\/10>:not([hidden])~:not([hidden]){border-color:rgba(var(--gray-950),.1)}.self-start{align-self:flex-start}.self-stretch{align-self:stretch}.justify-self-start{justify-self:start}.justify-self-end{justify-self:end}.justify-self-center{justify-self:center}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-hidden{overflow-y:hidden}.overflow-x-clip{overflow-x:clip}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-normal{white-space:normal}.whitespace-nowrap{white-space:nowrap}.break-words{overflow-wrap:break-word}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-xl{border-radius:.75rem}.rounded-b-xl{border-bottom-left-radius:.75rem;border-bottom-right-radius:.75rem}.rounded-t-xl{border-top-left-radius:.75rem;border-top-right-radius:.75rem}.border{border-width:1px}.border-2{border-width:2px}.border-x-\[0\.5px\]{border-left-width:.5px;border-right-width:.5px}.border-y{border-bottom-width:1px;border-top-width:1px}.\!border-t-0{border-top-width:0!important}.border-b{border-bottom-width:1px}.border-b-0{border-bottom-width:0}.border-e{border-inline-end-width:1px}.border-s{border-inline-start-width:1px}.border-t{border-top-width:1px}.\!border-none{border-style:none!important}.border-none{border-style:none}.border-gray-100{--tw-border-opacity:1;border-color:rgba(var(--gray-100),var(--tw-border-opacity))}.border-gray-200{--tw-border-opacity:1;border-color:rgba(var(--gray-200),var(--tw-border-opacity))}.border-gray-300{--tw-border-opacity:1;border-color:rgba(var(--gray-300),var(--tw-border-opacity))}.border-gray-600{--tw-border-opacity:1;border-color:rgba(var(--gray-600),var(--tw-border-opacity))}.border-primary-500{--tw-border-opacity:1;border-color:rgba(var(--primary-500),var(--tw-border-opacity))}.border-primary-600{--tw-border-opacity:1;border-color:rgba(var(--primary-600),var(--tw-border-opacity))}.border-transparent{border-color:transparent}.border-t-gray-200{--tw-border-opacity:1;border-top-color:rgba(var(--gray-200),var(--tw-border-opacity))}.\!bg-gray-50{--tw-bg-opacity:1!important;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))!important}.\!bg-gray-700{--tw-bg-opacity:1!important;background-color:rgba(var(--gray-700),var(--tw-bg-opacity))!important}.bg-black\/50{background-color:rgba(0,0,0,.5)}.bg-custom-100{--tw-bg-opacity:1;background-color:rgba(var(--c-100),var(--tw-bg-opacity))}.bg-custom-50{--tw-bg-opacity:1;background-color:rgba(var(--c-50),var(--tw-bg-opacity))}.bg-custom-600{--tw-bg-opacity:1;background-color:rgba(var(--c-600),var(--tw-bg-opacity))}.bg-gray-100{--tw-bg-opacity:1;background-color:rgba(var(--gray-100),var(--tw-bg-opacity))}.bg-gray-200{--tw-bg-opacity:1;background-color:rgba(var(--gray-200),var(--tw-bg-opacity))}.bg-gray-300{--tw-bg-opacity:1;background-color:rgba(var(--gray-300),var(--tw-bg-opacity))}.bg-gray-400{--tw-bg-opacity:1;background-color:rgba(var(--gray-400),var(--tw-bg-opacity))}.bg-gray-50{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.bg-gray-950\/50{background-color:rgba(var(--gray-950),.5)}.bg-primary-500{--tw-bg-opacity:1;background-color:rgba(var(--primary-500),var(--tw-bg-opacity))}.bg-primary-600{--tw-bg-opacity:1;background-color:rgba(var(--primary-600),var(--tw-bg-opacity))}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.bg-white\/0{background-color:hsla(0,0%,100%,0)}.bg-white\/5{background-color:hsla(0,0%,100%,.05)}.bg-cover{background-size:cover}.bg-center{background-position:50%}.object-cover{-o-object-fit:cover;object-fit:cover}.object-center{-o-object-position:center;object-position:center}.p-0{padding:0}.p-0\.5{padding:.125rem}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.px-0{padding-left:0;padding-right:0}.px-0\.5{padding-left:.125rem;padding-right:.125rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-3\.5{padding-left:.875rem;padding-right:.875rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-0{padding-bottom:0;padding-top:0}.py-0\.5{padding-bottom:.125rem;padding-top:.125rem}.py-1{padding-bottom:.25rem;padding-top:.25rem}.py-1\.5{padding-bottom:.375rem;padding-top:.375rem}.py-12{padding-bottom:3rem;padding-top:3rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.py-2\.5{padding-bottom:.625rem;padding-top:.625rem}.py-3{padding-bottom:.75rem;padding-top:.75rem}.py-3\.5{padding-bottom:.875rem;padding-top:.875rem}.py-4{padding-bottom:1rem;padding-top:1rem}.py-5{padding-bottom:1.25rem;padding-top:1.25rem}.py-6{padding-bottom:1.5rem;padding-top:1.5rem}.py-8{padding-bottom:2rem;padding-top:2rem}.pb-4{padding-bottom:1rem}.pb-6{padding-bottom:1.5rem}.pe-0{padding-inline-end:0}.pe-1{padding-inline-end:.25rem}.pe-2{padding-inline-end:.5rem}.pe-3{padding-inline-end:.75rem}.pe-4{padding-inline-end:1rem}.pe-6{padding-inline-end:1.5rem}.pe-8{padding-inline-end:2rem}.ps-0{padding-inline-start:0}.ps-1{padding-inline-start:.25rem}.ps-2{padding-inline-start:.5rem}.ps-3{padding-inline-start:.75rem}.ps-4{padding-inline-start:1rem}.ps-\[5\.25rem\]{padding-inline-start:5.25rem}.pt-0{padding-top:0}.pt-2{padding-top:.5rem}.pt-4{padding-top:1rem}.pt-6{padding-top:1.5rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-justify{text-align:justify}.text-start{text-align:start}.text-end{text-align:end}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.font-sans{font-family:var(--font-family),ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"}.font-serif{font-family:ui-serif,Georgia,Cambria,Times New Roman,Times,serif}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-black{font-weight:900}.font-bold{font-weight:700}.font-extrabold{font-weight:800}.font-extralight{font-weight:200}.font-light{font-weight:300}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.font-thin{font-weight:100}.capitalize{text-transform:capitalize}.italic{font-style:italic}.leading-5{line-height:1.25rem}.leading-6{line-height:1.5rem}.leading-loose{line-height:2}.tracking-tight{letter-spacing:-.025em}.tracking-tighter{letter-spacing:-.05em}.text-custom-400{--tw-text-opacity:1;color:rgba(var(--c-400),var(--tw-text-opacity))}.text-custom-50{--tw-text-opacity:1;color:rgba(var(--c-50),var(--tw-text-opacity))}.text-custom-500{--tw-text-opacity:1;color:rgba(var(--c-500),var(--tw-text-opacity))}.text-custom-600{--tw-text-opacity:1;color:rgba(var(--c-600),var(--tw-text-opacity))}.text-custom-700\/50{color:rgba(var(--c-700),.5)}.text-danger-600{--tw-text-opacity:1;color:rgba(var(--danger-600),var(--tw-text-opacity))}.text-gray-100{--tw-text-opacity:1;color:rgba(var(--gray-100),var(--tw-text-opacity))}.text-gray-200{--tw-text-opacity:1;color:rgba(var(--gray-200),var(--tw-text-opacity))}.text-gray-400{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity:1;color:rgba(var(--gray-600),var(--tw-text-opacity))}.text-gray-700{--tw-text-opacity:1;color:rgba(var(--gray-700),var(--tw-text-opacity))}.text-gray-700\/50{color:rgba(var(--gray-700),.5)}.text-gray-950{--tw-text-opacity:1;color:rgba(var(--gray-950),var(--tw-text-opacity))}.text-primary-400{--tw-text-opacity:1;color:rgba(var(--primary-400),var(--tw-text-opacity))}.text-primary-500{--tw-text-opacity:1;color:rgba(var(--primary-500),var(--tw-text-opacity))}.text-primary-600{--tw-text-opacity:1;color:rgba(var(--primary-600),var(--tw-text-opacity))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.underline{text-decoration-line:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-50{opacity:.5}.opacity-70{opacity:.7}.shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.shadow,.shadow-lg{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.shadow-sm,.shadow-xl{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color)}.outline-none{outline:2px solid transparent;outline-offset:2px}.ring{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring,.ring-0{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-0{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring-1{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring-1,.ring-2{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-2{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring-4{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-inset{--tw-ring-inset:inset}.ring-custom-600{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--c-600),var(--tw-ring-opacity))}.ring-custom-600\/10{--tw-ring-color:rgba(var(--c-600),0.1)}.ring-custom-600\/20{--tw-ring-color:rgba(var(--c-600),0.2)}.ring-danger-600{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--danger-600),var(--tw-ring-opacity))}.ring-gray-200{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--gray-200),var(--tw-ring-opacity))}.ring-gray-300{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--gray-300),var(--tw-ring-opacity))}.ring-gray-600\/10{--tw-ring-color:rgba(var(--gray-600),0.1)}.ring-gray-900\/10{--tw-ring-color:rgba(var(--gray-900),0.1)}.ring-gray-950\/10{--tw-ring-color:rgba(var(--gray-950),0.1)}.ring-gray-950\/5{--tw-ring-color:rgba(var(--gray-950),0.05)}.ring-white{--tw-ring-opacity:1;--tw-ring-color:rgb(255 255 255/var(--tw-ring-opacity))}.ring-white\/10{--tw-ring-color:hsla(0,0%,100%,.1)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-all{transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-colors{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-opacity{transition-duration:.15s;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}.delay-100{transition-delay:.1s}.duration-100{transition-duration:.1s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.duration-500{transition-duration:.5s}.duration-75{transition-duration:75ms}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.\[transform\:translateZ\(0\)\]{transform:translateZ(0)}:is(.dark .dark\:prose-invert){--tw-prose-body:var(--tw-prose-invert-body);--tw-prose-headings:var(--tw-prose-invert-headings);--tw-prose-lead:var(--tw-prose-invert-lead);--tw-prose-links:var(--tw-prose-invert-links);--tw-prose-bold:var(--tw-prose-invert-bold);--tw-prose-counters:var(--tw-prose-invert-counters);--tw-prose-bullets:var(--tw-prose-invert-bullets);--tw-prose-hr:var(--tw-prose-invert-hr);--tw-prose-quotes:var(--tw-prose-invert-quotes);--tw-prose-quote-borders:var(--tw-prose-invert-quote-borders);--tw-prose-captions:var(--tw-prose-invert-captions);--tw-prose-kbd:var(--tw-prose-invert-kbd);--tw-prose-kbd-shadows:var(--tw-prose-invert-kbd-shadows);--tw-prose-code:var(--tw-prose-invert-code);--tw-prose-pre-code:var(--tw-prose-invert-pre-code);--tw-prose-pre-bg:var(--tw-prose-invert-pre-bg);--tw-prose-th-borders:var(--tw-prose-invert-th-borders);--tw-prose-td-borders:var(--tw-prose-invert-td-borders)}.placeholder\:text-gray-400::-moz-placeholder{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.placeholder\:text-gray-400::placeholder{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.before\:absolute:before{content:var(--tw-content);position:absolute}.before\:inset-y-0:before{bottom:0;content:var(--tw-content);top:0}.before\:start-0:before{content:var(--tw-content);inset-inline-start:0}.before\:h-full:before{content:var(--tw-content);height:100%}.before\:w-0:before{content:var(--tw-content);width:0}.before\:w-0\.5:before{content:var(--tw-content);width:.125rem}.before\:bg-primary-600:before{--tw-bg-opacity:1;background-color:rgba(var(--primary-600),var(--tw-bg-opacity));content:var(--tw-content)}.first\:border-s-0:first-child{border-inline-start-width:0}.first\:border-t-0:first-child{border-top-width:0}.last\:border-e-0:last-child{border-inline-end-width:0}.first-of-type\:ps-1:first-of-type{padding-inline-start:.25rem}.last-of-type\:pe-1:last-of-type{padding-inline-end:.25rem}.checked\:ring-0:checked{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-within\:bg-gray-50:focus-within{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.focus-within\:ring-2:focus-within{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-within\:ring-danger-600:focus-within{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--danger-600),var(--tw-ring-opacity))}.focus-within\:ring-primary-600:focus-within{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-600),var(--tw-ring-opacity))}.hover\:bg-custom-400\/10:hover{background-color:rgba(var(--c-400),.1)}.hover\:bg-custom-50:hover{--tw-bg-opacity:1;background-color:rgba(var(--c-50),var(--tw-bg-opacity))}.hover\:bg-custom-500:hover{--tw-bg-opacity:1;background-color:rgba(var(--c-500),var(--tw-bg-opacity))}.hover\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgba(var(--gray-100),var(--tw-bg-opacity))}.hover\:bg-gray-400\/10:hover{background-color:rgba(var(--gray-400),.1)}.hover\:bg-gray-50:hover{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.hover\:text-custom-600:hover{--tw-text-opacity:1;color:rgba(var(--c-600),var(--tw-text-opacity))}.hover\:text-custom-700\/75:hover{color:rgba(var(--c-700),.75)}.hover\:text-gray-500:hover{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.hover\:text-gray-700:hover{--tw-text-opacity:1;color:rgba(var(--gray-700),var(--tw-text-opacity))}.hover\:text-gray-700\/75:hover{color:rgba(var(--gray-700),.75)}.hover\:opacity-100:hover{opacity:1}.focus\:ring-0:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\:ring-0:focus,.focus\:ring-2:focus{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\:ring-danger-600:focus{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--danger-600),var(--tw-ring-opacity))}.focus\:ring-primary-600:focus{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-600),var(--tw-ring-opacity))}.focus\:ring-offset-0:focus{--tw-ring-offset-width:0px}.checked\:focus\:ring-danger-500\/50:focus:checked{--tw-ring-color:rgba(var(--danger-500),0.5)}.checked\:focus\:ring-primary-500\/50:focus:checked{--tw-ring-color:rgba(var(--primary-500),0.5)}.focus-visible\:z-10:focus-visible{z-index:10}.focus-visible\:border-primary-500:focus-visible{--tw-border-opacity:1;border-color:rgba(var(--primary-500),var(--tw-border-opacity))}.focus-visible\:bg-custom-50:focus-visible{--tw-bg-opacity:1;background-color:rgba(var(--c-50),var(--tw-bg-opacity))}.focus-visible\:bg-gray-100:focus-visible{--tw-bg-opacity:1;background-color:rgba(var(--gray-100),var(--tw-bg-opacity))}.focus-visible\:bg-gray-50:focus-visible{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.focus-visible\:text-custom-700\/75:focus-visible{color:rgba(var(--c-700),.75)}.focus-visible\:text-gray-500:focus-visible{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.focus-visible\:text-gray-700\/75:focus-visible{color:rgba(var(--gray-700),.75)}.focus-visible\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\:ring-1:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\:ring-inset:focus-visible{--tw-ring-inset:inset}.focus-visible\:ring-custom-500\/50:focus-visible{--tw-ring-color:rgba(var(--c-500),0.5)}.focus-visible\:ring-custom-600:focus-visible{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--c-600),var(--tw-ring-opacity))}.focus-visible\:ring-danger-600:focus-visible{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--danger-600),var(--tw-ring-opacity))}.focus-visible\:ring-gray-400\/40:focus-visible{--tw-ring-color:rgba(var(--gray-400),0.4)}.focus-visible\:ring-primary-500:focus-visible{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-500),var(--tw-ring-opacity))}.focus-visible\:ring-primary-600:focus-visible{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-600),var(--tw-ring-opacity))}.enabled\:cursor-wait:enabled{cursor:wait}.enabled\:opacity-70:enabled{opacity:.7}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:bg-gray-50:disabled{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.disabled\:text-gray-50:disabled{--tw-text-opacity:1;color:rgba(var(--gray-50),var(--tw-text-opacity))}.disabled\:text-gray-500:disabled{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.disabled\:opacity-70:disabled{opacity:.7}.disabled\:\[-webkit-text-fill-color\:theme\(colors\.gray\.500\)\]:disabled{-webkit-text-fill-color:rgba(var(--gray-500),1)}.disabled\:placeholder\:\[-webkit-text-fill-color\:theme\(colors\.gray\.400\)\]:disabled::-moz-placeholder{-webkit-text-fill-color:rgba(var(--gray-400),1)}.disabled\:placeholder\:\[-webkit-text-fill-color\:theme\(colors\.gray\.400\)\]:disabled::placeholder{-webkit-text-fill-color:rgba(var(--gray-400),1)}.disabled\:checked\:bg-current:checked:disabled{background-color:currentColor}.disabled\:checked\:text-gray-400:checked:disabled{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.group\/item:first-child .group-first\/item\:rounded-s-lg{border-end-start-radius:.5rem;border-start-start-radius:.5rem}.group\/item:last-child .group-last\/item\:rounded-e-lg{border-end-end-radius:.5rem;border-start-end-radius:.5rem}.group:hover .group-hover\:text-gray-500,.group\/button:hover .group-hover\/button\:text-gray-500{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.group:hover .group-hover\:text-gray-700{--tw-text-opacity:1;color:rgba(var(--gray-700),var(--tw-text-opacity))}.group\/item:hover .group-hover\/item\:underline,.group\/link:hover .group-hover\/link\:underline{text-decoration-line:underline}.group:focus-visible .group-focus-visible\:text-gray-500{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.group:focus-visible .group-focus-visible\:text-gray-700{--tw-text-opacity:1;color:rgba(var(--gray-700),var(--tw-text-opacity))}.group\/item:focus-visible .group-focus-visible\/item\:underline{text-decoration-line:underline}.group\/link:focus-visible .group-focus-visible\/link\:underline{text-decoration-line:underline}:is([dir=ltr] .ltr\:hidden){display:none}:is([dir=rtl] .rtl\:hidden){display:none}:is([dir=rtl] .rtl\:-translate-x-0){--tw-translate-x:-0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}:is([dir=rtl] .rtl\:-translate-x-5){--tw-translate-x:-1.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}:is([dir=rtl] .rtl\:-translate-x-full){--tw-translate-x:-100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}:is([dir=rtl] .rtl\:translate-x-1\/2){--tw-translate-x:50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}:is([dir=rtl] .rtl\:translate-x-full){--tw-translate-x:100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}:is([dir=rtl] .rtl\:rotate-180){--tw-rotate:180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}:is([dir=rtl] .rtl\:flex-row-reverse){flex-direction:row-reverse}:is([dir=rtl] .rtl\:divide-x-reverse)>:not([hidden])~:not([hidden]){--tw-divide-x-reverse:1}:is(.dark .dark\:flex){display:flex}:is(.dark .dark\:hidden){display:none}:is(.dark .dark\:divide-white\/10)>:not([hidden])~:not([hidden]){border-color:hsla(0,0%,100%,.1)}:is(.dark .dark\:divide-white\/20)>:not([hidden])~:not([hidden]){border-color:hsla(0,0%,100%,.2)}:is(.dark .dark\:divide-white\/5)>:not([hidden])~:not([hidden]){border-color:hsla(0,0%,100%,.05)}:is(.dark .dark\:border-gray-600){--tw-border-opacity:1;border-color:rgba(var(--gray-600),var(--tw-border-opacity))}:is(.dark .dark\:border-gray-700){--tw-border-opacity:1;border-color:rgba(var(--gray-700),var(--tw-border-opacity))}:is(.dark .dark\:border-primary-500){--tw-border-opacity:1;border-color:rgba(var(--primary-500),var(--tw-border-opacity))}:is(.dark .dark\:border-white\/10){border-color:hsla(0,0%,100%,.1)}:is(.dark .dark\:border-white\/5){border-color:hsla(0,0%,100%,.05)}:is(.dark .dark\:border-t-white\/10){border-top-color:hsla(0,0%,100%,.1)}:is(.dark .dark\:\!bg-gray-700){--tw-bg-opacity:1!important;background-color:rgba(var(--gray-700),var(--tw-bg-opacity))!important}:is(.dark .dark\:bg-custom-400\/10){background-color:rgba(var(--c-400),.1)}:is(.dark .dark\:bg-custom-500){--tw-bg-opacity:1;background-color:rgba(var(--c-500),var(--tw-bg-opacity))}:is(.dark .dark\:bg-custom-500\/20){background-color:rgba(var(--c-500),.2)}:is(.dark .dark\:bg-gray-400\/10){background-color:rgba(var(--gray-400),.1)}:is(.dark .dark\:bg-gray-500){--tw-bg-opacity:1;background-color:rgba(var(--gray-500),var(--tw-bg-opacity))}:is(.dark .dark\:bg-gray-500\/20){background-color:rgba(var(--gray-500),.2)}:is(.dark .dark\:bg-gray-600){--tw-bg-opacity:1;background-color:rgba(var(--gray-600),var(--tw-bg-opacity))}:is(.dark .dark\:bg-gray-700){--tw-bg-opacity:1;background-color:rgba(var(--gray-700),var(--tw-bg-opacity))}:is(.dark .dark\:bg-gray-800){--tw-bg-opacity:1;background-color:rgba(var(--gray-800),var(--tw-bg-opacity))}:is(.dark .dark\:bg-gray-900){--tw-bg-opacity:1;background-color:rgba(var(--gray-900),var(--tw-bg-opacity))}:is(.dark .dark\:bg-gray-900\/30){background-color:rgba(var(--gray-900),.3)}:is(.dark .dark\:bg-gray-950){--tw-bg-opacity:1;background-color:rgba(var(--gray-950),var(--tw-bg-opacity))}:is(.dark .dark\:bg-gray-950\/75){background-color:rgba(var(--gray-950),.75)}:is(.dark .dark\:bg-primary-400){--tw-bg-opacity:1;background-color:rgba(var(--primary-400),var(--tw-bg-opacity))}:is(.dark .dark\:bg-primary-500){--tw-bg-opacity:1;background-color:rgba(var(--primary-500),var(--tw-bg-opacity))}:is(.dark .dark\:bg-transparent){background-color:transparent}:is(.dark .dark\:bg-white\/10){background-color:hsla(0,0%,100%,.1)}:is(.dark .dark\:bg-white\/5){background-color:hsla(0,0%,100%,.05)}:is(.dark .dark\:fill-current){fill:currentColor}:is(.dark .dark\:text-custom-300\/50){color:rgba(var(--c-300),.5)}:is(.dark .dark\:text-custom-400){--tw-text-opacity:1;color:rgba(var(--c-400),var(--tw-text-opacity))}:is(.dark .dark\:text-custom-400\/10){color:rgba(var(--c-400),.1)}:is(.dark .dark\:text-danger-400){--tw-text-opacity:1;color:rgba(var(--danger-400),var(--tw-text-opacity))}:is(.dark .dark\:text-danger-500){--tw-text-opacity:1;color:rgba(var(--danger-500),var(--tw-text-opacity))}:is(.dark .dark\:text-gray-200){--tw-text-opacity:1;color:rgba(var(--gray-200),var(--tw-text-opacity))}:is(.dark .dark\:text-gray-300\/50){color:rgba(var(--gray-300),.5)}:is(.dark .dark\:text-gray-400){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}:is(.dark .dark\:text-gray-500){--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}:is(.dark .dark\:text-gray-700){--tw-text-opacity:1;color:rgba(var(--gray-700),var(--tw-text-opacity))}:is(.dark .dark\:text-gray-800){--tw-text-opacity:1;color:rgba(var(--gray-800),var(--tw-text-opacity))}:is(.dark .dark\:text-primary-400){--tw-text-opacity:1;color:rgba(var(--primary-400),var(--tw-text-opacity))}:is(.dark .dark\:text-primary-500){--tw-text-opacity:1;color:rgba(var(--primary-500),var(--tw-text-opacity))}:is(.dark .dark\:text-white){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}:is(.dark .dark\:text-white\/5){color:hsla(0,0%,100%,.05)}:is(.dark .dark\:ring-custom-400\/30){--tw-ring-color:rgba(var(--c-400),0.3)}:is(.dark .dark\:ring-custom-500){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--c-500),var(--tw-ring-opacity))}:is(.dark .dark\:ring-danger-500){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--danger-500),var(--tw-ring-opacity))}:is(.dark .dark\:ring-gray-400\/20){--tw-ring-color:rgba(var(--gray-400),0.2)}:is(.dark .dark\:ring-gray-50\/10){--tw-ring-color:rgba(var(--gray-50),0.1)}:is(.dark .dark\:ring-gray-700){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--gray-700),var(--tw-ring-opacity))}:is(.dark .dark\:ring-gray-900){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--gray-900),var(--tw-ring-opacity))}:is(.dark .dark\:ring-white\/10){--tw-ring-color:hsla(0,0%,100%,.1)}:is(.dark .dark\:ring-white\/20){--tw-ring-color:hsla(0,0%,100%,.2)}:is(.dark .dark\:placeholder\:text-gray-500)::-moz-placeholder{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}:is(.dark .dark\:placeholder\:text-gray-500)::placeholder{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}:is(.dark .dark\:before\:bg-primary-500):before{--tw-bg-opacity:1;background-color:rgba(var(--primary-500),var(--tw-bg-opacity));content:var(--tw-content)}:is(.dark .dark\:checked\:bg-danger-500:checked){--tw-bg-opacity:1;background-color:rgba(var(--danger-500),var(--tw-bg-opacity))}:is(.dark .dark\:checked\:bg-primary-500:checked){--tw-bg-opacity:1;background-color:rgba(var(--primary-500),var(--tw-bg-opacity))}:is(.dark .dark\:focus-within\:bg-white\/5:focus-within){background-color:hsla(0,0%,100%,.05)}:is(.dark .dark\:focus-within\:ring-danger-500:focus-within){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--danger-500),var(--tw-ring-opacity))}:is(.dark .dark\:focus-within\:ring-primary-500:focus-within){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-500),var(--tw-ring-opacity))}:is(.dark .dark\:hover\:bg-custom-400:hover){--tw-bg-opacity:1;background-color:rgba(var(--c-400),var(--tw-bg-opacity))}:is(.dark .dark\:hover\:bg-custom-400\/10:hover){background-color:rgba(var(--c-400),.1)}:is(.dark .dark\:hover\:bg-white\/10:hover){background-color:hsla(0,0%,100%,.1)}:is(.dark .dark\:hover\:bg-white\/5:hover){background-color:hsla(0,0%,100%,.05)}:is(.dark .dark\:hover\:text-custom-300:hover){--tw-text-opacity:1;color:rgba(var(--c-300),var(--tw-text-opacity))}:is(.dark .dark\:hover\:text-custom-300\/75:hover){color:rgba(var(--c-300),.75)}:is(.dark .dark\:hover\:text-gray-200:hover){--tw-text-opacity:1;color:rgba(var(--gray-200),var(--tw-text-opacity))}:is(.dark .dark\:hover\:text-gray-300\/75:hover){color:rgba(var(--gray-300),.75)}:is(.dark .dark\:hover\:text-gray-400:hover){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}:is(.dark .dark\:hover\:ring-white\/20:hover){--tw-ring-color:hsla(0,0%,100%,.2)}:is(.dark .dark\:focus\:ring-danger-500:focus){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--danger-500),var(--tw-ring-opacity))}:is(.dark .dark\:focus\:ring-primary-500:focus){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-500),var(--tw-ring-opacity))}:is(.dark .dark\:checked\:focus\:ring-danger-400\/50:focus:checked){--tw-ring-color:rgba(var(--danger-400),0.5)}:is(.dark .dark\:checked\:focus\:ring-primary-400\/50:focus:checked){--tw-ring-color:rgba(var(--primary-400),0.5)}:is(.dark .dark\:focus-visible\:border-primary-500:focus-visible){--tw-border-opacity:1;border-color:rgba(var(--primary-500),var(--tw-border-opacity))}:is(.dark .dark\:focus-visible\:bg-custom-400\/10:focus-visible){background-color:rgba(var(--c-400),.1)}:is(.dark .dark\:focus-visible\:bg-white\/5:focus-visible){background-color:hsla(0,0%,100%,.05)}:is(.dark .dark\:focus-visible\:text-custom-300\/75:focus-visible){color:rgba(var(--c-300),.75)}:is(.dark .dark\:focus-visible\:text-gray-300\/75:focus-visible){color:rgba(var(--gray-300),.75)}:is(.dark .dark\:focus-visible\:text-gray-400:focus-visible){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}:is(.dark .dark\:focus-visible\:ring-custom-400\/50:focus-visible){--tw-ring-color:rgba(var(--c-400),0.5)}:is(.dark .dark\:focus-visible\:ring-custom-500:focus-visible){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--c-500),var(--tw-ring-opacity))}:is(.dark .dark\:focus-visible\:ring-danger-500:focus-visible){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--danger-500),var(--tw-ring-opacity))}:is(.dark .dark\:focus-visible\:ring-primary-500:focus-visible){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-500),var(--tw-ring-opacity))}:is(.dark .dark\:disabled\:bg-transparent:disabled){background-color:transparent}:is(.dark .dark\:disabled\:text-gray-400:disabled){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}:is(.dark .dark\:disabled\:ring-white\/10:disabled){--tw-ring-color:hsla(0,0%,100%,.1)}:is(.dark .dark\:disabled\:\[-webkit-text-fill-color\:theme\(colors\.gray\.400\)\]:disabled){-webkit-text-fill-color:rgba(var(--gray-400),1)}:is(.dark .dark\:disabled\:placeholder\:\[-webkit-text-fill-color\:theme\(colors\.gray\.500\)\]:disabled)::-moz-placeholder{-webkit-text-fill-color:rgba(var(--gray-500),1)}:is(.dark .dark\:disabled\:placeholder\:\[-webkit-text-fill-color\:theme\(colors\.gray\.500\)\]:disabled)::placeholder{-webkit-text-fill-color:rgba(var(--gray-500),1)}:is(.dark .dark\:disabled\:checked\:bg-gray-600:checked:disabled){--tw-bg-opacity:1;background-color:rgba(var(--gray-600),var(--tw-bg-opacity))}:is(.dark .group\/button:hover .dark\:group-hover\/button\:text-gray-400){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}:is(.dark .group:hover .dark\:group-hover\:text-gray-200){--tw-text-opacity:1;color:rgba(var(--gray-200),var(--tw-text-opacity))}:is(.dark .group:hover .dark\:group-hover\:text-gray-400){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}:is(.dark .group:focus-visible .dark\:group-focus-visible\:text-gray-200){--tw-text-opacity:1;color:rgba(var(--gray-200),var(--tw-text-opacity))}:is(.dark .group:focus-visible .dark\:group-focus-visible\:text-gray-400){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}@media (min-width:640px){.sm\:relative{position:relative}.sm\:inset-x-auto{left:auto;right:auto}.sm\:end-0{inset-inline-end:0}.sm\:col-\[--col-span-sm\]{grid-column:var(--col-span-sm)}.sm\:col-span-2{grid-column:span 2/span 2}.sm\:col-start-\[--col-start-sm\]{grid-column-start:var(--col-start-sm)}.sm\:-mx-6{margin-left:-1.5rem;margin-right:-1.5rem}.sm\:-my-2{margin-bottom:-.5rem;margin-top:-.5rem}.sm\:ms-auto{margin-inline-start:auto}.sm\:mt-7{margin-top:1.75rem}.sm\:block{display:block}.sm\:flex{display:flex}.sm\:table-cell{display:table-cell}.sm\:grid{display:grid}.sm\:inline-grid{display:inline-grid}.sm\:hidden{display:none}.sm\:w-\[calc\(100\%\+3rem\)\]{width:calc(100% + 3rem)}.sm\:w-screen{width:100vw}.sm\:max-w-2xl{max-width:42rem}.sm\:max-w-3xl{max-width:48rem}.sm\:max-w-4xl{max-width:56rem}.sm\:max-w-5xl{max-width:64rem}.sm\:max-w-6xl{max-width:72rem}.sm\:max-w-7xl{max-width:80rem}.sm\:max-w-lg{max-width:32rem}.sm\:max-w-md{max-width:28rem}.sm\:max-w-sm{max-width:24rem}.sm\:max-w-xl{max-width:36rem}.sm\:max-w-xs{max-width:20rem}.sm\:columns-\[--cols-sm\]{-moz-columns:var(--cols-sm);columns:var(--cols-sm)}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-\[--cols-sm\]{grid-template-columns:var(--cols-sm)}.sm\:grid-cols-\[repeat\(auto-fit\2c minmax\(0\2c 1fr\)\)\]{grid-template-columns:repeat(auto-fit,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:flex-nowrap{flex-wrap:nowrap}.sm\:items-start{align-items:flex-start}.sm\:items-end{align-items:flex-end}.sm\:items-center{align-items:center}.sm\:justify-between{justify-content:space-between}.sm\:gap-1{gap:.25rem}.sm\:gap-3{gap:.75rem}.sm\:gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.sm\:rounded-xl{border-radius:.75rem}.sm\:p-10{padding:2.5rem}.sm\:px-12{padding-left:3rem;padding-right:3rem}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:py-1{padding-bottom:.25rem;padding-top:.25rem}.sm\:py-1\.5{padding-bottom:.375rem;padding-top:.375rem}.sm\:pe-3{padding-inline-end:.75rem}.sm\:pe-6{padding-inline-end:1.5rem}.sm\:ps-3{padding-inline-start:.75rem}.sm\:ps-6{padding-inline-start:1.5rem}.sm\:pt-1{padding-top:.25rem}.sm\:pt-1\.5{padding-top:.375rem}.sm\:text-3xl{font-size:1.875rem;line-height:2.25rem}.sm\:text-sm{font-size:.875rem;line-height:1.25rem}.sm\:leading-6{line-height:1.5rem}.sm\:first-of-type\:ps-3:first-of-type{padding-inline-start:.75rem}.sm\:first-of-type\:ps-6:first-of-type{padding-inline-start:1.5rem}.sm\:last-of-type\:pe-3:last-of-type{padding-inline-end:.75rem}.sm\:last-of-type\:pe-6:last-of-type{padding-inline-end:1.5rem}}@media (min-width:768px){.md\:bottom-4{bottom:1rem}.md\:order-first{order:-9999}.md\:col-\[--col-span-md\]{grid-column:var(--col-span-md)}.md\:col-span-2{grid-column:span 2/span 2}.md\:col-start-\[--col-start-md\]{grid-column-start:var(--col-start-md)}.md\:block{display:block}.md\:flex{display:flex}.md\:table-cell{display:table-cell}.md\:inline-grid{display:inline-grid}.md\:hidden{display:none}.md\:columns-\[--cols-md\]{-moz-columns:var(--cols-md);columns:var(--cols-md)}.md\:grid-flow-col{grid-auto-flow:column}.md\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-\[--cols-md\]{grid-template-columns:var(--cols-md)}.md\:flex-row{flex-direction:row}.md\:items-start{align-items:flex-start}.md\:items-center{align-items:center}.md\:justify-end{justify-content:flex-end}.md\:gap-1{gap:.25rem}.md\:gap-3{gap:.75rem}.md\:divide-y-0>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-bottom-width:calc(0px*var(--tw-divide-y-reverse));border-top-width:calc(0px*(1 - var(--tw-divide-y-reverse)))}.md\:rounded-xl{border-radius:.75rem}.md\:p-20{padding:5rem}.md\:px-6{padding-left:1.5rem;padding-right:1.5rem}.md\:pe-3{padding-inline-end:.75rem}.md\:pe-6{padding-inline-end:1.5rem}.md\:ps-3{padding-inline-start:.75rem}}@media (min-width:1024px){.lg\:sticky{position:sticky}.lg\:z-0{z-index:0}.lg\:col-\[--col-span-lg\]{grid-column:var(--col-span-lg)}.lg\:col-start-\[--col-start-lg\]{grid-column-start:var(--col-start-lg)}.lg\:block{display:block}.lg\:flex{display:flex}.lg\:table-cell{display:table-cell}.lg\:inline-grid{display:inline-grid}.lg\:hidden{display:none}.lg\:h-full{height:100%}.lg\:max-w-xs{max-width:20rem}.lg\:-translate-x-full{--tw-translate-x:-100%}.lg\:-translate-x-full,.lg\:translate-x-0{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lg\:translate-x-0{--tw-translate-x:0px}.lg\:columns-\[--cols-lg\]{-moz-columns:var(--cols-lg);columns:var(--cols-lg)}.lg\:grid-cols-\[--cols-lg\]{grid-template-columns:var(--cols-lg)}.lg\:flex-row{flex-direction:row}.lg\:items-start{align-items:flex-start}.lg\:items-center{align-items:center}.lg\:gap-1{gap:.25rem}.lg\:gap-3{gap:.75rem}.lg\:bg-transparent{background-color:transparent}.lg\:px-8{padding-left:2rem;padding-right:2rem}.lg\:pe-8{padding-inline-end:2rem}.lg\:shadow-none{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000}.lg\:shadow-none,.lg\:shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.lg\:shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.lg\:ring-0{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.lg\:transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.lg\:transition-none{transition-property:none}.lg\:delay-100{transition-delay:.1s}:is([dir=rtl] .rtl\:lg\:-translate-x-0){--tw-translate-x:-0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}:is([dir=rtl] .rtl\:lg\:translate-x-full){--tw-translate-x:100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}:is(.dark .dark\:lg\:bg-transparent){background-color:transparent}}@media (min-width:1280px){.xl\:col-\[--col-span-xl\]{grid-column:var(--col-span-xl)}.xl\:col-start-\[--col-start-xl\]{grid-column-start:var(--col-start-xl)}.xl\:block{display:block}.xl\:table-cell{display:table-cell}.xl\:inline-grid{display:inline-grid}.xl\:hidden{display:none}.xl\:columns-\[--cols-xl\]{-moz-columns:var(--cols-xl);columns:var(--cols-xl)}.xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.xl\:grid-cols-\[--cols-xl\]{grid-template-columns:var(--cols-xl)}.xl\:flex-row{flex-direction:row}.xl\:items-start{align-items:flex-start}.xl\:items-center{align-items:center}.xl\:gap-1{gap:.25rem}.xl\:gap-3{gap:.75rem}}@media (min-width:1536px){.\32xl\:col-\[--col-span-2xl\]{grid-column:var(--col-span-2xl)}.\32xl\:col-start-\[--col-start-2xl\]{grid-column-start:var(--col-start-2xl)}.\32xl\:block{display:block}.\32xl\:table-cell{display:table-cell}.\32xl\:inline-grid{display:inline-grid}.\32xl\:hidden{display:none}.\32xl\:columns-\[--cols-2xl\]{-moz-columns:var(--cols-2xl);columns:var(--cols-2xl)}.\32xl\:grid-cols-\[--cols-2xl\]{grid-template-columns:var(--cols-2xl)}.\32xl\:flex-row{flex-direction:row}.\32xl\:items-start{align-items:flex-start}.\32xl\:items-center{align-items:center}.\32xl\:gap-1{gap:.25rem}.\32xl\:gap-3{gap:.75rem}}.\[\&\.trix-active\]\:bg-gray-50.trix-active{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.\[\&\.trix-active\]\:text-primary-600.trix-active{--tw-text-opacity:1;color:rgba(var(--primary-600),var(--tw-text-opacity))}:is(.dark .dark\:\[\&\.trix-active\]\:bg-white\/5.trix-active){background-color:hsla(0,0%,100%,.05)}:is(.dark .dark\:\[\&\.trix-active\]\:text-primary-400.trix-active){--tw-text-opacity:1;color:rgba(var(--primary-400),var(--tw-text-opacity))}.\[\&\>\*\:first-child\]\:relative>:first-child{position:relative}.\[\&\>\*\:first-child\]\:mt-0>:first-child{margin-top:0}.\[\&\>\*\:first-child\]\:before\:absolute>:first-child:before{content:var(--tw-content);position:absolute}.\[\&\>\*\:first-child\]\:before\:inset-y-0>:first-child:before{bottom:0;content:var(--tw-content);top:0}.\[\&\>\*\:first-child\]\:before\:start-0>:first-child:before{content:var(--tw-content);inset-inline-start:0}.\[\&\>\*\:first-child\]\:before\:w-0\.5>:first-child:before{content:var(--tw-content);width:.125rem}.\[\&\>\*\:first-child\]\:before\:bg-primary-600>:first-child:before{--tw-bg-opacity:1;background-color:rgba(var(--primary-600),var(--tw-bg-opacity));content:var(--tw-content)}:is(.dark .\[\&\>\*\:first-child\]\:dark\:before\:bg-primary-500)>:first-child:before{--tw-bg-opacity:1;background-color:rgba(var(--primary-500),var(--tw-bg-opacity));content:var(--tw-content)}.\[\&\>\*\:last-child\]\:mb-0>:last-child{margin-bottom:0}.\[\&_\.choices\\_\\_inner\]\:ps-0 .choices__inner{padding-inline-start:0}.\[\&_\.fi-badge-delete-button\]\:hidden .fi-badge-delete-button{display:none}.\[\&_\.filepond--root\]\:font-sans .filepond--root{font-family:var(--font-family),ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"}.\[\&_optgroup\]\:bg-white optgroup{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}:is(.dark .\[\&_optgroup\]\:dark\:bg-gray-900) optgroup{--tw-bg-opacity:1;background-color:rgba(var(--gray-900),var(--tw-bg-opacity))}.\[\&_option\]\:bg-white option{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}:is(.dark .\[\&_option\]\:dark\:bg-gray-900) option{--tw-bg-opacity:1;background-color:rgba(var(--gray-900),var(--tw-bg-opacity))}@media(hover:hover){.\[\@media\(hover\:hover\)\]\:transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.\[\@media\(hover\:hover\)\]\:duration-75{transition-duration:75ms}} \ No newline at end of file +/*! tailwindcss v3.3.6 | MIT License | https://tailwindcss.com*/*,:after,:before{border-color:rgba(var(--gray-200),1);border-style:solid;border-width:0;box-sizing:border-box}:after,:before{--tw-content:""}html{-webkit-text-size-adjust:100%;font-feature-settings:normal;font-family:var(--font-family),ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-variation-settings:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-feature-settings:normal;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em;font-variation-settings:normal}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{font-feature-settings:inherit;color:inherit;font-family:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:rgba(var(--gray-400),1);opacity:1}input::placeholder,textarea::placeholder{color:rgba(var(--gray-400),1);opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]{display:none}[multiple],[type=date],[type=datetime-local],[type=email],[type=month],[type=number],[type=password],[type=search],[type=tel],[type=text],[type=time],[type=url],[type=week],input:where(:not([type])),select,textarea{--tw-shadow:0 0 #0000;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:rgba(var(--gray-500),var(--tw-border-opacity,1));border-radius:0;border-width:1px;font-size:1rem;line-height:1.5rem;padding:.5rem .75rem}[multiple]:focus,[type=date]:focus,[type=datetime-local]:focus,[type=email]:focus,[type=month]:focus,[type=number]:focus,[type=password]:focus,[type=search]:focus,[type=tel]:focus,[type=text]:focus,[type=time]:focus,[type=url]:focus,[type=week]:focus,input:where(:not([type])):focus,select:focus,textarea:focus{--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#2563eb;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);border-color:#2563eb;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);outline:2px solid transparent;outline-offset:2px}input::-moz-placeholder,textarea::-moz-placeholder{color:rgba(var(--gray-500),var(--tw-text-opacity,1));opacity:1}input::placeholder,textarea::placeholder{color:rgba(var(--gray-500),var(--tw-text-opacity,1));opacity:1}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-date-and-time-value{min-height:1.5em;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-meridiem-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-year-field{padding-bottom:0;padding-top:0}select{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3E%3Cpath stroke='rgba(var(--gray-500), var(--tw-stroke-opacity, 1))' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3E%3C/svg%3E");background-position:right .5rem center;background-repeat:no-repeat;background-size:1.5em 1.5em;padding-right:2.5rem;-webkit-print-color-adjust:exact;print-color-adjust:exact}[multiple],[size]:where(select:not([size="1"])){background-image:none;background-position:0 0;background-repeat:unset;background-size:initial;padding-right:.75rem;-webkit-print-color-adjust:unset;print-color-adjust:unset}[type=checkbox],[type=radio]{--tw-shadow:0 0 #0000;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;background-origin:border-box;border-color:rgba(var(--gray-500),var(--tw-border-opacity,1));border-width:1px;color:#2563eb;display:inline-block;flex-shrink:0;height:1rem;padding:0;-webkit-print-color-adjust:exact;print-color-adjust:exact;-webkit-user-select:none;-moz-user-select:none;user-select:none;vertical-align:middle;width:1rem}[type=checkbox]{border-radius:0}[type=radio]{border-radius:100%}[type=checkbox]:focus,[type=radio]:focus{--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:2px;--tw-ring-offset-color:#fff;--tw-ring-color:#2563eb;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);outline:2px solid transparent;outline-offset:2px}[type=checkbox]:checked,[type=radio]:checked{background-color:currentColor;background-position:50%;background-repeat:no-repeat;background-size:100% 100%;border-color:transparent}[type=checkbox]:checked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12.207 4.793a1 1 0 0 1 0 1.414l-5 5a1 1 0 0 1-1.414 0l-2-2a1 1 0 0 1 1.414-1.414L6.5 9.086l4.293-4.293a1 1 0 0 1 1.414 0z'/%3E%3C/svg%3E")}@media (forced-colors:active) {[type=checkbox]:checked{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=radio]:checked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='8' cy='8' r='3'/%3E%3C/svg%3E")}@media (forced-colors:active) {[type=radio]:checked{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=checkbox]:checked:focus,[type=checkbox]:checked:hover,[type=radio]:checked:focus,[type=radio]:checked:hover{background-color:currentColor;border-color:transparent}[type=checkbox]:indeterminate{background-color:currentColor;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3E%3Cpath stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8h8'/%3E%3C/svg%3E");background-position:50%;background-repeat:no-repeat;background-size:100% 100%;border-color:transparent}@media (forced-colors:active) {[type=checkbox]:indeterminate{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=checkbox]:indeterminate:focus,[type=checkbox]:indeterminate:hover{background-color:currentColor;border-color:transparent}[type=file]{background:unset;border-color:inherit;border-radius:0;border-width:0;font-size:unset;line-height:inherit;padding:0}[type=file]:focus{outline:1px solid ButtonText;outline:1px auto -webkit-focus-ring-color}html{-webkit-tap-highlight-color:transparent}:root.dark{color-scheme:dark}[data-field-wrapper]{scroll-margin-top:8rem}*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em;margin-top:1.25em}.prose :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-bottom:1.2em;margin-top:1.2em}.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);font-weight:500;text-decoration:underline}.prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal;margin-bottom:1.25em;margin-top:1.25em;padding-left:1.625em}.prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:disc;margin-bottom:1.25em;margin-top:1.25em;padding-left:1.625em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-counters);font-weight:400}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.25em}.prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-bottom:3em;margin-top:3em}.prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){border-left-color:var(--tw-prose-quote-borders);border-left-width:.25rem;color:var(--tw-prose-quotes);font-style:italic;font-weight:500;margin-bottom:1.6em;margin-top:1.6em;padding-left:1em;quotes:"\201C""\201D""\2018""\2019"}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-size:2.25em;font-weight:800;line-height:1.1111111;margin-bottom:.8888889em;margin-top:0}.prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:900}.prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-size:1.5em;font-weight:700;line-height:1.3333333;margin-bottom:1em;margin-top:2em}.prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:800}.prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-size:1.25em;font-weight:600;line-height:1.6;margin-bottom:.6em;margin-top:1.6em}.prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:700}.prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;line-height:1.5;margin-bottom:.5em;margin-top:1.5em}.prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:700}.prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){display:block;margin-bottom:2em;margin-top:2em}.prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.3125rem;box-shadow:0 0 0 1px rgb(var(--tw-prose-kbd-shadows)/10%),0 3px 0 rgb(var(--tw-prose-kbd-shadows)/10%);color:var(--tw-prose-kbd);font-family:inherit;font-size:.875em;font-weight:500;padding:.1875em .375em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code);font-size:.875em;font-weight:600}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:"`"}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:"`"}.prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:var(--tw-prose-pre-bg);border-radius:.375rem;color:var(--tw-prose-pre-code);font-size:.875em;font-weight:400;line-height:1.7142857;margin-bottom:1.7142857em;margin-top:1.7142857em;overflow-x:auto;padding:.8571429em 1.1428571em}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:transparent;border-radius:0;border-width:0;color:inherit;font-family:inherit;font-size:inherit;font-weight:inherit;line-height:inherit;padding:0}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:none}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em;line-height:1.7142857;margin-bottom:2em;margin-top:2em;table-layout:auto;text-align:left;width:100%}.prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-color:var(--tw-prose-th-borders);border-bottom-width:1px}.prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;padding-bottom:.5714286em;padding-left:.5714286em;padding-right:.5714286em;vertical-align:bottom}.prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-color:var(--tw-prose-td-borders);border-bottom-width:1px}.prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-color:var(--tw-prose-th-borders);border-top-width:1px}.prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose{--tw-prose-body:#374151;--tw-prose-headings:#111827;--tw-prose-lead:#4b5563;--tw-prose-links:#111827;--tw-prose-bold:#111827;--tw-prose-counters:#6b7280;--tw-prose-bullets:#d1d5db;--tw-prose-hr:#e5e7eb;--tw-prose-quotes:#111827;--tw-prose-quote-borders:#e5e7eb;--tw-prose-captions:#6b7280;--tw-prose-kbd:#111827;--tw-prose-kbd-shadows:17 24 39;--tw-prose-code:#111827;--tw-prose-pre-code:#e5e7eb;--tw-prose-pre-bg:#1f2937;--tw-prose-th-borders:#d1d5db;--tw-prose-td-borders:#e5e7eb;--tw-prose-invert-body:#d1d5db;--tw-prose-invert-headings:#fff;--tw-prose-invert-lead:#9ca3af;--tw-prose-invert-links:#fff;--tw-prose-invert-bold:#fff;--tw-prose-invert-counters:#9ca3af;--tw-prose-invert-bullets:#4b5563;--tw-prose-invert-hr:#374151;--tw-prose-invert-quotes:#f3f4f6;--tw-prose-invert-quote-borders:#374151;--tw-prose-invert-captions:#9ca3af;--tw-prose-invert-kbd:#fff;--tw-prose-invert-kbd-shadows:255 255 255;--tw-prose-invert-code:#fff;--tw-prose-invert-pre-code:#d1d5db;--tw-prose-invert-pre-bg:rgba(0,0,0,.5);--tw-prose-invert-th-borders:#4b5563;--tw-prose-invert-td-borders:#374151;font-size:1rem;line-height:1.75}.prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.5em;margin-top:.5em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.375em}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.75em;margin-top:.75em}.prose :where(.prose>ul>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.75em;margin-top:.75em}.prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em;margin-top:1.25em}.prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-left:1.625em}.prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding:.5714286em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.prose-sm{font-size:.875rem;line-height:1.7142857}.prose-sm :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em;margin-top:1.1428571em}.prose-sm :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.2857143em;line-height:1.5555556;margin-bottom:.8888889em;margin-top:.8888889em}.prose-sm :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em;margin-top:1.3333333em;padding-left:1.1111111em}.prose-sm :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:2.1428571em;line-height:1.2;margin-bottom:.8em;margin-top:0}.prose-sm :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.4285714em;line-height:1.4;margin-bottom:.8em;margin-top:1.6em}.prose-sm :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.2857143em;line-height:1.5555556;margin-bottom:.4444444em;margin-top:1.5555556em}.prose-sm :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){line-height:1.4285714;margin-bottom:.5714286em;margin-top:1.4285714em}.prose-sm :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7142857em;margin-top:1.7142857em}.prose-sm :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7142857em;margin-top:1.7142857em}.prose-sm :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose-sm :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7142857em;margin-top:1.7142857em}.prose-sm :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.3125rem;font-size:.8571429em;padding:.1428571em .3571429em}.prose-sm :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8571429em}.prose-sm :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.9em}.prose-sm :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8888889em}.prose-sm :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.25rem;font-size:.8571429em;line-height:1.6666667;margin-bottom:1.6666667em;margin-top:1.6666667em;padding:.6666667em 1em}.prose-sm :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em;margin-top:1.1428571em;padding-left:1.5714286em}.prose-sm :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em;margin-top:1.1428571em;padding-left:1.5714286em}.prose-sm :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.2857143em;margin-top:.2857143em}.prose-sm :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.4285714em}.prose-sm :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.4285714em}.prose-sm :where(.prose-sm>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.5714286em;margin-top:.5714286em}.prose-sm :where(.prose-sm>ul>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.1428571em}.prose-sm :where(.prose-sm>ul>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em}.prose-sm :where(.prose-sm>ol>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.1428571em}.prose-sm :where(.prose-sm>ol>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em}.prose-sm :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.5714286em;margin-top:.5714286em}.prose-sm :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em;margin-top:1.1428571em}.prose-sm :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.1428571em}.prose-sm :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.2857143em;padding-left:1.5714286em}.prose-sm :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2.8571429em;margin-top:2.8571429em}.prose-sm :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8571429em;line-height:1.5}.prose-sm :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){padding-bottom:.6666667em;padding-left:1em;padding-right:1em}.prose-sm :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose-sm :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose-sm :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding:.6666667em 1em}.prose-sm :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose-sm :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose-sm :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7142857em;margin-top:1.7142857em}.prose-sm :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose-sm :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8571429em;line-height:1.3333333;margin-top:.6666667em}.prose-sm :where(.prose-sm>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(.prose-sm>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.prose-base{font-size:1rem;line-height:1.75}.prose-base :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em;margin-top:1.25em}.prose-base :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.25em;line-height:1.6;margin-bottom:1.2em;margin-top:1.2em}.prose-base :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.6em;margin-top:1.6em;padding-left:1em}.prose-base :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:2.25em;line-height:1.1111111;margin-bottom:.8888889em;margin-top:0}.prose-base :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.5em;line-height:1.3333333;margin-bottom:1em;margin-top:2em}.prose-base :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.25em;line-height:1.6;margin-bottom:.6em;margin-top:1.6em}.prose-base :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){line-height:1.5;margin-bottom:.5em;margin-top:1.5em}.prose-base :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose-base :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose-base :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose-base :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose-base :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.3125rem;font-size:.875em;padding:.1875em .375em}.prose-base :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em}.prose-base :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em}.prose-base :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.9em}.prose-base :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.375rem;font-size:.875em;line-height:1.7142857;margin-bottom:1.7142857em;margin-top:1.7142857em;padding:.8571429em 1.1428571em}.prose-base :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em;margin-top:1.25em;padding-left:1.625em}.prose-base :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em;margin-top:1.25em;padding-left:1.625em}.prose-base :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.5em;margin-top:.5em}.prose-base :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.375em}.prose-base :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.375em}.prose-base :where(.prose-base>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.75em;margin-top:.75em}.prose-base :where(.prose-base>ul>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose-base :where(.prose-base>ul>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose-base :where(.prose-base>ol>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose-base :where(.prose-base>ol>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose-base :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.75em;margin-top:.75em}.prose-base :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em;margin-top:1.25em}.prose-base :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose-base :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-left:1.625em}.prose-base :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:3em;margin-top:3em}.prose-base :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-base :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-base :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-base :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-base :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em;line-height:1.7142857}.prose-base :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){padding-bottom:.5714286em;padding-left:.5714286em;padding-right:.5714286em}.prose-base :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose-base :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose-base :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding:.5714286em}.prose-base :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose-base :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose-base :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose-base :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose-base :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose-base :where(.prose-base>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-base :where(.prose-base>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.prose-lg{font-size:1.125rem;line-height:1.7777778}.prose-lg :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em;margin-top:1.3333333em}.prose-lg :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.2222222em;line-height:1.4545455;margin-bottom:1.0909091em;margin-top:1.0909091em}.prose-lg :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.6666667em;margin-top:1.6666667em;padding-left:1em}.prose-lg :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:2.6666667em;line-height:1;margin-bottom:.8333333em;margin-top:0}.prose-lg :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.6666667em;line-height:1.3333333;margin-bottom:1.0666667em;margin-top:1.8666667em}.prose-lg :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.3333333em;line-height:1.5;margin-bottom:.6666667em;margin-top:1.6666667em}.prose-lg :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){line-height:1.5555556;margin-bottom:.4444444em;margin-top:1.7777778em}.prose-lg :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7777778em;margin-top:1.7777778em}.prose-lg :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7777778em;margin-top:1.7777778em}.prose-lg :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose-lg :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7777778em;margin-top:1.7777778em}.prose-lg :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.3125rem;font-size:.8888889em;padding:.2222222em .4444444em}.prose-lg :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8888889em}.prose-lg :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8666667em}.prose-lg :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em}.prose-lg :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.375rem;font-size:.8888889em;line-height:1.75;margin-bottom:2em;margin-top:2em;padding:1em 1.5em}.prose-lg :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em;margin-top:1.3333333em;padding-left:1.5555556em}.prose-lg :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em;margin-top:1.3333333em;padding-left:1.5555556em}.prose-lg :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.6666667em;margin-top:.6666667em}.prose-lg :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.4444444em}.prose-lg :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.4444444em}.prose-lg :where(.prose-lg>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.8888889em;margin-top:.8888889em}.prose-lg :where(.prose-lg>ul>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.3333333em}.prose-lg :where(.prose-lg>ul>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em}.prose-lg :where(.prose-lg>ol>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.3333333em}.prose-lg :where(.prose-lg>ol>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em}.prose-lg :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.8888889em;margin-top:.8888889em}.prose-lg :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em;margin-top:1.3333333em}.prose-lg :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.3333333em}.prose-lg :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.6666667em;padding-left:1.5555556em}.prose-lg :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:3.1111111em;margin-top:3.1111111em}.prose-lg :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-lg :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-lg :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-lg :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-lg :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8888889em;line-height:1.5}.prose-lg :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){padding-bottom:.75em;padding-left:.75em;padding-right:.75em}.prose-lg :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose-lg :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose-lg :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding:.75em}.prose-lg :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose-lg :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose-lg :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7777778em;margin-top:1.7777778em}.prose-lg :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose-lg :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8888889em;line-height:1.5;margin-top:1em}.prose-lg :where(.prose-lg>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-lg :where(.prose-lg>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.sr-only{clip:rect(0,0,0,0);border-width:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.visible{visibility:visible}.invisible{visibility:hidden}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.inset-4{inset:1rem}.inset-x-0{left:0;right:0}.inset-x-4{left:1rem;right:1rem}.inset-y-0{bottom:0;top:0}.-bottom-1\/2{bottom:-50%}.-top-1{top:-.25rem}.-top-1\/2{top:-50%}.-top-2{top:-.5rem}.-top-3{top:-.75rem}.bottom-0{bottom:0}.bottom-1\/2{bottom:50%}.end-0{inset-inline-end:0}.end-4{inset-inline-end:1rem}.end-6{inset-inline-end:1.5rem}.left-3{left:.75rem}.start-0{inset-inline-start:0}.start-full{inset-inline-start:100%}.top-0{top:0}.top-1\/2{top:50%}.top-4{top:1rem}.top-6{top:1.5rem}.isolate{isolation:isolate}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.z-\[1\]{z-index:1}.col-\[--col-span-default\]{grid-column:var(--col-span-default)}.col-span-full{grid-column:1/-1}.col-start-2{grid-column-start:2}.col-start-3{grid-column-start:3}.col-start-\[--col-start-default\]{grid-column-start:var(--col-start-default)}.-m-0{margin:0}.-m-0\.5{margin:-.125rem}.-m-1{margin:-.25rem}.-m-1\.5{margin:-.375rem}.-m-2{margin:-.5rem}.-m-2\.5{margin:-.625rem}.-m-3{margin:-.75rem}.-m-3\.5{margin:-.875rem}.-mx-2{margin-left:-.5rem;margin-right:-.5rem}.-mx-4{margin-left:-1rem;margin-right:-1rem}.-mx-6{margin-left:-1.5rem;margin-right:-1.5rem}.-my-1{margin-bottom:-.25rem;margin-top:-.25rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-3{margin-left:.75rem;margin-right:.75rem}.mx-auto{margin-left:auto;margin-right:auto}.my-16{margin-bottom:4rem;margin-top:4rem}.my-2{margin-bottom:.5rem;margin-top:.5rem}.my-4{margin-bottom:1rem;margin-top:1rem}.my-auto{margin-bottom:auto;margin-top:auto}.\!mt-0{margin-top:0!important}.-mb-4{margin-bottom:-1rem}.-mb-6{margin-bottom:-1.5rem}.-me-2{margin-inline-end:-.5rem}.-ms-0{margin-inline-start:0}.-ms-0\.5{margin-inline-start:-.125rem}.-ms-1{margin-inline-start:-.25rem}.-ms-2{margin-inline-start:-.5rem}.-mt-4{margin-top:-1rem}.-mt-6{margin-top:-1.5rem}.mb-2{margin-bottom:.5rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.me-1{margin-inline-end:.25rem}.me-4{margin-inline-end:1rem}.me-6{margin-inline-end:1.5rem}.ml-auto{margin-left:auto}.ms-1{margin-inline-start:.25rem}.ms-auto{margin-inline-start:auto}.mt-0{margin-top:0}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-6{margin-top:1.5rem}.mt-auto{margin-top:auto}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.inline-grid{display:inline-grid}.hidden{display:none}.h-0{height:0}.h-1{height:.25rem}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-11{height:2.75rem}.h-16{height:4rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-32{height:8rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-96{height:24rem}.h-full{height:100%}.h-screen{height:100vh}.max-h-96{max-height:24rem}.min-h-\[theme\(spacing\.48\)\]{min-height:12rem}.min-h-full{min-height:100%}.min-h-screen{min-height:100vh}.w-1{width:.25rem}.w-1\.5{width:.375rem}.w-1\/2{width:50%}.w-10{width:2.5rem}.w-11{width:2.75rem}.w-16{width:4rem}.w-20{width:5rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-32{width:8rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-7{width:1.75rem}.w-72{width:18rem}.w-8{width:2rem}.w-9{width:2.25rem}.w-\[--sidebar-width\]{width:var(--sidebar-width)}.w-\[calc\(100\%\+2rem\)\]{width:calc(100% + 2rem)}.w-auto{width:auto}.w-full{width:100%}.w-max{width:-moz-max-content;width:max-content}.w-px{width:1px}.w-screen{width:100vw}.min-w-0{min-width:0}.min-w-\[theme\(spacing\.4\)\]{min-width:1rem}.min-w-\[theme\(spacing\.5\)\]{min-width:1.25rem}.min-w-\[theme\(spacing\.6\)\]{min-width:1.5rem}.min-w-\[theme\(spacing\.8\)\]{min-width:2rem}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.max-w-4xl{max-width:56rem}.max-w-5xl{max-width:64rem}.max-w-6xl{max-width:72rem}.max-w-7xl{max-width:80rem}.max-w-\[14rem\]{max-width:14rem}.max-w-fit{max-width:-moz-fit-content;max-width:fit-content}.max-w-full{max-width:100%}.max-w-lg{max-width:32rem}.max-w-max{max-width:-moz-max-content;max-width:max-content}.max-w-md{max-width:28rem}.max-w-min{max-width:-moz-min-content;max-width:min-content}.max-w-none{max-width:none}.max-w-prose{max-width:65ch}.max-w-screen-2xl{max-width:1536px}.max-w-screen-lg{max-width:1024px}.max-w-screen-md{max-width:768px}.max-w-screen-sm{max-width:640px}.max-w-screen-xl{max-width:1280px}.max-w-sm{max-width:24rem}.max-w-xl{max-width:36rem}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.shrink-0{flex-shrink:0}.flex-grow,.grow{flex-grow:1}.table-auto{table-layout:auto}.-translate-x-1\/2{--tw-translate-x:-50%}.-translate-x-12,.-translate-x-1\/2{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-x-12{--tw-translate-x:-3rem}.-translate-x-5{--tw-translate-x:-1.25rem}.-translate-x-5,.-translate-x-full{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-x-full{--tw-translate-x:-100%}.-translate-y-12{--tw-translate-y:-3rem}.-translate-y-12,.translate-x-0{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-0{--tw-translate-x:0px}.translate-x-12{--tw-translate-x:3rem}.translate-x-12,.translate-x-5{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-5{--tw-translate-x:1.25rem}.translate-x-full{--tw-translate-x:100%}.translate-x-full,.translate-y-12{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-12{--tw-translate-y:3rem}.-rotate-180{--tw-rotate:-180deg}.-rotate-180,.rotate-180{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180{--tw-rotate:180deg}.scale-100{--tw-scale-x:1;--tw-scale-y:1}.scale-100,.scale-95{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-95{--tw-scale-x:.95;--tw-scale-y:.95}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(1turn)}}.animate-spin{animation:spin 1s linear infinite}.cursor-default{cursor:default}.cursor-move{cursor:move}.cursor-pointer{cursor:pointer}.cursor-wait{cursor:wait}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize-none{resize:none}.list-inside{list-style-position:inside}.list-disc{list-style-type:disc}.columns-\[--cols-default\]{-moz-columns:var(--cols-default);columns:var(--cols-default)}.break-inside-avoid{-moz-column-break-inside:avoid;break-inside:avoid}.auto-cols-fr{grid-auto-columns:minmax(0,1fr)}.grid-flow-col{grid-auto-flow:column}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.grid-cols-\[--cols-default\]{grid-template-columns:var(--cols-default)}.grid-cols-\[1fr_auto_1fr\]{grid-template-columns:1fr auto 1fr}.grid-cols-\[repeat\(7\2c minmax\(theme\(spacing\.7\)\2c 1fr\)\)\]{grid-template-columns:repeat(7,minmax(1.75rem,1fr))}.grid-cols-\[repeat\(auto-fit\2c minmax\(0\2c 1fr\)\)\]{grid-template-columns:repeat(auto-fit,minmax(0,1fr))}.flex-row-reverse{flex-direction:row-reverse}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.content-start{align-content:flex-start}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-items-start{justify-items:start}.justify-items-center{justify-items:center}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.gap-x-1{-moz-column-gap:.25rem;column-gap:.25rem}.gap-x-1\.5{-moz-column-gap:.375rem;column-gap:.375rem}.gap-x-2{-moz-column-gap:.5rem;column-gap:.5rem}.gap-x-2\.5{-moz-column-gap:.625rem;column-gap:.625rem}.gap-x-3{-moz-column-gap:.75rem;column-gap:.75rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-x-5{-moz-column-gap:1.25rem;column-gap:1.25rem}.gap-x-6{-moz-column-gap:1.5rem;column-gap:1.5rem}.gap-y-1{row-gap:.25rem}.gap-y-1\.5{row-gap:.375rem}.gap-y-2{row-gap:.5rem}.gap-y-3{row-gap:.75rem}.gap-y-4{row-gap:1rem}.gap-y-6{row-gap:1.5rem}.gap-y-7{row-gap:1.75rem}.gap-y-8{row-gap:2rem}.gap-y-px{row-gap:1px}.-space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-.25rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-.25rem*var(--tw-space-x-reverse))}.-space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-.5rem*var(--tw-space-x-reverse))}.-space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-.75rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-.75rem*var(--tw-space-x-reverse))}.-space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-1rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-1rem*var(--tw-space-x-reverse))}.-space-x-5>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-1.25rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-1.25rem*var(--tw-space-x-reverse))}.-space-x-6>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-1.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-1.5rem*var(--tw-space-x-reverse))}.-space-x-7>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-1.75rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-1.75rem*var(--tw-space-x-reverse))}.-space-x-8>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-2rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-2rem*var(--tw-space-x-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.25rem*var(--tw-space-y-reverse));margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.5rem*var(--tw-space-y-reverse));margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.75rem*var(--tw-space-y-reverse));margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1rem*var(--tw-space-y-reverse));margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1.5rem*var(--tw-space-y-reverse));margin-top:calc(1.5rem*(1 - var(--tw-space-y-reverse)))}.divide-x>:not([hidden])~:not([hidden]){--tw-divide-x-reverse:0;border-left-width:calc(1px*(1 - var(--tw-divide-x-reverse)));border-right-width:calc(1px*var(--tw-divide-x-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-bottom-width:calc(1px*var(--tw-divide-y-reverse));border-top-width:calc(1px*(1 - var(--tw-divide-y-reverse)))}.divide-gray-100>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgba(var(--gray-100),var(--tw-divide-opacity))}.divide-gray-200>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgba(var(--gray-200),var(--tw-divide-opacity))}.divide-gray-950\/10>:not([hidden])~:not([hidden]){border-color:rgba(var(--gray-950),.1)}.self-start{align-self:flex-start}.self-stretch{align-self:stretch}.justify-self-start{justify-self:start}.justify-self-end{justify-self:end}.justify-self-center{justify-self:center}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-hidden{overflow-y:hidden}.overflow-x-clip{overflow-x:clip}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-normal{white-space:normal}.whitespace-nowrap{white-space:nowrap}.break-words{overflow-wrap:break-word}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-xl{border-radius:.75rem}.rounded-b-xl{border-bottom-left-radius:.75rem;border-bottom-right-radius:.75rem}.rounded-t-xl{border-top-left-radius:.75rem;border-top-right-radius:.75rem}.border{border-width:1px}.border-2{border-width:2px}.border-x-\[0\.5px\]{border-left-width:.5px;border-right-width:.5px}.border-y{border-bottom-width:1px;border-top-width:1px}.\!border-t-0{border-top-width:0!important}.border-b{border-bottom-width:1px}.border-b-0{border-bottom-width:0}.border-e{border-inline-end-width:1px}.border-s{border-inline-start-width:1px}.border-t{border-top-width:1px}.\!border-none{border-style:none!important}.border-none{border-style:none}.border-gray-100{--tw-border-opacity:1;border-color:rgba(var(--gray-100),var(--tw-border-opacity))}.border-gray-200{--tw-border-opacity:1;border-color:rgba(var(--gray-200),var(--tw-border-opacity))}.border-gray-300{--tw-border-opacity:1;border-color:rgba(var(--gray-300),var(--tw-border-opacity))}.border-gray-600{--tw-border-opacity:1;border-color:rgba(var(--gray-600),var(--tw-border-opacity))}.border-primary-500{--tw-border-opacity:1;border-color:rgba(var(--primary-500),var(--tw-border-opacity))}.border-primary-600{--tw-border-opacity:1;border-color:rgba(var(--primary-600),var(--tw-border-opacity))}.border-transparent{border-color:transparent}.border-t-gray-200{--tw-border-opacity:1;border-top-color:rgba(var(--gray-200),var(--tw-border-opacity))}.\!bg-gray-50{--tw-bg-opacity:1!important;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))!important}.\!bg-gray-700{--tw-bg-opacity:1!important;background-color:rgba(var(--gray-700),var(--tw-bg-opacity))!important}.bg-black\/50{background-color:rgba(0,0,0,.5)}.bg-custom-100{--tw-bg-opacity:1;background-color:rgba(var(--c-100),var(--tw-bg-opacity))}.bg-custom-50{--tw-bg-opacity:1;background-color:rgba(var(--c-50),var(--tw-bg-opacity))}.bg-custom-600{--tw-bg-opacity:1;background-color:rgba(var(--c-600),var(--tw-bg-opacity))}.bg-gray-100{--tw-bg-opacity:1;background-color:rgba(var(--gray-100),var(--tw-bg-opacity))}.bg-gray-200{--tw-bg-opacity:1;background-color:rgba(var(--gray-200),var(--tw-bg-opacity))}.bg-gray-300{--tw-bg-opacity:1;background-color:rgba(var(--gray-300),var(--tw-bg-opacity))}.bg-gray-400{--tw-bg-opacity:1;background-color:rgba(var(--gray-400),var(--tw-bg-opacity))}.bg-gray-50{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.bg-gray-950\/50{background-color:rgba(var(--gray-950),.5)}.bg-primary-500{--tw-bg-opacity:1;background-color:rgba(var(--primary-500),var(--tw-bg-opacity))}.bg-primary-600{--tw-bg-opacity:1;background-color:rgba(var(--primary-600),var(--tw-bg-opacity))}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.bg-white\/0{background-color:hsla(0,0%,100%,0)}.bg-white\/5{background-color:hsla(0,0%,100%,.05)}.bg-cover{background-size:cover}.bg-center{background-position:50%}.object-cover{-o-object-fit:cover;object-fit:cover}.object-center{-o-object-position:center;object-position:center}.p-0{padding:0}.p-0\.5{padding:.125rem}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.px-0{padding-left:0;padding-right:0}.px-0\.5{padding-left:.125rem;padding-right:.125rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-3\.5{padding-left:.875rem;padding-right:.875rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-0{padding-bottom:0;padding-top:0}.py-0\.5{padding-bottom:.125rem;padding-top:.125rem}.py-1{padding-bottom:.25rem;padding-top:.25rem}.py-1\.5{padding-bottom:.375rem;padding-top:.375rem}.py-12{padding-bottom:3rem;padding-top:3rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.py-2\.5{padding-bottom:.625rem;padding-top:.625rem}.py-3{padding-bottom:.75rem;padding-top:.75rem}.py-3\.5{padding-bottom:.875rem;padding-top:.875rem}.py-4{padding-bottom:1rem;padding-top:1rem}.py-5{padding-bottom:1.25rem;padding-top:1.25rem}.py-6{padding-bottom:1.5rem;padding-top:1.5rem}.py-8{padding-bottom:2rem;padding-top:2rem}.pb-4{padding-bottom:1rem}.pb-6{padding-bottom:1.5rem}.pe-0{padding-inline-end:0}.pe-1{padding-inline-end:.25rem}.pe-2{padding-inline-end:.5rem}.pe-3{padding-inline-end:.75rem}.pe-4{padding-inline-end:1rem}.pe-6{padding-inline-end:1.5rem}.pe-8{padding-inline-end:2rem}.ps-0{padding-inline-start:0}.ps-1{padding-inline-start:.25rem}.ps-2{padding-inline-start:.5rem}.ps-3{padding-inline-start:.75rem}.ps-4{padding-inline-start:1rem}.ps-\[5\.25rem\]{padding-inline-start:5.25rem}.pt-0{padding-top:0}.pt-2{padding-top:.5rem}.pt-4{padding-top:1rem}.pt-6{padding-top:1.5rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-justify{text-align:justify}.text-start{text-align:start}.text-end{text-align:end}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.font-sans{font-family:var(--font-family),ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"}.font-serif{font-family:ui-serif,Georgia,Cambria,Times New Roman,Times,serif}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-black{font-weight:900}.font-bold{font-weight:700}.font-extrabold{font-weight:800}.font-extralight{font-weight:200}.font-light{font-weight:300}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.font-thin{font-weight:100}.capitalize{text-transform:capitalize}.italic{font-style:italic}.leading-5{line-height:1.25rem}.leading-6{line-height:1.5rem}.leading-loose{line-height:2}.tracking-tight{letter-spacing:-.025em}.tracking-tighter{letter-spacing:-.05em}.text-custom-400{--tw-text-opacity:1;color:rgba(var(--c-400),var(--tw-text-opacity))}.text-custom-50{--tw-text-opacity:1;color:rgba(var(--c-50),var(--tw-text-opacity))}.text-custom-500{--tw-text-opacity:1;color:rgba(var(--c-500),var(--tw-text-opacity))}.text-custom-600{--tw-text-opacity:1;color:rgba(var(--c-600),var(--tw-text-opacity))}.text-custom-700\/50{color:rgba(var(--c-700),.5)}.text-danger-600{--tw-text-opacity:1;color:rgba(var(--danger-600),var(--tw-text-opacity))}.text-gray-100{--tw-text-opacity:1;color:rgba(var(--gray-100),var(--tw-text-opacity))}.text-gray-200{--tw-text-opacity:1;color:rgba(var(--gray-200),var(--tw-text-opacity))}.text-gray-400{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity:1;color:rgba(var(--gray-600),var(--tw-text-opacity))}.text-gray-700{--tw-text-opacity:1;color:rgba(var(--gray-700),var(--tw-text-opacity))}.text-gray-700\/50{color:rgba(var(--gray-700),.5)}.text-gray-950{--tw-text-opacity:1;color:rgba(var(--gray-950),var(--tw-text-opacity))}.text-primary-400{--tw-text-opacity:1;color:rgba(var(--primary-400),var(--tw-text-opacity))}.text-primary-500{--tw-text-opacity:1;color:rgba(var(--primary-500),var(--tw-text-opacity))}.text-primary-600{--tw-text-opacity:1;color:rgba(var(--primary-600),var(--tw-text-opacity))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.underline{text-decoration-line:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-50{opacity:.5}.opacity-70{opacity:.7}.shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.shadow,.shadow-lg{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.shadow-sm,.shadow-xl{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color)}.outline-none{outline:2px solid transparent;outline-offset:2px}.ring{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring,.ring-0{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-0{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring-1{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring-1,.ring-2{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-2{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring-4{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-inset{--tw-ring-inset:inset}.ring-custom-600{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--c-600),var(--tw-ring-opacity))}.ring-custom-600\/10{--tw-ring-color:rgba(var(--c-600),0.1)}.ring-custom-600\/20{--tw-ring-color:rgba(var(--c-600),0.2)}.ring-danger-600{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--danger-600),var(--tw-ring-opacity))}.ring-gray-200{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--gray-200),var(--tw-ring-opacity))}.ring-gray-300{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--gray-300),var(--tw-ring-opacity))}.ring-gray-600\/10{--tw-ring-color:rgba(var(--gray-600),0.1)}.ring-gray-900\/10{--tw-ring-color:rgba(var(--gray-900),0.1)}.ring-gray-950\/10{--tw-ring-color:rgba(var(--gray-950),0.1)}.ring-gray-950\/5{--tw-ring-color:rgba(var(--gray-950),0.05)}.ring-white{--tw-ring-opacity:1;--tw-ring-color:rgb(255 255 255/var(--tw-ring-opacity))}.ring-white\/10{--tw-ring-color:hsla(0,0%,100%,.1)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-all{transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-colors{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-opacity{transition-duration:.15s;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}.delay-100{transition-delay:.1s}.duration-100{transition-duration:.1s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.duration-500{transition-duration:.5s}.duration-75{transition-duration:75ms}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.\[transform\:translateZ\(0\)\]{transform:translateZ(0)}:is(.dark .dark\:prose-invert){--tw-prose-body:var(--tw-prose-invert-body);--tw-prose-headings:var(--tw-prose-invert-headings);--tw-prose-lead:var(--tw-prose-invert-lead);--tw-prose-links:var(--tw-prose-invert-links);--tw-prose-bold:var(--tw-prose-invert-bold);--tw-prose-counters:var(--tw-prose-invert-counters);--tw-prose-bullets:var(--tw-prose-invert-bullets);--tw-prose-hr:var(--tw-prose-invert-hr);--tw-prose-quotes:var(--tw-prose-invert-quotes);--tw-prose-quote-borders:var(--tw-prose-invert-quote-borders);--tw-prose-captions:var(--tw-prose-invert-captions);--tw-prose-kbd:var(--tw-prose-invert-kbd);--tw-prose-kbd-shadows:var(--tw-prose-invert-kbd-shadows);--tw-prose-code:var(--tw-prose-invert-code);--tw-prose-pre-code:var(--tw-prose-invert-pre-code);--tw-prose-pre-bg:var(--tw-prose-invert-pre-bg);--tw-prose-th-borders:var(--tw-prose-invert-th-borders);--tw-prose-td-borders:var(--tw-prose-invert-td-borders)}.placeholder\:text-gray-400::-moz-placeholder{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.placeholder\:text-gray-400::placeholder{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.before\:absolute:before{content:var(--tw-content);position:absolute}.before\:inset-y-0:before{bottom:0;content:var(--tw-content);top:0}.before\:start-0:before{content:var(--tw-content);inset-inline-start:0}.before\:h-full:before{content:var(--tw-content);height:100%}.before\:w-0:before{content:var(--tw-content);width:0}.before\:w-0\.5:before{content:var(--tw-content);width:.125rem}.before\:bg-primary-600:before{--tw-bg-opacity:1;background-color:rgba(var(--primary-600),var(--tw-bg-opacity));content:var(--tw-content)}.first\:border-s-0:first-child{border-inline-start-width:0}.first\:border-t-0:first-child{border-top-width:0}.last\:border-e-0:last-child{border-inline-end-width:0}.first-of-type\:ps-1:first-of-type{padding-inline-start:.25rem}.last-of-type\:pe-1:last-of-type{padding-inline-end:.25rem}.checked\:ring-0:checked{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-within\:bg-gray-50:focus-within{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.focus-within\:ring-2:focus-within{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-within\:ring-danger-600:focus-within{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--danger-600),var(--tw-ring-opacity))}.focus-within\:ring-primary-600:focus-within{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-600),var(--tw-ring-opacity))}.hover\:bg-custom-400\/10:hover{background-color:rgba(var(--c-400),.1)}.hover\:bg-custom-50:hover{--tw-bg-opacity:1;background-color:rgba(var(--c-50),var(--tw-bg-opacity))}.hover\:bg-custom-500:hover{--tw-bg-opacity:1;background-color:rgba(var(--c-500),var(--tw-bg-opacity))}.hover\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgba(var(--gray-100),var(--tw-bg-opacity))}.hover\:bg-gray-400\/10:hover{background-color:rgba(var(--gray-400),.1)}.hover\:bg-gray-50:hover{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.hover\:text-custom-600:hover{--tw-text-opacity:1;color:rgba(var(--c-600),var(--tw-text-opacity))}.hover\:text-custom-700\/75:hover{color:rgba(var(--c-700),.75)}.hover\:text-gray-500:hover{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.hover\:text-gray-700:hover{--tw-text-opacity:1;color:rgba(var(--gray-700),var(--tw-text-opacity))}.hover\:text-gray-700\/75:hover{color:rgba(var(--gray-700),.75)}.hover\:opacity-100:hover{opacity:1}.focus\:ring-0:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\:ring-0:focus,.focus\:ring-2:focus{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\:ring-danger-600:focus{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--danger-600),var(--tw-ring-opacity))}.focus\:ring-primary-600:focus{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-600),var(--tw-ring-opacity))}.focus\:ring-offset-0:focus{--tw-ring-offset-width:0px}.checked\:focus\:ring-danger-500\/50:focus:checked{--tw-ring-color:rgba(var(--danger-500),0.5)}.checked\:focus\:ring-primary-500\/50:focus:checked{--tw-ring-color:rgba(var(--primary-500),0.5)}.focus-visible\:z-10:focus-visible{z-index:10}.focus-visible\:border-primary-500:focus-visible{--tw-border-opacity:1;border-color:rgba(var(--primary-500),var(--tw-border-opacity))}.focus-visible\:bg-custom-50:focus-visible{--tw-bg-opacity:1;background-color:rgba(var(--c-50),var(--tw-bg-opacity))}.focus-visible\:bg-gray-100:focus-visible{--tw-bg-opacity:1;background-color:rgba(var(--gray-100),var(--tw-bg-opacity))}.focus-visible\:bg-gray-50:focus-visible{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.focus-visible\:text-custom-700\/75:focus-visible{color:rgba(var(--c-700),.75)}.focus-visible\:text-gray-500:focus-visible{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.focus-visible\:text-gray-700\/75:focus-visible{color:rgba(var(--gray-700),.75)}.focus-visible\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\:ring-1:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\:ring-inset:focus-visible{--tw-ring-inset:inset}.focus-visible\:ring-custom-500\/50:focus-visible{--tw-ring-color:rgba(var(--c-500),0.5)}.focus-visible\:ring-custom-600:focus-visible{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--c-600),var(--tw-ring-opacity))}.focus-visible\:ring-gray-400\/40:focus-visible{--tw-ring-color:rgba(var(--gray-400),0.4)}.focus-visible\:ring-primary-500:focus-visible{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-500),var(--tw-ring-opacity))}.focus-visible\:ring-primary-600:focus-visible{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-600),var(--tw-ring-opacity))}.enabled\:cursor-wait:enabled{cursor:wait}.enabled\:opacity-70:enabled{opacity:.7}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:bg-gray-50:disabled{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.disabled\:text-gray-50:disabled{--tw-text-opacity:1;color:rgba(var(--gray-50),var(--tw-text-opacity))}.disabled\:text-gray-500:disabled{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.disabled\:opacity-70:disabled{opacity:.7}.disabled\:\[-webkit-text-fill-color\:theme\(colors\.gray\.500\)\]:disabled{-webkit-text-fill-color:rgba(var(--gray-500),1)}.disabled\:placeholder\:\[-webkit-text-fill-color\:theme\(colors\.gray\.400\)\]:disabled::-moz-placeholder{-webkit-text-fill-color:rgba(var(--gray-400),1)}.disabled\:placeholder\:\[-webkit-text-fill-color\:theme\(colors\.gray\.400\)\]:disabled::placeholder{-webkit-text-fill-color:rgba(var(--gray-400),1)}.disabled\:checked\:bg-current:checked:disabled{background-color:currentColor}.disabled\:checked\:text-gray-400:checked:disabled{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.group\/item:first-child .group-first\/item\:rounded-s-lg{border-end-start-radius:.5rem;border-start-start-radius:.5rem}.group\/item:last-child .group-last\/item\:rounded-e-lg{border-end-end-radius:.5rem;border-start-end-radius:.5rem}.group:hover .group-hover\:text-gray-500,.group\/button:hover .group-hover\/button\:text-gray-500{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.group:hover .group-hover\:text-gray-700{--tw-text-opacity:1;color:rgba(var(--gray-700),var(--tw-text-opacity))}.group\/item:hover .group-hover\/item\:underline,.group\/link:hover .group-hover\/link\:underline{text-decoration-line:underline}.group:focus-visible .group-focus-visible\:text-gray-500{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.group:focus-visible .group-focus-visible\:text-gray-700{--tw-text-opacity:1;color:rgba(var(--gray-700),var(--tw-text-opacity))}.group\/item:focus-visible .group-focus-visible\/item\:underline{text-decoration-line:underline}.group\/link:focus-visible .group-focus-visible\/link\:underline{text-decoration-line:underline}:is([dir=ltr] .ltr\:hidden){display:none}:is([dir=rtl] .rtl\:hidden){display:none}:is([dir=rtl] .rtl\:-translate-x-0){--tw-translate-x:-0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}:is([dir=rtl] .rtl\:-translate-x-5){--tw-translate-x:-1.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}:is([dir=rtl] .rtl\:-translate-x-full){--tw-translate-x:-100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}:is([dir=rtl] .rtl\:translate-x-1\/2){--tw-translate-x:50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}:is([dir=rtl] .rtl\:translate-x-full){--tw-translate-x:100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}:is([dir=rtl] .rtl\:rotate-180){--tw-rotate:180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}:is([dir=rtl] .rtl\:flex-row-reverse){flex-direction:row-reverse}:is([dir=rtl] .rtl\:divide-x-reverse)>:not([hidden])~:not([hidden]){--tw-divide-x-reverse:1}:is(.dark .dark\:flex){display:flex}:is(.dark .dark\:hidden){display:none}:is(.dark .dark\:divide-white\/10)>:not([hidden])~:not([hidden]){border-color:hsla(0,0%,100%,.1)}:is(.dark .dark\:divide-white\/20)>:not([hidden])~:not([hidden]){border-color:hsla(0,0%,100%,.2)}:is(.dark .dark\:divide-white\/5)>:not([hidden])~:not([hidden]){border-color:hsla(0,0%,100%,.05)}:is(.dark .dark\:border-gray-600){--tw-border-opacity:1;border-color:rgba(var(--gray-600),var(--tw-border-opacity))}:is(.dark .dark\:border-gray-700){--tw-border-opacity:1;border-color:rgba(var(--gray-700),var(--tw-border-opacity))}:is(.dark .dark\:border-primary-500){--tw-border-opacity:1;border-color:rgba(var(--primary-500),var(--tw-border-opacity))}:is(.dark .dark\:border-white\/10){border-color:hsla(0,0%,100%,.1)}:is(.dark .dark\:border-white\/5){border-color:hsla(0,0%,100%,.05)}:is(.dark .dark\:border-t-white\/10){border-top-color:hsla(0,0%,100%,.1)}:is(.dark .dark\:\!bg-gray-700){--tw-bg-opacity:1!important;background-color:rgba(var(--gray-700),var(--tw-bg-opacity))!important}:is(.dark .dark\:bg-custom-400\/10){background-color:rgba(var(--c-400),.1)}:is(.dark .dark\:bg-custom-500){--tw-bg-opacity:1;background-color:rgba(var(--c-500),var(--tw-bg-opacity))}:is(.dark .dark\:bg-custom-500\/20){background-color:rgba(var(--c-500),.2)}:is(.dark .dark\:bg-gray-400\/10){background-color:rgba(var(--gray-400),.1)}:is(.dark .dark\:bg-gray-500){--tw-bg-opacity:1;background-color:rgba(var(--gray-500),var(--tw-bg-opacity))}:is(.dark .dark\:bg-gray-500\/20){background-color:rgba(var(--gray-500),.2)}:is(.dark .dark\:bg-gray-600){--tw-bg-opacity:1;background-color:rgba(var(--gray-600),var(--tw-bg-opacity))}:is(.dark .dark\:bg-gray-700){--tw-bg-opacity:1;background-color:rgba(var(--gray-700),var(--tw-bg-opacity))}:is(.dark .dark\:bg-gray-800){--tw-bg-opacity:1;background-color:rgba(var(--gray-800),var(--tw-bg-opacity))}:is(.dark .dark\:bg-gray-900){--tw-bg-opacity:1;background-color:rgba(var(--gray-900),var(--tw-bg-opacity))}:is(.dark .dark\:bg-gray-900\/30){background-color:rgba(var(--gray-900),.3)}:is(.dark .dark\:bg-gray-950){--tw-bg-opacity:1;background-color:rgba(var(--gray-950),var(--tw-bg-opacity))}:is(.dark .dark\:bg-gray-950\/75){background-color:rgba(var(--gray-950),.75)}:is(.dark .dark\:bg-primary-400){--tw-bg-opacity:1;background-color:rgba(var(--primary-400),var(--tw-bg-opacity))}:is(.dark .dark\:bg-primary-500){--tw-bg-opacity:1;background-color:rgba(var(--primary-500),var(--tw-bg-opacity))}:is(.dark .dark\:bg-transparent){background-color:transparent}:is(.dark .dark\:bg-white\/10){background-color:hsla(0,0%,100%,.1)}:is(.dark .dark\:bg-white\/5){background-color:hsla(0,0%,100%,.05)}:is(.dark .dark\:fill-current){fill:currentColor}:is(.dark .dark\:text-custom-300\/50){color:rgba(var(--c-300),.5)}:is(.dark .dark\:text-custom-400){--tw-text-opacity:1;color:rgba(var(--c-400),var(--tw-text-opacity))}:is(.dark .dark\:text-custom-400\/10){color:rgba(var(--c-400),.1)}:is(.dark .dark\:text-danger-400){--tw-text-opacity:1;color:rgba(var(--danger-400),var(--tw-text-opacity))}:is(.dark .dark\:text-danger-500){--tw-text-opacity:1;color:rgba(var(--danger-500),var(--tw-text-opacity))}:is(.dark .dark\:text-gray-200){--tw-text-opacity:1;color:rgba(var(--gray-200),var(--tw-text-opacity))}:is(.dark .dark\:text-gray-300\/50){color:rgba(var(--gray-300),.5)}:is(.dark .dark\:text-gray-400){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}:is(.dark .dark\:text-gray-500){--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}:is(.dark .dark\:text-gray-700){--tw-text-opacity:1;color:rgba(var(--gray-700),var(--tw-text-opacity))}:is(.dark .dark\:text-gray-800){--tw-text-opacity:1;color:rgba(var(--gray-800),var(--tw-text-opacity))}:is(.dark .dark\:text-primary-400){--tw-text-opacity:1;color:rgba(var(--primary-400),var(--tw-text-opacity))}:is(.dark .dark\:text-primary-500){--tw-text-opacity:1;color:rgba(var(--primary-500),var(--tw-text-opacity))}:is(.dark .dark\:text-white){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}:is(.dark .dark\:text-white\/5){color:hsla(0,0%,100%,.05)}:is(.dark .dark\:ring-custom-400\/30){--tw-ring-color:rgba(var(--c-400),0.3)}:is(.dark .dark\:ring-custom-500){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--c-500),var(--tw-ring-opacity))}:is(.dark .dark\:ring-danger-500){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--danger-500),var(--tw-ring-opacity))}:is(.dark .dark\:ring-gray-400\/20){--tw-ring-color:rgba(var(--gray-400),0.2)}:is(.dark .dark\:ring-gray-50\/10){--tw-ring-color:rgba(var(--gray-50),0.1)}:is(.dark .dark\:ring-gray-700){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--gray-700),var(--tw-ring-opacity))}:is(.dark .dark\:ring-gray-900){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--gray-900),var(--tw-ring-opacity))}:is(.dark .dark\:ring-white\/10){--tw-ring-color:hsla(0,0%,100%,.1)}:is(.dark .dark\:ring-white\/20){--tw-ring-color:hsla(0,0%,100%,.2)}:is(.dark .dark\:placeholder\:text-gray-500)::-moz-placeholder{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}:is(.dark .dark\:placeholder\:text-gray-500)::placeholder{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}:is(.dark .dark\:before\:bg-primary-500):before{--tw-bg-opacity:1;background-color:rgba(var(--primary-500),var(--tw-bg-opacity));content:var(--tw-content)}:is(.dark .dark\:checked\:bg-danger-500:checked){--tw-bg-opacity:1;background-color:rgba(var(--danger-500),var(--tw-bg-opacity))}:is(.dark .dark\:checked\:bg-primary-500:checked){--tw-bg-opacity:1;background-color:rgba(var(--primary-500),var(--tw-bg-opacity))}:is(.dark .dark\:focus-within\:bg-white\/5:focus-within){background-color:hsla(0,0%,100%,.05)}:is(.dark .dark\:focus-within\:ring-danger-500:focus-within){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--danger-500),var(--tw-ring-opacity))}:is(.dark .dark\:focus-within\:ring-primary-500:focus-within){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-500),var(--tw-ring-opacity))}:is(.dark .dark\:hover\:bg-custom-400:hover){--tw-bg-opacity:1;background-color:rgba(var(--c-400),var(--tw-bg-opacity))}:is(.dark .dark\:hover\:bg-custom-400\/10:hover){background-color:rgba(var(--c-400),.1)}:is(.dark .dark\:hover\:bg-white\/10:hover){background-color:hsla(0,0%,100%,.1)}:is(.dark .dark\:hover\:bg-white\/5:hover){background-color:hsla(0,0%,100%,.05)}:is(.dark .dark\:hover\:text-custom-300:hover){--tw-text-opacity:1;color:rgba(var(--c-300),var(--tw-text-opacity))}:is(.dark .dark\:hover\:text-custom-300\/75:hover){color:rgba(var(--c-300),.75)}:is(.dark .dark\:hover\:text-gray-200:hover){--tw-text-opacity:1;color:rgba(var(--gray-200),var(--tw-text-opacity))}:is(.dark .dark\:hover\:text-gray-300\/75:hover){color:rgba(var(--gray-300),.75)}:is(.dark .dark\:hover\:text-gray-400:hover){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}:is(.dark .dark\:hover\:ring-white\/20:hover){--tw-ring-color:hsla(0,0%,100%,.2)}:is(.dark .dark\:focus\:ring-danger-500:focus){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--danger-500),var(--tw-ring-opacity))}:is(.dark .dark\:focus\:ring-primary-500:focus){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-500),var(--tw-ring-opacity))}:is(.dark .dark\:checked\:focus\:ring-danger-400\/50:focus:checked){--tw-ring-color:rgba(var(--danger-400),0.5)}:is(.dark .dark\:checked\:focus\:ring-primary-400\/50:focus:checked){--tw-ring-color:rgba(var(--primary-400),0.5)}:is(.dark .dark\:focus-visible\:border-primary-500:focus-visible){--tw-border-opacity:1;border-color:rgba(var(--primary-500),var(--tw-border-opacity))}:is(.dark .dark\:focus-visible\:bg-custom-400\/10:focus-visible){background-color:rgba(var(--c-400),.1)}:is(.dark .dark\:focus-visible\:bg-white\/5:focus-visible){background-color:hsla(0,0%,100%,.05)}:is(.dark .dark\:focus-visible\:text-custom-300\/75:focus-visible){color:rgba(var(--c-300),.75)}:is(.dark .dark\:focus-visible\:text-gray-300\/75:focus-visible){color:rgba(var(--gray-300),.75)}:is(.dark .dark\:focus-visible\:text-gray-400:focus-visible){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}:is(.dark .dark\:focus-visible\:ring-custom-400\/50:focus-visible){--tw-ring-color:rgba(var(--c-400),0.5)}:is(.dark .dark\:focus-visible\:ring-custom-500:focus-visible){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--c-500),var(--tw-ring-opacity))}:is(.dark .dark\:focus-visible\:ring-primary-500:focus-visible){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-500),var(--tw-ring-opacity))}:is(.dark .dark\:disabled\:bg-transparent:disabled){background-color:transparent}:is(.dark .dark\:disabled\:text-gray-400:disabled){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}:is(.dark .dark\:disabled\:ring-white\/10:disabled){--tw-ring-color:hsla(0,0%,100%,.1)}:is(.dark .dark\:disabled\:\[-webkit-text-fill-color\:theme\(colors\.gray\.400\)\]:disabled){-webkit-text-fill-color:rgba(var(--gray-400),1)}:is(.dark .dark\:disabled\:placeholder\:\[-webkit-text-fill-color\:theme\(colors\.gray\.500\)\]:disabled)::-moz-placeholder{-webkit-text-fill-color:rgba(var(--gray-500),1)}:is(.dark .dark\:disabled\:placeholder\:\[-webkit-text-fill-color\:theme\(colors\.gray\.500\)\]:disabled)::placeholder{-webkit-text-fill-color:rgba(var(--gray-500),1)}:is(.dark .dark\:disabled\:checked\:bg-gray-600:checked:disabled){--tw-bg-opacity:1;background-color:rgba(var(--gray-600),var(--tw-bg-opacity))}:is(.dark .group\/button:hover .dark\:group-hover\/button\:text-gray-400){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}:is(.dark .group:hover .dark\:group-hover\:text-gray-200){--tw-text-opacity:1;color:rgba(var(--gray-200),var(--tw-text-opacity))}:is(.dark .group:hover .dark\:group-hover\:text-gray-400){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}:is(.dark .group:focus-visible .dark\:group-focus-visible\:text-gray-200){--tw-text-opacity:1;color:rgba(var(--gray-200),var(--tw-text-opacity))}:is(.dark .group:focus-visible .dark\:group-focus-visible\:text-gray-400){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}@media (min-width:640px){.sm\:relative{position:relative}.sm\:inset-x-auto{left:auto;right:auto}.sm\:end-0{inset-inline-end:0}.sm\:col-\[--col-span-sm\]{grid-column:var(--col-span-sm)}.sm\:col-span-2{grid-column:span 2/span 2}.sm\:col-start-\[--col-start-sm\]{grid-column-start:var(--col-start-sm)}.sm\:-mx-6{margin-left:-1.5rem;margin-right:-1.5rem}.sm\:-my-2{margin-bottom:-.5rem;margin-top:-.5rem}.sm\:ms-auto{margin-inline-start:auto}.sm\:mt-7{margin-top:1.75rem}.sm\:block{display:block}.sm\:flex{display:flex}.sm\:table-cell{display:table-cell}.sm\:grid{display:grid}.sm\:inline-grid{display:inline-grid}.sm\:hidden{display:none}.sm\:w-\[calc\(100\%\+3rem\)\]{width:calc(100% + 3rem)}.sm\:w-screen{width:100vw}.sm\:max-w-2xl{max-width:42rem}.sm\:max-w-3xl{max-width:48rem}.sm\:max-w-4xl{max-width:56rem}.sm\:max-w-5xl{max-width:64rem}.sm\:max-w-6xl{max-width:72rem}.sm\:max-w-7xl{max-width:80rem}.sm\:max-w-lg{max-width:32rem}.sm\:max-w-md{max-width:28rem}.sm\:max-w-sm{max-width:24rem}.sm\:max-w-xl{max-width:36rem}.sm\:max-w-xs{max-width:20rem}.sm\:columns-\[--cols-sm\]{-moz-columns:var(--cols-sm);columns:var(--cols-sm)}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-\[--cols-sm\]{grid-template-columns:var(--cols-sm)}.sm\:grid-cols-\[repeat\(auto-fit\2c minmax\(0\2c 1fr\)\)\]{grid-template-columns:repeat(auto-fit,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:flex-nowrap{flex-wrap:nowrap}.sm\:items-start{align-items:flex-start}.sm\:items-end{align-items:flex-end}.sm\:items-center{align-items:center}.sm\:justify-between{justify-content:space-between}.sm\:gap-1{gap:.25rem}.sm\:gap-3{gap:.75rem}.sm\:gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.sm\:rounded-xl{border-radius:.75rem}.sm\:p-10{padding:2.5rem}.sm\:px-12{padding-left:3rem;padding-right:3rem}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:py-1{padding-bottom:.25rem;padding-top:.25rem}.sm\:py-1\.5{padding-bottom:.375rem;padding-top:.375rem}.sm\:pe-3{padding-inline-end:.75rem}.sm\:pe-6{padding-inline-end:1.5rem}.sm\:ps-3{padding-inline-start:.75rem}.sm\:ps-6{padding-inline-start:1.5rem}.sm\:pt-1{padding-top:.25rem}.sm\:pt-1\.5{padding-top:.375rem}.sm\:text-3xl{font-size:1.875rem;line-height:2.25rem}.sm\:text-sm{font-size:.875rem;line-height:1.25rem}.sm\:leading-6{line-height:1.5rem}.sm\:first-of-type\:ps-3:first-of-type{padding-inline-start:.75rem}.sm\:first-of-type\:ps-6:first-of-type{padding-inline-start:1.5rem}.sm\:last-of-type\:pe-3:last-of-type{padding-inline-end:.75rem}.sm\:last-of-type\:pe-6:last-of-type{padding-inline-end:1.5rem}}@media (min-width:768px){.md\:bottom-4{bottom:1rem}.md\:order-first{order:-9999}.md\:col-\[--col-span-md\]{grid-column:var(--col-span-md)}.md\:col-span-2{grid-column:span 2/span 2}.md\:col-start-\[--col-start-md\]{grid-column-start:var(--col-start-md)}.md\:block{display:block}.md\:flex{display:flex}.md\:table-cell{display:table-cell}.md\:inline-grid{display:inline-grid}.md\:hidden{display:none}.md\:columns-\[--cols-md\]{-moz-columns:var(--cols-md);columns:var(--cols-md)}.md\:grid-flow-col{grid-auto-flow:column}.md\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-\[--cols-md\]{grid-template-columns:var(--cols-md)}.md\:flex-row{flex-direction:row}.md\:items-start{align-items:flex-start}.md\:items-center{align-items:center}.md\:justify-end{justify-content:flex-end}.md\:gap-1{gap:.25rem}.md\:gap-3{gap:.75rem}.md\:divide-y-0>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-bottom-width:calc(0px*var(--tw-divide-y-reverse));border-top-width:calc(0px*(1 - var(--tw-divide-y-reverse)))}.md\:rounded-xl{border-radius:.75rem}.md\:p-20{padding:5rem}.md\:px-6{padding-left:1.5rem;padding-right:1.5rem}.md\:pe-3{padding-inline-end:.75rem}.md\:pe-6{padding-inline-end:1.5rem}.md\:ps-3{padding-inline-start:.75rem}}@media (min-width:1024px){.lg\:sticky{position:sticky}.lg\:z-0{z-index:0}.lg\:col-\[--col-span-lg\]{grid-column:var(--col-span-lg)}.lg\:col-start-\[--col-start-lg\]{grid-column-start:var(--col-start-lg)}.lg\:block{display:block}.lg\:flex{display:flex}.lg\:table-cell{display:table-cell}.lg\:inline-grid{display:inline-grid}.lg\:hidden{display:none}.lg\:h-full{height:100%}.lg\:max-w-xs{max-width:20rem}.lg\:-translate-x-full{--tw-translate-x:-100%}.lg\:-translate-x-full,.lg\:translate-x-0{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lg\:translate-x-0{--tw-translate-x:0px}.lg\:columns-\[--cols-lg\]{-moz-columns:var(--cols-lg);columns:var(--cols-lg)}.lg\:grid-cols-\[--cols-lg\]{grid-template-columns:var(--cols-lg)}.lg\:flex-row{flex-direction:row}.lg\:items-start{align-items:flex-start}.lg\:items-center{align-items:center}.lg\:gap-1{gap:.25rem}.lg\:gap-3{gap:.75rem}.lg\:bg-transparent{background-color:transparent}.lg\:px-8{padding-left:2rem;padding-right:2rem}.lg\:pe-8{padding-inline-end:2rem}.lg\:shadow-none{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000}.lg\:shadow-none,.lg\:shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.lg\:shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.lg\:ring-0{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.lg\:transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.lg\:transition-none{transition-property:none}.lg\:delay-100{transition-delay:.1s}:is([dir=rtl] .rtl\:lg\:-translate-x-0){--tw-translate-x:-0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}:is([dir=rtl] .rtl\:lg\:translate-x-full){--tw-translate-x:100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}:is(.dark .dark\:lg\:bg-transparent){background-color:transparent}}@media (min-width:1280px){.xl\:col-\[--col-span-xl\]{grid-column:var(--col-span-xl)}.xl\:col-start-\[--col-start-xl\]{grid-column-start:var(--col-start-xl)}.xl\:block{display:block}.xl\:table-cell{display:table-cell}.xl\:inline-grid{display:inline-grid}.xl\:hidden{display:none}.xl\:columns-\[--cols-xl\]{-moz-columns:var(--cols-xl);columns:var(--cols-xl)}.xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.xl\:grid-cols-\[--cols-xl\]{grid-template-columns:var(--cols-xl)}.xl\:flex-row{flex-direction:row}.xl\:items-start{align-items:flex-start}.xl\:items-center{align-items:center}.xl\:gap-1{gap:.25rem}.xl\:gap-3{gap:.75rem}}@media (min-width:1536px){.\32xl\:col-\[--col-span-2xl\]{grid-column:var(--col-span-2xl)}.\32xl\:col-start-\[--col-start-2xl\]{grid-column-start:var(--col-start-2xl)}.\32xl\:block{display:block}.\32xl\:table-cell{display:table-cell}.\32xl\:inline-grid{display:inline-grid}.\32xl\:hidden{display:none}.\32xl\:columns-\[--cols-2xl\]{-moz-columns:var(--cols-2xl);columns:var(--cols-2xl)}.\32xl\:grid-cols-\[--cols-2xl\]{grid-template-columns:var(--cols-2xl)}.\32xl\:flex-row{flex-direction:row}.\32xl\:items-start{align-items:flex-start}.\32xl\:items-center{align-items:center}.\32xl\:gap-1{gap:.25rem}.\32xl\:gap-3{gap:.75rem}}.\[\&\.trix-active\]\:bg-gray-50.trix-active{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.\[\&\.trix-active\]\:text-primary-600.trix-active{--tw-text-opacity:1;color:rgba(var(--primary-600),var(--tw-text-opacity))}:is(.dark .dark\:\[\&\.trix-active\]\:bg-white\/5.trix-active){background-color:hsla(0,0%,100%,.05)}:is(.dark .dark\:\[\&\.trix-active\]\:text-primary-400.trix-active){--tw-text-opacity:1;color:rgba(var(--primary-400),var(--tw-text-opacity))}.\[\&\>\*\:first-child\]\:relative>:first-child{position:relative}.\[\&\>\*\:first-child\]\:mt-0>:first-child{margin-top:0}.\[\&\>\*\:first-child\]\:before\:absolute>:first-child:before{content:var(--tw-content);position:absolute}.\[\&\>\*\:first-child\]\:before\:inset-y-0>:first-child:before{bottom:0;content:var(--tw-content);top:0}.\[\&\>\*\:first-child\]\:before\:start-0>:first-child:before{content:var(--tw-content);inset-inline-start:0}.\[\&\>\*\:first-child\]\:before\:w-0\.5>:first-child:before{content:var(--tw-content);width:.125rem}.\[\&\>\*\:first-child\]\:before\:bg-primary-600>:first-child:before{--tw-bg-opacity:1;background-color:rgba(var(--primary-600),var(--tw-bg-opacity));content:var(--tw-content)}:is(.dark .\[\&\>\*\:first-child\]\:dark\:before\:bg-primary-500)>:first-child:before{--tw-bg-opacity:1;background-color:rgba(var(--primary-500),var(--tw-bg-opacity));content:var(--tw-content)}.\[\&\>\*\:last-child\]\:mb-0>:last-child{margin-bottom:0}.\[\&_\.choices\\_\\_inner\]\:ps-0 .choices__inner{padding-inline-start:0}.\[\&_\.fi-badge-delete-button\]\:hidden .fi-badge-delete-button{display:none}.\[\&_\.filepond--root\]\:font-sans .filepond--root{font-family:var(--font-family),ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"}.\[\&_optgroup\]\:bg-white optgroup{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}:is(.dark .\[\&_optgroup\]\:dark\:bg-gray-900) optgroup{--tw-bg-opacity:1;background-color:rgba(var(--gray-900),var(--tw-bg-opacity))}.\[\&_option\]\:bg-white option{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}:is(.dark .\[\&_option\]\:dark\:bg-gray-900) option{--tw-bg-opacity:1;background-color:rgba(var(--gray-900),var(--tw-bg-opacity))}@media(hover:hover){.\[\@media\(hover\:hover\)\]\:transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.\[\@media\(hover\:hover\)\]\:duration-75{transition-duration:75ms}} \ No newline at end of file diff --git a/public/js/filament/forms/components/color-picker.js b/public/js/filament/forms/components/color-picker.js index ab0a9ead8..a3ff70c85 100644 --- a/public/js/filament/forms/components/color-picker.js +++ b/public/js/filament/forms/components/color-picker.js @@ -1 +1 @@ -var l=(e,t=0,r=1)=>e>r?r:eMath.round(r*e)/r;var nt={grad:360/400,turn:360,rad:360/(Math.PI*2)},B=e=>J(x(e)),x=e=>(e[0]==="#"&&(e=e.substr(1)),e.length<6?{r:parseInt(e[0]+e[0],16),g:parseInt(e[1]+e[1],16),b:parseInt(e[2]+e[2],16),a:1}:{r:parseInt(e.substr(0,2),16),g:parseInt(e.substr(2,2),16),b:parseInt(e.substr(4,2),16),a:1}),it=(e,t="deg")=>Number(e)*(nt[t]||1),lt=e=>{let r=/hsla?\(?\s*(-?\d*\.?\d+)(deg|rad|grad|turn)?[,\s]+(-?\d*\.?\d+)%?[,\s]+(-?\d*\.?\d+)%?,?\s*[/\s]*(-?\d*\.?\d+)?(%)?\s*\)?/i.exec(e);return r?ct({h:it(r[1],r[2]),s:Number(r[3]),l:Number(r[4]),a:r[5]===void 0?1:Number(r[5])/(r[6]?100:1)}):{h:0,s:0,v:0,a:1}},F=lt,ct=({h:e,s:t,l:r,a:s})=>(t*=(r<50?r:100-r)/100,{h:e,s:t>0?2*t/(r+t)*100:0,v:r+t,a:s}),X=e=>pt(N(e)),Y=({h:e,s:t,v:r,a:s})=>{let o=(200-t)*r/100;return{h:a(e),s:a(o>0&&o<200?t*r/100/(o<=100?o:200-o)*100:0),l:a(o/2),a:a(s,2)}};var u=e=>{let{h:t,s:r,l:s}=Y(e);return`hsl(${t}, ${r}%, ${s}%)`},b=e=>{let{h:t,s:r,l:s,a:o}=Y(e);return`hsla(${t}, ${r}%, ${s}%, ${o})`},N=({h:e,s:t,v:r,a:s})=>{e=e/360*6,t=t/100,r=r/100;let o=Math.floor(e),n=r*(1-t),i=r*(1-(e-o)*t),E=r*(1-(1-e+o)*t),q=o%6;return{r:a([r,i,n,n,E,r][q]*255),g:a([E,r,r,i,n,n][q]*255),b:a([n,n,E,r,r,i][q]*255),a:a(s,2)}},_=e=>{let{r:t,g:r,b:s}=N(e);return`rgb(${t}, ${r}, ${s})`},U=e=>{let{r:t,g:r,b:s,a:o}=N(e);return`rgba(${t}, ${r}, ${s}, ${o})`};var A=e=>{let r=/rgba?\(?\s*(-?\d*\.?\d+)(%)?[,\s]+(-?\d*\.?\d+)(%)?[,\s]+(-?\d*\.?\d+)(%)?,?\s*[/\s]*(-?\d*\.?\d+)?(%)?\s*\)?/i.exec(e);return r?J({r:Number(r[1])/(r[2]?100/255:1),g:Number(r[3])/(r[4]?100/255:1),b:Number(r[5])/(r[6]?100/255:1),a:r[7]===void 0?1:Number(r[7])/(r[8]?100:1)}):{h:0,s:0,v:0,a:1}},G=A,L=e=>{let t=e.toString(16);return t.length<2?"0"+t:t},pt=({r:e,g:t,b:r})=>"#"+L(e)+L(t)+L(r),J=({r:e,g:t,b:r,a:s})=>{let o=Math.max(e,t,r),n=o-Math.min(e,t,r),i=n?o===e?(t-r)/n:o===t?2+(r-e)/n:4+(e-t)/n:0;return{h:a(60*(i<0?i+6:i)),s:a(o?n/o*100:0),v:a(o/255*100),a:s}};var I=(e,t)=>{if(e===t)return!0;for(let r in e)if(e[r]!==t[r])return!1;return!0},d=(e,t)=>e.replace(/\s/g,"")===t.replace(/\s/g,""),K=(e,t)=>e.toLowerCase()===t.toLowerCase()?!0:I(x(e),x(t));var Q={},v=e=>{let t=Q[e];return t||(t=document.createElement("template"),t.innerHTML=e,Q[e]=t),t},m=(e,t,r)=>{e.dispatchEvent(new CustomEvent(t,{bubbles:!0,detail:r}))};var h=!1,O=e=>"touches"in e,ut=e=>h&&!O(e)?!1:(h||(h=O(e)),!0),W=(e,t)=>{let r=O(t)?t.touches[0]:t,s=e.el.getBoundingClientRect();m(e.el,"move",e.getMove({x:l((r.pageX-(s.left+window.pageXOffset))/s.width),y:l((r.pageY-(s.top+window.pageYOffset))/s.height)}))},dt=(e,t)=>{let r=t.keyCode;r>40||e.xy&&r<37||r<33||(t.preventDefault(),m(e.el,"move",e.getMove({x:r===39?.01:r===37?-.01:r===34?.05:r===33?-.05:r===35?1:r===36?-1:0,y:r===40?.01:r===38?-.01:0},!0)))},p=class{constructor(t,r,s,o){let n=v(`
    `);t.appendChild(n.content.cloneNode(!0));let i=t.querySelector(`[part=${r}]`);i.addEventListener("mousedown",this),i.addEventListener("touchstart",this),i.addEventListener("keydown",this),this.el=i,this.xy=o,this.nodes=[i.firstChild,i]}set dragging(t){let r=t?document.addEventListener:document.removeEventListener;r(h?"touchmove":"mousemove",this),r(h?"touchend":"mouseup",this)}handleEvent(t){switch(t.type){case"mousedown":case"touchstart":if(t.preventDefault(),!ut(t)||!h&&t.button!=0)return;this.el.focus(),W(this,t),this.dragging=!0;break;case"mousemove":case"touchmove":t.preventDefault(),W(this,t);break;case"mouseup":case"touchend":this.dragging=!1;break;case"keydown":dt(this,t);break}}style(t){t.forEach((r,s)=>{for(let o in r)this.nodes[s].style.setProperty(o,r[o])})}};var $=class extends p{constructor(t){super(t,"hue",'aria-label="Hue" aria-valuemin="0" aria-valuemax="360"',!1)}update({h:t}){this.h=t,this.style([{left:`${t/360*100}%`,color:u({h:t,s:100,v:100,a:1})}]),this.el.setAttribute("aria-valuenow",`${a(t)}`)}getMove(t,r){return{h:r?l(this.h+t.x*360,0,360):360*t.x}}};var H=class extends p{constructor(t){super(t,"saturation",'aria-label="Color"',!0)}update(t){this.hsva=t,this.style([{top:`${100-t.v}%`,left:`${t.s}%`,color:u(t)},{"background-color":u({h:t.h,s:100,v:100,a:1})}]),this.el.setAttribute("aria-valuetext",`Saturation ${a(t.s)}%, Brightness ${a(t.v)}%`)}getMove(t,r){return{s:r?l(this.hsva.s+t.x*100,0,100):t.x*100,v:r?l(this.hsva.v-t.y*100,0,100):Math.round(100-t.y*100)}}};var Z=":host{display:flex;flex-direction:column;position:relative;width:200px;height:200px;user-select:none;-webkit-user-select:none;cursor:default}:host([hidden]){display:none!important}[role=slider]{position:relative;touch-action:none;user-select:none;-webkit-user-select:none;outline:0}[role=slider]:last-child{border-radius:0 0 8px 8px}[part$=pointer]{position:absolute;z-index:1;box-sizing:border-box;width:28px;height:28px;transform:translate(-50%,-50%);background-color:#fff;border:2px solid #fff;border-radius:50%;box-shadow:0 2px 4px rgba(0,0,0,.2)}[part$=pointer]::after{display:block;content:'';position:absolute;left:0;top:0;right:0;bottom:0;border-radius:inherit;background-color:currentColor}[role=slider]:focus [part$=pointer]{transform:translate(-50%,-50%) scale(1.1)}";var tt="[part=hue]{flex:0 0 24px;background:linear-gradient(to right,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red 100%)}[part=hue-pointer]{top:50%;z-index:2}";var rt="[part=saturation]{flex-grow:1;border-color:transparent;border-bottom:12px solid #000;border-radius:8px 8px 0 0;background-image:linear-gradient(to top,#000,transparent),linear-gradient(to right,#fff,rgba(255,255,255,0));box-shadow:inset 0 0 0 1px rgba(0,0,0,.05)}[part=saturation-pointer]{z-index:3}";var S=Symbol("same"),et=Symbol("color"),ot=Symbol("hsva"),R=Symbol("change"),P=Symbol("update"),st=Symbol("parts"),f=Symbol("css"),g=Symbol("sliders"),c=class extends HTMLElement{static get observedAttributes(){return["color"]}get[f](){return[Z,tt,rt]}get[g](){return[H,$]}get color(){return this[et]}set color(t){if(!this[S](t)){let r=this.colorModel.toHsva(t);this[P](r),this[R](t)}}constructor(){super();let t=v(``),r=this.attachShadow({mode:"open"});r.appendChild(t.content.cloneNode(!0)),r.addEventListener("move",this),this[st]=this[g].map(s=>new s(r))}connectedCallback(){if(this.hasOwnProperty("color")){let t=this.color;delete this.color,this.color=t}else this.color||(this.color=this.colorModel.defaultColor)}attributeChangedCallback(t,r,s){let o=this.colorModel.fromAttr(s);this[S](o)||(this.color=o)}handleEvent(t){let r=this[ot],s={...r,...t.detail};this[P](s);let o;!I(s,r)&&!this[S](o=this.colorModel.fromHsva(s))&&this[R](o)}[S](t){return this.color&&this.colorModel.equal(t,this.color)}[P](t){this[ot]=t,this[st].forEach(r=>r.update(t))}[R](t){this[et]=t,m(this,"color-changed",{value:t})}};var ht={defaultColor:"#000",toHsva:B,fromHsva:X,equal:K,fromAttr:e=>e},y=class extends c{get colorModel(){return ht}};var z=class extends y{};customElements.define("hex-color-picker",z);var mt={defaultColor:"hsl(0, 0%, 0%)",toHsva:F,fromHsva:u,equal:d,fromAttr:e=>e},T=class extends c{get colorModel(){return mt}};var V=class extends T{};customElements.define("hsl-string-color-picker",V);var ft={defaultColor:"rgb(0, 0, 0)",toHsva:G,fromHsva:_,equal:d,fromAttr:e=>e},w=class extends c{get colorModel(){return ft}};var j=class extends w{};customElements.define("rgb-string-color-picker",j);var M=class extends p{constructor(t){super(t,"alpha",'aria-label="Alpha" aria-valuemin="0" aria-valuemax="1"',!1)}update(t){this.hsva=t;let r=b({...t,a:0}),s=b({...t,a:1}),o=t.a*100;this.style([{left:`${o}%`,color:b(t)},{"--gradient":`linear-gradient(90deg, ${r}, ${s}`}]);let n=a(o);this.el.setAttribute("aria-valuenow",`${n}`),this.el.setAttribute("aria-valuetext",`${n}%`)}getMove(t,r){return{a:r?l(this.hsva.a+t.x):t.x}}};var at=`[part=alpha]{flex:0 0 24px}[part=alpha]::after{display:block;content:'';position:absolute;top:0;left:0;right:0;bottom:0;border-radius:inherit;background-image:var(--gradient);box-shadow:inset 0 0 0 1px rgba(0,0,0,.05)}[part^=alpha]{background-color:#fff;background-image:url('data:image/svg+xml,')}[part=alpha-pointer]{top:50%}`;var k=class extends c{get[f](){return[...super[f],at]}get[g](){return[...super[g],M]}};var gt={defaultColor:"rgba(0, 0, 0, 1)",toHsva:A,fromHsva:U,equal:d,fromAttr:e=>e},C=class extends k{get colorModel(){return gt}};var D=class extends C{};customElements.define("rgba-string-color-picker",D);function xt({isAutofocused:e,isDisabled:t,isLiveOnPickerClose:r,state:s}){return{state:s,init:function(){this.state===null||this.state===""||this.setState(this.state),e&&this.togglePanelVisibility(this.$refs.input),this.$refs.input.addEventListener("change",o=>{this.setState(o.target.value)}),this.$refs.panel.addEventListener("color-changed",o=>{this.setState(o.detail.value)}),r&&new MutationObserver(()=>{this.$refs.panel.style.display==="none"&&this.$wire.call("$refresh")}).observe(this.$refs.panel,{attributes:!0,childList:!0})},togglePanelVisibility:function(){t||this.$refs.panel.toggle(this.$refs.input)},setState:function(o){this.state=o,this.$refs.input.value=o,this.$refs.panel.color=o},isOpen:function(){return this.$refs.panel.style.display==="block"}}}export{xt as default}; +var l=(e,t=0,r=1)=>e>r?r:eMath.round(r*e)/r;var nt={grad:360/400,turn:360,rad:360/(Math.PI*2)},B=e=>J(x(e)),x=e=>(e[0]==="#"&&(e=e.substr(1)),e.length<6?{r:parseInt(e[0]+e[0],16),g:parseInt(e[1]+e[1],16),b:parseInt(e[2]+e[2],16),a:1}:{r:parseInt(e.substr(0,2),16),g:parseInt(e.substr(2,2),16),b:parseInt(e.substr(4,2),16),a:1}),it=(e,t="deg")=>Number(e)*(nt[t]||1),lt=e=>{let r=/hsla?\(?\s*(-?\d*\.?\d+)(deg|rad|grad|turn)?[,\s]+(-?\d*\.?\d+)%?[,\s]+(-?\d*\.?\d+)%?,?\s*[/\s]*(-?\d*\.?\d+)?(%)?\s*\)?/i.exec(e);return r?ct({h:it(r[1],r[2]),s:Number(r[3]),l:Number(r[4]),a:r[5]===void 0?1:Number(r[5])/(r[6]?100:1)}):{h:0,s:0,v:0,a:1}},F=lt,ct=({h:e,s:t,l:r,a:s})=>(t*=(r<50?r:100-r)/100,{h:e,s:t>0?2*t/(r+t)*100:0,v:r+t,a:s}),X=e=>pt(N(e)),Y=({h:e,s:t,v:r,a:s})=>{let o=(200-t)*r/100;return{h:n(e),s:n(o>0&&o<200?t*r/100/(o<=100?o:200-o)*100:0),l:n(o/2),a:n(s,2)}};var u=e=>{let{h:t,s:r,l:s}=Y(e);return`hsl(${t}, ${r}%, ${s}%)`},b=e=>{let{h:t,s:r,l:s,a:o}=Y(e);return`hsla(${t}, ${r}%, ${s}%, ${o})`},N=({h:e,s:t,v:r,a:s})=>{e=e/360*6,t=t/100,r=r/100;let o=Math.floor(e),a=r*(1-t),i=r*(1-(e-o)*t),E=r*(1-(1-e+o)*t),q=o%6;return{r:n([r,i,a,a,E,r][q]*255),g:n([E,r,r,i,a,a][q]*255),b:n([a,a,E,r,r,i][q]*255),a:n(s,2)}},_=e=>{let{r:t,g:r,b:s}=N(e);return`rgb(${t}, ${r}, ${s})`},U=e=>{let{r:t,g:r,b:s,a:o}=N(e);return`rgba(${t}, ${r}, ${s}, ${o})`};var A=e=>{let r=/rgba?\(?\s*(-?\d*\.?\d+)(%)?[,\s]+(-?\d*\.?\d+)(%)?[,\s]+(-?\d*\.?\d+)(%)?,?\s*[/\s]*(-?\d*\.?\d+)?(%)?\s*\)?/i.exec(e);return r?J({r:Number(r[1])/(r[2]?100/255:1),g:Number(r[3])/(r[4]?100/255:1),b:Number(r[5])/(r[6]?100/255:1),a:r[7]===void 0?1:Number(r[7])/(r[8]?100:1)}):{h:0,s:0,v:0,a:1}},G=A,L=e=>{let t=e.toString(16);return t.length<2?"0"+t:t},pt=({r:e,g:t,b:r})=>"#"+L(e)+L(t)+L(r),J=({r:e,g:t,b:r,a:s})=>{let o=Math.max(e,t,r),a=o-Math.min(e,t,r),i=a?o===e?(t-r)/a:o===t?2+(r-e)/a:4+(e-t)/a:0;return{h:n(60*(i<0?i+6:i)),s:n(o?a/o*100:0),v:n(o/255*100),a:s}};var I=(e,t)=>{if(e===t)return!0;for(let r in e)if(e[r]!==t[r])return!1;return!0},d=(e,t)=>e.replace(/\s/g,"")===t.replace(/\s/g,""),K=(e,t)=>e.toLowerCase()===t.toLowerCase()?!0:I(x(e),x(t));var Q={},v=e=>{let t=Q[e];return t||(t=document.createElement("template"),t.innerHTML=e,Q[e]=t),t},m=(e,t,r)=>{e.dispatchEvent(new CustomEvent(t,{bubbles:!0,detail:r}))};var h=!1,O=e=>"touches"in e,ut=e=>h&&!O(e)?!1:(h||(h=O(e)),!0),W=(e,t)=>{let r=O(t)?t.touches[0]:t,s=e.el.getBoundingClientRect();m(e.el,"move",e.getMove({x:l((r.pageX-(s.left+window.pageXOffset))/s.width),y:l((r.pageY-(s.top+window.pageYOffset))/s.height)}))},dt=(e,t)=>{let r=t.keyCode;r>40||e.xy&&r<37||r<33||(t.preventDefault(),m(e.el,"move",e.getMove({x:r===39?.01:r===37?-.01:r===34?.05:r===33?-.05:r===35?1:r===36?-1:0,y:r===40?.01:r===38?-.01:0},!0)))},p=class{constructor(t,r,s,o){let a=v(`
    `);t.appendChild(a.content.cloneNode(!0));let i=t.querySelector(`[part=${r}]`);i.addEventListener("mousedown",this),i.addEventListener("touchstart",this),i.addEventListener("keydown",this),this.el=i,this.xy=o,this.nodes=[i.firstChild,i]}set dragging(t){let r=t?document.addEventListener:document.removeEventListener;r(h?"touchmove":"mousemove",this),r(h?"touchend":"mouseup",this)}handleEvent(t){switch(t.type){case"mousedown":case"touchstart":if(t.preventDefault(),!ut(t)||!h&&t.button!=0)return;this.el.focus(),W(this,t),this.dragging=!0;break;case"mousemove":case"touchmove":t.preventDefault(),W(this,t);break;case"mouseup":case"touchend":this.dragging=!1;break;case"keydown":dt(this,t);break}}style(t){t.forEach((r,s)=>{for(let o in r)this.nodes[s].style.setProperty(o,r[o])})}};var $=class extends p{constructor(t){super(t,"hue",'aria-label="Hue" aria-valuemin="0" aria-valuemax="360"',!1)}update({h:t}){this.h=t,this.style([{left:`${t/360*100}%`,color:u({h:t,s:100,v:100,a:1})}]),this.el.setAttribute("aria-valuenow",`${n(t)}`)}getMove(t,r){return{h:r?l(this.h+t.x*360,0,360):360*t.x}}};var H=class extends p{constructor(t){super(t,"saturation",'aria-label="Color"',!0)}update(t){this.hsva=t,this.style([{top:`${100-t.v}%`,left:`${t.s}%`,color:u(t)},{"background-color":u({h:t.h,s:100,v:100,a:1})}]),this.el.setAttribute("aria-valuetext",`Saturation ${n(t.s)}%, Brightness ${n(t.v)}%`)}getMove(t,r){return{s:r?l(this.hsva.s+t.x*100,0,100):t.x*100,v:r?l(this.hsva.v-t.y*100,0,100):Math.round(100-t.y*100)}}};var Z=":host{display:flex;flex-direction:column;position:relative;width:200px;height:200px;user-select:none;-webkit-user-select:none;cursor:default}:host([hidden]){display:none!important}[role=slider]{position:relative;touch-action:none;user-select:none;-webkit-user-select:none;outline:0}[role=slider]:last-child{border-radius:0 0 8px 8px}[part$=pointer]{position:absolute;z-index:1;box-sizing:border-box;width:28px;height:28px;transform:translate(-50%,-50%);background-color:#fff;border:2px solid #fff;border-radius:50%;box-shadow:0 2px 4px rgba(0,0,0,.2)}[part$=pointer]::after{display:block;content:'';position:absolute;left:0;top:0;right:0;bottom:0;border-radius:inherit;background-color:currentColor}[role=slider]:focus [part$=pointer]{transform:translate(-50%,-50%) scale(1.1)}";var tt="[part=hue]{flex:0 0 24px;background:linear-gradient(to right,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red 100%)}[part=hue-pointer]{top:50%;z-index:2}";var rt="[part=saturation]{flex-grow:1;border-color:transparent;border-bottom:12px solid #000;border-radius:8px 8px 0 0;background-image:linear-gradient(to top,#000,transparent),linear-gradient(to right,#fff,rgba(255,255,255,0));box-shadow:inset 0 0 0 1px rgba(0,0,0,.05)}[part=saturation-pointer]{z-index:3}";var S=Symbol("same"),et=Symbol("color"),ot=Symbol("hsva"),R=Symbol("change"),P=Symbol("update"),st=Symbol("parts"),f=Symbol("css"),g=Symbol("sliders"),c=class extends HTMLElement{static get observedAttributes(){return["color"]}get[f](){return[Z,tt,rt]}get[g](){return[H,$]}get color(){return this[et]}set color(t){if(!this[S](t)){let r=this.colorModel.toHsva(t);this[P](r),this[R](t)}}constructor(){super();let t=v(``),r=this.attachShadow({mode:"open"});r.appendChild(t.content.cloneNode(!0)),r.addEventListener("move",this),this[st]=this[g].map(s=>new s(r))}connectedCallback(){if(this.hasOwnProperty("color")){let t=this.color;delete this.color,this.color=t}else this.color||(this.color=this.colorModel.defaultColor)}attributeChangedCallback(t,r,s){let o=this.colorModel.fromAttr(s);this[S](o)||(this.color=o)}handleEvent(t){let r=this[ot],s={...r,...t.detail};this[P](s);let o;!I(s,r)&&!this[S](o=this.colorModel.fromHsva(s))&&this[R](o)}[S](t){return this.color&&this.colorModel.equal(t,this.color)}[P](t){this[ot]=t,this[st].forEach(r=>r.update(t))}[R](t){this[et]=t,m(this,"color-changed",{value:t})}};var ht={defaultColor:"#000",toHsva:B,fromHsva:X,equal:K,fromAttr:e=>e},y=class extends c{get colorModel(){return ht}};var z=class extends y{};customElements.define("hex-color-picker",z);var mt={defaultColor:"hsl(0, 0%, 0%)",toHsva:F,fromHsva:u,equal:d,fromAttr:e=>e},T=class extends c{get colorModel(){return mt}};var V=class extends T{};customElements.define("hsl-string-color-picker",V);var ft={defaultColor:"rgb(0, 0, 0)",toHsva:G,fromHsva:_,equal:d,fromAttr:e=>e},w=class extends c{get colorModel(){return ft}};var j=class extends w{};customElements.define("rgb-string-color-picker",j);var M=class extends p{constructor(t){super(t,"alpha",'aria-label="Alpha" aria-valuemin="0" aria-valuemax="1"',!1)}update(t){this.hsva=t;let r=b({...t,a:0}),s=b({...t,a:1}),o=t.a*100;this.style([{left:`${o}%`,color:b(t)},{"--gradient":`linear-gradient(90deg, ${r}, ${s}`}]);let a=n(o);this.el.setAttribute("aria-valuenow",`${a}`),this.el.setAttribute("aria-valuetext",`${a}%`)}getMove(t,r){return{a:r?l(this.hsva.a+t.x):t.x}}};var at=`[part=alpha]{flex:0 0 24px}[part=alpha]::after{display:block;content:'';position:absolute;top:0;left:0;right:0;bottom:0;border-radius:inherit;background-image:var(--gradient);box-shadow:inset 0 0 0 1px rgba(0,0,0,.05)}[part^=alpha]{background-color:#fff;background-image:url('data:image/svg+xml,')}[part=alpha-pointer]{top:50%}`;var k=class extends c{get[f](){return[...super[f],at]}get[g](){return[...super[g],M]}};var gt={defaultColor:"rgba(0, 0, 0, 1)",toHsva:A,fromHsva:U,equal:d,fromAttr:e=>e},C=class extends k{get colorModel(){return gt}};var D=class extends C{};customElements.define("rgba-string-color-picker",D);function xt({isAutofocused:e,isDisabled:t,isLiveDebounced:r,isLiveOnBlur:s,state:o}){return{state:o,init:function(){this.state===null||this.state===""||this.setState(this.state),e&&this.togglePanelVisibility(this.$refs.input),this.$refs.input.addEventListener("change",a=>{this.setState(a.target.value)}),this.$refs.panel.addEventListener("color-changed",a=>{this.setState(a.detail.value)}),(r||s)&&new MutationObserver(()=>{this.$refs.panel.style.display==="none"&&this.$wire.call("$refresh")}).observe(this.$refs.panel,{attributes:!0,childList:!0})},togglePanelVisibility:function(){t||this.$refs.panel.toggle(this.$refs.input)},setState:function(a){this.state=a,this.$refs.input.value=a,this.$refs.panel.color=a},isOpen:function(){return this.$refs.panel.style.display==="block"}}}export{xt as default}; diff --git a/public/vendor/telescope/app.js b/public/vendor/telescope/app.js index 50992442c..00547467e 100644 --- a/public/vendor/telescope/app.js +++ b/public/vendor/telescope/app.js @@ -1,2 +1,2 @@ /*! For license information please see app.js.LICENSE.txt */ -(()=>{var e,t={9669:(e,t,n)=>{e.exports=n(1609)},5448:(e,t,n)=>{"use strict";var o=n(4867),p=n(6026),M=n(4372),b=n(5327),c=n(4097),z=n(4109),r=n(7985),a=n(5061);e.exports=function(e){return new Promise((function(t,n){var i=e.data,O=e.headers,s=e.responseType;o.isFormData(i)&&delete O["Content-Type"];var A=new XMLHttpRequest;if(e.auth){var u=e.auth.username||"",d=e.auth.password?unescape(encodeURIComponent(e.auth.password)):"";O.Authorization="Basic "+btoa(u+":"+d)}var l=c(e.baseURL,e.url);function f(){if(A){var o="getAllResponseHeaders"in A?z(A.getAllResponseHeaders()):null,M={data:s&&"text"!==s&&"json"!==s?A.response:A.responseText,status:A.status,statusText:A.statusText,headers:o,config:e,request:A};p(t,n,M),A=null}}if(A.open(e.method.toUpperCase(),b(l,e.params,e.paramsSerializer),!0),A.timeout=e.timeout,"onloadend"in A?A.onloadend=f:A.onreadystatechange=function(){A&&4===A.readyState&&(0!==A.status||A.responseURL&&0===A.responseURL.indexOf("file:"))&&setTimeout(f)},A.onabort=function(){A&&(n(a("Request aborted",e,"ECONNABORTED",A)),A=null)},A.onerror=function(){n(a("Network Error",e,null,A)),A=null},A.ontimeout=function(){var t="timeout of "+e.timeout+"ms exceeded";e.timeoutErrorMessage&&(t=e.timeoutErrorMessage),n(a(t,e,e.transitional&&e.transitional.clarifyTimeoutError?"ETIMEDOUT":"ECONNABORTED",A)),A=null},o.isStandardBrowserEnv()){var q=(e.withCredentials||r(l))&&e.xsrfCookieName?M.read(e.xsrfCookieName):void 0;q&&(O[e.xsrfHeaderName]=q)}"setRequestHeader"in A&&o.forEach(O,(function(e,t){void 0===i&&"content-type"===t.toLowerCase()?delete O[t]:A.setRequestHeader(t,e)})),o.isUndefined(e.withCredentials)||(A.withCredentials=!!e.withCredentials),s&&"json"!==s&&(A.responseType=e.responseType),"function"==typeof e.onDownloadProgress&&A.addEventListener("progress",e.onDownloadProgress),"function"==typeof e.onUploadProgress&&A.upload&&A.upload.addEventListener("progress",e.onUploadProgress),e.cancelToken&&e.cancelToken.promise.then((function(e){A&&(A.abort(),n(e),A=null)})),i||(i=null),A.send(i)}))}},1609:(e,t,n)=>{"use strict";var o=n(4867),p=n(1849),M=n(321),b=n(7185);function c(e){var t=new M(e),n=p(M.prototype.request,t);return o.extend(n,M.prototype,t),o.extend(n,t),n}var z=c(n(5655));z.Axios=M,z.create=function(e){return c(b(z.defaults,e))},z.Cancel=n(5263),z.CancelToken=n(4972),z.isCancel=n(6502),z.all=function(e){return Promise.all(e)},z.spread=n(8713),z.isAxiosError=n(6268),e.exports=z,e.exports.default=z},5263:e=>{"use strict";function t(e){this.message=e}t.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},t.prototype.__CANCEL__=!0,e.exports=t},4972:(e,t,n)=>{"use strict";var o=n(5263);function p(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");var t;this.promise=new Promise((function(e){t=e}));var n=this;e((function(e){n.reason||(n.reason=new o(e),t(n.reason))}))}p.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},p.source=function(){var e;return{token:new p((function(t){e=t})),cancel:e}},e.exports=p},6502:e=>{"use strict";e.exports=function(e){return!(!e||!e.__CANCEL__)}},321:(e,t,n)=>{"use strict";var o=n(4867),p=n(5327),M=n(782),b=n(3572),c=n(7185),z=n(4875),r=z.validators;function a(e){this.defaults=e,this.interceptors={request:new M,response:new M}}a.prototype.request=function(e){"string"==typeof e?(e=arguments[1]||{}).url=arguments[0]:e=e||{},(e=c(this.defaults,e)).method?e.method=e.method.toLowerCase():this.defaults.method?e.method=this.defaults.method.toLowerCase():e.method="get";var t=e.transitional;void 0!==t&&z.assertOptions(t,{silentJSONParsing:r.transitional(r.boolean,"1.0.0"),forcedJSONParsing:r.transitional(r.boolean,"1.0.0"),clarifyTimeoutError:r.transitional(r.boolean,"1.0.0")},!1);var n=[],o=!0;this.interceptors.request.forEach((function(t){"function"==typeof t.runWhen&&!1===t.runWhen(e)||(o=o&&t.synchronous,n.unshift(t.fulfilled,t.rejected))}));var p,M=[];if(this.interceptors.response.forEach((function(e){M.push(e.fulfilled,e.rejected)})),!o){var a=[b,void 0];for(Array.prototype.unshift.apply(a,n),a=a.concat(M),p=Promise.resolve(e);a.length;)p=p.then(a.shift(),a.shift());return p}for(var i=e;n.length;){var O=n.shift(),s=n.shift();try{i=O(i)}catch(e){s(e);break}}try{p=b(i)}catch(e){return Promise.reject(e)}for(;M.length;)p=p.then(M.shift(),M.shift());return p},a.prototype.getUri=function(e){return e=c(this.defaults,e),p(e.url,e.params,e.paramsSerializer).replace(/^\?/,"")},o.forEach(["delete","get","head","options"],(function(e){a.prototype[e]=function(t,n){return this.request(c(n||{},{method:e,url:t,data:(n||{}).data}))}})),o.forEach(["post","put","patch"],(function(e){a.prototype[e]=function(t,n,o){return this.request(c(o||{},{method:e,url:t,data:n}))}})),e.exports=a},782:(e,t,n)=>{"use strict";var o=n(4867);function p(){this.handlers=[]}p.prototype.use=function(e,t,n){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!n&&n.synchronous,runWhen:n?n.runWhen:null}),this.handlers.length-1},p.prototype.eject=function(e){this.handlers[e]&&(this.handlers[e]=null)},p.prototype.forEach=function(e){o.forEach(this.handlers,(function(t){null!==t&&e(t)}))},e.exports=p},4097:(e,t,n)=>{"use strict";var o=n(1793),p=n(7303);e.exports=function(e,t){return e&&!o(t)?p(e,t):t}},5061:(e,t,n)=>{"use strict";var o=n(481);e.exports=function(e,t,n,p,M){var b=new Error(e);return o(b,t,n,p,M)}},3572:(e,t,n)=>{"use strict";var o=n(4867),p=n(8527),M=n(6502),b=n(5655);function c(e){e.cancelToken&&e.cancelToken.throwIfRequested()}e.exports=function(e){return c(e),e.headers=e.headers||{},e.data=p.call(e,e.data,e.headers,e.transformRequest),e.headers=o.merge(e.headers.common||{},e.headers[e.method]||{},e.headers),o.forEach(["delete","get","head","post","put","patch","common"],(function(t){delete e.headers[t]})),(e.adapter||b.adapter)(e).then((function(t){return c(e),t.data=p.call(e,t.data,t.headers,e.transformResponse),t}),(function(t){return M(t)||(c(e),t&&t.response&&(t.response.data=p.call(e,t.response.data,t.response.headers,e.transformResponse))),Promise.reject(t)}))}},481:e=>{"use strict";e.exports=function(e,t,n,o,p){return e.config=t,n&&(e.code=n),e.request=o,e.response=p,e.isAxiosError=!0,e.toJSON=function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:this.config,code:this.code}},e}},7185:(e,t,n)=>{"use strict";var o=n(4867);e.exports=function(e,t){t=t||{};var n={},p=["url","method","data"],M=["headers","auth","proxy","params"],b=["baseURL","transformRequest","transformResponse","paramsSerializer","timeout","timeoutMessage","withCredentials","adapter","responseType","xsrfCookieName","xsrfHeaderName","onUploadProgress","onDownloadProgress","decompress","maxContentLength","maxBodyLength","maxRedirects","transport","httpAgent","httpsAgent","cancelToken","socketPath","responseEncoding"],c=["validateStatus"];function z(e,t){return o.isPlainObject(e)&&o.isPlainObject(t)?o.merge(e,t):o.isPlainObject(t)?o.merge({},t):o.isArray(t)?t.slice():t}function r(p){o.isUndefined(t[p])?o.isUndefined(e[p])||(n[p]=z(void 0,e[p])):n[p]=z(e[p],t[p])}o.forEach(p,(function(e){o.isUndefined(t[e])||(n[e]=z(void 0,t[e]))})),o.forEach(M,r),o.forEach(b,(function(p){o.isUndefined(t[p])?o.isUndefined(e[p])||(n[p]=z(void 0,e[p])):n[p]=z(void 0,t[p])})),o.forEach(c,(function(o){o in t?n[o]=z(e[o],t[o]):o in e&&(n[o]=z(void 0,e[o]))}));var a=p.concat(M).concat(b).concat(c),i=Object.keys(e).concat(Object.keys(t)).filter((function(e){return-1===a.indexOf(e)}));return o.forEach(i,r),n}},6026:(e,t,n)=>{"use strict";var o=n(5061);e.exports=function(e,t,n){var p=n.config.validateStatus;n.status&&p&&!p(n.status)?t(o("Request failed with status code "+n.status,n.config,null,n.request,n)):e(n)}},8527:(e,t,n)=>{"use strict";var o=n(4867),p=n(5655);e.exports=function(e,t,n){var M=this||p;return o.forEach(n,(function(n){e=n.call(M,e,t)})),e}},5655:(e,t,n)=>{"use strict";var o=n(4155),p=n(4867),M=n(6016),b=n(481),c={"Content-Type":"application/x-www-form-urlencoded"};function z(e,t){!p.isUndefined(e)&&p.isUndefined(e["Content-Type"])&&(e["Content-Type"]=t)}var r,a={transitional:{silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},adapter:(("undefined"!=typeof XMLHttpRequest||void 0!==o&&"[object process]"===Object.prototype.toString.call(o))&&(r=n(5448)),r),transformRequest:[function(e,t){return M(t,"Accept"),M(t,"Content-Type"),p.isFormData(e)||p.isArrayBuffer(e)||p.isBuffer(e)||p.isStream(e)||p.isFile(e)||p.isBlob(e)?e:p.isArrayBufferView(e)?e.buffer:p.isURLSearchParams(e)?(z(t,"application/x-www-form-urlencoded;charset=utf-8"),e.toString()):p.isObject(e)||t&&"application/json"===t["Content-Type"]?(z(t,"application/json"),function(e,t,n){if(p.isString(e))try{return(t||JSON.parse)(e),p.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(n||JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){var t=this.transitional,n=t&&t.silentJSONParsing,o=t&&t.forcedJSONParsing,M=!n&&"json"===this.responseType;if(M||o&&p.isString(e)&&e.length)try{return JSON.parse(e)}catch(e){if(M){if("SyntaxError"===e.name)throw b(e,this,"E_JSON_PARSE");throw e}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,validateStatus:function(e){return e>=200&&e<300}};a.headers={common:{Accept:"application/json, text/plain, */*"}},p.forEach(["delete","get","head"],(function(e){a.headers[e]={}})),p.forEach(["post","put","patch"],(function(e){a.headers[e]=p.merge(c)})),e.exports=a},1849:e=>{"use strict";e.exports=function(e,t){return function(){for(var n=new Array(arguments.length),o=0;o{"use strict";var o=n(4867);function p(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}e.exports=function(e,t,n){if(!t)return e;var M;if(n)M=n(t);else if(o.isURLSearchParams(t))M=t.toString();else{var b=[];o.forEach(t,(function(e,t){null!=e&&(o.isArray(e)?t+="[]":e=[e],o.forEach(e,(function(e){o.isDate(e)?e=e.toISOString():o.isObject(e)&&(e=JSON.stringify(e)),b.push(p(t)+"="+p(e))})))})),M=b.join("&")}if(M){var c=e.indexOf("#");-1!==c&&(e=e.slice(0,c)),e+=(-1===e.indexOf("?")?"?":"&")+M}return e}},7303:e=>{"use strict";e.exports=function(e,t){return t?e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):e}},4372:(e,t,n)=>{"use strict";var o=n(4867);e.exports=o.isStandardBrowserEnv()?{write:function(e,t,n,p,M,b){var c=[];c.push(e+"="+encodeURIComponent(t)),o.isNumber(n)&&c.push("expires="+new Date(n).toGMTString()),o.isString(p)&&c.push("path="+p),o.isString(M)&&c.push("domain="+M),!0===b&&c.push("secure"),document.cookie=c.join("; ")},read:function(e){var t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove:function(e){this.write(e,"",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}}},1793:e=>{"use strict";e.exports=function(e){return/^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(e)}},6268:e=>{"use strict";e.exports=function(e){return"object"==typeof e&&!0===e.isAxiosError}},7985:(e,t,n)=>{"use strict";var o=n(4867);e.exports=o.isStandardBrowserEnv()?function(){var e,t=/(msie|trident)/i.test(navigator.userAgent),n=document.createElement("a");function p(e){var o=e;return t&&(n.setAttribute("href",o),o=n.href),n.setAttribute("href",o),{href:n.href,protocol:n.protocol?n.protocol.replace(/:$/,""):"",host:n.host,search:n.search?n.search.replace(/^\?/,""):"",hash:n.hash?n.hash.replace(/^#/,""):"",hostname:n.hostname,port:n.port,pathname:"/"===n.pathname.charAt(0)?n.pathname:"/"+n.pathname}}return e=p(window.location.href),function(t){var n=o.isString(t)?p(t):t;return n.protocol===e.protocol&&n.host===e.host}}():function(){return!0}},6016:(e,t,n)=>{"use strict";var o=n(4867);e.exports=function(e,t){o.forEach(e,(function(n,o){o!==t&&o.toUpperCase()===t.toUpperCase()&&(e[t]=n,delete e[o])}))}},4109:(e,t,n)=>{"use strict";var o=n(4867),p=["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"];e.exports=function(e){var t,n,M,b={};return e?(o.forEach(e.split("\n"),(function(e){if(M=e.indexOf(":"),t=o.trim(e.substr(0,M)).toLowerCase(),n=o.trim(e.substr(M+1)),t){if(b[t]&&p.indexOf(t)>=0)return;b[t]="set-cookie"===t?(b[t]?b[t]:[]).concat([n]):b[t]?b[t]+", "+n:n}})),b):b}},8713:e=>{"use strict";e.exports=function(e){return function(t){return e.apply(null,t)}}},4875:(e,t,n)=>{"use strict";var o=n(8593),p={};["object","boolean","number","function","string","symbol"].forEach((function(e,t){p[e]=function(n){return typeof n===e||"a"+(t<1?"n ":" ")+e}}));var M={},b=o.version.split(".");function c(e,t){for(var n=t?t.split("."):b,o=e.split("."),p=0;p<3;p++){if(n[p]>o[p])return!0;if(n[p]0;){var M=o[p],b=t[M];if(b){var c=e[M],z=void 0===c||b(c,M,e);if(!0!==z)throw new TypeError("option "+M+" must be "+z)}else if(!0!==n)throw Error("Unknown option "+M)}},validators:p}},4867:(e,t,n)=>{"use strict";var o=n(1849),p=Object.prototype.toString;function M(e){return"[object Array]"===p.call(e)}function b(e){return void 0===e}function c(e){return null!==e&&"object"==typeof e}function z(e){if("[object Object]"!==p.call(e))return!1;var t=Object.getPrototypeOf(e);return null===t||t===Object.prototype}function r(e){return"[object Function]"===p.call(e)}function a(e,t){if(null!=e)if("object"!=typeof e&&(e=[e]),M(e))for(var n=0,o=e.length;n{"use strict";var o=Object.freeze({}),p=Array.isArray;function M(e){return null==e}function b(e){return null!=e}function c(e){return!0===e}function z(e){return"string"==typeof e||"number"==typeof e||"symbol"==typeof e||"boolean"==typeof e}function r(e){return"function"==typeof e}function a(e){return null!==e&&"object"==typeof e}var i=Object.prototype.toString;function O(e){return"[object Object]"===i.call(e)}function s(e){return"[object RegExp]"===i.call(e)}function A(e){var t=parseFloat(String(e));return t>=0&&Math.floor(t)===t&&isFinite(e)}function u(e){return b(e)&&"function"==typeof e.then&&"function"==typeof e.catch}function d(e){return null==e?"":Array.isArray(e)||O(e)&&e.toString===i?JSON.stringify(e,null,2):String(e)}function l(e){var t=parseFloat(e);return isNaN(t)?e:t}function f(e,t){for(var n=Object.create(null),o=e.split(","),p=0;p-1)return e.splice(o,1)}}var v=Object.prototype.hasOwnProperty;function R(e,t){return v.call(e,t)}function m(e){var t=Object.create(null);return function(n){return t[n]||(t[n]=e(n))}}var g=/-(\w)/g,L=m((function(e){return e.replace(g,(function(e,t){return t?t.toUpperCase():""}))})),_=m((function(e){return e.charAt(0).toUpperCase()+e.slice(1)})),N=/\B([A-Z])/g,y=m((function(e){return e.replace(N,"-$1").toLowerCase()}));var T=Function.prototype.bind?function(e,t){return e.bind(t)}:function(e,t){function n(n){var o=arguments.length;return o?o>1?e.apply(t,arguments):e.call(t,n):e.call(t)}return n._length=e.length,n};function E(e,t){t=t||0;for(var n=e.length-t,o=new Array(n);n--;)o[n]=e[n+t];return o}function B(e,t){for(var n in t)e[n]=t[n];return e}function C(e){for(var t={},n=0;n0,ee=Z&&Z.indexOf("edge/")>0;Z&&Z.indexOf("android");var te=Z&&/iphone|ipad|ipod|ios/.test(Z);Z&&/chrome\/\d+/.test(Z),Z&&/phantomjs/.test(Z);var ne,oe=Z&&Z.match(/firefox\/(\d+)/),pe={}.watch,Me=!1;if(K)try{var be={};Object.defineProperty(be,"passive",{get:function(){Me=!0}}),window.addEventListener("test-passive",null,be)}catch(e){}var ce=function(){return void 0===ne&&(ne=!K&&void 0!==n.g&&(n.g.process&&"server"===n.g.process.env.VUE_ENV)),ne},ze=K&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__;function re(e){return"function"==typeof e&&/native code/.test(e.toString())}var ae,ie="undefined"!=typeof Symbol&&re(Symbol)&&"undefined"!=typeof Reflect&&re(Reflect.ownKeys);ae="undefined"!=typeof Set&&re(Set)?Set:function(){function e(){this.set=Object.create(null)}return e.prototype.has=function(e){return!0===this.set[e]},e.prototype.add=function(e){this.set[e]=!0},e.prototype.clear=function(){this.set=Object.create(null)},e}();var Oe=null;function se(e){void 0===e&&(e=null),e||Oe&&Oe._scope.off(),Oe=e,e&&e._scope.on()}var Ae=function(){function e(e,t,n,o,p,M,b,c){this.tag=e,this.data=t,this.children=n,this.text=o,this.elm=p,this.ns=void 0,this.context=M,this.fnContext=void 0,this.fnOptions=void 0,this.fnScopeId=void 0,this.key=t&&t.key,this.componentOptions=b,this.componentInstance=void 0,this.parent=void 0,this.raw=!1,this.isStatic=!1,this.isRootInsert=!0,this.isComment=!1,this.isCloned=!1,this.isOnce=!1,this.asyncFactory=c,this.asyncMeta=void 0,this.isAsyncPlaceholder=!1}return Object.defineProperty(e.prototype,"child",{get:function(){return this.componentInstance},enumerable:!1,configurable:!0}),e}(),ue=function(e){void 0===e&&(e="");var t=new Ae;return t.text=e,t.isComment=!0,t};function de(e){return new Ae(void 0,void 0,void 0,String(e))}function le(e){var t=new Ae(e.tag,e.data,e.children&&e.children.slice(),e.text,e.elm,e.context,e.componentOptions,e.asyncFactory);return t.ns=e.ns,t.isStatic=e.isStatic,t.key=e.key,t.isComment=e.isComment,t.fnContext=e.fnContext,t.fnOptions=e.fnOptions,t.fnScopeId=e.fnScopeId,t.asyncMeta=e.asyncMeta,t.isCloned=!0,t}var fe=0,qe=[],We=function(){for(var e=0;e0&&(Ye((o=Ke(o,"".concat(t||"","_").concat(n)))[0])&&Ye(a)&&(i[r]=de(a.text+o[0].text),o.shift()),i.push.apply(i,o)):z(o)?Ye(a)?i[r]=de(a.text+o):""!==o&&i.push(de(o)):Ye(o)&&Ye(a)?i[r]=de(a.text+o.text):(c(e._isVList)&&b(o.tag)&&M(o.key)&&b(t)&&(o.key="__vlist".concat(t,"_").concat(n,"__")),i.push(o)));return i}var Ze=1,Qe=2;function Je(e,t,n,o,M,i){return(p(n)||z(n))&&(M=o,o=n,n=void 0),c(i)&&(M=Qe),function(e,t,n,o,M){if(b(n)&&b(n.__ob__))return ue();b(n)&&b(n.is)&&(t=n.is);if(!t)return ue();0;p(o)&&r(o[0])&&((n=n||{}).scopedSlots={default:o[0]},o.length=0);M===Qe?o=Ve(o):M===Ze&&(o=function(e){for(var t=0;t0,c=t?!!t.$stable:!b,z=t&&t.$key;if(t){if(t._normalized)return t._normalized;if(c&&p&&p!==o&&z===p.$key&&!b&&!p.$hasNormal)return p;for(var r in M={},t)t[r]&&"$"!==r[0]&&(M[r]=Wt(e,n,r,t[r]))}else M={};for(var a in n)a in M||(M[a]=ht(n,a));return t&&Object.isExtensible(t)&&(t._normalized=M),$(M,"$stable",c),$(M,"$key",z),$(M,"$hasNormal",b),M}function Wt(e,t,n,o){var M=function(){var t=Oe;se(e);var n=arguments.length?o.apply(null,arguments):o({}),M=(n=n&&"object"==typeof n&&!p(n)?[n]:Ve(n))&&n[0];return se(t),n&&(!M||1===n.length&&M.isComment&&!ft(M))?void 0:n};return o.proxy&&Object.defineProperty(t,n,{get:M,enumerable:!0,configurable:!0}),M}function ht(e,t){return function(){return e[t]}}function vt(e){return{get attrs(){if(!e._attrsProxy){var t=e._attrsProxy={};$(t,"_v_attr_proxy",!0),Rt(t,e.$attrs,o,e,"$attrs")}return e._attrsProxy},get listeners(){e._listenersProxy||Rt(e._listenersProxy={},e.$listeners,o,e,"$listeners");return e._listenersProxy},get slots(){return function(e){e._slotsProxy||gt(e._slotsProxy={},e.$scopedSlots);return e._slotsProxy}(e)},emit:T(e.$emit,e),expose:function(t){t&&Object.keys(t).forEach((function(n){return je(e,t,n)}))}}}function Rt(e,t,n,o,p){var M=!1;for(var b in t)b in e?t[b]!==n[b]&&(M=!0):(M=!0,mt(e,b,o,p));for(var b in e)b in t||(M=!0,delete e[b]);return M}function mt(e,t,n,o){Object.defineProperty(e,t,{enumerable:!0,configurable:!0,get:function(){return n[o][t]}})}function gt(e,t){for(var n in t)e[n]=t[n];for(var n in e)n in t||delete e[n]}var Lt,_t=null;function Nt(e,t){return(e.__esModule||ie&&"Module"===e[Symbol.toStringTag])&&(e=e.default),a(e)?t.extend(e):e}function yt(e){if(p(e))for(var t=0;tdocument.createEvent("Event").timeStamp&&($t=function(){return Vt.now()})}var Yt=function(e,t){if(e.post){if(!t.post)return 1}else if(t.post)return-1;return e.id-t.id};function Kt(){var e,t;for(Gt=$t(),Ht=!0,Dt.sort(Yt),Ft=0;FtFt&&Dt[n].id>e.id;)n--;Dt.splice(n+1,0,e)}else Dt.push(e);Ut||(Ut=!0,dn(Kt))}}var Qt="watcher";"".concat(Qt," callback"),"".concat(Qt," getter"),"".concat(Qt," cleanup");var Jt;var en=function(){function e(e){void 0===e&&(e=!1),this.detached=e,this.active=!0,this.effects=[],this.cleanups=[],this.parent=Jt,!e&&Jt&&(this.index=(Jt.scopes||(Jt.scopes=[])).push(this)-1)}return e.prototype.run=function(e){if(this.active){var t=Jt;try{return Jt=this,e()}finally{Jt=t}}else 0},e.prototype.on=function(){Jt=this},e.prototype.off=function(){Jt=this.parent},e.prototype.stop=function(e){if(this.active){var t=void 0,n=void 0;for(t=0,n=this.effects.length;t-1)if(M&&!R(p,"default"))b=!1;else if(""===b||b===y(e)){var z=to(String,p.type);(z<0||c-1:"string"==typeof e?e.split(",").indexOf(t)>-1:!!s(e)&&e.test(t)}function bo(e,t){var n=e.cache,o=e.keys,p=e._vnode;for(var M in n){var b=n[M];if(b){var c=b.name;c&&!t(c)&&co(n,M,o,p)}}}function co(e,t,n,o){var p=e[t];!p||o&&p.tag===o.tag||p.componentInstance.$destroy(),e[t]=null,h(n,t)}!function(e){e.prototype._init=function(e){var t=this;t._uid=Bn++,t._isVue=!0,t.__v_skip=!0,t._scope=new en(!0),t._scope._vm=!0,e&&e._isComponent?function(e,t){var n=e.$options=Object.create(e.constructor.options),o=t._parentVnode;n.parent=t.parent,n._parentVnode=o;var p=o.componentOptions;n.propsData=p.propsData,n._parentListeners=p.listeners,n._renderChildren=p.children,n._componentTag=p.tag,t.render&&(n.render=t.render,n.staticRenderFns=t.staticRenderFns)}(t,e):t.$options=Yn(Cn(t.constructor),e||{},t),t._renderProxy=t,t._self=t,function(e){var t=e.$options,n=t.parent;if(n&&!t.abstract){for(;n.$options.abstract&&n.$parent;)n=n.$parent;n.$children.push(e)}e.$parent=n,e.$root=n?n.$root:e,e.$children=[],e.$refs={},e._provided=n?n._provided:Object.create(null),e._watcher=null,e._inactive=null,e._directInactive=!1,e._isMounted=!1,e._isDestroyed=!1,e._isBeingDestroyed=!1}(t),function(e){e._events=Object.create(null),e._hasHookEvent=!1;var t=e.$options._parentListeners;t&&Ct(e,t)}(t),function(e){e._vnode=null,e._staticTrees=null;var t=e.$options,n=e.$vnode=t._parentVnode,p=n&&n.context;e.$slots=dt(t._renderChildren,p),e.$scopedSlots=n?qt(e.$parent,n.data.scopedSlots,e.$slots):o,e._c=function(t,n,o,p){return Je(e,t,n,o,p,!1)},e.$createElement=function(t,n,o,p){return Je(e,t,n,o,p,!0)};var M=n&&n.data;Xe(e,"$attrs",M&&M.attrs||o,null,!0),Xe(e,"$listeners",t._parentListeners||o,null,!0)}(t),It(t,"beforeCreate",void 0,!1),function(e){var t=En(e.$options.inject,e);t&&(Te(!1),Object.keys(t).forEach((function(n){Xe(e,n,t[n])})),Te(!0))}(t),gn(t),function(e){var t=e.$options.provide;if(t){var n=r(t)?t.call(e):t;if(!a(n))return;for(var o=tn(e),p=ie?Reflect.ownKeys(n):Object.keys(n),M=0;M1?E(n):n;for(var o=E(arguments,1),p='event handler for "'.concat(e,'"'),M=0,b=n.length;MparseInt(this.max)&&co(t,n[0],n,this._vnode),this.vnodeToCache=null}}},created:function(){this.cache=Object.create(null),this.keys=[]},destroyed:function(){for(var e in this.cache)co(this.cache,e,this.keys)},mounted:function(){var e=this;this.cacheVNode(),this.$watch("include",(function(t){bo(e,(function(e){return Mo(t,e)}))})),this.$watch("exclude",(function(t){bo(e,(function(e){return!Mo(t,e)}))}))},updated:function(){this.cacheVNode()},render:function(){var e=this.$slots.default,t=yt(e),n=t&&t.componentOptions;if(n){var o=po(n),p=this.include,M=this.exclude;if(p&&(!o||!Mo(p,o))||M&&o&&Mo(M,o))return t;var b=this.cache,c=this.keys,z=null==t.key?n.Ctor.cid+(n.tag?"::".concat(n.tag):""):t.key;b[z]?(t.componentInstance=b[z].componentInstance,h(c,z),c.push(z)):(this.vnodeToCache=t,this.keyToCache=z),t.data.keepAlive=!0}return t||e&&e[0]}},ao={KeepAlive:ro};!function(e){var t={get:function(){return H}};Object.defineProperty(e,"config",t),e.util={warn:jn,extend:B,mergeOptions:Yn,defineReactive:Xe},e.set=we,e.delete=Se,e.nextTick=dn,e.observable=function(e){return Ce(e),e},e.options=Object.create(null),j.forEach((function(t){e.options[t+"s"]=Object.create(null)})),e.options._base=e,B(e.options.components,ao),function(e){e.use=function(e){var t=this._installedPlugins||(this._installedPlugins=[]);if(t.indexOf(e)>-1)return this;var n=E(arguments,1);return n.unshift(this),r(e.install)?e.install.apply(e,n):r(e)&&e.apply(null,n),t.push(e),this}}(e),function(e){e.mixin=function(e){return this.options=Yn(this.options,e),this}}(e),oo(e),function(e){j.forEach((function(t){e[t]=function(e,n){return n?("component"===t&&O(n)&&(n.name=n.name||e,n=this.options._base.extend(n)),"directive"===t&&r(n)&&(n={bind:n,update:n}),this.options[t+"s"][e]=n,n):this.options[t+"s"][e]}}))}(e)}(no),Object.defineProperty(no.prototype,"$isServer",{get:ce}),Object.defineProperty(no.prototype,"$ssrContext",{get:function(){return this.$vnode&&this.$vnode.ssrContext}}),Object.defineProperty(no,"FunctionalRenderContext",{value:Xn}),no.version="2.7.14";var io=f("style,class"),Oo=f("input,textarea,option,select,progress"),so=function(e,t,n){return"value"===n&&Oo(e)&&"button"!==t||"selected"===n&&"option"===e||"checked"===n&&"input"===e||"muted"===n&&"video"===e},Ao=f("contenteditable,draggable,spellcheck"),uo=f("events,caret,typing,plaintext-only"),lo=function(e,t){return vo(t)||"false"===t?"false":"contenteditable"===e&&uo(t)?t:"true"},fo=f("allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,truespeed,typemustmatch,visible"),qo="http://www.w3.org/1999/xlink",Wo=function(e){return":"===e.charAt(5)&&"xlink"===e.slice(0,5)},ho=function(e){return Wo(e)?e.slice(6,e.length):""},vo=function(e){return null==e||!1===e};function Ro(e){for(var t=e.data,n=e,o=e;b(o.componentInstance);)(o=o.componentInstance._vnode)&&o.data&&(t=mo(o.data,t));for(;b(n=n.parent);)n&&n.data&&(t=mo(t,n.data));return function(e,t){if(b(e)||b(t))return go(e,Lo(t));return""}(t.staticClass,t.class)}function mo(e,t){return{staticClass:go(e.staticClass,t.staticClass),class:b(e.class)?[e.class,t.class]:t.class}}function go(e,t){return e?t?e+" "+t:e:t||""}function Lo(e){return Array.isArray(e)?function(e){for(var t,n="",o=0,p=e.length;o-1?Qo(e,t,n):fo(t)?vo(n)?e.removeAttribute(t):(n="allowfullscreen"===t&&"EMBED"===e.tagName?"true":t,e.setAttribute(t,n)):Ao(t)?e.setAttribute(t,lo(t,n)):Wo(t)?vo(n)?e.removeAttributeNS(qo,ho(t)):e.setAttributeNS(qo,t,n):Qo(e,t,n)}function Qo(e,t,n){if(vo(n))e.removeAttribute(t);else{if(Q&&!J&&"TEXTAREA"===e.tagName&&"placeholder"===t&&""!==n&&!e.__ieph){var o=function(t){t.stopImmediatePropagation(),e.removeEventListener("input",o)};e.addEventListener("input",o),e.__ieph=!0}e.setAttribute(t,n)}}var Jo={create:Ko,update:Ko};function ep(e,t){var n=t.elm,o=t.data,p=e.data;if(!(M(o.staticClass)&&M(o.class)&&(M(p)||M(p.staticClass)&&M(p.class)))){var c=Ro(t),z=n._transitionClasses;b(z)&&(c=go(c,Lo(z))),c!==n._prevClass&&(n.setAttribute("class",c),n._prevClass=c)}}var tp,np,op,pp,Mp,bp,cp={create:ep,update:ep},zp=/[\w).+\-_$\]]/;function rp(e){var t,n,o,p,M,b=!1,c=!1,z=!1,r=!1,a=0,i=0,O=0,s=0;for(o=0;o=0&&" "===(u=e.charAt(A));A--);u&&zp.test(u)||(r=!0)}}else void 0===p?(s=o+1,p=e.slice(0,o).trim()):d();function d(){(M||(M=[])).push(e.slice(s,o).trim()),s=o+1}if(void 0===p?p=e.slice(0,o).trim():0!==s&&d(),M)for(o=0;o-1?{exp:e.slice(0,pp),key:'"'+e.slice(pp+1)+'"'}:{exp:e,key:null};np=e,pp=Mp=bp=0;for(;!Lp();)_p(op=gp())?yp(op):91===op&&Np(op);return{exp:e.slice(0,Mp),key:e.slice(Mp+1,bp)}}(e);return null===n.key?"".concat(e,"=").concat(t):"$set(".concat(n.exp,", ").concat(n.key,", ").concat(t,")")}function gp(){return np.charCodeAt(++pp)}function Lp(){return pp>=tp}function _p(e){return 34===e||39===e}function Np(e){var t=1;for(Mp=pp;!Lp();)if(_p(e=gp()))yp(e);else if(91===e&&t++,93===e&&t--,0===t){bp=pp;break}}function yp(e){for(var t=e;!Lp()&&(e=gp())!==t;);}var Tp,Ep="__r",Bp="__c";function Cp(e,t,n){var o=Tp;return function p(){null!==t.apply(null,arguments)&&Sp(e,p,n,o)}}var Xp=cn&&!(oe&&Number(oe[1])<=53);function wp(e,t,n,o){if(Xp){var p=Gt,M=t;t=M._wrapper=function(e){if(e.target===e.currentTarget||e.timeStamp>=p||e.timeStamp<=0||e.target.ownerDocument!==document)return M.apply(this,arguments)}}Tp.addEventListener(e,t,Me?{capture:n,passive:o}:n)}function Sp(e,t,n,o){(o||Tp).removeEventListener(e,t._wrapper||t,n)}function xp(e,t){if(!M(e.data.on)||!M(t.data.on)){var n=t.data.on||{},o=e.data.on||{};Tp=t.elm||e.elm,function(e){if(b(e[Ep])){var t=Q?"change":"input";e[t]=[].concat(e[Ep],e[t]||[]),delete e[Ep]}b(e[Bp])&&(e.change=[].concat(e[Bp],e.change||[]),delete e[Bp])}(n),Fe(n,o,wp,Sp,Cp,t.context),Tp=void 0}}var kp,Ip={create:xp,update:xp,destroy:function(e){return xp(e,Io)}};function Dp(e,t){if(!M(e.data.domProps)||!M(t.data.domProps)){var n,o,p=t.elm,z=e.data.domProps||{},r=t.data.domProps||{};for(n in(b(r.__ob__)||c(r._v_attr_proxy))&&(r=t.data.domProps=B({},r)),z)n in r||(p[n]="");for(n in r){if(o=r[n],"textContent"===n||"innerHTML"===n){if(t.children&&(t.children.length=0),o===z[n])continue;1===p.childNodes.length&&p.removeChild(p.childNodes[0])}if("value"===n&&"PROGRESS"!==p.tagName){p._value=o;var a=M(o)?"":String(o);Pp(p,a)&&(p.value=a)}else if("innerHTML"===n&&yo(p.tagName)&&M(p.innerHTML)){(kp=kp||document.createElement("div")).innerHTML="".concat(o,"");for(var i=kp.firstChild;p.firstChild;)p.removeChild(p.firstChild);for(;i.firstChild;)p.appendChild(i.firstChild)}else if(o!==z[n])try{p[n]=o}catch(e){}}}}function Pp(e,t){return!e.composing&&("OPTION"===e.tagName||function(e,t){var n=!0;try{n=document.activeElement!==e}catch(e){}return n&&e.value!==t}(e,t)||function(e,t){var n=e.value,o=e._vModifiers;if(b(o)){if(o.number)return l(n)!==l(t);if(o.trim)return n.trim()!==t.trim()}return n!==t}(e,t))}var jp={create:Dp,update:Dp},Up=m((function(e){var t={},n=/:(.+)/;return e.split(/;(?![^(]*\))/g).forEach((function(e){if(e){var o=e.split(n);o.length>1&&(t[o[0].trim()]=o[1].trim())}})),t}));function Hp(e){var t=Fp(e.style);return e.staticStyle?B(e.staticStyle,t):t}function Fp(e){return Array.isArray(e)?C(e):"string"==typeof e?Up(e):e}var Gp,$p=/^--/,Vp=/\s*!important$/,Yp=function(e,t,n){if($p.test(t))e.style.setProperty(t,n);else if(Vp.test(n))e.style.setProperty(y(t),n.replace(Vp,""),"important");else{var o=Zp(t);if(Array.isArray(n))for(var p=0,M=n.length;p-1?t.split(eM).forEach((function(t){return e.classList.add(t)})):e.classList.add(t);else{var n=" ".concat(e.getAttribute("class")||""," ");n.indexOf(" "+t+" ")<0&&e.setAttribute("class",(n+t).trim())}}function nM(e,t){if(t&&(t=t.trim()))if(e.classList)t.indexOf(" ")>-1?t.split(eM).forEach((function(t){return e.classList.remove(t)})):e.classList.remove(t),e.classList.length||e.removeAttribute("class");else{for(var n=" ".concat(e.getAttribute("class")||""," "),o=" "+t+" ";n.indexOf(o)>=0;)n=n.replace(o," ");(n=n.trim())?e.setAttribute("class",n):e.removeAttribute("class")}}function oM(e){if(e){if("object"==typeof e){var t={};return!1!==e.css&&B(t,pM(e.name||"v")),B(t,e),t}return"string"==typeof e?pM(e):void 0}}var pM=m((function(e){return{enterClass:"".concat(e,"-enter"),enterToClass:"".concat(e,"-enter-to"),enterActiveClass:"".concat(e,"-enter-active"),leaveClass:"".concat(e,"-leave"),leaveToClass:"".concat(e,"-leave-to"),leaveActiveClass:"".concat(e,"-leave-active")}})),MM=K&&!J,bM="transition",cM="animation",zM="transition",rM="transitionend",aM="animation",iM="animationend";MM&&(void 0===window.ontransitionend&&void 0!==window.onwebkittransitionend&&(zM="WebkitTransition",rM="webkitTransitionEnd"),void 0===window.onanimationend&&void 0!==window.onwebkitanimationend&&(aM="WebkitAnimation",iM="webkitAnimationEnd"));var OM=K?window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout:function(e){return e()};function sM(e){OM((function(){OM(e)}))}function AM(e,t){var n=e._transitionClasses||(e._transitionClasses=[]);n.indexOf(t)<0&&(n.push(t),tM(e,t))}function uM(e,t){e._transitionClasses&&h(e._transitionClasses,t),nM(e,t)}function dM(e,t,n){var o=fM(e,t),p=o.type,M=o.timeout,b=o.propCount;if(!p)return n();var c=p===bM?rM:iM,z=0,r=function(){e.removeEventListener(c,a),n()},a=function(t){t.target===e&&++z>=b&&r()};setTimeout((function(){z0&&(n=bM,a=b,i=M.length):t===cM?r>0&&(n=cM,a=r,i=z.length):i=(n=(a=Math.max(b,r))>0?b>r?bM:cM:null)?n===bM?M.length:z.length:0,{type:n,timeout:a,propCount:i,hasTransform:n===bM&&lM.test(o[zM+"Property"])}}function qM(e,t){for(;e.length1}function gM(e,t){!0!==t.data.show&&hM(t)}var LM=function(e){var t,n,o={},r=e.modules,a=e.nodeOps;for(t=0;tA?W(e,M(n[l+1])?null:n[l+1].elm,n,s,l,o):s>l&&v(t,i,A)}(i,u,l,n,r):b(l)?(b(e.text)&&a.setTextContent(i,""),W(i,null,l,0,l.length-1,n)):b(u)?v(u,0,u.length-1):b(e.text)&&a.setTextContent(i,""):e.text!==t.text&&a.setTextContent(i,t.text),b(A)&&b(s=A.hook)&&b(s=s.postpatch)&&s(e,t)}}}function L(e,t,n){if(c(n)&&b(e.parent))e.parent.data.pendingInsert=t;else for(var o=0;o-1,b.selected!==M&&(b.selected=M);else if(x(EM(b),o))return void(e.selectedIndex!==c&&(e.selectedIndex=c));p||(e.selectedIndex=-1)}}function TM(e,t){return t.every((function(t){return!x(t,e)}))}function EM(e){return"_value"in e?e._value:e.value}function BM(e){e.target.composing=!0}function CM(e){e.target.composing&&(e.target.composing=!1,XM(e.target,"input"))}function XM(e,t){var n=document.createEvent("HTMLEvents");n.initEvent(t,!0,!0),e.dispatchEvent(n)}function wM(e){return!e.componentInstance||e.data&&e.data.transition?e:wM(e.componentInstance._vnode)}var SM={bind:function(e,t,n){var o=t.value,p=(n=wM(n)).data&&n.data.transition,M=e.__vOriginalDisplay="none"===e.style.display?"":e.style.display;o&&p?(n.data.show=!0,hM(n,(function(){e.style.display=M}))):e.style.display=o?M:"none"},update:function(e,t,n){var o=t.value;!o!=!t.oldValue&&((n=wM(n)).data&&n.data.transition?(n.data.show=!0,o?hM(n,(function(){e.style.display=e.__vOriginalDisplay})):vM(n,(function(){e.style.display="none"}))):e.style.display=o?e.__vOriginalDisplay:"none")},unbind:function(e,t,n,o,p){p||(e.style.display=e.__vOriginalDisplay)}},xM={model:_M,show:SM},kM={name:String,appear:Boolean,css:Boolean,mode:String,type:String,enterClass:String,leaveClass:String,enterToClass:String,leaveToClass:String,enterActiveClass:String,leaveActiveClass:String,appearClass:String,appearActiveClass:String,appearToClass:String,duration:[Number,String,Object]};function IM(e){var t=e&&e.componentOptions;return t&&t.Ctor.options.abstract?IM(yt(t.children)):e}function DM(e){var t={},n=e.$options;for(var o in n.propsData)t[o]=e[o];var p=n._parentListeners;for(var o in p)t[L(o)]=p[o];return t}function PM(e,t){if(/\d-keep-alive$/.test(t.tag))return e("keep-alive",{props:t.componentOptions.propsData})}var jM=function(e){return e.tag||ft(e)},UM=function(e){return"show"===e.name},HM={name:"transition",props:kM,abstract:!0,render:function(e){var t=this,n=this.$slots.default;if(n&&(n=n.filter(jM)).length){0;var o=this.mode;0;var p=n[0];if(function(e){for(;e=e.parent;)if(e.data.transition)return!0}(this.$vnode))return p;var M=IM(p);if(!M)return p;if(this._leaving)return PM(e,p);var b="__transition-".concat(this._uid,"-");M.key=null==M.key?M.isComment?b+"comment":b+M.tag:z(M.key)?0===String(M.key).indexOf(b)?M.key:b+M.key:M.key;var c=(M.data||(M.data={})).transition=DM(this),r=this._vnode,a=IM(r);if(M.data.directives&&M.data.directives.some(UM)&&(M.data.show=!0),a&&a.data&&!function(e,t){return t.key===e.key&&t.tag===e.tag}(M,a)&&!ft(a)&&(!a.componentInstance||!a.componentInstance._vnode.isComment)){var i=a.data.transition=B({},c);if("out-in"===o)return this._leaving=!0,Ge(i,"afterLeave",(function(){t._leaving=!1,t.$forceUpdate()})),PM(e,p);if("in-out"===o){if(ft(M))return r;var O,s=function(){O()};Ge(c,"afterEnter",s),Ge(c,"enterCancelled",s),Ge(i,"delayLeave",(function(e){O=e}))}}return p}}},FM=B({tag:String,moveClass:String},kM);delete FM.mode;var GM={props:FM,beforeMount:function(){var e=this,t=this._update;this._update=function(n,o){var p=wt(e);e.__patch__(e._vnode,e.kept,!1,!0),e._vnode=e.kept,p(),t.call(e,n,o)}},render:function(e){for(var t=this.tag||this.$vnode.data.tag||"span",n=Object.create(null),o=this.prevChildren=this.children,p=this.$slots.default||[],M=this.children=[],b=DM(this),c=0;c-1?Bo[e]=t.constructor===window.HTMLUnknownElement||t.constructor===window.HTMLElement:Bo[e]=/HTMLUnknownElement/.test(t.toString())},B(no.options.directives,xM),B(no.options.components,KM),no.prototype.__patch__=K?LM:X,no.prototype.$mount=function(e,t){return function(e,t,n){var o;e.$el=t,e.$options.render||(e.$options.render=ue),It(e,"beforeMount"),o=function(){e._update(e._render(),n)},new vn(e,o,X,{before:function(){e._isMounted&&!e._isDestroyed&&It(e,"beforeUpdate")}},!0),n=!1;var p=e._preWatchers;if(p)for(var M=0;M\/=]+)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/,zb=/^\s*((?:v-[\w-]+:|@|:|#)\[[^=]+?\][^\s"'<>\/=]*)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/,rb="[a-zA-Z_][\\-\\.0-9_a-zA-Z".concat(F.source,"]*"),ab="((?:".concat(rb,"\\:)?").concat(rb,")"),ib=new RegExp("^<".concat(ab)),Ob=/^\s*(\/?)>/,sb=new RegExp("^<\\/".concat(ab,"[^>]*>")),Ab=/^]+>/i,ub=/^",""":'"',"&":"&"," ":"\n"," ":"\t","'":"'"},Wb=/&(?:lt|gt|quot|amp|#39);/g,hb=/&(?:lt|gt|quot|amp|#39|#10|#9);/g,vb=f("pre,textarea",!0),Rb=function(e,t){return e&&vb(e)&&"\n"===t[0]};function mb(e,t){var n=t?hb:Wb;return e.replace(n,(function(e){return qb[e]}))}function gb(e,t){for(var n,o,p=[],M=t.expectHTML,b=t.isUnaryTag||w,c=t.canBeLeftOpenTag||w,z=0,r=function(){if(n=e,o&&lb(o)){var r=0,O=o.toLowerCase(),s=fb[O]||(fb[O]=new RegExp("([\\s\\S]*?)(]*>)","i"));v=e.replace(s,(function(e,n,o){return r=o.length,lb(O)||"noscript"===O||(n=n.replace(//g,"$1").replace(//g,"$1")),Rb(O,n)&&(n=n.slice(1)),t.chars&&t.chars(n),""}));z+=e.length-v.length,e=v,i(O,z-r,z)}else{var A=e.indexOf("<");if(0===A){if(ub.test(e)){var u=e.indexOf("--\x3e");if(u>=0)return t.shouldKeepComment&&t.comment&&t.comment(e.substring(4,u),z,z+u+3),a(u+3),"continue"}if(db.test(e)){var d=e.indexOf("]>");if(d>=0)return a(d+2),"continue"}var l=e.match(Ab);if(l)return a(l[0].length),"continue";var f=e.match(sb);if(f){var q=z;return a(f[0].length),i(f[1],q,z),"continue"}var W=function(){var t=e.match(ib);if(t){var n={tagName:t[1],attrs:[],start:z};a(t[0].length);for(var o=void 0,p=void 0;!(o=e.match(Ob))&&(p=e.match(zb)||e.match(cb));)p.start=z,a(p[0].length),p.end=z,n.attrs.push(p);if(o)return n.unarySlash=o[1],a(o[0].length),n.end=z,n}}();if(W)return function(e){var n=e.tagName,z=e.unarySlash;M&&("p"===o&&bb(n)&&i(o),c(n)&&o===n&&i(n));for(var r=b(n)||!!z,a=e.attrs.length,O=new Array(a),s=0;s=0){for(v=e.slice(A);!(sb.test(v)||ib.test(v)||ub.test(v)||db.test(v)||(R=v.indexOf("<",1))<0);)A+=R,v=e.slice(A);h=e.substring(0,A)}A<0&&(h=e),h&&a(h.length),t.chars&&h&&t.chars(h,z-h.length,z)}if(e===n)return t.chars&&t.chars(e),"break"};e;){if("break"===r())break}function a(t){z+=t,e=e.substring(t)}function i(e,n,M){var b,c;if(null==n&&(n=z),null==M&&(M=z),e)for(c=e.toLowerCase(),b=p.length-1;b>=0&&p[b].lowerCasedTag!==c;b--);else b=0;if(b>=0){for(var r=p.length-1;r>=b;r--)t.end&&t.end(p[r].tag,n,M);p.length=b,o=b&&p[b-1].tag}else"br"===c?t.start&&t.start(e,[],!0,n,M):"p"===c&&(t.start&&t.start(e,[],!1,n,M),t.end&&t.end(e,n,M))}i()}var Lb,_b,Nb,yb,Tb,Eb,Bb,Cb,Xb=/^@|^v-on:/,wb=/^v-|^@|^:|^#/,Sb=/([\s\S]*?)\s+(?:in|of)\s+([\s\S]*)/,xb=/,([^,\}\]]*)(?:,([^,\}\]]*))?$/,kb=/^\(|\)$/g,Ib=/^\[.*\]$/,Db=/:(.*)$/,Pb=/^:|^\.|^v-bind:/,jb=/\.[^.\]]+(?=[^\]]*$)/g,Ub=/^v-slot(:|$)|^#/,Hb=/[\r\n]/,Fb=/[ \f\t\r\n]+/g,Gb=m(ob),$b="_empty_";function Vb(e,t,n){return{type:1,tag:e,attrsList:t,attrsMap:tc(t),rawAttrsMap:{},parent:n,children:[]}}function Yb(e,t){Lb=t.warn||ip,Eb=t.isPreTag||w,Bb=t.mustUseProp||w,Cb=t.getTagNamespace||w;var n=t.isReservedTag||w;(function(e){return!(!(e.component||e.attrsMap[":is"]||e.attrsMap["v-bind:is"])&&(e.attrsMap.is?n(e.attrsMap.is):n(e.tag)))}),Nb=Op(t.modules,"transformNode"),yb=Op(t.modules,"preTransformNode"),Tb=Op(t.modules,"postTransformNode"),_b=t.delimiters;var o,p,M=[],b=!1!==t.preserveWhitespace,c=t.whitespace,z=!1,r=!1;function a(e){if(i(e),z||e.processed||(e=Kb(e,t)),M.length||e===o||o.if&&(e.elseif||e.else)&&Qb(o,{exp:e.elseif,block:e}),p&&!e.forbidden)if(e.elseif||e.else)b=e,c=function(e){for(var t=e.length;t--;){if(1===e[t].type)return e[t];e.pop()}}(p.children),c&&c.if&&Qb(c,{exp:b.elseif,block:b});else{if(e.slotScope){var n=e.slotTarget||'"default"';(p.scopedSlots||(p.scopedSlots={}))[n]=e}p.children.push(e),e.parent=p}var b,c;e.children=e.children.filter((function(e){return!e.slotScope})),i(e),e.pre&&(z=!1),Eb(e.tag)&&(r=!1);for(var a=0;az&&(c.push(M=e.slice(z,p)),b.push(JSON.stringify(M)));var r=rp(o[1].trim());b.push("_s(".concat(r,")")),c.push({"@binding":r}),z=p+o[0].length}return z-1")+("true"===M?":(".concat(t,")"):":_q(".concat(t,",").concat(M,")"))),fp(e,"change","var $$a=".concat(t,",")+"$$el=$event.target,"+"$$c=$$el.checked?(".concat(M,"):(").concat(b,");")+"if(Array.isArray($$a)){"+"var $$v=".concat(o?"_n("+p+")":p,",")+"$$i=_i($$a,$$v);"+"if($$el.checked){$$i<0&&(".concat(mp(t,"$$a.concat([$$v])"),")}")+"else{$$i>-1&&(".concat(mp(t,"$$a.slice(0,$$i).concat($$a.slice($$i+1))"),")}")+"}else{".concat(mp(t,"$$c"),"}"),null,!0)}(e,o,p);else if("input"===M&&"radio"===b)!function(e,t,n){var o=n&&n.number,p=qp(e,"value")||"null";p=o?"_n(".concat(p,")"):p,sp(e,"checked","_q(".concat(t,",").concat(p,")")),fp(e,"change",mp(t,p),null,!0)}(e,o,p);else if("input"===M||"textarea"===M)!function(e,t,n){var o=e.attrsMap.type;0;var p=n||{},M=p.lazy,b=p.number,c=p.trim,z=!M&&"range"!==o,r=M?"change":"range"===o?Ep:"input",a="$event.target.value";c&&(a="$event.target.value.trim()");b&&(a="_n(".concat(a,")"));var i=mp(t,a);z&&(i="if($event.target.composing)return;".concat(i));sp(e,"value","(".concat(t,")")),fp(e,r,i,null,!0),(c||b)&&fp(e,"blur","$forceUpdate()")}(e,o,p);else{if(!H.isReservedTag(M))return Rp(e,o,p),!1}return!0},text:function(e,t){t.value&&sp(e,"textContent","_s(".concat(t.value,")"),t)},html:function(e,t){t.value&&sp(e,"innerHTML","_s(".concat(t.value,")"),t)}},ac={expectHTML:!0,modules:bc,directives:rc,isPreTag:function(e){return"pre"===e},isUnaryTag:pb,mustUseProp:so,canBeLeftOpenTag:Mb,isReservedTag:To,getTagNamespace:Eo,staticKeys:function(e){return e.reduce((function(e,t){return e.concat(t.staticKeys||[])}),[]).join(",")}(bc)},ic=m((function(e){return f("type,tag,attrsList,attrsMap,plain,parent,children,attrs,start,end,rawAttrsMap"+(e?","+e:""))}));function Oc(e,t){e&&(cc=ic(t.staticKeys||""),zc=t.isReservedTag||w,sc(e),Ac(e,!1))}function sc(e){if(e.static=function(e){if(2===e.type)return!1;if(3===e.type)return!0;return!(!e.pre&&(e.hasBindings||e.if||e.for||q(e.tag)||!zc(e.tag)||function(e){for(;e.parent;){if("template"!==(e=e.parent).tag)return!1;if(e.for)return!0}return!1}(e)||!Object.keys(e).every(cc)))}(e),1===e.type){if(!zc(e.tag)&&"slot"!==e.tag&&null==e.attrsMap["inline-template"])return;for(var t=0,n=e.children.length;t|^function(?:\s+[\w$]+)?\s*\(/,dc=/\([^)]*?\);*$/,lc=/^[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*|\['[^']*?']|\["[^"]*?"]|\[\d+]|\[[A-Za-z_$][\w$]*])*$/,fc={esc:27,tab:9,enter:13,space:32,up:38,left:37,right:39,down:40,delete:[8,46]},qc={esc:["Esc","Escape"],tab:"Tab",enter:"Enter",space:[" ","Spacebar"],up:["Up","ArrowUp"],left:["Left","ArrowLeft"],right:["Right","ArrowRight"],down:["Down","ArrowDown"],delete:["Backspace","Delete","Del"]},Wc=function(e){return"if(".concat(e,")return null;")},hc={stop:"$event.stopPropagation();",prevent:"$event.preventDefault();",self:Wc("$event.target !== $event.currentTarget"),ctrl:Wc("!$event.ctrlKey"),shift:Wc("!$event.shiftKey"),alt:Wc("!$event.altKey"),meta:Wc("!$event.metaKey"),left:Wc("'button' in $event && $event.button !== 0"),middle:Wc("'button' in $event && $event.button !== 1"),right:Wc("'button' in $event && $event.button !== 2")};function vc(e,t){var n=t?"nativeOn:":"on:",o="",p="";for(var M in e){var b=Rc(e[M]);e[M]&&e[M].dynamic?p+="".concat(M,",").concat(b,","):o+='"'.concat(M,'":').concat(b,",")}return o="{".concat(o.slice(0,-1),"}"),p?n+"_d(".concat(o,",[").concat(p.slice(0,-1),"])"):n+o}function Rc(e){if(!e)return"function(){}";if(Array.isArray(e))return"[".concat(e.map((function(e){return Rc(e)})).join(","),"]");var t=lc.test(e.value),n=uc.test(e.value),o=lc.test(e.value.replace(dc,""));if(e.modifiers){var p="",M="",b=[],c=function(t){if(hc[t])M+=hc[t],fc[t]&&b.push(t);else if("exact"===t){var n=e.modifiers;M+=Wc(["ctrl","shift","alt","meta"].filter((function(e){return!n[e]})).map((function(e){return"$event.".concat(e,"Key")})).join("||"))}else b.push(t)};for(var z in e.modifiers)c(z);b.length&&(p+=function(e){return"if(!$event.type.indexOf('key')&&"+"".concat(e.map(mc).join("&&"),")return null;")}(b)),M&&(p+=M);var r=t?"return ".concat(e.value,".apply(null, arguments)"):n?"return (".concat(e.value,").apply(null, arguments)"):o?"return ".concat(e.value):e.value;return"function($event){".concat(p).concat(r,"}")}return t||n?e.value:"function($event){".concat(o?"return ".concat(e.value):e.value,"}")}function mc(e){var t=parseInt(e,10);if(t)return"$event.keyCode!==".concat(t);var n=fc[e],o=qc[e];return"_k($event.keyCode,"+"".concat(JSON.stringify(e),",")+"".concat(JSON.stringify(n),",")+"$event.key,"+"".concat(JSON.stringify(o))+")"}var gc={on:function(e,t){e.wrapListeners=function(e){return"_g(".concat(e,",").concat(t.value,")")}},bind:function(e,t){e.wrapData=function(n){return"_b(".concat(n,",'").concat(e.tag,"',").concat(t.value,",").concat(t.modifiers&&t.modifiers.prop?"true":"false").concat(t.modifiers&&t.modifiers.sync?",true":"",")")}},cloak:X},Lc=function(e){this.options=e,this.warn=e.warn||ip,this.transforms=Op(e.modules,"transformCode"),this.dataGenFns=Op(e.modules,"genData"),this.directives=B(B({},gc),e.directives);var t=e.isReservedTag||w;this.maybeComponent=function(e){return!!e.component||!t(e.tag)},this.onceId=0,this.staticRenderFns=[],this.pre=!1};function _c(e,t){var n=new Lc(t),o=e?"script"===e.tag?"null":Nc(e,n):'_c("div")';return{render:"with(this){return ".concat(o,"}"),staticRenderFns:n.staticRenderFns}}function Nc(e,t){if(e.parent&&(e.pre=e.pre||e.parent.pre),e.staticRoot&&!e.staticProcessed)return yc(e,t);if(e.once&&!e.onceProcessed)return Tc(e,t);if(e.for&&!e.forProcessed)return Cc(e,t);if(e.if&&!e.ifProcessed)return Ec(e,t);if("template"!==e.tag||e.slotTarget||t.pre){if("slot"===e.tag)return function(e,t){var n=e.slotName||'"default"',o=xc(e,t),p="_t(".concat(n).concat(o?",function(){return ".concat(o,"}"):""),M=e.attrs||e.dynamicAttrs?Dc((e.attrs||[]).concat(e.dynamicAttrs||[]).map((function(e){return{name:L(e.name),value:e.value,dynamic:e.dynamic}}))):null,b=e.attrsMap["v-bind"];!M&&!b||o||(p+=",null");M&&(p+=",".concat(M));b&&(p+="".concat(M?"":",null",",").concat(b));return p+")"}(e,t);var n=void 0;if(e.component)n=function(e,t,n){var o=t.inlineTemplate?null:xc(t,n,!0);return"_c(".concat(e,",").concat(Xc(t,n)).concat(o?",".concat(o):"",")")}(e.component,e,t);else{var o=void 0,p=t.maybeComponent(e);(!e.plain||e.pre&&p)&&(o=Xc(e,t));var M=void 0,b=t.options.bindings;p&&b&&!1!==b.__isScriptSetup&&(M=function(e,t){var n=L(t),o=_(n),p=function(p){return e[t]===p?t:e[n]===p?n:e[o]===p?o:void 0},M=p("setup-const")||p("setup-reactive-const");if(M)return M;var b=p("setup-let")||p("setup-ref")||p("setup-maybe-ref");if(b)return b}(b,e.tag)),M||(M="'".concat(e.tag,"'"));var c=e.inlineTemplate?null:xc(e,t,!0);n="_c(".concat(M).concat(o?",".concat(o):"").concat(c?",".concat(c):"",")")}for(var z=0;z>>0}(b)):"",")")}(e,e.scopedSlots,t),",")),e.model&&(n+="model:{value:".concat(e.model.value,",callback:").concat(e.model.callback,",expression:").concat(e.model.expression,"},")),e.inlineTemplate){var M=function(e,t){var n=e.children[0];0;if(n&&1===n.type){var o=_c(n,t.options);return"inlineTemplate:{render:function(){".concat(o.render,"},staticRenderFns:[").concat(o.staticRenderFns.map((function(e){return"function(){".concat(e,"}")})).join(","),"]}")}}(e,t);M&&(n+="".concat(M,","))}return n=n.replace(/,$/,"")+"}",e.dynamicAttrs&&(n="_b(".concat(n,',"').concat(e.tag,'",').concat(Dc(e.dynamicAttrs),")")),e.wrapData&&(n=e.wrapData(n)),e.wrapListeners&&(n=e.wrapListeners(n)),n}function wc(e){return 1===e.type&&("slot"===e.tag||e.children.some(wc))}function Sc(e,t){var n=e.attrsMap["slot-scope"];if(e.if&&!e.ifProcessed&&!n)return Ec(e,t,Sc,"null");if(e.for&&!e.forProcessed)return Cc(e,t,Sc);var o=e.slotScope===$b?"":String(e.slotScope),p="function(".concat(o,"){")+"return ".concat("template"===e.tag?e.if&&n?"(".concat(e.if,")?").concat(xc(e,t)||"undefined",":undefined"):xc(e,t)||"undefined":Nc(e,t),"}"),M=o?"":",proxy:true";return"{key:".concat(e.slotTarget||'"default"',",fn:").concat(p).concat(M,"}")}function xc(e,t,n,o,p){var M=e.children;if(M.length){var b=M[0];if(1===M.length&&b.for&&"template"!==b.tag&&"slot"!==b.tag){var c=n?t.maybeComponent(b)?",1":",0":"";return"".concat((o||Nc)(b,t)).concat(c)}var z=n?function(e,t){for(var n=0,o=0;o':'
    ',Fc.innerHTML.indexOf(" ")>0}var Yc=!!K&&Vc(!1),Kc=!!K&&Vc(!0),Zc=m((function(e){var t=Xo(e);return t&&t.innerHTML})),Qc=no.prototype.$mount;no.prototype.$mount=function(e,t){if((e=e&&Xo(e))===document.body||e===document.documentElement)return this;var n=this.$options;if(!n.render){var o=n.template;if(o)if("string"==typeof o)"#"===o.charAt(0)&&(o=Zc(o));else{if(!o.nodeType)return this;o=o.innerHTML}else e&&(o=function(e){if(e.outerHTML)return e.outerHTML;var t=document.createElement("div");return t.appendChild(e.cloneNode(!0)),t.innerHTML}(e));if(o){0;var p=$c(o,{outputSourceRange:!1,shouldDecodeNewlines:Yc,shouldDecodeNewlinesForHref:Kc,delimiters:n.delimiters,comments:n.comments},this),M=p.render,b=p.staticRenderFns;n.render=M,n.staticRenderFns=b}}return Qc.call(this,e,t)},no.compile=$c;var Jc=n(6486),ez=n.n(Jc),tz=n(8),nz=n.n(tz);const oz={computed:{Telescope:function(e){function t(){return e.apply(this,arguments)}return t.toString=function(){return e.toString()},t}((function(){return Telescope}))},methods:{timeAgo:function(e){nz().updateLocale("en",{relativeTime:{future:"in %s",past:"%s ago",s:function(e){return e+"s ago"},ss:"%ds ago",m:"1m ago",mm:"%dm ago",h:"1h ago",hh:"%dh ago",d:"1d ago",dd:"%dd ago",M:"a month ago",MM:"%d months ago",y:"a year ago",yy:"%d years ago"}});var t=nz()().diff(e,"seconds"),n=nz()("2018-01-01").startOf("day").seconds(t);return t>300?nz()(e).fromNow(!0):t<60?n.format("s")+"s ago":n.format("m:ss")+"m ago"},localTime:function(e){return nz()(e).local().format("MMMM Do YYYY, h:mm:ss A")},truncate:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:70;return ez().truncate(e,{length:t,separator:/,? +/})},debouncer:ez().debounce((function(e){return e()}),500),alertError:function(e){this.$root.alert.type="error",this.$root.alert.autoClose=!1,this.$root.alert.message=e},alertSuccess:function(e,t){this.$root.alert.type="success",this.$root.alert.autoClose=t,this.$root.alert.message=e},alertConfirm:function(e,t,n){this.$root.alert.type="confirmation",this.$root.alert.autoClose=!1,this.$root.alert.message=e,this.$root.alert.confirmationProceed=t,this.$root.alert.confirmationCancel=n}}};var pz=n(9669),Mz=n.n(pz);const bz=[{path:"/",redirect:"/requests"},{path:"/mail/:id",name:"mail-preview",component:n(7776).Z},{path:"/mail",name:"mail",component:n(4456).Z},{path:"/exceptions/:id",name:"exception-preview",component:n(8882).Z},{path:"/exceptions",name:"exceptions",component:n(5323).Z},{path:"/dumps",name:"dumps",component:n(7208).Z},{path:"/logs/:id",name:"log-preview",component:n(8360).Z},{path:"/logs",name:"logs",component:n(1929).Z},{path:"/notifications/:id",name:"notification-preview",component:n(3590).Z},{path:"/notifications",name:"notifications",component:n(624).Z},{path:"/jobs/:id",name:"job-preview",component:n(4142).Z},{path:"/jobs",name:"jobs",component:n(558).Z},{path:"/batches/:id",name:"batch-preview",component:n(8159).Z},{path:"/batches",name:"batches",component:n(7374).Z},{path:"/events/:id",name:"event-preview",component:n(5701).Z},{path:"/events",name:"events",component:n(8814).Z},{path:"/cache/:id",name:"cache-preview",component:n(2246).Z},{path:"/cache",name:"cache",component:n(896).Z},{path:"/queries/:id",name:"query-preview",component:n(3992).Z},{path:"/queries",name:"queries",component:n(4652).Z},{path:"/models/:id",name:"model-preview",component:n(706).Z},{path:"/models",name:"models",component:n(1556).Z},{path:"/requests/:id",name:"request-preview",component:n(1619).Z},{path:"/requests",name:"requests",component:n(9751).Z},{path:"/commands/:id",name:"command-preview",component:n(1241).Z},{path:"/commands",name:"commands",component:n(7210).Z},{path:"/schedule/:id",name:"schedule-preview",component:n(4622).Z},{path:"/schedule",name:"schedule",component:n(8244).Z},{path:"/redis/:id",name:"redis-preview",component:n(5799).Z},{path:"/redis",name:"redis",component:n(7837).Z},{path:"/monitored-tags",name:"monitored-tags",component:n(5505).Z},{path:"/gates/:id",name:"gate-preview",component:n(6581).Z},{path:"/gates",name:"gates",component:n(4840).Z},{path:"/views/:id",name:"view-preview",component:n(6968).Z},{path:"/views",name:"views",component:n(3395).Z},{path:"/client-requests/:id",name:"client-request-preview",component:n(9101).Z},{path:"/client-requests",name:"client-requests",component:n(2935).Z}];function cz(e,t){for(var n in t)e[n]=t[n];return e}var zz=/[!'()*]/g,rz=function(e){return"%"+e.charCodeAt(0).toString(16)},az=/%2C/g,iz=function(e){return encodeURIComponent(e).replace(zz,rz).replace(az,",")};function Oz(e){try{return decodeURIComponent(e)}catch(e){0}return e}var sz=function(e){return null==e||"object"==typeof e?e:String(e)};function Az(e){var t={};return(e=e.trim().replace(/^(\?|#|&)/,""))?(e.split("&").forEach((function(e){var n=e.replace(/\+/g," ").split("="),o=Oz(n.shift()),p=n.length>0?Oz(n.join("=")):null;void 0===t[o]?t[o]=p:Array.isArray(t[o])?t[o].push(p):t[o]=[t[o],p]})),t):t}function uz(e){var t=e?Object.keys(e).map((function(t){var n=e[t];if(void 0===n)return"";if(null===n)return iz(t);if(Array.isArray(n)){var o=[];return n.forEach((function(e){void 0!==e&&(null===e?o.push(iz(t)):o.push(iz(t)+"="+iz(e)))})),o.join("&")}return iz(t)+"="+iz(n)})).filter((function(e){return e.length>0})).join("&"):null;return t?"?"+t:""}var dz=/\/?$/;function lz(e,t,n,o){var p=o&&o.options.stringifyQuery,M=t.query||{};try{M=fz(M)}catch(e){}var b={name:t.name||e&&e.name,meta:e&&e.meta||{},path:t.path||"/",hash:t.hash||"",query:M,params:t.params||{},fullPath:hz(t,p),matched:e?Wz(e):[]};return n&&(b.redirectedFrom=hz(n,p)),Object.freeze(b)}function fz(e){if(Array.isArray(e))return e.map(fz);if(e&&"object"==typeof e){var t={};for(var n in e)t[n]=fz(e[n]);return t}return e}var qz=lz(null,{path:"/"});function Wz(e){for(var t=[];e;)t.unshift(e),e=e.parent;return t}function hz(e,t){var n=e.path,o=e.query;void 0===o&&(o={});var p=e.hash;return void 0===p&&(p=""),(n||"/")+(t||uz)(o)+p}function vz(e,t,n){return t===qz?e===t:!!t&&(e.path&&t.path?e.path.replace(dz,"")===t.path.replace(dz,"")&&(n||e.hash===t.hash&&Rz(e.query,t.query)):!(!e.name||!t.name)&&(e.name===t.name&&(n||e.hash===t.hash&&Rz(e.query,t.query)&&Rz(e.params,t.params))))}function Rz(e,t){if(void 0===e&&(e={}),void 0===t&&(t={}),!e||!t)return e===t;var n=Object.keys(e).sort(),o=Object.keys(t).sort();return n.length===o.length&&n.every((function(n,p){var M=e[n];if(o[p]!==n)return!1;var b=t[n];return null==M||null==b?M===b:"object"==typeof M&&"object"==typeof b?Rz(M,b):String(M)===String(b)}))}function mz(e){for(var t=0;t=0&&(t=e.slice(o),e=e.slice(0,o));var p=e.indexOf("?");return p>=0&&(n=e.slice(p+1),e=e.slice(0,p)),{path:e,query:n,hash:t}}(p.path||""),r=t&&t.path||"/",a=z.path?_z(z.path,r,n||p.append):r,i=function(e,t,n){void 0===t&&(t={});var o,p=n||Az;try{o=p(e||"")}catch(e){o={}}for(var M in t){var b=t[M];o[M]=Array.isArray(b)?b.map(sz):sz(b)}return o}(z.query,p.query,o&&o.options.parseQuery),O=p.hash||z.hash;return O&&"#"!==O.charAt(0)&&(O="#"+O),{_normalized:!0,path:a,query:i,hash:O}}var Yz,Kz=function(){},Zz={name:"RouterLink",props:{to:{type:[String,Object],required:!0},tag:{type:String,default:"a"},custom:Boolean,exact:Boolean,exactPath:Boolean,append:Boolean,replace:Boolean,activeClass:String,exactActiveClass:String,ariaCurrentValue:{type:String,default:"page"},event:{type:[String,Array],default:"click"}},render:function(e){var t=this,n=this.$router,o=this.$route,p=n.resolve(this.to,o,this.append),M=p.location,b=p.route,c=p.href,z={},r=n.options.linkActiveClass,a=n.options.linkExactActiveClass,i=null==r?"router-link-active":r,O=null==a?"router-link-exact-active":a,s=null==this.activeClass?i:this.activeClass,A=null==this.exactActiveClass?O:this.exactActiveClass,u=b.redirectedFrom?lz(null,Vz(b.redirectedFrom),null,n):b;z[A]=vz(o,u,this.exactPath),z[s]=this.exact||this.exactPath?z[A]:function(e,t){return 0===e.path.replace(dz,"/").indexOf(t.path.replace(dz,"/"))&&(!t.hash||e.hash===t.hash)&&function(e,t){for(var n in t)if(!(n in e))return!1;return!0}(e.query,t.query)}(o,u);var d=z[A]?this.ariaCurrentValue:null,l=function(e){Qz(e)&&(t.replace?n.replace(M,Kz):n.push(M,Kz))},f={click:Qz};Array.isArray(this.event)?this.event.forEach((function(e){f[e]=l})):f[this.event]=l;var q={class:z},W=!this.$scopedSlots.$hasNormal&&this.$scopedSlots.default&&this.$scopedSlots.default({href:c,route:b,navigate:l,isActive:z[s],isExactActive:z[A]});if(W){if(1===W.length)return W[0];if(W.length>1||!W.length)return 0===W.length?e():e("span",{},W)}if("a"===this.tag)q.on=f,q.attrs={href:c,"aria-current":d};else{var h=Jz(this.$slots.default);if(h){h.isStatic=!1;var v=h.data=cz({},h.data);for(var R in v.on=v.on||{},v.on){var m=v.on[R];R in f&&(v.on[R]=Array.isArray(m)?m:[m])}for(var g in f)g in v.on?v.on[g].push(f[g]):v.on[g]=l;var L=h.data.attrs=cz({},h.data.attrs);L.href=c,L["aria-current"]=d}else q.on=f}return e(this.tag,q,this.$slots.default)}};function Qz(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey||e.defaultPrevented||void 0!==e.button&&0!==e.button)){if(e.currentTarget&&e.currentTarget.getAttribute){var t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function Jz(e){if(e)for(var t,n=0;n-1&&(c.params[O]=n.params[O]);return c.path=$z(a.path,c.params),z(a,c,b)}if(c.path){c.params={};for(var s=0;s-1}function Er(e,t){return Tr(e)&&e._isRouter&&(null==t||e.type===t)}function Br(e,t,n){var o=function(p){p>=e.length?n():e[p]?t(e[p],(function(){o(p+1)})):o(p+1)};o(0)}function Cr(e){return function(t,n,o){var p=!1,M=0,b=null;Xr(e,(function(e,t,n,c){if("function"==typeof e&&void 0===e.cid){p=!0,M++;var z,r=xr((function(t){var p;((p=t).__esModule||Sr&&"Module"===p[Symbol.toStringTag])&&(t=t.default),e.resolved="function"==typeof t?t:Yz.extend(t),n.components[c]=t,--M<=0&&o()})),a=xr((function(e){var t="Failed to resolve async component "+c+": "+e;b||(b=Tr(e)?e:new Error(t),o(b))}));try{z=e(r,a)}catch(e){a(e)}if(z)if("function"==typeof z.then)z.then(r,a);else{var i=z.component;i&&"function"==typeof i.then&&i.then(r,a)}}})),p||o()}}function Xr(e,t){return wr(e.map((function(e){return Object.keys(e.components).map((function(n){return t(e.components[n],e.instances[n],e,n)}))})))}function wr(e){return Array.prototype.concat.apply([],e)}var Sr="function"==typeof Symbol&&"symbol"==typeof Symbol.toStringTag;function xr(e){var t=!1;return function(){for(var n=[],o=arguments.length;o--;)n[o]=arguments[o];if(!t)return t=!0,e.apply(this,n)}}var kr=function(e,t){this.router=e,this.base=function(e){if(!e)if(er){var t=document.querySelector("base");e=(e=t&&t.getAttribute("href")||"/").replace(/^https?:\/\/[^\/]+/,"")}else e="/";"/"!==e.charAt(0)&&(e="/"+e);return e.replace(/\/$/,"")}(t),this.current=qz,this.pending=null,this.ready=!1,this.readyCbs=[],this.readyErrorCbs=[],this.errorCbs=[],this.listeners=[]};function Ir(e,t,n,o){var p=Xr(e,(function(e,o,p,M){var b=function(e,t){"function"!=typeof e&&(e=Yz.extend(e));return e.options[t]}(e,t);if(b)return Array.isArray(b)?b.map((function(e){return n(e,o,p,M)})):n(b,o,p,M)}));return wr(o?p.reverse():p)}function Dr(e,t){if(t)return function(){return e.apply(t,arguments)}}kr.prototype.listen=function(e){this.cb=e},kr.prototype.onReady=function(e,t){this.ready?e():(this.readyCbs.push(e),t&&this.readyErrorCbs.push(t))},kr.prototype.onError=function(e){this.errorCbs.push(e)},kr.prototype.transitionTo=function(e,t,n){var o,p=this;try{o=this.router.match(e,this.current)}catch(e){throw this.errorCbs.forEach((function(t){t(e)})),e}var M=this.current;this.confirmTransition(o,(function(){p.updateRoute(o),t&&t(o),p.ensureURL(),p.router.afterHooks.forEach((function(e){e&&e(o,M)})),p.ready||(p.ready=!0,p.readyCbs.forEach((function(e){e(o)})))}),(function(e){n&&n(e),e&&!p.ready&&(Er(e,gr.redirected)&&M===qz||(p.ready=!0,p.readyErrorCbs.forEach((function(t){t(e)}))))}))},kr.prototype.confirmTransition=function(e,t,n){var o=this,p=this.current;this.pending=e;var M,b,c=function(e){!Er(e)&&Tr(e)&&o.errorCbs.length&&o.errorCbs.forEach((function(t){t(e)})),n&&n(e)},z=e.matched.length-1,r=p.matched.length-1;if(vz(e,p)&&z===r&&e.matched[z]===p.matched[r])return this.ensureURL(),e.hash&&sr(this.router,p,e,!1),c(((b=Nr(M=p,e,gr.duplicated,'Avoided redundant navigation to current location: "'+M.fullPath+'".')).name="NavigationDuplicated",b));var a=function(e,t){var n,o=Math.max(e.length,t.length);for(n=0;n0)){var t=this.router,n=t.options.scrollBehavior,o=vr&&n;o&&this.listeners.push(Or());var p=function(){var n=e.current,p=jr(e.base);e.current===qz&&p===e._startLocation||e.transitionTo(p,(function(e){o&&sr(t,e,n,!0)}))};window.addEventListener("popstate",p),this.listeners.push((function(){window.removeEventListener("popstate",p)}))}},t.prototype.go=function(e){window.history.go(e)},t.prototype.push=function(e,t,n){var o=this,p=this.current;this.transitionTo(e,(function(e){Rr(Nz(o.base+e.fullPath)),sr(o.router,e,p,!1),t&&t(e)}),n)},t.prototype.replace=function(e,t,n){var o=this,p=this.current;this.transitionTo(e,(function(e){mr(Nz(o.base+e.fullPath)),sr(o.router,e,p,!1),t&&t(e)}),n)},t.prototype.ensureURL=function(e){if(jr(this.base)!==this.current.fullPath){var t=Nz(this.base+this.current.fullPath);e?Rr(t):mr(t)}},t.prototype.getCurrentLocation=function(){return jr(this.base)},t}(kr);function jr(e){var t=window.location.pathname,n=t.toLowerCase(),o=e.toLowerCase();return!e||n!==o&&0!==n.indexOf(Nz(o+"/"))||(t=t.slice(e.length)),(t||"/")+window.location.search+window.location.hash}var Ur=function(e){function t(t,n,o){e.call(this,t,n),o&&function(e){var t=jr(e);if(!/^\/#/.test(t))return window.location.replace(Nz(e+"/#"+t)),!0}(this.base)||Hr()}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.setupListeners=function(){var e=this;if(!(this.listeners.length>0)){var t=this.router.options.scrollBehavior,n=vr&&t;n&&this.listeners.push(Or());var o=function(){var t=e.current;Hr()&&e.transitionTo(Fr(),(function(o){n&&sr(e.router,o,t,!0),vr||Vr(o.fullPath)}))},p=vr?"popstate":"hashchange";window.addEventListener(p,o),this.listeners.push((function(){window.removeEventListener(p,o)}))}},t.prototype.push=function(e,t,n){var o=this,p=this.current;this.transitionTo(e,(function(e){$r(e.fullPath),sr(o.router,e,p,!1),t&&t(e)}),n)},t.prototype.replace=function(e,t,n){var o=this,p=this.current;this.transitionTo(e,(function(e){Vr(e.fullPath),sr(o.router,e,p,!1),t&&t(e)}),n)},t.prototype.go=function(e){window.history.go(e)},t.prototype.ensureURL=function(e){var t=this.current.fullPath;Fr()!==t&&(e?$r(t):Vr(t))},t.prototype.getCurrentLocation=function(){return Fr()},t}(kr);function Hr(){var e=Fr();return"/"===e.charAt(0)||(Vr("/"+e),!1)}function Fr(){var e=window.location.href,t=e.indexOf("#");return t<0?"":e=e.slice(t+1)}function Gr(e){var t=window.location.href,n=t.indexOf("#");return(n>=0?t.slice(0,n):t)+"#"+e}function $r(e){vr?Rr(Gr(e)):window.location.hash=e}function Vr(e){vr?mr(Gr(e)):window.location.replace(Gr(e))}var Yr=function(e){function t(t,n){e.call(this,t,n),this.stack=[],this.index=-1}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.push=function(e,t,n){var o=this;this.transitionTo(e,(function(e){o.stack=o.stack.slice(0,o.index+1).concat(e),o.index++,t&&t(e)}),n)},t.prototype.replace=function(e,t,n){var o=this;this.transitionTo(e,(function(e){o.stack=o.stack.slice(0,o.index).concat(e),t&&t(e)}),n)},t.prototype.go=function(e){var t=this,n=this.index+e;if(!(n<0||n>=this.stack.length)){var o=this.stack[n];this.confirmTransition(o,(function(){var e=t.current;t.index=n,t.updateRoute(o),t.router.afterHooks.forEach((function(t){t&&t(o,e)}))}),(function(e){Er(e,gr.duplicated)&&(t.index=n)}))}},t.prototype.getCurrentLocation=function(){var e=this.stack[this.stack.length-1];return e?e.fullPath:"/"},t.prototype.ensureURL=function(){},t}(kr),Kr=function(e){void 0===e&&(e={}),this.app=null,this.apps=[],this.options=e,this.beforeHooks=[],this.resolveHooks=[],this.afterHooks=[],this.matcher=pr(e.routes||[],this);var t=e.mode||"hash";switch(this.fallback="history"===t&&!vr&&!1!==e.fallback,this.fallback&&(t="hash"),er||(t="abstract"),this.mode=t,t){case"history":this.history=new Pr(this,e.base);break;case"hash":this.history=new Ur(this,e.base,this.fallback);break;case"abstract":this.history=new Yr(this,e.base)}},Zr={currentRoute:{configurable:!0}};Kr.prototype.match=function(e,t,n){return this.matcher.match(e,t,n)},Zr.currentRoute.get=function(){return this.history&&this.history.current},Kr.prototype.init=function(e){var t=this;if(this.apps.push(e),e.$once("hook:destroyed",(function(){var n=t.apps.indexOf(e);n>-1&&t.apps.splice(n,1),t.app===e&&(t.app=t.apps[0]||null),t.app||t.history.teardown()})),!this.app){this.app=e;var n=this.history;if(n instanceof Pr||n instanceof Ur){var o=function(e){n.setupListeners(),function(e){var o=n.current,p=t.options.scrollBehavior;vr&&p&&"fullPath"in e&&sr(t,e,o,!1)}(e)};n.transitionTo(n.getCurrentLocation(),o,o)}n.listen((function(e){t.apps.forEach((function(t){t._route=e}))}))}},Kr.prototype.beforeEach=function(e){return Jr(this.beforeHooks,e)},Kr.prototype.beforeResolve=function(e){return Jr(this.resolveHooks,e)},Kr.prototype.afterEach=function(e){return Jr(this.afterHooks,e)},Kr.prototype.onReady=function(e,t){this.history.onReady(e,t)},Kr.prototype.onError=function(e){this.history.onError(e)},Kr.prototype.push=function(e,t,n){var o=this;if(!t&&!n&&"undefined"!=typeof Promise)return new Promise((function(t,n){o.history.push(e,t,n)}));this.history.push(e,t,n)},Kr.prototype.replace=function(e,t,n){var o=this;if(!t&&!n&&"undefined"!=typeof Promise)return new Promise((function(t,n){o.history.replace(e,t,n)}));this.history.replace(e,t,n)},Kr.prototype.go=function(e){this.history.go(e)},Kr.prototype.back=function(){this.go(-1)},Kr.prototype.forward=function(){this.go(1)},Kr.prototype.getMatchedComponents=function(e){var t=e?e.matched?e:this.resolve(e).route:this.currentRoute;return t?[].concat.apply([],t.matched.map((function(e){return Object.keys(e.components).map((function(t){return e.components[t]}))}))):[]},Kr.prototype.resolve=function(e,t,n){var o=Vz(e,t=t||this.history.current,n,this),p=this.match(o,t),M=p.redirectedFrom||p.fullPath,b=function(e,t,n){var o="hash"===n?"#"+t:t;return e?Nz(e+"/"+o):o}(this.history.base,M,this.mode);return{location:o,route:p,href:b,normalizedTo:o,resolved:p}},Kr.prototype.getRoutes=function(){return this.matcher.getRoutes()},Kr.prototype.addRoute=function(e,t){this.matcher.addRoute(e,t),this.history.current!==qz&&this.history.transitionTo(this.history.getCurrentLocation())},Kr.prototype.addRoutes=function(e){this.matcher.addRoutes(e),this.history.current!==qz&&this.history.transitionTo(this.history.getCurrentLocation())},Object.defineProperties(Kr.prototype,Zr);var Qr=Kr;function Jr(e,t){return e.push(t),function(){var n=e.indexOf(t);n>-1&&e.splice(n,1)}}Kr.install=function e(t){if(!e.installed||Yz!==t){e.installed=!0,Yz=t;var n=function(e){return void 0!==e},o=function(e,t){var o=e.$options._parentVnode;n(o)&&n(o=o.data)&&n(o=o.registerRouteInstance)&&o(e,t)};t.mixin({beforeCreate:function(){n(this.$options.router)?(this._routerRoot=this,this._router=this.$options.router,this._router.init(this),t.util.defineReactive(this,"_route",this._router.history.current)):this._routerRoot=this.$parent&&this.$parent._routerRoot||this,o(this,this)},destroyed:function(){o(this)}}),Object.defineProperty(t.prototype,"$router",{get:function(){return this._routerRoot._router}}),Object.defineProperty(t.prototype,"$route",{get:function(){return this._routerRoot._route}}),t.component("RouterView",gz),t.component("RouterLink",Zz);var p=t.config.optionMergeStrategies;p.beforeRouteEnter=p.beforeRouteLeave=p.beforeRouteUpdate=p.created}},Kr.version="3.6.5",Kr.isNavigationFailure=Er,Kr.NavigationFailureType=gr,Kr.START_LOCATION=qz,er&&window.Vue&&window.Vue.use(Kr);var ea=n(4566),ta=n.n(ea),na=n(3379),oa=n.n(na),pa=n(1991),Ma={insert:"head",singleton:!1};oa()(pa.Z,Ma);pa.Z.locals;n(3734);var ba=document.head.querySelector('meta[name="csrf-token"]');ba&&(Mz().defaults.headers.common["X-CSRF-TOKEN"]=ba.content),no.use(Qr),window.Popper=n(8981).default,nz().tz.setDefault(Telescope.timezone),window.Telescope.basePath="/"+window.Telescope.path;var ca=window.Telescope.basePath+"/";""!==window.Telescope.path&&"/"!==window.Telescope.path||(ca="/",window.Telescope.basePath="");var za=new Qr({routes:bz,mode:"history",base:ca});no.component("vue-json-pretty",ta()),no.component("related-entries",n(9932).Z),no.component("index-screen",n(8106).Z),no.component("preview-screen",n(2986).Z),no.component("alert",n(4518).Z),no.component("copy-clipboard",n(7973).Z),no.mixin(oz),new no({el:"#telescope",router:za,data:function(){return{alert:{type:null,autoClose:0,message:"",confirmationProceed:null,confirmationCancel:null},autoLoadsNewEntries:"1"===localStorage.autoLoadsNewEntries,recording:Telescope.recording}},created:function(){window.addEventListener("keydown",this.keydownListener)},destroyed:function(){window.removeEventListener("keydown",this.keydownListener)},methods:{autoLoadNewEntries:function(){this.autoLoadsNewEntries?(this.autoLoadsNewEntries=!1,localStorage.autoLoadsNewEntries=0):(this.autoLoadsNewEntries=!0,localStorage.autoLoadsNewEntries=1)},toggleRecording:function(){Mz().post(Telescope.basePath+"/telescope-api/toggle-recording"),window.Telescope.recording=!Telescope.recording,this.recording=!this.recording},clearEntries:function(){(!(arguments.length>0&&void 0!==arguments[0])||arguments[0])&&!confirm("Are you sure you want to delete all Telescope data?")||Mz().delete(Telescope.basePath+"/telescope-api/entries").then((function(e){return location.reload()}))},keydownListener:function(e){e.metaKey&&"k"===e.key&&this.clearEntries(!1)}}})},601:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});const o={methods:{cacheActionTypeClass:function(e){return"hit"===e?"success":"set"===e?"info":"forget"===e?"warning":"missed"===e?"danger":void 0},composerTypeClass:function(e){return"composer"===e?"info":"creator"===e?"success":void 0},gateResultClass:function(e){return"allowed"===e?"success":"denied"===e?"danger":void 0},jobStatusClass:function(e){return"pending"===e?"secondary":"processed"===e?"success":"failed"===e?"danger":void 0},logLevelClass:function(e){return"debug"===e?"success":"info"===e?"info":"notice"===e?"secondary":"warning"===e?"warning":"error"===e||"critical"===e||"alert"===e||"emergency"===e?"danger":void 0},modelActionClass:function(e){return"created"==e?"success":"updated"==e?"info":"retrieved"==e?"secondary":"deleted"==e||"forceDeleted"==e?"danger":void 0},requestStatusClass:function(e){return e?e<300?"success":e<400?"info":e<500?"warning":e>=500?"danger":void 0:"danger"},requestMethodClass:function(e){return"GET"==e||"OPTIONS"==e?"secondary":"POST"==e||"PATCH"==e||"PUT"==e?"info":"DELETE"==e?"danger":void 0}}}},3734:function(e,t,n){!function(e,t,n){"use strict";function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var p=o(t),M=o(n);function b(e,t){for(var n=0;n=b)throw new Error("Bootstrap's JavaScript requires at least jQuery v1.9.1 but less than v4.0.0")}};f.jQueryDetection(),l();var q="alert",W="4.6.2",h="bs.alert",v="."+h,R=".data-api",m=p.default.fn[q],g="alert",L="fade",_="show",N="close"+v,y="closed"+v,T="click"+v+R,E='[data-dismiss="alert"]',B=function(){function e(e){this._element=e}var t=e.prototype;return t.close=function(e){var t=this._element;e&&(t=this._getRootElement(e)),this._triggerCloseEvent(t).isDefaultPrevented()||this._removeElement(t)},t.dispose=function(){p.default.removeData(this._element,h),this._element=null},t._getRootElement=function(e){var t=f.getSelectorFromElement(e),n=!1;return t&&(n=document.querySelector(t)),n||(n=p.default(e).closest("."+g)[0]),n},t._triggerCloseEvent=function(e){var t=p.default.Event(N);return p.default(e).trigger(t),t},t._removeElement=function(e){var t=this;if(p.default(e).removeClass(_),p.default(e).hasClass(L)){var n=f.getTransitionDurationFromElement(e);p.default(e).one(f.TRANSITION_END,(function(n){return t._destroyElement(e,n)})).emulateTransitionEnd(n)}else this._destroyElement(e)},t._destroyElement=function(e){p.default(e).detach().trigger(y).remove()},e._jQueryInterface=function(t){return this.each((function(){var n=p.default(this),o=n.data(h);o||(o=new e(this),n.data(h,o)),"close"===t&&o[t](this)}))},e._handleDismiss=function(e){return function(t){t&&t.preventDefault(),e.close(this)}},c(e,null,[{key:"VERSION",get:function(){return W}}]),e}();p.default(document).on(T,E,B._handleDismiss(new B)),p.default.fn[q]=B._jQueryInterface,p.default.fn[q].Constructor=B,p.default.fn[q].noConflict=function(){return p.default.fn[q]=m,B._jQueryInterface};var C="button",X="4.6.2",w="bs.button",S="."+w,x=".data-api",k=p.default.fn[C],I="active",D="btn",P="focus",j="click"+S+x,U="focus"+S+x+" blur"+S+x,H="load"+S+x,F='[data-toggle^="button"]',G='[data-toggle="buttons"]',$='[data-toggle="button"]',V='[data-toggle="buttons"] .btn',Y='input:not([type="hidden"])',K=".active",Z=".btn",Q=function(){function e(e){this._element=e,this.shouldAvoidTriggerChange=!1}var t=e.prototype;return t.toggle=function(){var e=!0,t=!0,n=p.default(this._element).closest(G)[0];if(n){var o=this._element.querySelector(Y);if(o){if("radio"===o.type)if(o.checked&&this._element.classList.contains(I))e=!1;else{var M=n.querySelector(K);M&&p.default(M).removeClass(I)}e&&("checkbox"!==o.type&&"radio"!==o.type||(o.checked=!this._element.classList.contains(I)),this.shouldAvoidTriggerChange||p.default(o).trigger("change")),o.focus(),t=!1}}this._element.hasAttribute("disabled")||this._element.classList.contains("disabled")||(t&&this._element.setAttribute("aria-pressed",!this._element.classList.contains(I)),e&&p.default(this._element).toggleClass(I))},t.dispose=function(){p.default.removeData(this._element,w),this._element=null},e._jQueryInterface=function(t,n){return this.each((function(){var o=p.default(this),M=o.data(w);M||(M=new e(this),o.data(w,M)),M.shouldAvoidTriggerChange=n,"toggle"===t&&M[t]()}))},c(e,null,[{key:"VERSION",get:function(){return X}}]),e}();p.default(document).on(j,F,(function(e){var t=e.target,n=t;if(p.default(t).hasClass(D)||(t=p.default(t).closest(Z)[0]),!t||t.hasAttribute("disabled")||t.classList.contains("disabled"))e.preventDefault();else{var o=t.querySelector(Y);if(o&&(o.hasAttribute("disabled")||o.classList.contains("disabled")))return void e.preventDefault();"INPUT"!==n.tagName&&"LABEL"===t.tagName||Q._jQueryInterface.call(p.default(t),"toggle","INPUT"===n.tagName)}})).on(U,F,(function(e){var t=p.default(e.target).closest(Z)[0];p.default(t).toggleClass(P,/^focus(in)?$/.test(e.type))})),p.default(window).on(H,(function(){for(var e=[].slice.call(document.querySelectorAll(V)),t=0,n=e.length;t0,this._pointerEvent=Boolean(window.PointerEvent||window.MSPointerEvent),this._addEventListeners()}var t=e.prototype;return t.next=function(){this._isSliding||this._slide(le)},t.nextWhenVisible=function(){var e=p.default(this._element);!document.hidden&&e.is(":visible")&&"hidden"!==e.css("visibility")&&this.next()},t.prev=function(){this._isSliding||this._slide(fe)},t.pause=function(e){e||(this._isPaused=!0),this._element.querySelector(ke)&&(f.triggerTransitionEnd(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null},t.cycle=function(e){e||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config.interval&&!this._isPaused&&(this._updateInterval(),this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))},t.to=function(e){var t=this;this._activeElement=this._element.querySelector(we);var n=this._getItemIndex(this._activeElement);if(!(e>this._items.length-1||e<0))if(this._isSliding)p.default(this._element).one(ve,(function(){return t.to(e)}));else{if(n===e)return this.pause(),void this.cycle();var o=e>n?le:fe;this._slide(o,this._items[e])}},t.dispose=function(){p.default(this._element).off(ne),p.default.removeData(this._element,te),this._items=null,this._config=null,this._element=null,this._interval=null,this._isPaused=null,this._isSliding=null,this._activeElement=null,this._indicatorsElement=null},t._getConfig=function(e){return e=z({},je,e),f.typeCheckConfig(J,e,Ue),e},t._handleSwipe=function(){var e=Math.abs(this.touchDeltaX);if(!(e<=ze)){var t=e/this.touchDeltaX;this.touchDeltaX=0,t>0&&this.prev(),t<0&&this.next()}},t._addEventListeners=function(){var e=this;this._config.keyboard&&p.default(this._element).on(Re,(function(t){return e._keydown(t)})),"hover"===this._config.pause&&p.default(this._element).on(me,(function(t){return e.pause(t)})).on(ge,(function(t){return e.cycle(t)})),this._config.touch&&this._addTouchEventListeners()},t._addTouchEventListeners=function(){var e=this;if(this._touchSupported){var t=function(t){e._pointerEvent&&He[t.originalEvent.pointerType.toUpperCase()]?e.touchStartX=t.originalEvent.clientX:e._pointerEvent||(e.touchStartX=t.originalEvent.touches[0].clientX)},n=function(t){e.touchDeltaX=t.originalEvent.touches&&t.originalEvent.touches.length>1?0:t.originalEvent.touches[0].clientX-e.touchStartX},o=function(t){e._pointerEvent&&He[t.originalEvent.pointerType.toUpperCase()]&&(e.touchDeltaX=t.originalEvent.clientX-e.touchStartX),e._handleSwipe(),"hover"===e._config.pause&&(e.pause(),e.touchTimeout&&clearTimeout(e.touchTimeout),e.touchTimeout=setTimeout((function(t){return e.cycle(t)}),ce+e._config.interval))};p.default(this._element.querySelectorAll(xe)).on(Ee,(function(e){return e.preventDefault()})),this._pointerEvent?(p.default(this._element).on(ye,(function(e){return t(e)})),p.default(this._element).on(Te,(function(e){return o(e)})),this._element.classList.add(de)):(p.default(this._element).on(Le,(function(e){return t(e)})),p.default(this._element).on(_e,(function(e){return n(e)})),p.default(this._element).on(Ne,(function(e){return o(e)})))}},t._keydown=function(e){if(!/input|textarea/i.test(e.target.tagName))switch(e.which){case Me:e.preventDefault(),this.prev();break;case be:e.preventDefault(),this.next()}},t._getItemIndex=function(e){return this._items=e&&e.parentNode?[].slice.call(e.parentNode.querySelectorAll(Se)):[],this._items.indexOf(e)},t._getItemByDirection=function(e,t){var n=e===le,o=e===fe,p=this._getItemIndex(t),M=this._items.length-1;if((o&&0===p||n&&p===M)&&!this._config.wrap)return t;var b=(p+(e===fe?-1:1))%this._items.length;return-1===b?this._items[this._items.length-1]:this._items[b]},t._triggerSlideEvent=function(e,t){var n=this._getItemIndex(e),o=this._getItemIndex(this._element.querySelector(we)),M=p.default.Event(he,{relatedTarget:e,direction:t,from:o,to:n});return p.default(this._element).trigger(M),M},t._setActiveIndicatorElement=function(e){if(this._indicatorsElement){var t=[].slice.call(this._indicatorsElement.querySelectorAll(Xe));p.default(t).removeClass(ae);var n=this._indicatorsElement.children[this._getItemIndex(e)];n&&p.default(n).addClass(ae)}},t._updateInterval=function(){var e=this._activeElement||this._element.querySelector(we);if(e){var t=parseInt(e.getAttribute("data-interval"),10);t?(this._config.defaultInterval=this._config.defaultInterval||this._config.interval,this._config.interval=t):this._config.interval=this._config.defaultInterval||this._config.interval}},t._slide=function(e,t){var n,o,M,b=this,c=this._element.querySelector(we),z=this._getItemIndex(c),r=t||c&&this._getItemByDirection(e,c),a=this._getItemIndex(r),i=Boolean(this._interval);if(e===le?(n=se,o=Ae,M=qe):(n=Oe,o=ue,M=We),r&&p.default(r).hasClass(ae))this._isSliding=!1;else if(!this._triggerSlideEvent(r,M).isDefaultPrevented()&&c&&r){this._isSliding=!0,i&&this.pause(),this._setActiveIndicatorElement(r),this._activeElement=r;var O=p.default.Event(ve,{relatedTarget:r,direction:M,from:z,to:a});if(p.default(this._element).hasClass(ie)){p.default(r).addClass(o),f.reflow(r),p.default(c).addClass(n),p.default(r).addClass(n);var s=f.getTransitionDurationFromElement(c);p.default(c).one(f.TRANSITION_END,(function(){p.default(r).removeClass(n+" "+o).addClass(ae),p.default(c).removeClass(ae+" "+o+" "+n),b._isSliding=!1,setTimeout((function(){return p.default(b._element).trigger(O)}),0)})).emulateTransitionEnd(s)}else p.default(c).removeClass(ae),p.default(r).addClass(ae),this._isSliding=!1,p.default(this._element).trigger(O);i&&this.cycle()}},e._jQueryInterface=function(t){return this.each((function(){var n=p.default(this).data(te),o=z({},je,p.default(this).data());"object"==typeof t&&(o=z({},o,t));var M="string"==typeof t?t:o.slide;if(n||(n=new e(this,o),p.default(this).data(te,n)),"number"==typeof t)n.to(t);else if("string"==typeof M){if(void 0===n[M])throw new TypeError('No method named "'+M+'"');n[M]()}else o.interval&&o.ride&&(n.pause(),n.cycle())}))},e._dataApiClickHandler=function(t){var n=f.getSelectorFromElement(this);if(n){var o=p.default(n)[0];if(o&&p.default(o).hasClass(re)){var M=z({},p.default(o).data(),p.default(this).data()),b=this.getAttribute("data-slide-to");b&&(M.interval=!1),e._jQueryInterface.call(p.default(o),M),b&&p.default(o).data(te).to(b),t.preventDefault()}}},c(e,null,[{key:"VERSION",get:function(){return ee}},{key:"Default",get:function(){return je}}]),e}();p.default(document).on(Ce,De,Fe._dataApiClickHandler),p.default(window).on(Be,(function(){for(var e=[].slice.call(document.querySelectorAll(Pe)),t=0,n=e.length;t0&&(this._selector=b,this._triggerArray.push(M))}this._parent=this._config.parent?this._getParent():null,this._config.parent||this._addAriaAndCollapsedClass(this._element,this._triggerArray),this._config.toggle&&this.toggle()}var t=e.prototype;return t.toggle=function(){p.default(this._element).hasClass(Qe)?this.hide():this.show()},t.show=function(){var t,n,o=this;if(!(this._isTransitioning||p.default(this._element).hasClass(Qe)||(this._parent&&0===(t=[].slice.call(this._parent.querySelectorAll(rt)).filter((function(e){return"string"==typeof o._config.parent?e.getAttribute("data-parent")===o._config.parent:e.classList.contains(Je)}))).length&&(t=null),t&&(n=p.default(t).not(this._selector).data(Ve))&&n._isTransitioning))){var M=p.default.Event(pt);if(p.default(this._element).trigger(M),!M.isDefaultPrevented()){t&&(e._jQueryInterface.call(p.default(t).not(this._selector),"hide"),n||p.default(t).data(Ve,null));var b=this._getDimension();p.default(this._element).removeClass(Je).addClass(et),this._element.style[b]=0,this._triggerArray.length&&p.default(this._triggerArray).removeClass(tt).attr("aria-expanded",!0),this.setTransitioning(!0);var c=function(){p.default(o._element).removeClass(et).addClass(Je+" "+Qe),o._element.style[b]="",o.setTransitioning(!1),p.default(o._element).trigger(Mt)},z="scroll"+(b[0].toUpperCase()+b.slice(1)),r=f.getTransitionDurationFromElement(this._element);p.default(this._element).one(f.TRANSITION_END,c).emulateTransitionEnd(r),this._element.style[b]=this._element[z]+"px"}}},t.hide=function(){var e=this;if(!this._isTransitioning&&p.default(this._element).hasClass(Qe)){var t=p.default.Event(bt);if(p.default(this._element).trigger(t),!t.isDefaultPrevented()){var n=this._getDimension();this._element.style[n]=this._element.getBoundingClientRect()[n]+"px",f.reflow(this._element),p.default(this._element).addClass(et).removeClass(Je+" "+Qe);var o=this._triggerArray.length;if(o>0)for(var M=0;M0},t._getOffset=function(){var e=this,t={};return"function"==typeof this._config.offset?t.fn=function(t){return t.offsets=z({},t.offsets,e._config.offset(t.offsets,e._element)),t}:t.offset=this._config.offset,t},t._getPopperConfig=function(){var e={placement:this._getPlacement(),modifiers:{offset:this._getOffset(),flip:{enabled:this._config.flip},preventOverflow:{boundariesElement:this._config.boundary}}};return"static"===this._config.display&&(e.modifiers.applyStyle={enabled:!1}),z({},e,this._config.popperConfig)},e._jQueryInterface=function(t){return this.each((function(){var n=p.default(this).data(dt);if(n||(n=new e(this,"object"==typeof t?t:null),p.default(this).data(dt,n)),"string"==typeof t){if(void 0===n[t])throw new TypeError('No method named "'+t+'"');n[t]()}}))},e._clearMenus=function(t){if(!t||t.which!==gt&&("keyup"!==t.type||t.which===vt))for(var n=[].slice.call(document.querySelectorAll(jt)),o=0,M=n.length;o0&&b--,t.which===mt&&bdocument.documentElement.clientHeight;n||(this._element.style.overflowY="hidden"),this._element.classList.add(dn);var o=f.getTransitionDurationFromElement(this._dialog);p.default(this._element).off(f.TRANSITION_END),p.default(this._element).one(f.TRANSITION_END,(function(){e._element.classList.remove(dn),n||p.default(e._element).one(f.TRANSITION_END,(function(){e._element.style.overflowY=""})).emulateTransitionEnd(e._element,o)})).emulateTransitionEnd(o),this._element.focus()}},t._showElement=function(e){var t=this,n=p.default(this._element).hasClass(An),o=this._dialog?this._dialog.querySelector(Tn):null;this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE||document.body.appendChild(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),p.default(this._dialog).hasClass(rn)&&o?o.scrollTop=0:this._element.scrollTop=0,n&&f.reflow(this._element),p.default(this._element).addClass(un),this._config.focus&&this._enforceFocus();var M=p.default.Event(hn,{relatedTarget:e}),b=function(){t._config.focus&&t._element.focus(),t._isTransitioning=!1,p.default(t._element).trigger(M)};if(n){var c=f.getTransitionDurationFromElement(this._dialog);p.default(this._dialog).one(f.TRANSITION_END,b).emulateTransitionEnd(c)}else b()},t._enforceFocus=function(){var e=this;p.default(document).off(vn).on(vn,(function(t){document!==t.target&&e._element!==t.target&&0===p.default(e._element).has(t.target).length&&e._element.focus()}))},t._setEscapeEvent=function(){var e=this;this._isShown?p.default(this._element).on(gn,(function(t){e._config.keyboard&&t.which===zn?(t.preventDefault(),e.hide()):e._config.keyboard||t.which!==zn||e._triggerBackdropTransition()})):this._isShown||p.default(this._element).off(gn)},t._setResizeEvent=function(){var e=this;this._isShown?p.default(window).on(Rn,(function(t){return e.handleUpdate(t)})):p.default(window).off(Rn)},t._hideModal=function(){var e=this;this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._showBackdrop((function(){p.default(document.body).removeClass(sn),e._resetAdjustments(),e._resetScrollbar(),p.default(e._element).trigger(qn)}))},t._removeBackdrop=function(){this._backdrop&&(p.default(this._backdrop).remove(),this._backdrop=null)},t._showBackdrop=function(e){var t=this,n=p.default(this._element).hasClass(An)?An:"";if(this._isShown&&this._config.backdrop){if(this._backdrop=document.createElement("div"),this._backdrop.className=On,n&&this._backdrop.classList.add(n),p.default(this._backdrop).appendTo(document.body),p.default(this._element).on(mn,(function(e){t._ignoreBackdropClick?t._ignoreBackdropClick=!1:e.target===e.currentTarget&&("static"===t._config.backdrop?t._triggerBackdropTransition():t.hide())})),n&&f.reflow(this._backdrop),p.default(this._backdrop).addClass(un),!e)return;if(!n)return void e();var o=f.getTransitionDurationFromElement(this._backdrop);p.default(this._backdrop).one(f.TRANSITION_END,e).emulateTransitionEnd(o)}else if(!this._isShown&&this._backdrop){p.default(this._backdrop).removeClass(un);var M=function(){t._removeBackdrop(),e&&e()};if(p.default(this._element).hasClass(An)){var b=f.getTransitionDurationFromElement(this._backdrop);p.default(this._backdrop).one(f.TRANSITION_END,M).emulateTransitionEnd(b)}else M()}else e&&e()},t._adjustDialog=function(){var e=this._element.scrollHeight>document.documentElement.clientHeight;!this._isBodyOverflowing&&e&&(this._element.style.paddingLeft=this._scrollbarWidth+"px"),this._isBodyOverflowing&&!e&&(this._element.style.paddingRight=this._scrollbarWidth+"px")},t._resetAdjustments=function(){this._element.style.paddingLeft="",this._element.style.paddingRight=""},t._checkScrollbar=function(){var e=document.body.getBoundingClientRect();this._isBodyOverflowing=Math.round(e.left+e.right)
    ',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:0,container:!1,fallbackPlacement:"flip",boundary:"scrollParent",customClass:"",sanitize:!0,sanitizeFn:null,whiteList:In,popperConfig:null},ao={animation:"boolean",template:"string",title:"(string|element|function)",trigger:"string",delay:"(number|object)",html:"boolean",selector:"(string|boolean)",placement:"(string|function)",offset:"(number|string|function)",container:"(string|element|boolean)",fallbackPlacement:"(string|array)",boundary:"(string|element)",customClass:"(string|function)",sanitize:"boolean",sanitizeFn:"(null|function)",whiteList:"object",popperConfig:"(null|object)"},io={HIDE:"hide"+$n,HIDDEN:"hidden"+$n,SHOW:"show"+$n,SHOWN:"shown"+$n,INSERTED:"inserted"+$n,CLICK:"click"+$n,FOCUSIN:"focusin"+$n,FOCUSOUT:"focusout"+$n,MOUSEENTER:"mouseenter"+$n,MOUSELEAVE:"mouseleave"+$n},Oo=function(){function e(e,t){if(void 0===M.default)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this.element=e,this.config=this._getConfig(t),this.tip=null,this._setListeners()}var t=e.prototype;return t.enable=function(){this._isEnabled=!0},t.disable=function(){this._isEnabled=!1},t.toggleEnabled=function(){this._isEnabled=!this._isEnabled},t.toggle=function(e){if(this._isEnabled)if(e){var t=this.constructor.DATA_KEY,n=p.default(e.currentTarget).data(t);n||(n=new this.constructor(e.currentTarget,this._getDelegateConfig()),p.default(e.currentTarget).data(t,n)),n._activeTrigger.click=!n._activeTrigger.click,n._isWithActiveTrigger()?n._enter(null,n):n._leave(null,n)}else{if(p.default(this.getTipElement()).hasClass(Jn))return void this._leave(null,this);this._enter(null,this)}},t.dispose=function(){clearTimeout(this._timeout),p.default.removeData(this.element,this.constructor.DATA_KEY),p.default(this.element).off(this.constructor.EVENT_KEY),p.default(this.element).closest(".modal").off("hide.bs.modal",this._hideModalHandler),this.tip&&p.default(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,this._activeTrigger=null,this._popper&&this._popper.destroy(),this._popper=null,this.element=null,this.config=null,this.tip=null},t.show=function(){var e=this;if("none"===p.default(this.element).css("display"))throw new Error("Please use show on visible elements");var t=p.default.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){p.default(this.element).trigger(t);var n=f.findShadowRoot(this.element),o=p.default.contains(null!==n?n:this.element.ownerDocument.documentElement,this.element);if(t.isDefaultPrevented()||!o)return;var b=this.getTipElement(),c=f.getUID(this.constructor.NAME);b.setAttribute("id",c),this.element.setAttribute("aria-describedby",c),this.setContent(),this.config.animation&&p.default(b).addClass(Qn);var z="function"==typeof this.config.placement?this.config.placement.call(this,b,this.element):this.config.placement,r=this._getAttachment(z);this.addAttachmentClass(r);var a=this._getContainer();p.default(b).data(this.constructor.DATA_KEY,this),p.default.contains(this.element.ownerDocument.documentElement,this.tip)||p.default(b).appendTo(a),p.default(this.element).trigger(this.constructor.Event.INSERTED),this._popper=new M.default(this.element,b,this._getPopperConfig(r)),p.default(b).addClass(Jn),p.default(b).addClass(this.config.customClass),"ontouchstart"in document.documentElement&&p.default(document.body).children().on("mouseover",null,p.default.noop);var i=function(){e.config.animation&&e._fixTransition();var t=e._hoverState;e._hoverState=null,p.default(e.element).trigger(e.constructor.Event.SHOWN),t===to&&e._leave(null,e)};if(p.default(this.tip).hasClass(Qn)){var O=f.getTransitionDurationFromElement(this.tip);p.default(this.tip).one(f.TRANSITION_END,i).emulateTransitionEnd(O)}else i()}},t.hide=function(e){var t=this,n=this.getTipElement(),o=p.default.Event(this.constructor.Event.HIDE),M=function(){t._hoverState!==eo&&n.parentNode&&n.parentNode.removeChild(n),t._cleanTipClass(),t.element.removeAttribute("aria-describedby"),p.default(t.element).trigger(t.constructor.Event.HIDDEN),null!==t._popper&&t._popper.destroy(),e&&e()};if(p.default(this.element).trigger(o),!o.isDefaultPrevented()){if(p.default(n).removeClass(Jn),"ontouchstart"in document.documentElement&&p.default(document.body).children().off("mouseover",null,p.default.noop),this._activeTrigger[bo]=!1,this._activeTrigger[Mo]=!1,this._activeTrigger[po]=!1,p.default(this.tip).hasClass(Qn)){var b=f.getTransitionDurationFromElement(n);p.default(n).one(f.TRANSITION_END,M).emulateTransitionEnd(b)}else M();this._hoverState=""}},t.update=function(){null!==this._popper&&this._popper.scheduleUpdate()},t.isWithContent=function(){return Boolean(this.getTitle())},t.addAttachmentClass=function(e){p.default(this.getTipElement()).addClass(Yn+"-"+e)},t.getTipElement=function(){return this.tip=this.tip||p.default(this.config.template)[0],this.tip},t.setContent=function(){var e=this.getTipElement();this.setElementContent(p.default(e.querySelectorAll(no)),this.getTitle()),p.default(e).removeClass(Qn+" "+Jn)},t.setElementContent=function(e,t){"object"!=typeof t||!t.nodeType&&!t.jquery?this.config.html?(this.config.sanitize&&(t=Un(t,this.config.whiteList,this.config.sanitizeFn)),e.html(t)):e.text(t):this.config.html?p.default(t).parent().is(e)||e.empty().append(t):e.text(p.default(t).text())},t.getTitle=function(){var e=this.element.getAttribute("data-original-title");return e||(e="function"==typeof this.config.title?this.config.title.call(this.element):this.config.title),e},t._getPopperConfig=function(e){var t=this;return z({},{placement:e,modifiers:{offset:this._getOffset(),flip:{behavior:this.config.fallbackPlacement},arrow:{element:oo},preventOverflow:{boundariesElement:this.config.boundary}},onCreate:function(e){e.originalPlacement!==e.placement&&t._handlePopperPlacementChange(e)},onUpdate:function(e){return t._handlePopperPlacementChange(e)}},this.config.popperConfig)},t._getOffset=function(){var e=this,t={};return"function"==typeof this.config.offset?t.fn=function(t){return t.offsets=z({},t.offsets,e.config.offset(t.offsets,e.element)),t}:t.offset=this.config.offset,t},t._getContainer=function(){return!1===this.config.container?document.body:f.isElement(this.config.container)?p.default(this.config.container):p.default(document).find(this.config.container)},t._getAttachment=function(e){return zo[e.toUpperCase()]},t._setListeners=function(){var e=this;this.config.trigger.split(" ").forEach((function(t){if("click"===t)p.default(e.element).on(e.constructor.Event.CLICK,e.config.selector,(function(t){return e.toggle(t)}));else if(t!==co){var n=t===po?e.constructor.Event.MOUSEENTER:e.constructor.Event.FOCUSIN,o=t===po?e.constructor.Event.MOUSELEAVE:e.constructor.Event.FOCUSOUT;p.default(e.element).on(n,e.config.selector,(function(t){return e._enter(t)})).on(o,e.config.selector,(function(t){return e._leave(t)}))}})),this._hideModalHandler=function(){e.element&&e.hide()},p.default(this.element).closest(".modal").on("hide.bs.modal",this._hideModalHandler),this.config.selector?this.config=z({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},t._fixTitle=function(){var e=typeof this.element.getAttribute("data-original-title");(this.element.getAttribute("title")||"string"!==e)&&(this.element.setAttribute("data-original-title",this.element.getAttribute("title")||""),this.element.setAttribute("title",""))},t._enter=function(e,t){var n=this.constructor.DATA_KEY;(t=t||p.default(e.currentTarget).data(n))||(t=new this.constructor(e.currentTarget,this._getDelegateConfig()),p.default(e.currentTarget).data(n,t)),e&&(t._activeTrigger["focusin"===e.type?Mo:po]=!0),p.default(t.getTipElement()).hasClass(Jn)||t._hoverState===eo?t._hoverState=eo:(clearTimeout(t._timeout),t._hoverState=eo,t.config.delay&&t.config.delay.show?t._timeout=setTimeout((function(){t._hoverState===eo&&t.show()}),t.config.delay.show):t.show())},t._leave=function(e,t){var n=this.constructor.DATA_KEY;(t=t||p.default(e.currentTarget).data(n))||(t=new this.constructor(e.currentTarget,this._getDelegateConfig()),p.default(e.currentTarget).data(n,t)),e&&(t._activeTrigger["focusout"===e.type?Mo:po]=!1),t._isWithActiveTrigger()||(clearTimeout(t._timeout),t._hoverState=to,t.config.delay&&t.config.delay.hide?t._timeout=setTimeout((function(){t._hoverState===to&&t.hide()}),t.config.delay.hide):t.hide())},t._isWithActiveTrigger=function(){for(var e in this._activeTrigger)if(this._activeTrigger[e])return!0;return!1},t._getConfig=function(e){var t=p.default(this.element).data();return Object.keys(t).forEach((function(e){-1!==Zn.indexOf(e)&&delete t[e]})),"number"==typeof(e=z({},this.constructor.Default,t,"object"==typeof e&&e?e:{})).delay&&(e.delay={show:e.delay,hide:e.delay}),"number"==typeof e.title&&(e.title=e.title.toString()),"number"==typeof e.content&&(e.content=e.content.toString()),f.typeCheckConfig(Hn,e,this.constructor.DefaultType),e.sanitize&&(e.template=Un(e.template,e.whiteList,e.sanitizeFn)),e},t._getDelegateConfig=function(){var e={};if(this.config)for(var t in this.config)this.constructor.Default[t]!==this.config[t]&&(e[t]=this.config[t]);return e},t._cleanTipClass=function(){var e=p.default(this.getTipElement()),t=e.attr("class").match(Kn);null!==t&&t.length&&e.removeClass(t.join(""))},t._handlePopperPlacementChange=function(e){this.tip=e.instance.popper,this._cleanTipClass(),this.addAttachmentClass(this._getAttachment(e.placement))},t._fixTransition=function(){var e=this.getTipElement(),t=this.config.animation;null===e.getAttribute("x-placement")&&(p.default(e).removeClass(Qn),this.config.animation=!1,this.hide(),this.show(),this.config.animation=t)},e._jQueryInterface=function(t){return this.each((function(){var n=p.default(this),o=n.data(Gn),M="object"==typeof t&&t;if((o||!/dispose|hide/.test(t))&&(o||(o=new e(this,M),n.data(Gn,o)),"string"==typeof t)){if(void 0===o[t])throw new TypeError('No method named "'+t+'"');o[t]()}}))},c(e,null,[{key:"VERSION",get:function(){return Fn}},{key:"Default",get:function(){return ro}},{key:"NAME",get:function(){return Hn}},{key:"DATA_KEY",get:function(){return Gn}},{key:"Event",get:function(){return io}},{key:"EVENT_KEY",get:function(){return $n}},{key:"DefaultType",get:function(){return ao}}]),e}();p.default.fn[Hn]=Oo._jQueryInterface,p.default.fn[Hn].Constructor=Oo,p.default.fn[Hn].noConflict=function(){return p.default.fn[Hn]=Vn,Oo._jQueryInterface};var so="popover",Ao="4.6.2",uo="bs.popover",lo="."+uo,fo=p.default.fn[so],qo="bs-popover",Wo=new RegExp("(^|\\s)"+qo+"\\S+","g"),ho="fade",vo="show",Ro=".popover-header",mo=".popover-body",go=z({},Oo.Default,{placement:"right",trigger:"click",content:"",template:''}),Lo=z({},Oo.DefaultType,{content:"(string|element|function)"}),_o={HIDE:"hide"+lo,HIDDEN:"hidden"+lo,SHOW:"show"+lo,SHOWN:"shown"+lo,INSERTED:"inserted"+lo,CLICK:"click"+lo,FOCUSIN:"focusin"+lo,FOCUSOUT:"focusout"+lo,MOUSEENTER:"mouseenter"+lo,MOUSELEAVE:"mouseleave"+lo},No=function(e){function t(){return e.apply(this,arguments)||this}r(t,e);var n=t.prototype;return n.isWithContent=function(){return this.getTitle()||this._getContent()},n.addAttachmentClass=function(e){p.default(this.getTipElement()).addClass(qo+"-"+e)},n.getTipElement=function(){return this.tip=this.tip||p.default(this.config.template)[0],this.tip},n.setContent=function(){var e=p.default(this.getTipElement());this.setElementContent(e.find(Ro),this.getTitle());var t=this._getContent();"function"==typeof t&&(t=t.call(this.element)),this.setElementContent(e.find(mo),t),e.removeClass(ho+" "+vo)},n._getContent=function(){return this.element.getAttribute("data-content")||this.config.content},n._cleanTipClass=function(){var e=p.default(this.getTipElement()),t=e.attr("class").match(Wo);null!==t&&t.length>0&&e.removeClass(t.join(""))},t._jQueryInterface=function(e){return this.each((function(){var n=p.default(this).data(uo),o="object"==typeof e?e:null;if((n||!/dispose|hide/.test(e))&&(n||(n=new t(this,o),p.default(this).data(uo,n)),"string"==typeof e)){if(void 0===n[e])throw new TypeError('No method named "'+e+'"');n[e]()}}))},c(t,null,[{key:"VERSION",get:function(){return Ao}},{key:"Default",get:function(){return go}},{key:"NAME",get:function(){return so}},{key:"DATA_KEY",get:function(){return uo}},{key:"Event",get:function(){return _o}},{key:"EVENT_KEY",get:function(){return lo}},{key:"DefaultType",get:function(){return Lo}}]),t}(Oo);p.default.fn[so]=No._jQueryInterface,p.default.fn[so].Constructor=No,p.default.fn[so].noConflict=function(){return p.default.fn[so]=fo,No._jQueryInterface};var yo="scrollspy",To="4.6.2",Eo="bs.scrollspy",Bo="."+Eo,Co=".data-api",Xo=p.default.fn[yo],wo="dropdown-item",So="active",xo="activate"+Bo,ko="scroll"+Bo,Io="load"+Bo+Co,Do="offset",Po="position",jo='[data-spy="scroll"]',Uo=".nav, .list-group",Ho=".nav-link",Fo=".nav-item",Go=".list-group-item",$o=".dropdown",Vo=".dropdown-item",Yo=".dropdown-toggle",Ko={offset:10,method:"auto",target:""},Zo={offset:"number",method:"string",target:"(string|element)"},Qo=function(){function e(e,t){var n=this;this._element=e,this._scrollElement="BODY"===e.tagName?window:e,this._config=this._getConfig(t),this._selector=this._config.target+" "+Ho+","+this._config.target+" "+Go+","+this._config.target+" "+Vo,this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,p.default(this._scrollElement).on(ko,(function(e){return n._process(e)})),this.refresh(),this._process()}var t=e.prototype;return t.refresh=function(){var e=this,t=this._scrollElement===this._scrollElement.window?Do:Po,n="auto"===this._config.method?t:this._config.method,o=n===Po?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),[].slice.call(document.querySelectorAll(this._selector)).map((function(e){var t,M=f.getSelectorFromElement(e);if(M&&(t=document.querySelector(M)),t){var b=t.getBoundingClientRect();if(b.width||b.height)return[p.default(t)[n]().top+o,M]}return null})).filter(Boolean).sort((function(e,t){return e[0]-t[0]})).forEach((function(t){e._offsets.push(t[0]),e._targets.push(t[1])}))},t.dispose=function(){p.default.removeData(this._element,Eo),p.default(this._scrollElement).off(Bo),this._element=null,this._scrollElement=null,this._config=null,this._selector=null,this._offsets=null,this._targets=null,this._activeTarget=null,this._scrollHeight=null},t._getConfig=function(e){if("string"!=typeof(e=z({},Ko,"object"==typeof e&&e?e:{})).target&&f.isElement(e.target)){var t=p.default(e.target).attr("id");t||(t=f.getUID(yo),p.default(e.target).attr("id",t)),e.target="#"+t}return f.typeCheckConfig(yo,e,Zo),e},t._getScrollTop=function(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop},t._getScrollHeight=function(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)},t._getOffsetHeight=function(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height},t._process=function(){var e=this._getScrollTop()+this._config.offset,t=this._getScrollHeight(),n=this._config.offset+t-this._getOffsetHeight();if(this._scrollHeight!==t&&this.refresh(),e>=n){var o=this._targets[this._targets.length-1];this._activeTarget!==o&&this._activate(o)}else{if(this._activeTarget&&e0)return this._activeTarget=null,void this._clear();for(var p=this._offsets.length;p--;)this._activeTarget!==this._targets[p]&&e>=this._offsets[p]&&(void 0===this._offsets[p+1]||e{"use strict";var o=n(1742),p={"text/plain":"Text","text/html":"Url",default:"Text"};e.exports=function(e,t){var n,M,b,c,z,r=!1;t||(t={}),t.debug;try{if(M=o(),b=document.createRange(),c=document.getSelection(),(z=document.createElement("span")).textContent=e,z.ariaHidden="true",z.style.all="unset",z.style.position="fixed",z.style.top=0,z.style.clip="rect(0, 0, 0, 0)",z.style.whiteSpace="pre",z.style.webkitUserSelect="text",z.style.MozUserSelect="text",z.style.msUserSelect="text",z.style.userSelect="text",z.addEventListener("copy",(function(n){if(n.stopPropagation(),t.format)if(n.preventDefault(),void 0===n.clipboardData){window.clipboardData.clearData();var o=p[t.format]||p.default;window.clipboardData.setData(o,e)}else n.clipboardData.clearData(),n.clipboardData.setData(t.format,e);t.onCopy&&(n.preventDefault(),t.onCopy(n.clipboardData))})),document.body.appendChild(z),b.selectNodeContents(z),c.addRange(b),!document.execCommand("copy"))throw new Error("copy command was unsuccessful");r=!0}catch(o){try{window.clipboardData.setData(t.format||"text",e),t.onCopy&&t.onCopy(window.clipboardData),r=!0}catch(o){n=function(e){var t=(/mac os x/i.test(navigator.userAgent)?"⌘":"Ctrl")+"+C";return e.replace(/#{\s*key\s*}/g,t)}("message"in t?t.message:"Copy to clipboard: #{key}, Enter"),window.prompt(n,e)}}finally{c&&("function"==typeof c.removeRange?c.removeRange(b):c.removeAllRanges()),z&&document.body.removeChild(z),M()}return r}},9755:function(e,t){var n;!function(t,n){"use strict";"object"==typeof e.exports?e.exports=t.document?n(t,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return n(e)}:n(t)}("undefined"!=typeof window?window:this,(function(o,p){"use strict";var M=[],b=Object.getPrototypeOf,c=M.slice,z=M.flat?function(e){return M.flat.call(e)}:function(e){return M.concat.apply([],e)},r=M.push,a=M.indexOf,i={},O=i.toString,s=i.hasOwnProperty,A=s.toString,u=A.call(Object),d={},l=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},f=function(e){return null!=e&&e===e.window},q=o.document,W={type:!0,src:!0,nonce:!0,noModule:!0};function h(e,t,n){var o,p,M=(n=n||q).createElement("script");if(M.text=e,t)for(o in W)(p=t[o]||t.getAttribute&&t.getAttribute(o))&&M.setAttribute(o,p);n.head.appendChild(M).parentNode.removeChild(M)}function v(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?i[O.call(e)]||"object":typeof e}var R="3.7.1",m=/HTML$/i,g=function(e,t){return new g.fn.init(e,t)};function L(e){var t=!!e&&"length"in e&&e.length,n=v(e);return!l(e)&&!f(e)&&("array"===n||0===t||"number"==typeof t&&t>0&&t-1 in e)}function _(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}g.fn=g.prototype={jquery:R,constructor:g,length:0,toArray:function(){return c.call(this)},get:function(e){return null==e?c.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=g.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return g.each(this,e)},map:function(e){return this.pushStack(g.map(this,(function(t,n){return e.call(t,n,t)})))},slice:function(){return this.pushStack(c.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(g.grep(this,(function(e,t){return(t+1)%2})))},odd:function(){return this.pushStack(g.grep(this,(function(e,t){return t%2})))},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(n>=0&&n+~]|"+E+")"+E+"*"),P=new RegExp(E+"|>"),j=new RegExp(x),U=new RegExp("^"+C+"$"),H={ID:new RegExp("^#("+C+")"),CLASS:new RegExp("^\\.("+C+")"),TAG:new RegExp("^("+C+"|[*])"),ATTR:new RegExp("^"+X),PSEUDO:new RegExp("^"+x),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+E+"*(even|odd|(([+-]|)(\\d*)n|)"+E+"*(?:([+-]|)"+E+"*(\\d+)|))"+E+"*\\)|)","i"),bool:new RegExp("^(?:"+L+")$","i"),needsContext:new RegExp("^"+E+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+E+"*((?:-\\d)?\\d*)"+E+"*\\)|)(?=[^-]|$)","i")},F=/^(?:input|select|textarea|button)$/i,G=/^h\d$/i,$=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,V=/[+~]/,Y=new RegExp("\\\\[\\da-fA-F]{1,6}"+E+"?|\\\\([^\\r\\n\\f])","g"),K=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},Z=function(){ze()},Q=Oe((function(e){return!0===e.disabled&&_(e,"fieldset")}),{dir:"parentNode",next:"legend"});try{u.apply(M=c.call(w.childNodes),w.childNodes),M[w.childNodes.length].nodeType}catch(e){u={apply:function(e,t){S.apply(e,c.call(t))},call:function(e){S.apply(e,c.call(arguments,1))}}}function J(e,t,n,o){var p,M,b,c,r,a,s,A=t&&t.ownerDocument,f=t?t.nodeType:9;if(n=n||[],"string"!=typeof e||!e||1!==f&&9!==f&&11!==f)return n;if(!o&&(ze(t),t=t||z,i)){if(11!==f&&(r=$.exec(e)))if(p=r[1]){if(9===f){if(!(b=t.getElementById(p)))return n;if(b.id===p)return u.call(n,b),n}else if(A&&(b=A.getElementById(p))&&J.contains(t,b)&&b.id===p)return u.call(n,b),n}else{if(r[2])return u.apply(n,t.getElementsByTagName(e)),n;if((p=r[3])&&t.getElementsByClassName)return u.apply(n,t.getElementsByClassName(p)),n}if(!(R[e+" "]||O&&O.test(e))){if(s=e,A=t,1===f&&(P.test(e)||D.test(e))){for((A=V.test(e)&&ce(t.parentNode)||t)==t&&d.scope||((c=t.getAttribute("id"))?c=g.escapeSelector(c):t.setAttribute("id",c=l)),M=(a=ae(e)).length;M--;)a[M]=(c?"#"+c:":scope")+" "+ie(a[M]);s=a.join(",")}try{return u.apply(n,A.querySelectorAll(s)),n}catch(t){R(e,!0)}finally{c===l&&t.removeAttribute("id")}}}return fe(e.replace(B,"$1"),t,n,o)}function ee(){var e=[];return function n(o,p){return e.push(o+" ")>t.cacheLength&&delete n[e.shift()],n[o+" "]=p}}function te(e){return e[l]=!0,e}function ne(e){var t=z.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function oe(e){return function(t){return _(t,"input")&&t.type===e}}function pe(e){return function(t){return(_(t,"input")||_(t,"button"))&&t.type===e}}function Me(e){return function(t){return"form"in t?t.parentNode&&!1===t.disabled?"label"in t?"label"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&Q(t)===e:t.disabled===e:"label"in t&&t.disabled===e}}function be(e){return te((function(t){return t=+t,te((function(n,o){for(var p,M=e([],n.length,t),b=M.length;b--;)n[p=M[b]]&&(n[p]=!(o[p]=n[p]))}))}))}function ce(e){return e&&void 0!==e.getElementsByTagName&&e}function ze(e){var n,o=e?e.ownerDocument||e:w;return o!=z&&9===o.nodeType&&o.documentElement?(r=(z=o).documentElement,i=!g.isXMLDoc(z),A=r.matches||r.webkitMatchesSelector||r.msMatchesSelector,r.msMatchesSelector&&w!=z&&(n=z.defaultView)&&n.top!==n&&n.addEventListener("unload",Z),d.getById=ne((function(e){return r.appendChild(e).id=g.expando,!z.getElementsByName||!z.getElementsByName(g.expando).length})),d.disconnectedMatch=ne((function(e){return A.call(e,"*")})),d.scope=ne((function(){return z.querySelectorAll(":scope")})),d.cssHas=ne((function(){try{return z.querySelector(":has(*,:jqfake)"),!1}catch(e){return!0}})),d.getById?(t.filter.ID=function(e){var t=e.replace(Y,K);return function(e){return e.getAttribute("id")===t}},t.find.ID=function(e,t){if(void 0!==t.getElementById&&i){var n=t.getElementById(e);return n?[n]:[]}}):(t.filter.ID=function(e){var t=e.replace(Y,K);return function(e){var n=void 0!==e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}},t.find.ID=function(e,t){if(void 0!==t.getElementById&&i){var n,o,p,M=t.getElementById(e);if(M){if((n=M.getAttributeNode("id"))&&n.value===e)return[M];for(p=t.getElementsByName(e),o=0;M=p[o++];)if((n=M.getAttributeNode("id"))&&n.value===e)return[M]}return[]}}),t.find.TAG=function(e,t){return void 0!==t.getElementsByTagName?t.getElementsByTagName(e):t.querySelectorAll(e)},t.find.CLASS=function(e,t){if(void 0!==t.getElementsByClassName&&i)return t.getElementsByClassName(e)},O=[],ne((function(e){var t;r.appendChild(e).innerHTML="",e.querySelectorAll("[selected]").length||O.push("\\["+E+"*(?:value|"+L+")"),e.querySelectorAll("[id~="+l+"-]").length||O.push("~="),e.querySelectorAll("a#"+l+"+*").length||O.push(".#.+[+~]"),e.querySelectorAll(":checked").length||O.push(":checked"),(t=z.createElement("input")).setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),r.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&O.push(":enabled",":disabled"),(t=z.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||O.push("\\["+E+"*name"+E+"*="+E+"*(?:''|\"\")")})),d.cssHas||O.push(":has"),O=O.length&&new RegExp(O.join("|")),m=function(e,t){if(e===t)return b=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===z||e.ownerDocument==w&&J.contains(w,e)?-1:t===z||t.ownerDocument==w&&J.contains(w,t)?1:p?a.call(p,e)-a.call(p,t):0:4&n?-1:1)},z):z}for(e in J.matches=function(e,t){return J(e,null,null,t)},J.matchesSelector=function(e,t){if(ze(e),i&&!R[t+" "]&&(!O||!O.test(t)))try{var n=A.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){R(t,!0)}return J(t,z,null,[e]).length>0},J.contains=function(e,t){return(e.ownerDocument||e)!=z&&ze(e),g.contains(e,t)},J.attr=function(e,n){(e.ownerDocument||e)!=z&&ze(e);var o=t.attrHandle[n.toLowerCase()],p=o&&s.call(t.attrHandle,n.toLowerCase())?o(e,n,!i):void 0;return void 0!==p?p:e.getAttribute(n)},J.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},g.uniqueSort=function(e){var t,n=[],o=0,M=0;if(b=!d.sortStable,p=!d.sortStable&&c.call(e,0),y.call(e,m),b){for(;t=e[M++];)t===e[M]&&(o=n.push(M));for(;o--;)T.call(e,n[o],1)}return p=null,e},g.fn.uniqueSort=function(){return this.pushStack(g.uniqueSort(c.apply(this)))},t=g.expr={cacheLength:50,createPseudo:te,match:H,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(Y,K),e[3]=(e[3]||e[4]||e[5]||"").replace(Y,K),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||J.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&J.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return H.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&j.test(n)&&(t=ae(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(Y,K).toLowerCase();return"*"===e?function(){return!0}:function(e){return _(e,t)}},CLASS:function(e){var t=W[e+" "];return t||(t=new RegExp("(^|"+E+")"+e+"("+E+"|$)"))&&W(e,(function(e){return t.test("string"==typeof e.className&&e.className||void 0!==e.getAttribute&&e.getAttribute("class")||"")}))},ATTR:function(e,t,n){return function(o){var p=J.attr(o,e);return null==p?"!="===t:!t||(p+="","="===t?p===n:"!="===t?p!==n:"^="===t?n&&0===p.indexOf(n):"*="===t?n&&p.indexOf(n)>-1:"$="===t?n&&p.slice(-n.length)===n:"~="===t?(" "+p.replace(k," ")+" ").indexOf(n)>-1:"|="===t&&(p===n||p.slice(0,n.length+1)===n+"-"))}},CHILD:function(e,t,n,o,p){var M="nth"!==e.slice(0,3),b="last"!==e.slice(-4),c="of-type"===t;return 1===o&&0===p?function(e){return!!e.parentNode}:function(t,n,z){var r,a,i,O,s,A=M!==b?"nextSibling":"previousSibling",u=t.parentNode,d=c&&t.nodeName.toLowerCase(),q=!z&&!c,W=!1;if(u){if(M){for(;A;){for(i=t;i=i[A];)if(c?_(i,d):1===i.nodeType)return!1;s=A="only"===e&&!s&&"nextSibling"}return!0}if(s=[b?u.firstChild:u.lastChild],b&&q){for(W=(O=(r=(a=u[l]||(u[l]={}))[e]||[])[0]===f&&r[1])&&r[2],i=O&&u.childNodes[O];i=++O&&i&&i[A]||(W=O=0)||s.pop();)if(1===i.nodeType&&++W&&i===t){a[e]=[f,O,W];break}}else if(q&&(W=O=(r=(a=t[l]||(t[l]={}))[e]||[])[0]===f&&r[1]),!1===W)for(;(i=++O&&i&&i[A]||(W=O=0)||s.pop())&&(!(c?_(i,d):1===i.nodeType)||!++W||(q&&((a=i[l]||(i[l]={}))[e]=[f,W]),i!==t)););return(W-=p)===o||W%o==0&&W/o>=0}}},PSEUDO:function(e,n){var o,p=t.pseudos[e]||t.setFilters[e.toLowerCase()]||J.error("unsupported pseudo: "+e);return p[l]?p(n):p.length>1?(o=[e,e,"",n],t.setFilters.hasOwnProperty(e.toLowerCase())?te((function(e,t){for(var o,M=p(e,n),b=M.length;b--;)e[o=a.call(e,M[b])]=!(t[o]=M[b])})):function(e){return p(e,0,o)}):p}},pseudos:{not:te((function(e){var t=[],n=[],o=le(e.replace(B,"$1"));return o[l]?te((function(e,t,n,p){for(var M,b=o(e,null,p,[]),c=e.length;c--;)(M=b[c])&&(e[c]=!(t[c]=M))})):function(e,p,M){return t[0]=e,o(t,null,M,n),t[0]=null,!n.pop()}})),has:te((function(e){return function(t){return J(e,t).length>0}})),contains:te((function(e){return e=e.replace(Y,K),function(t){return(t.textContent||g.text(t)).indexOf(e)>-1}})),lang:te((function(e){return U.test(e||"")||J.error("unsupported lang: "+e),e=e.replace(Y,K).toLowerCase(),function(t){var n;do{if(n=i?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return(n=n.toLowerCase())===e||0===n.indexOf(e+"-")}while((t=t.parentNode)&&1===t.nodeType);return!1}})),target:function(e){var t=o.location&&o.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===r},focus:function(e){return e===function(){try{return z.activeElement}catch(e){}}()&&z.hasFocus()&&!!(e.type||e.href||~e.tabIndex)},enabled:Me(!1),disabled:Me(!0),checked:function(e){return _(e,"input")&&!!e.checked||_(e,"option")&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!t.pseudos.empty(e)},header:function(e){return G.test(e.nodeName)},input:function(e){return F.test(e.nodeName)},button:function(e){return _(e,"input")&&"button"===e.type||_(e,"button")},text:function(e){var t;return _(e,"input")&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:be((function(){return[0]})),last:be((function(e,t){return[t-1]})),eq:be((function(e,t,n){return[n<0?n+t:n]})),even:be((function(e,t){for(var n=0;nt?t:n;--o>=0;)e.push(o);return e})),gt:be((function(e,t,n){for(var o=n<0?n+t:n;++o1?function(t,n,o){for(var p=e.length;p--;)if(!e[p](t,n,o))return!1;return!0}:e[0]}function Ae(e,t,n,o,p){for(var M,b=[],c=0,z=e.length,r=null!=t;c-1&&(M[r]=!(b[r]=O))}}else s=Ae(s===b?s.splice(l,s.length):s),p?p(null,b,s,z):u.apply(b,s)}))}function de(e){for(var o,p,M,b=e.length,c=t.relative[e[0].type],z=c||t.relative[" "],r=c?1:0,i=Oe((function(e){return e===o}),z,!0),O=Oe((function(e){return a.call(o,e)>-1}),z,!0),s=[function(e,t,p){var M=!c&&(p||t!=n)||((o=t).nodeType?i(e,t,p):O(e,t,p));return o=null,M}];r1&&se(s),r>1&&ie(e.slice(0,r-1).concat({value:" "===e[r-2].type?"*":""})).replace(B,"$1"),p,r0,M=e.length>0,b=function(b,c,r,a,O){var s,A,d,l=0,q="0",W=b&&[],h=[],v=n,R=b||M&&t.find.TAG("*",O),m=f+=null==v?1:Math.random()||.1,L=R.length;for(O&&(n=c==z||c||O);q!==L&&null!=(s=R[q]);q++){if(M&&s){for(A=0,c||s.ownerDocument==z||(ze(s),r=!i);d=e[A++];)if(d(s,c||z,r)){u.call(a,s);break}O&&(f=m)}p&&((s=!d&&s)&&l--,b&&W.push(s))}if(l+=q,p&&q!==l){for(A=0;d=o[A++];)d(W,h,c,r);if(b){if(l>0)for(;q--;)W[q]||h[q]||(h[q]=N.call(a));h=Ae(h)}u.apply(a,h),O&&!b&&h.length>0&&l+o.length>1&&g.uniqueSort(a)}return O&&(f=m,n=v),W};return p?te(b):b}(b,M)),c.selector=e}return c}function fe(e,n,o,p){var M,b,c,z,r,a="function"==typeof e&&e,O=!p&&ae(e=a.selector||e);if(o=o||[],1===O.length){if((b=O[0]=O[0].slice(0)).length>2&&"ID"===(c=b[0]).type&&9===n.nodeType&&i&&t.relative[b[1].type]){if(!(n=(t.find.ID(c.matches[0].replace(Y,K),n)||[])[0]))return o;a&&(n=n.parentNode),e=e.slice(b.shift().value.length)}for(M=H.needsContext.test(e)?0:b.length;M--&&(c=b[M],!t.relative[z=c.type]);)if((r=t.find[z])&&(p=r(c.matches[0].replace(Y,K),V.test(b[0].type)&&ce(n.parentNode)||n))){if(b.splice(M,1),!(e=p.length&&ie(b)))return u.apply(o,p),o;break}}return(a||le(e,O))(p,n,!i,o,!n||V.test(e)&&ce(n.parentNode)||n),o}re.prototype=t.filters=t.pseudos,t.setFilters=new re,d.sortStable=l.split("").sort(m).join("")===l,ze(),d.sortDetached=ne((function(e){return 1&e.compareDocumentPosition(z.createElement("fieldset"))})),g.find=J,g.expr[":"]=g.expr.pseudos,g.unique=g.uniqueSort,J.compile=le,J.select=fe,J.setDocument=ze,J.tokenize=ae,J.escape=g.escapeSelector,J.getText=g.text,J.isXML=g.isXMLDoc,J.selectors=g.expr,J.support=g.support,J.uniqueSort=g.uniqueSort}();var x=function(e,t,n){for(var o=[],p=void 0!==n;(e=e[t])&&9!==e.nodeType;)if(1===e.nodeType){if(p&&g(e).is(n))break;o.push(e)}return o},k=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},I=g.expr.match.needsContext,D=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function P(e,t,n){return l(t)?g.grep(e,(function(e,o){return!!t.call(e,o,e)!==n})):t.nodeType?g.grep(e,(function(e){return e===t!==n})):"string"!=typeof t?g.grep(e,(function(e){return a.call(t,e)>-1!==n})):g.filter(t,e,n)}g.filter=function(e,t,n){var o=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===o.nodeType?g.find.matchesSelector(o,e)?[o]:[]:g.find.matches(e,g.grep(t,(function(e){return 1===e.nodeType})))},g.fn.extend({find:function(e){var t,n,o=this.length,p=this;if("string"!=typeof e)return this.pushStack(g(e).filter((function(){for(t=0;t1?g.uniqueSort(n):n},filter:function(e){return this.pushStack(P(this,e||[],!1))},not:function(e){return this.pushStack(P(this,e||[],!0))},is:function(e){return!!P(this,"string"==typeof e&&I.test(e)?g(e):e||[],!1).length}});var j,U=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(g.fn.init=function(e,t,n){var o,p;if(!e)return this;if(n=n||j,"string"==typeof e){if(!(o="<"===e[0]&&">"===e[e.length-1]&&e.length>=3?[null,e,null]:U.exec(e))||!o[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(o[1]){if(t=t instanceof g?t[0]:t,g.merge(this,g.parseHTML(o[1],t&&t.nodeType?t.ownerDocument||t:q,!0)),D.test(o[1])&&g.isPlainObject(t))for(o in t)l(this[o])?this[o](t[o]):this.attr(o,t[o]);return this}return(p=q.getElementById(o[2]))&&(this[0]=p,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):l(e)?void 0!==n.ready?n.ready(e):e(g):g.makeArray(e,this)}).prototype=g.fn,j=g(q);var H=/^(?:parents|prev(?:Until|All))/,F={children:!0,contents:!0,next:!0,prev:!0};function G(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}g.fn.extend({has:function(e){var t=g(e,this),n=t.length;return this.filter((function(){for(var e=0;e-1:1===n.nodeType&&g.find.matchesSelector(n,e))){M.push(n);break}return this.pushStack(M.length>1?g.uniqueSort(M):M)},index:function(e){return e?"string"==typeof e?a.call(g(e),this[0]):a.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(g.uniqueSort(g.merge(this.get(),g(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),g.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return x(e,"parentNode")},parentsUntil:function(e,t,n){return x(e,"parentNode",n)},next:function(e){return G(e,"nextSibling")},prev:function(e){return G(e,"previousSibling")},nextAll:function(e){return x(e,"nextSibling")},prevAll:function(e){return x(e,"previousSibling")},nextUntil:function(e,t,n){return x(e,"nextSibling",n)},prevUntil:function(e,t,n){return x(e,"previousSibling",n)},siblings:function(e){return k((e.parentNode||{}).firstChild,e)},children:function(e){return k(e.firstChild)},contents:function(e){return null!=e.contentDocument&&b(e.contentDocument)?e.contentDocument:(_(e,"template")&&(e=e.content||e),g.merge([],e.childNodes))}},(function(e,t){g.fn[e]=function(n,o){var p=g.map(this,t,n);return"Until"!==e.slice(-5)&&(o=n),o&&"string"==typeof o&&(p=g.filter(o,p)),this.length>1&&(F[e]||g.uniqueSort(p),H.test(e)&&p.reverse()),this.pushStack(p)}}));var $=/[^\x20\t\r\n\f]+/g;function V(e){return e}function Y(e){throw e}function K(e,t,n,o){var p;try{e&&l(p=e.promise)?p.call(e).done(t).fail(n):e&&l(p=e.then)?p.call(e,t,n):t.apply(void 0,[e].slice(o))}catch(e){n.apply(void 0,[e])}}g.Callbacks=function(e){e="string"==typeof e?function(e){var t={};return g.each(e.match($)||[],(function(e,n){t[n]=!0})),t}(e):g.extend({},e);var t,n,o,p,M=[],b=[],c=-1,z=function(){for(p=p||e.once,o=t=!0;b.length;c=-1)for(n=b.shift();++c-1;)M.splice(n,1),n<=c&&c--})),this},has:function(e){return e?g.inArray(e,M)>-1:M.length>0},empty:function(){return M&&(M=[]),this},disable:function(){return p=b=[],M=n="",this},disabled:function(){return!M},lock:function(){return p=b=[],n||t||(M=n=""),this},locked:function(){return!!p},fireWith:function(e,n){return p||(n=[e,(n=n||[]).slice?n.slice():n],b.push(n),t||z()),this},fire:function(){return r.fireWith(this,arguments),this},fired:function(){return!!o}};return r},g.extend({Deferred:function(e){var t=[["notify","progress",g.Callbacks("memory"),g.Callbacks("memory"),2],["resolve","done",g.Callbacks("once memory"),g.Callbacks("once memory"),0,"resolved"],["reject","fail",g.Callbacks("once memory"),g.Callbacks("once memory"),1,"rejected"]],n="pending",p={state:function(){return n},always:function(){return M.done(arguments).fail(arguments),this},catch:function(e){return p.then(null,e)},pipe:function(){var e=arguments;return g.Deferred((function(n){g.each(t,(function(t,o){var p=l(e[o[4]])&&e[o[4]];M[o[1]]((function(){var e=p&&p.apply(this,arguments);e&&l(e.promise)?e.promise().progress(n.notify).done(n.resolve).fail(n.reject):n[o[0]+"With"](this,p?[e]:arguments)}))})),e=null})).promise()},then:function(e,n,p){var M=0;function b(e,t,n,p){return function(){var c=this,z=arguments,r=function(){var o,r;if(!(e=M&&(n!==Y&&(c=void 0,z=[o]),t.rejectWith(c,z))}};e?a():(g.Deferred.getErrorHook?a.error=g.Deferred.getErrorHook():g.Deferred.getStackHook&&(a.error=g.Deferred.getStackHook()),o.setTimeout(a))}}return g.Deferred((function(o){t[0][3].add(b(0,o,l(p)?p:V,o.notifyWith)),t[1][3].add(b(0,o,l(e)?e:V)),t[2][3].add(b(0,o,l(n)?n:Y))})).promise()},promise:function(e){return null!=e?g.extend(e,p):p}},M={};return g.each(t,(function(e,o){var b=o[2],c=o[5];p[o[1]]=b.add,c&&b.add((function(){n=c}),t[3-e][2].disable,t[3-e][3].disable,t[0][2].lock,t[0][3].lock),b.add(o[3].fire),M[o[0]]=function(){return M[o[0]+"With"](this===M?void 0:this,arguments),this},M[o[0]+"With"]=b.fireWith})),p.promise(M),e&&e.call(M,M),M},when:function(e){var t=arguments.length,n=t,o=Array(n),p=c.call(arguments),M=g.Deferred(),b=function(e){return function(n){o[e]=this,p[e]=arguments.length>1?c.call(arguments):n,--t||M.resolveWith(o,p)}};if(t<=1&&(K(e,M.done(b(n)).resolve,M.reject,!t),"pending"===M.state()||l(p[n]&&p[n].then)))return M.then();for(;n--;)K(p[n],b(n),M.reject);return M.promise()}});var Z=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;g.Deferred.exceptionHook=function(e,t){o.console&&o.console.warn&&e&&Z.test(e.name)&&o.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},g.readyException=function(e){o.setTimeout((function(){throw e}))};var Q=g.Deferred();function J(){q.removeEventListener("DOMContentLoaded",J),o.removeEventListener("load",J),g.ready()}g.fn.ready=function(e){return Q.then(e).catch((function(e){g.readyException(e)})),this},g.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--g.readyWait:g.isReady)||(g.isReady=!0,!0!==e&&--g.readyWait>0||Q.resolveWith(q,[g]))}}),g.ready.then=Q.then,"complete"===q.readyState||"loading"!==q.readyState&&!q.documentElement.doScroll?o.setTimeout(g.ready):(q.addEventListener("DOMContentLoaded",J),o.addEventListener("load",J));var ee=function(e,t,n,o,p,M,b){var c=0,z=e.length,r=null==n;if("object"===v(n))for(c in p=!0,n)ee(e,t,c,n[c],!0,M,b);else if(void 0!==o&&(p=!0,l(o)||(b=!0),r&&(b?(t.call(e,o),t=null):(r=t,t=function(e,t,n){return r.call(g(e),n)})),t))for(;c1,null,!0)},removeData:function(e){return this.each((function(){ze.remove(this,e)}))}}),g.extend({queue:function(e,t,n){var o;if(e)return t=(t||"fx")+"queue",o=ce.get(e,t),n&&(!o||Array.isArray(n)?o=ce.access(e,t,g.makeArray(n)):o.push(n)),o||[]},dequeue:function(e,t){t=t||"fx";var n=g.queue(e,t),o=n.length,p=n.shift(),M=g._queueHooks(e,t);"inprogress"===p&&(p=n.shift(),o--),p&&("fx"===t&&n.unshift("inprogress"),delete M.stop,p.call(e,(function(){g.dequeue(e,t)}),M)),!o&&M&&M.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return ce.get(e,n)||ce.access(e,n,{empty:g.Callbacks("once memory").add((function(){ce.remove(e,[t+"queue",n])}))})}}),g.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length\x20\t\r\n\f]*)/i,_e=/^$|^module$|\/(?:java|ecma)script/i;Re=q.createDocumentFragment().appendChild(q.createElement("div")),(me=q.createElement("input")).setAttribute("type","radio"),me.setAttribute("checked","checked"),me.setAttribute("name","t"),Re.appendChild(me),d.checkClone=Re.cloneNode(!0).cloneNode(!0).lastChild.checked,Re.innerHTML="",d.noCloneChecked=!!Re.cloneNode(!0).lastChild.defaultValue,Re.innerHTML="",d.option=!!Re.lastChild;var Ne={thead:[1,"
    ","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};function ye(e,t){var n;return n=void 0!==e.getElementsByTagName?e.getElementsByTagName(t||"*"):void 0!==e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&_(e,t)?g.merge([e],n):n}function Te(e,t){for(var n=0,o=e.length;n",""]);var Ee=/<|&#?\w+;/;function Be(e,t,n,o,p){for(var M,b,c,z,r,a,i=t.createDocumentFragment(),O=[],s=0,A=e.length;s-1)p&&p.push(M);else if(r=de(M),b=ye(i.appendChild(M),"script"),r&&Te(b),n)for(a=0;M=b[a++];)_e.test(M.type||"")&&n.push(M);return i}var Ce=/^([^.]*)(?:\.(.+)|)/;function Xe(){return!0}function we(){return!1}function Se(e,t,n,o,p,M){var b,c;if("object"==typeof t){for(c in"string"!=typeof n&&(o=o||n,n=void 0),t)Se(e,c,n,o,t[c],M);return e}if(null==o&&null==p?(p=n,o=n=void 0):null==p&&("string"==typeof n?(p=o,o=void 0):(p=o,o=n,n=void 0)),!1===p)p=we;else if(!p)return e;return 1===M&&(b=p,p=function(e){return g().off(e),b.apply(this,arguments)},p.guid=b.guid||(b.guid=g.guid++)),e.each((function(){g.event.add(this,t,p,o,n)}))}function xe(e,t,n){n?(ce.set(e,t,!1),g.event.add(e,t,{namespace:!1,handler:function(e){var n,o=ce.get(this,t);if(1&e.isTrigger&&this[t]){if(o)(g.event.special[t]||{}).delegateType&&e.stopPropagation();else if(o=c.call(arguments),ce.set(this,t,o),this[t](),n=ce.get(this,t),ce.set(this,t,!1),o!==n)return e.stopImmediatePropagation(),e.preventDefault(),n}else o&&(ce.set(this,t,g.event.trigger(o[0],o.slice(1),this)),e.stopPropagation(),e.isImmediatePropagationStopped=Xe)}})):void 0===ce.get(e,t)&&g.event.add(e,t,Xe)}g.event={global:{},add:function(e,t,n,o,p){var M,b,c,z,r,a,i,O,s,A,u,d=ce.get(e);if(Me(e))for(n.handler&&(n=(M=n).handler,p=M.selector),p&&g.find.matchesSelector(ue,p),n.guid||(n.guid=g.guid++),(z=d.events)||(z=d.events=Object.create(null)),(b=d.handle)||(b=d.handle=function(t){return void 0!==g&&g.event.triggered!==t.type?g.event.dispatch.apply(e,arguments):void 0}),r=(t=(t||"").match($)||[""]).length;r--;)s=u=(c=Ce.exec(t[r])||[])[1],A=(c[2]||"").split(".").sort(),s&&(i=g.event.special[s]||{},s=(p?i.delegateType:i.bindType)||s,i=g.event.special[s]||{},a=g.extend({type:s,origType:u,data:o,handler:n,guid:n.guid,selector:p,needsContext:p&&g.expr.match.needsContext.test(p),namespace:A.join(".")},M),(O=z[s])||((O=z[s]=[]).delegateCount=0,i.setup&&!1!==i.setup.call(e,o,A,b)||e.addEventListener&&e.addEventListener(s,b)),i.add&&(i.add.call(e,a),a.handler.guid||(a.handler.guid=n.guid)),p?O.splice(O.delegateCount++,0,a):O.push(a),g.event.global[s]=!0)},remove:function(e,t,n,o,p){var M,b,c,z,r,a,i,O,s,A,u,d=ce.hasData(e)&&ce.get(e);if(d&&(z=d.events)){for(r=(t=(t||"").match($)||[""]).length;r--;)if(s=u=(c=Ce.exec(t[r])||[])[1],A=(c[2]||"").split(".").sort(),s){for(i=g.event.special[s]||{},O=z[s=(o?i.delegateType:i.bindType)||s]||[],c=c[2]&&new RegExp("(^|\\.)"+A.join("\\.(?:.*\\.|)")+"(\\.|$)"),b=M=O.length;M--;)a=O[M],!p&&u!==a.origType||n&&n.guid!==a.guid||c&&!c.test(a.namespace)||o&&o!==a.selector&&("**"!==o||!a.selector)||(O.splice(M,1),a.selector&&O.delegateCount--,i.remove&&i.remove.call(e,a));b&&!O.length&&(i.teardown&&!1!==i.teardown.call(e,A,d.handle)||g.removeEvent(e,s,d.handle),delete z[s])}else for(s in z)g.event.remove(e,s+t[r],n,o,!0);g.isEmptyObject(z)&&ce.remove(e,"handle events")}},dispatch:function(e){var t,n,o,p,M,b,c=new Array(arguments.length),z=g.event.fix(e),r=(ce.get(this,"events")||Object.create(null))[z.type]||[],a=g.event.special[z.type]||{};for(c[0]=z,t=1;t=1))for(;r!==this;r=r.parentNode||this)if(1===r.nodeType&&("click"!==e.type||!0!==r.disabled)){for(M=[],b={},n=0;n-1:g.find(p,this,null,[r]).length),b[p]&&M.push(o);M.length&&c.push({elem:r,handlers:M})}return r=this,z\s*$/g;function Pe(e,t){return _(e,"table")&&_(11!==t.nodeType?t:t.firstChild,"tr")&&g(e).children("tbody")[0]||e}function je(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Ue(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function He(e,t){var n,o,p,M,b,c;if(1===t.nodeType){if(ce.hasData(e)&&(c=ce.get(e).events))for(p in ce.remove(t,"handle events"),c)for(n=0,o=c[p].length;n1&&"string"==typeof A&&!d.checkClone&&Ie.test(A))return e.each((function(p){var M=e.eq(p);u&&(t[0]=A.call(this,p,M.html())),Ge(M,t,n,o)}));if(O&&(M=(p=Be(t,e[0].ownerDocument,!1,e,o)).firstChild,1===p.childNodes.length&&(p=M),M||o)){for(c=(b=g.map(ye(p,"script"),je)).length;i0&&Te(b,!z&&ye(e,"script")),c},cleanData:function(e){for(var t,n,o,p=g.event.special,M=0;void 0!==(n=e[M]);M++)if(Me(n)){if(t=n[ce.expando]){if(t.events)for(o in t.events)p[o]?g.event.remove(n,o):g.removeEvent(n,o,t.handle);n[ce.expando]=void 0}n[ze.expando]&&(n[ze.expando]=void 0)}}}),g.fn.extend({detach:function(e){return $e(this,e,!0)},remove:function(e){return $e(this,e)},text:function(e){return ee(this,(function(e){return void 0===e?g.text(this):this.empty().each((function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)}))}),null,e,arguments.length)},append:function(){return Ge(this,arguments,(function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Pe(this,e).appendChild(e)}))},prepend:function(){return Ge(this,arguments,(function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Pe(this,e);t.insertBefore(e,t.firstChild)}}))},before:function(){return Ge(this,arguments,(function(e){this.parentNode&&this.parentNode.insertBefore(e,this)}))},after:function(){return Ge(this,arguments,(function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)}))},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(g.cleanData(ye(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map((function(){return g.clone(this,e,t)}))},html:function(e){return ee(this,(function(e){var t=this[0]||{},n=0,o=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!ke.test(e)&&!Ne[(Le.exec(e)||["",""])[1].toLowerCase()]){e=g.htmlPrefilter(e);try{for(;n=0&&(z+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-M-z-c-.5))||0),z+r}function at(e,t,n){var o=Ke(e),p=(!d.boxSizingReliable()||n)&&"border-box"===g.css(e,"boxSizing",!1,o),M=p,b=Je(e,t,o),c="offset"+t[0].toUpperCase()+t.slice(1);if(Ve.test(b)){if(!n)return b;b="auto"}return(!d.boxSizingReliable()&&p||!d.reliableTrDimensions()&&_(e,"tr")||"auto"===b||!parseFloat(b)&&"inline"===g.css(e,"display",!1,o))&&e.getClientRects().length&&(p="border-box"===g.css(e,"boxSizing",!1,o),(M=c in e)&&(b=e[c])),(b=parseFloat(b)||0)+rt(e,t,n||(p?"border":"content"),M,o,b)+"px"}function it(e,t,n,o,p){return new it.prototype.init(e,t,n,o,p)}g.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Je(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,aspectRatio:!0,borderImageSlice:!0,columnCount:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,scale:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeMiterlimit:!0,strokeOpacity:!0},cssProps:{},style:function(e,t,n,o){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var p,M,b,c=pe(t),z=Ye.test(t),r=e.style;if(z||(t=pt(c)),b=g.cssHooks[t]||g.cssHooks[c],void 0===n)return b&&"get"in b&&void 0!==(p=b.get(e,!1,o))?p:r[t];"string"===(M=typeof n)&&(p=se.exec(n))&&p[1]&&(n=qe(e,t,p),M="number"),null!=n&&n==n&&("number"!==M||z||(n+=p&&p[3]||(g.cssNumber[c]?"":"px")),d.clearCloneStyle||""!==n||0!==t.indexOf("background")||(r[t]="inherit"),b&&"set"in b&&void 0===(n=b.set(e,n,o))||(z?r.setProperty(t,n):r[t]=n))}},css:function(e,t,n,o){var p,M,b,c=pe(t);return Ye.test(t)||(t=pt(c)),(b=g.cssHooks[t]||g.cssHooks[c])&&"get"in b&&(p=b.get(e,!0,n)),void 0===p&&(p=Je(e,t,o)),"normal"===p&&t in ct&&(p=ct[t]),""===n||n?(M=parseFloat(p),!0===n||isFinite(M)?M||0:p):p}}),g.each(["height","width"],(function(e,t){g.cssHooks[t]={get:function(e,n,o){if(n)return!Mt.test(g.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?at(e,t,o):Ze(e,bt,(function(){return at(e,t,o)}))},set:function(e,n,o){var p,M=Ke(e),b=!d.scrollboxSize()&&"absolute"===M.position,c=(b||o)&&"border-box"===g.css(e,"boxSizing",!1,M),z=o?rt(e,t,o,c,M):0;return c&&b&&(z-=Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-parseFloat(M[t])-rt(e,t,"border",!1,M)-.5)),z&&(p=se.exec(n))&&"px"!==(p[3]||"px")&&(e.style[t]=n,n=g.css(e,t)),zt(0,n,z)}}})),g.cssHooks.marginLeft=et(d.reliableMarginLeft,(function(e,t){if(t)return(parseFloat(Je(e,"marginLeft"))||e.getBoundingClientRect().left-Ze(e,{marginLeft:0},(function(){return e.getBoundingClientRect().left})))+"px"})),g.each({margin:"",padding:"",border:"Width"},(function(e,t){g.cssHooks[e+t]={expand:function(n){for(var o=0,p={},M="string"==typeof n?n.split(" "):[n];o<4;o++)p[e+Ae[o]+t]=M[o]||M[o-2]||M[0];return p}},"margin"!==e&&(g.cssHooks[e+t].set=zt)})),g.fn.extend({css:function(e,t){return ee(this,(function(e,t,n){var o,p,M={},b=0;if(Array.isArray(t)){for(o=Ke(e),p=t.length;b1)}}),g.Tween=it,it.prototype={constructor:it,init:function(e,t,n,o,p,M){this.elem=e,this.prop=n,this.easing=p||g.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=o,this.unit=M||(g.cssNumber[n]?"":"px")},cur:function(){var e=it.propHooks[this.prop];return e&&e.get?e.get(this):it.propHooks._default.get(this)},run:function(e){var t,n=it.propHooks[this.prop];return this.options.duration?this.pos=t=g.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):it.propHooks._default.set(this),this}},it.prototype.init.prototype=it.prototype,it.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=g.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){g.fx.step[e.prop]?g.fx.step[e.prop](e):1!==e.elem.nodeType||!g.cssHooks[e.prop]&&null==e.elem.style[pt(e.prop)]?e.elem[e.prop]=e.now:g.style(e.elem,e.prop,e.now+e.unit)}}},it.propHooks.scrollTop=it.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},g.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},g.fx=it.prototype.init,g.fx.step={};var Ot,st,At=/^(?:toggle|show|hide)$/,ut=/queueHooks$/;function dt(){st&&(!1===q.hidden&&o.requestAnimationFrame?o.requestAnimationFrame(dt):o.setTimeout(dt,g.fx.interval),g.fx.tick())}function lt(){return o.setTimeout((function(){Ot=void 0})),Ot=Date.now()}function ft(e,t){var n,o=0,p={height:e};for(t=t?1:0;o<4;o+=2-t)p["margin"+(n=Ae[o])]=p["padding"+n]=e;return t&&(p.opacity=p.width=e),p}function qt(e,t,n){for(var o,p=(Wt.tweeners[t]||[]).concat(Wt.tweeners["*"]),M=0,b=p.length;M1)},removeAttr:function(e){return this.each((function(){g.removeAttr(this,e)}))}}),g.extend({attr:function(e,t,n){var o,p,M=e.nodeType;if(3!==M&&8!==M&&2!==M)return void 0===e.getAttribute?g.prop(e,t,n):(1===M&&g.isXMLDoc(e)||(p=g.attrHooks[t.toLowerCase()]||(g.expr.match.bool.test(t)?ht:void 0)),void 0!==n?null===n?void g.removeAttr(e,t):p&&"set"in p&&void 0!==(o=p.set(e,n,t))?o:(e.setAttribute(t,n+""),n):p&&"get"in p&&null!==(o=p.get(e,t))?o:null==(o=g.find.attr(e,t))?void 0:o)},attrHooks:{type:{set:function(e,t){if(!d.radioValue&&"radio"===t&&_(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,o=0,p=t&&t.match($);if(p&&1===e.nodeType)for(;n=p[o++];)e.removeAttribute(n)}}),ht={set:function(e,t,n){return!1===t?g.removeAttr(e,n):e.setAttribute(n,n),n}},g.each(g.expr.match.bool.source.match(/\w+/g),(function(e,t){var n=vt[t]||g.find.attr;vt[t]=function(e,t,o){var p,M,b=t.toLowerCase();return o||(M=vt[b],vt[b]=p,p=null!=n(e,t,o)?b:null,vt[b]=M),p}}));var Rt=/^(?:input|select|textarea|button)$/i,mt=/^(?:a|area)$/i;function gt(e){return(e.match($)||[]).join(" ")}function Lt(e){return e.getAttribute&&e.getAttribute("class")||""}function _t(e){return Array.isArray(e)?e:"string"==typeof e&&e.match($)||[]}g.fn.extend({prop:function(e,t){return ee(this,g.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each((function(){delete this[g.propFix[e]||e]}))}}),g.extend({prop:function(e,t,n){var o,p,M=e.nodeType;if(3!==M&&8!==M&&2!==M)return 1===M&&g.isXMLDoc(e)||(t=g.propFix[t]||t,p=g.propHooks[t]),void 0!==n?p&&"set"in p&&void 0!==(o=p.set(e,n,t))?o:e[t]=n:p&&"get"in p&&null!==(o=p.get(e,t))?o:e[t]},propHooks:{tabIndex:{get:function(e){var t=g.find.attr(e,"tabindex");return t?parseInt(t,10):Rt.test(e.nodeName)||mt.test(e.nodeName)&&e.href?0:-1}}},propFix:{for:"htmlFor",class:"className"}}),d.optSelected||(g.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),g.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],(function(){g.propFix[this.toLowerCase()]=this})),g.fn.extend({addClass:function(e){var t,n,o,p,M,b;return l(e)?this.each((function(t){g(this).addClass(e.call(this,t,Lt(this)))})):(t=_t(e)).length?this.each((function(){if(o=Lt(this),n=1===this.nodeType&&" "+gt(o)+" "){for(M=0;M-1;)n=n.replace(" "+p+" "," ");b=gt(n),o!==b&&this.setAttribute("class",b)}})):this:this.attr("class","")},toggleClass:function(e,t){var n,o,p,M,b=typeof e,c="string"===b||Array.isArray(e);return l(e)?this.each((function(n){g(this).toggleClass(e.call(this,n,Lt(this),t),t)})):"boolean"==typeof t&&c?t?this.addClass(e):this.removeClass(e):(n=_t(e),this.each((function(){if(c)for(M=g(this),p=0;p-1)return!0;return!1}});var Nt=/\r/g;g.fn.extend({val:function(e){var t,n,o,p=this[0];return arguments.length?(o=l(e),this.each((function(n){var p;1===this.nodeType&&(null==(p=o?e.call(this,n,g(this).val()):e)?p="":"number"==typeof p?p+="":Array.isArray(p)&&(p=g.map(p,(function(e){return null==e?"":e+""}))),(t=g.valHooks[this.type]||g.valHooks[this.nodeName.toLowerCase()])&&"set"in t&&void 0!==t.set(this,p,"value")||(this.value=p))}))):p?(t=g.valHooks[p.type]||g.valHooks[p.nodeName.toLowerCase()])&&"get"in t&&void 0!==(n=t.get(p,"value"))?n:"string"==typeof(n=p.value)?n.replace(Nt,""):null==n?"":n:void 0}}),g.extend({valHooks:{option:{get:function(e){var t=g.find.attr(e,"value");return null!=t?t:gt(g.text(e))}},select:{get:function(e){var t,n,o,p=e.options,M=e.selectedIndex,b="select-one"===e.type,c=b?null:[],z=b?M+1:p.length;for(o=M<0?z:b?M:0;o-1)&&(n=!0);return n||(e.selectedIndex=-1),M}}}}),g.each(["radio","checkbox"],(function(){g.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=g.inArray(g(e).val(),t)>-1}},d.checkOn||(g.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}));var yt=o.location,Tt={guid:Date.now()},Et=/\?/;g.parseXML=function(e){var t,n;if(!e||"string"!=typeof e)return null;try{t=(new o.DOMParser).parseFromString(e,"text/xml")}catch(e){}return n=t&&t.getElementsByTagName("parsererror")[0],t&&!n||g.error("Invalid XML: "+(n?g.map(n.childNodes,(function(e){return e.textContent})).join("\n"):e)),t};var Bt=/^(?:focusinfocus|focusoutblur)$/,Ct=function(e){e.stopPropagation()};g.extend(g.event,{trigger:function(e,t,n,p){var M,b,c,z,r,a,i,O,A=[n||q],u=s.call(e,"type")?e.type:e,d=s.call(e,"namespace")?e.namespace.split("."):[];if(b=O=c=n=n||q,3!==n.nodeType&&8!==n.nodeType&&!Bt.test(u+g.event.triggered)&&(u.indexOf(".")>-1&&(d=u.split("."),u=d.shift(),d.sort()),r=u.indexOf(":")<0&&"on"+u,(e=e[g.expando]?e:new g.Event(u,"object"==typeof e&&e)).isTrigger=p?2:3,e.namespace=d.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+d.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:g.makeArray(t,[e]),i=g.event.special[u]||{},p||!i.trigger||!1!==i.trigger.apply(n,t))){if(!p&&!i.noBubble&&!f(n)){for(z=i.delegateType||u,Bt.test(z+u)||(b=b.parentNode);b;b=b.parentNode)A.push(b),c=b;c===(n.ownerDocument||q)&&A.push(c.defaultView||c.parentWindow||o)}for(M=0;(b=A[M++])&&!e.isPropagationStopped();)O=b,e.type=M>1?z:i.bindType||u,(a=(ce.get(b,"events")||Object.create(null))[e.type]&&ce.get(b,"handle"))&&a.apply(b,t),(a=r&&b[r])&&a.apply&&Me(b)&&(e.result=a.apply(b,t),!1===e.result&&e.preventDefault());return e.type=u,p||e.isDefaultPrevented()||i._default&&!1!==i._default.apply(A.pop(),t)||!Me(n)||r&&l(n[u])&&!f(n)&&((c=n[r])&&(n[r]=null),g.event.triggered=u,e.isPropagationStopped()&&O.addEventListener(u,Ct),n[u](),e.isPropagationStopped()&&O.removeEventListener(u,Ct),g.event.triggered=void 0,c&&(n[r]=c)),e.result}},simulate:function(e,t,n){var o=g.extend(new g.Event,n,{type:e,isSimulated:!0});g.event.trigger(o,null,t)}}),g.fn.extend({trigger:function(e,t){return this.each((function(){g.event.trigger(e,t,this)}))},triggerHandler:function(e,t){var n=this[0];if(n)return g.event.trigger(e,t,n,!0)}});var Xt=/\[\]$/,wt=/\r?\n/g,St=/^(?:submit|button|image|reset|file)$/i,xt=/^(?:input|select|textarea|keygen)/i;function kt(e,t,n,o){var p;if(Array.isArray(t))g.each(t,(function(t,p){n||Xt.test(e)?o(e,p):kt(e+"["+("object"==typeof p&&null!=p?t:"")+"]",p,n,o)}));else if(n||"object"!==v(t))o(e,t);else for(p in t)kt(e+"["+p+"]",t[p],n,o)}g.param=function(e,t){var n,o=[],p=function(e,t){var n=l(t)?t():t;o[o.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!g.isPlainObject(e))g.each(e,(function(){p(this.name,this.value)}));else for(n in e)kt(n,e[n],t,p);return o.join("&")},g.fn.extend({serialize:function(){return g.param(this.serializeArray())},serializeArray:function(){return this.map((function(){var e=g.prop(this,"elements");return e?g.makeArray(e):this})).filter((function(){var e=this.type;return this.name&&!g(this).is(":disabled")&&xt.test(this.nodeName)&&!St.test(e)&&(this.checked||!ge.test(e))})).map((function(e,t){var n=g(this).val();return null==n?null:Array.isArray(n)?g.map(n,(function(e){return{name:t.name,value:e.replace(wt,"\r\n")}})):{name:t.name,value:n.replace(wt,"\r\n")}})).get()}});var It=/%20/g,Dt=/#.*$/,Pt=/([?&])_=[^&]*/,jt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Ut=/^(?:GET|HEAD)$/,Ht=/^\/\//,Ft={},Gt={},$t="*/".concat("*"),Vt=q.createElement("a");function Yt(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var o,p=0,M=t.toLowerCase().match($)||[];if(l(n))for(;o=M[p++];)"+"===o[0]?(o=o.slice(1)||"*",(e[o]=e[o]||[]).unshift(n)):(e[o]=e[o]||[]).push(n)}}function Kt(e,t,n,o){var p={},M=e===Gt;function b(c){var z;return p[c]=!0,g.each(e[c]||[],(function(e,c){var r=c(t,n,o);return"string"!=typeof r||M||p[r]?M?!(z=r):void 0:(t.dataTypes.unshift(r),b(r),!1)})),z}return b(t.dataTypes[0])||!p["*"]&&b("*")}function Zt(e,t){var n,o,p=g.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((p[n]?e:o||(o={}))[n]=t[n]);return o&&g.extend(!0,e,o),e}Vt.href=yt.href,g.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:yt.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(yt.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":$t,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":g.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Zt(Zt(e,g.ajaxSettings),t):Zt(g.ajaxSettings,e)},ajaxPrefilter:Yt(Ft),ajaxTransport:Yt(Gt),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var n,p,M,b,c,z,r,a,i,O,s=g.ajaxSetup({},t),A=s.context||s,u=s.context&&(A.nodeType||A.jquery)?g(A):g.event,d=g.Deferred(),l=g.Callbacks("once memory"),f=s.statusCode||{},W={},h={},v="canceled",R={readyState:0,getResponseHeader:function(e){var t;if(r){if(!b)for(b={};t=jt.exec(M);)b[t[1].toLowerCase()+" "]=(b[t[1].toLowerCase()+" "]||[]).concat(t[2]);t=b[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return r?M:null},setRequestHeader:function(e,t){return null==r&&(e=h[e.toLowerCase()]=h[e.toLowerCase()]||e,W[e]=t),this},overrideMimeType:function(e){return null==r&&(s.mimeType=e),this},statusCode:function(e){var t;if(e)if(r)R.always(e[R.status]);else for(t in e)f[t]=[f[t],e[t]];return this},abort:function(e){var t=e||v;return n&&n.abort(t),m(0,t),this}};if(d.promise(R),s.url=((e||s.url||yt.href)+"").replace(Ht,yt.protocol+"//"),s.type=t.method||t.type||s.method||s.type,s.dataTypes=(s.dataType||"*").toLowerCase().match($)||[""],null==s.crossDomain){z=q.createElement("a");try{z.href=s.url,z.href=z.href,s.crossDomain=Vt.protocol+"//"+Vt.host!=z.protocol+"//"+z.host}catch(e){s.crossDomain=!0}}if(s.data&&s.processData&&"string"!=typeof s.data&&(s.data=g.param(s.data,s.traditional)),Kt(Ft,s,t,R),r)return R;for(i in(a=g.event&&s.global)&&0==g.active++&&g.event.trigger("ajaxStart"),s.type=s.type.toUpperCase(),s.hasContent=!Ut.test(s.type),p=s.url.replace(Dt,""),s.hasContent?s.data&&s.processData&&0===(s.contentType||"").indexOf("application/x-www-form-urlencoded")&&(s.data=s.data.replace(It,"+")):(O=s.url.slice(p.length),s.data&&(s.processData||"string"==typeof s.data)&&(p+=(Et.test(p)?"&":"?")+s.data,delete s.data),!1===s.cache&&(p=p.replace(Pt,"$1"),O=(Et.test(p)?"&":"?")+"_="+Tt.guid+++O),s.url=p+O),s.ifModified&&(g.lastModified[p]&&R.setRequestHeader("If-Modified-Since",g.lastModified[p]),g.etag[p]&&R.setRequestHeader("If-None-Match",g.etag[p])),(s.data&&s.hasContent&&!1!==s.contentType||t.contentType)&&R.setRequestHeader("Content-Type",s.contentType),R.setRequestHeader("Accept",s.dataTypes[0]&&s.accepts[s.dataTypes[0]]?s.accepts[s.dataTypes[0]]+("*"!==s.dataTypes[0]?", "+$t+"; q=0.01":""):s.accepts["*"]),s.headers)R.setRequestHeader(i,s.headers[i]);if(s.beforeSend&&(!1===s.beforeSend.call(A,R,s)||r))return R.abort();if(v="abort",l.add(s.complete),R.done(s.success),R.fail(s.error),n=Kt(Gt,s,t,R)){if(R.readyState=1,a&&u.trigger("ajaxSend",[R,s]),r)return R;s.async&&s.timeout>0&&(c=o.setTimeout((function(){R.abort("timeout")}),s.timeout));try{r=!1,n.send(W,m)}catch(e){if(r)throw e;m(-1,e)}}else m(-1,"No Transport");function m(e,t,b,z){var i,O,q,W,h,v=t;r||(r=!0,c&&o.clearTimeout(c),n=void 0,M=z||"",R.readyState=e>0?4:0,i=e>=200&&e<300||304===e,b&&(W=function(e,t,n){for(var o,p,M,b,c=e.contents,z=e.dataTypes;"*"===z[0];)z.shift(),void 0===o&&(o=e.mimeType||t.getResponseHeader("Content-Type"));if(o)for(p in c)if(c[p]&&c[p].test(o)){z.unshift(p);break}if(z[0]in n)M=z[0];else{for(p in n){if(!z[0]||e.converters[p+" "+z[0]]){M=p;break}b||(b=p)}M=M||b}if(M)return M!==z[0]&&z.unshift(M),n[M]}(s,R,b)),!i&&g.inArray("script",s.dataTypes)>-1&&g.inArray("json",s.dataTypes)<0&&(s.converters["text script"]=function(){}),W=function(e,t,n,o){var p,M,b,c,z,r={},a=e.dataTypes.slice();if(a[1])for(b in e.converters)r[b.toLowerCase()]=e.converters[b];for(M=a.shift();M;)if(e.responseFields[M]&&(n[e.responseFields[M]]=t),!z&&o&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),z=M,M=a.shift())if("*"===M)M=z;else if("*"!==z&&z!==M){if(!(b=r[z+" "+M]||r["* "+M]))for(p in r)if((c=p.split(" "))[1]===M&&(b=r[z+" "+c[0]]||r["* "+c[0]])){!0===b?b=r[p]:!0!==r[p]&&(M=c[0],a.unshift(c[1]));break}if(!0!==b)if(b&&e.throws)t=b(t);else try{t=b(t)}catch(e){return{state:"parsererror",error:b?e:"No conversion from "+z+" to "+M}}}return{state:"success",data:t}}(s,W,R,i),i?(s.ifModified&&((h=R.getResponseHeader("Last-Modified"))&&(g.lastModified[p]=h),(h=R.getResponseHeader("etag"))&&(g.etag[p]=h)),204===e||"HEAD"===s.type?v="nocontent":304===e?v="notmodified":(v=W.state,O=W.data,i=!(q=W.error))):(q=v,!e&&v||(v="error",e<0&&(e=0))),R.status=e,R.statusText=(t||v)+"",i?d.resolveWith(A,[O,v,R]):d.rejectWith(A,[R,v,q]),R.statusCode(f),f=void 0,a&&u.trigger(i?"ajaxSuccess":"ajaxError",[R,s,i?O:q]),l.fireWith(A,[R,v]),a&&(u.trigger("ajaxComplete",[R,s]),--g.active||g.event.trigger("ajaxStop")))}return R},getJSON:function(e,t,n){return g.get(e,t,n,"json")},getScript:function(e,t){return g.get(e,void 0,t,"script")}}),g.each(["get","post"],(function(e,t){g[t]=function(e,n,o,p){return l(n)&&(p=p||o,o=n,n=void 0),g.ajax(g.extend({url:e,type:t,dataType:p,data:n,success:o},g.isPlainObject(e)&&e))}})),g.ajaxPrefilter((function(e){var t;for(t in e.headers)"content-type"===t.toLowerCase()&&(e.contentType=e.headers[t]||"")})),g._evalUrl=function(e,t,n){return g.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){g.globalEval(e,t,n)}})},g.fn.extend({wrapAll:function(e){var t;return this[0]&&(l(e)&&(e=e.call(this[0])),t=g(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map((function(){for(var e=this;e.firstElementChild;)e=e.firstElementChild;return e})).append(this)),this},wrapInner:function(e){return l(e)?this.each((function(t){g(this).wrapInner(e.call(this,t))})):this.each((function(){var t=g(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)}))},wrap:function(e){var t=l(e);return this.each((function(n){g(this).wrapAll(t?e.call(this,n):e)}))},unwrap:function(e){return this.parent(e).not("body").each((function(){g(this).replaceWith(this.childNodes)})),this}}),g.expr.pseudos.hidden=function(e){return!g.expr.pseudos.visible(e)},g.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},g.ajaxSettings.xhr=function(){try{return new o.XMLHttpRequest}catch(e){}};var Qt={0:200,1223:204},Jt=g.ajaxSettings.xhr();d.cors=!!Jt&&"withCredentials"in Jt,d.ajax=Jt=!!Jt,g.ajaxTransport((function(e){var t,n;if(d.cors||Jt&&!e.crossDomain)return{send:function(p,M){var b,c=e.xhr();if(c.open(e.type,e.url,e.async,e.username,e.password),e.xhrFields)for(b in e.xhrFields)c[b]=e.xhrFields[b];for(b in e.mimeType&&c.overrideMimeType&&c.overrideMimeType(e.mimeType),e.crossDomain||p["X-Requested-With"]||(p["X-Requested-With"]="XMLHttpRequest"),p)c.setRequestHeader(b,p[b]);t=function(e){return function(){t&&(t=n=c.onload=c.onerror=c.onabort=c.ontimeout=c.onreadystatechange=null,"abort"===e?c.abort():"error"===e?"number"!=typeof c.status?M(0,"error"):M(c.status,c.statusText):M(Qt[c.status]||c.status,c.statusText,"text"!==(c.responseType||"text")||"string"!=typeof c.responseText?{binary:c.response}:{text:c.responseText},c.getAllResponseHeaders()))}},c.onload=t(),n=c.onerror=c.ontimeout=t("error"),void 0!==c.onabort?c.onabort=n:c.onreadystatechange=function(){4===c.readyState&&o.setTimeout((function(){t&&n()}))},t=t("abort");try{c.send(e.hasContent&&e.data||null)}catch(e){if(t)throw e}},abort:function(){t&&t()}}})),g.ajaxPrefilter((function(e){e.crossDomain&&(e.contents.script=!1)})),g.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return g.globalEval(e),e}}}),g.ajaxPrefilter("script",(function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")})),g.ajaxTransport("script",(function(e){var t,n;if(e.crossDomain||e.scriptAttrs)return{send:function(o,p){t=g(" @endif @endif + + From db394a44e91d6b61d73cbcbd784bc5933d7f109a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josip=20Crnkovi=C4=87?= Date: Wed, 10 Jan 2024 11:44:04 +0100 Subject: [PATCH 073/145] fix: do not use Blade to render custom query if there are no parameters (#586) --- app/helpers.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/helpers.php b/app/helpers.php index 21f0c406a..99ff69b39 100644 --- a/app/helpers.php +++ b/app/helpers.php @@ -19,6 +19,10 @@ function get_query(string $name, array $params = []): string throw new Exception(sprintf('Cannot read file: %s', $name)); } + if (count($params) === 0) { + return $contents; + } + // @codeCoverageIgnoreEnd return Blade::render($contents, $params); From 0e4effae043e1910b9e1a03af2121e4cc2cf2536 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josip=20Crnkovi=C4=87?= Date: Thu, 11 Jan 2024 10:48:03 +0100 Subject: [PATCH 074/145] fix: flaky test in UI components (#589) --- .../CollectionsFullTable.test.tsx | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/resources/js/Components/Collections/CollectionsFullTable/CollectionsFullTable.test.tsx b/resources/js/Components/Collections/CollectionsFullTable/CollectionsFullTable.test.tsx index 5f7c41f8b..f8f76b231 100644 --- a/resources/js/Components/Collections/CollectionsFullTable/CollectionsFullTable.test.tsx +++ b/resources/js/Components/Collections/CollectionsFullTable/CollectionsFullTable.test.tsx @@ -266,4 +266,17 @@ describe("CollectionsFullTable", () => { expect(getByTestId("CollectionsTableItem__unknown-supply")).toBeInTheDocument(); }); + + it("should show supply if it exists", () => { + const { queryByTestId } = render( + , + ); + + expect(queryByTestId("CollectionsTableItem__unknown-supply")).not.toBeInTheDocument(); + }); }); From bcb50562d387d9b6d4a7dfd1deffe82f10646031 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josip=20Crnkovi=C4=87?= Date: Thu, 11 Jan 2024 11:48:45 +0100 Subject: [PATCH 075/145] fix: populate winners based on votes when seeding (#585) --- database/seeders/CollectionVotesSeeder.php | 83 +++++++++------------ database/seeders/LiveSeeder.php | 2 - database/seeders/WinnerCollectionSeeder.php | 44 ----------- 3 files changed, 35 insertions(+), 94 deletions(-) delete mode 100644 database/seeders/WinnerCollectionSeeder.php diff --git a/database/seeders/CollectionVotesSeeder.php b/database/seeders/CollectionVotesSeeder.php index 2a4771655..02ce28f21 100644 --- a/database/seeders/CollectionVotesSeeder.php +++ b/database/seeders/CollectionVotesSeeder.php @@ -5,70 +5,57 @@ namespace Database\Seeders; use App\Models\Collection; +use App\Models\CollectionWinner; use App\Models\Wallet; use Carbon\Carbon; use Exception; use Illuminate\Database\Seeder; -use Illuminate\Support\Collection as IlluminateCollection; class CollectionVotesSeeder extends Seeder { - private IlluminateCollection $excludedCollections; - - public function __construct() - { - $this->excludedCollections = collect(); - } - /** * @throws Exception */ public function run(): void { - // now - 4 months - 1 winner - $this->addVotes(collectionsCount: 1, winnerCount: 1, subMonths: 4); - - // now - 3 months - 2 winners - $this->addVotes(collectionsCount: 2, winnerCount: 2, subMonths: 3); + $existingIds = []; - // now - 2 months - 3 winners - $this->addVotes(collectionsCount: 3, winnerCount: 3, subMonths: 2); + collect([2023])->crossJoin(range(7, 12))->each(function ($item) use ($existingIds) { + [$year, $month] = $item; - // now - 1 month - 3 winners - 8 nominated - $this->addVotes(collectionsCount: 8, winnerCount: 3, subMonths: 1); + $collections = Collection::inRandomOrder()->whereNotIn('id', $existingIds)->limit(3)->get(); - // current month - 0 winners - 5 nominated - $this->addVotes(collectionsCount: 5, winnerCount: 0, subMonths: 0); - } - - /** - * @throws Exception - */ - private function addVotes(int $collectionsCount, int $winnerCount, int $subMonths) - { - $randomCollections = Collection::query() - ->whereNotIn('id', $this->excludedCollections) - ->inRandomOrder() - ->limit($collectionsCount) - ->get(); - - if ($randomCollections->count() < $collectionsCount) { - throw new Exception("Couldn't find enough collections to vote"); - } - - $this->excludedCollections->push(...$randomCollections->take($winnerCount)->pluck('id')); - - $votedAt = Carbon::now()->subMonths($subMonths); - - $randomCollections->map(function ($collection, $index) use ($votedAt, $collectionsCount, $winnerCount) { - $voteCount = $collectionsCount > $winnerCount && $winnerCount - $index > 0 ? $winnerCount - $index + 1 : 1; - - for ($i = 0; $i < $voteCount; $i++) { - $collection->votes()->create([ - 'wallet_id' => Wallet::factory()->create()->id, - 'voted_at' => $votedAt, - ]); + if (count($collections) < 3) { + return; } + + $existingIds = array_merge($existingIds, $collections->modelKeys()); + + $collections->each(function ($collection, $index) use ($year, $month) { + $votes = [ + random_int(11, 15), + random_int(6, 10), + random_int(1, 5), + ][$index]; + + $voteTime = now()->setYear($year)->setMonth($month)->subMonth(); + + for ($i = 0; $i < $votes; $i++) { + $collection->votes()->create([ + 'wallet_id' => Wallet::factory()->create()->id, + 'voted_at' => Carbon::createFromTimestamp(random_int($voteTime->startOfMonth()->timestamp, $voteTime->endOfMonth()->timestamp)), + ]); + } + + if (now()->year !== $year || now()->month !== $month) { + CollectionWinner::factory()->for($collection)->create([ + 'rank' => $index + 1, + 'votes' => $votes, + 'month' => $month, + 'year' => $year, + ]); + } + }); }); } } diff --git a/database/seeders/LiveSeeder.php b/database/seeders/LiveSeeder.php index 00e5feb0d..76780abdc 100644 --- a/database/seeders/LiveSeeder.php +++ b/database/seeders/LiveSeeder.php @@ -16,8 +16,6 @@ public function run(): void $this->call(DatabaseSeeder::class); $this->call(LiveUserSeeder::class); - $this->call(WinnerCollectionSeeder::class); - Cache::clear(); } } diff --git a/database/seeders/WinnerCollectionSeeder.php b/database/seeders/WinnerCollectionSeeder.php deleted file mode 100644 index a07effb30..000000000 --- a/database/seeders/WinnerCollectionSeeder.php +++ /dev/null @@ -1,44 +0,0 @@ -crossJoin(range(1, 12))->each(function ($item) use ($existingIds) { - [$year, $month] = $item; - - $collections = Collection::inRandomOrder()->whereNotIn('id', $existingIds)->limit(3)->get(); - - if (count($collections) < 3) { - return; - } - - if (now()->year === $year && now()->month === $month) { - return; - } - - $existingIds = array_merge($existingIds, $collections->modelKeys()); - - $collections->each(fn ($collection, $index) => CollectionWinner::factory()->for($collection)->create([ - 'rank' => $index + 1, - 'votes' => [ - random_int(21, 30), - random_int(11, 20), - random_int(1, 10), - ][$index], - 'month' => $month, - 'year' => $year, - ])); - }); - } -} From 0578ffec5dbada9ae4aa61336eb35086ec88e541 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josip=20Crnkovi=C4=87?= Date: Thu, 11 Jan 2024 11:50:17 +0100 Subject: [PATCH 076/145] fix: collection of the month error (#583) --- app/Models/CollectionWinner.php | 2 ++ .../js/Pages/Collections/CollectionOfTheMonth.tsx | 12 ++++++++---- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/app/Models/CollectionWinner.php b/app/Models/CollectionWinner.php index cbf6e433d..eb3e78bf9 100644 --- a/app/Models/CollectionWinner.php +++ b/app/Models/CollectionWinner.php @@ -53,6 +53,8 @@ public static function getByMonth(): LaravelCollection { $winners = static::query() ->with('collection', 'collection.floorPriceToken') + ->orderBy('year', 'desc') + ->orderBy('month', 'desc') ->get() ->groupBy(fn ($winner) => $winner->month.'-'.$winner->year); diff --git a/resources/js/Pages/Collections/CollectionOfTheMonth.tsx b/resources/js/Pages/Collections/CollectionOfTheMonth.tsx index 55fbd15ef..68e8f25b4 100644 --- a/resources/js/Pages/Collections/CollectionOfTheMonth.tsx +++ b/resources/js/Pages/Collections/CollectionOfTheMonth.tsx @@ -1,6 +1,7 @@ import { type PageProps, router } from "@inertiajs/core"; import { Head } from "@inertiajs/react"; import cn from "classnames"; +import { useMemo } from "react"; import { useTranslation } from "react-i18next"; import { WinnerCollections } from "./Components/WinnerCollections"; import { IconButton } from "@/Components/Buttons"; @@ -17,12 +18,15 @@ interface CollectionOfTheMonthProperties extends PageProps { const CollectionOfTheMonth = ({ title, winners }: CollectionOfTheMonthProperties): JSX.Element => { const { t } = useTranslation(); - const latestMonthWinners = winners.filter( - (winner) => winner.month === new Date().getMonth() && winner.year === new Date().getFullYear(), - )[0]; + const latestMonthWinners = winners[0]; const month = t(`common.months.${latestMonthWinners.month - 1}`); + const winnersWithoutLatest = useMemo( + () => winners.filter((w) => w.month !== latestMonthWinners.month || w.year !== latestMonthWinners.year), + [winners], + ); + return ( @@ -71,7 +75,7 @@ const CollectionOfTheMonth = ({ title, winners }: CollectionOfTheMonthProperties - + From a2ba9e4b06775b0c31dedb52e506d71134e23f95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josip=20Crnkovi=C4=87?= Date: Fri, 12 Jan 2024 12:20:39 +0100 Subject: [PATCH 077/145] refactor: fixate footer buttons of collection traits panel to bottom (#588) --- .../CollectionFilterSlider.tsx | 32 ++++++++++--------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/resources/js/Pages/Collections/Components/CollectionFilterSlider/CollectionFilterSlider.tsx b/resources/js/Pages/Collections/Components/CollectionFilterSlider/CollectionFilterSlider.tsx index acc7383e9..ec10e3563 100644 --- a/resources/js/Pages/Collections/Components/CollectionFilterSlider/CollectionFilterSlider.tsx +++ b/resources/js/Pages/Collections/Components/CollectionFilterSlider/CollectionFilterSlider.tsx @@ -91,22 +91,24 @@ export const CollectionFilterSlider = ({
    -
    - +
    +
    + - + +
    From 84a5b973812a2c2e132f9da6117ac6b3069b255f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josip=20Crnkovi=C4=87?= Date: Fri, 12 Jan 2024 12:20:57 +0100 Subject: [PATCH 078/145] fix: text color on the tab button should be `primary-900` (#590) --- resources/js/Components/Tabs.test.tsx | 2 +- resources/js/Components/Tabs.tsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/js/Components/Tabs.test.tsx b/resources/js/Components/Tabs.test.tsx index 5157ab223..8d49dadf4 100644 --- a/resources/js/Components/Tabs.test.tsx +++ b/resources/js/Components/Tabs.test.tsx @@ -82,7 +82,7 @@ describe("Tabs", () => { , ); - expect(screen.getByTestId("test").parentElement?.className).toContain("text-theme-secondary-900"); + expect(screen.getByTestId("test").parentElement?.className).toContain("text-theme-primary-900"); }); it("marks button as disabled", () => { diff --git a/resources/js/Components/Tabs.tsx b/resources/js/Components/Tabs.tsx index acced9516..101d2dd3d 100644 --- a/resources/js/Components/Tabs.tsx +++ b/resources/js/Components/Tabs.tsx @@ -56,7 +56,7 @@ const getTabClasses = ({ baseClassName, "justify-center select-none rounded-full px-4 h-8 text-sm -outline-offset-[3px]", { - "border-transparent bg-white text-theme-secondary-900 shadow-sm dark:bg-theme-dark-800 dark:text-theme-dark-50": + "border-transparent bg-white text-theme-primary-900 shadow-sm dark:bg-theme-dark-800 dark:text-theme-dark-50": selected, "active:bg-theme-secondary-200 hover:bg-theme-secondary-300 dark:hover:bg-theme-dark-900 dark:text-theme-dark-200": !selected && !disabled, From 7316b6cd41f2135ff1732b7c43ea89c2e139565f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josip=20Crnkovi=C4=87?= Date: Fri, 12 Jan 2024 12:21:17 +0100 Subject: [PATCH 079/145] refactor: change the font weight on "Time left" label (#591) --- .../Collections/Components/CollectionVoting/VoteCountdown.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/js/Pages/Collections/Components/CollectionVoting/VoteCountdown.tsx b/resources/js/Pages/Collections/Components/CollectionVoting/VoteCountdown.tsx index d4a8f6a34..c2e3a73b7 100644 --- a/resources/js/Pages/Collections/Components/CollectionVoting/VoteCountdown.tsx +++ b/resources/js/Pages/Collections/Components/CollectionVoting/VoteCountdown.tsx @@ -93,7 +93,7 @@ export const VoteCountdown = ({ hasUserVoted, onSubmit, isDisabled }: Properties )} -
    +
    {t("pages.collections.vote.time_left")} {": "} {countdownDisplay} From e5dcad3e1415b1ab281dbc8d22246b79f113d102 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josip=20Crnkovi=C4=87?= Date: Fri, 12 Jan 2024 12:21:58 +0100 Subject: [PATCH 080/145] refactor: ensure winner avatars are clickable on the cotm page (#592) --- .../CollectionOfTheMonthWinners.blocks.tsx | 50 +++++++++++++------ 1 file changed, 35 insertions(+), 15 deletions(-) diff --git a/resources/js/Components/Collections/CollectionOfTheMonthWinners/CollectionOfTheMonthWinners.blocks.tsx b/resources/js/Components/Collections/CollectionOfTheMonthWinners/CollectionOfTheMonthWinners.blocks.tsx index 83e532223..f180dae59 100644 --- a/resources/js/Components/Collections/CollectionOfTheMonthWinners/CollectionOfTheMonthWinners.blocks.tsx +++ b/resources/js/Components/Collections/CollectionOfTheMonthWinners/CollectionOfTheMonthWinners.blocks.tsx @@ -3,6 +3,7 @@ import React from "react"; import { useTranslation } from "react-i18next"; import { Img } from "@/Components/Image"; import { Link } from "@/Components/Link"; +import { Tooltip } from "@/Components/Tooltip"; import { useDarkModeContext } from "@/Contexts/DarkModeContext"; import { CrownBadge, @@ -52,19 +53,32 @@ export const CollectionOfTheMonthWinnersWinnerWrapper = ({ export const CollectionOfTheMonthWinnersCollectionAvatar = ({ image, large, + slug, + name, }: { image: string | null; large: boolean; + slug: string; + name: string | null; }): JSX.Element => ( - + +
    + + + +
    +
    ); export const CollectionOfTheMonthWinnersChart = ({ @@ -178,13 +192,15 @@ export const WinnersChart = ({ > Date: Fri, 12 Jan 2024 12:22:37 +0100 Subject: [PATCH 081/145] fix: place "previous winners" In a "vote for cotm" block (#593) --- .../CollectionOfTheMonthWinners.blocks.tsx | 58 ++++++++++--------- .../CollectionVoting/VoteCollections.tsx | 2 +- resources/js/Pages/Collections/Index.tsx | 3 +- 3 files changed, 33 insertions(+), 30 deletions(-) diff --git a/resources/js/Components/Collections/CollectionOfTheMonthWinners/CollectionOfTheMonthWinners.blocks.tsx b/resources/js/Components/Collections/CollectionOfTheMonthWinners/CollectionOfTheMonthWinners.blocks.tsx index f180dae59..5b9fc6680 100644 --- a/resources/js/Components/Collections/CollectionOfTheMonthWinners/CollectionOfTheMonthWinners.blocks.tsx +++ b/resources/js/Components/Collections/CollectionOfTheMonthWinners/CollectionOfTheMonthWinners.blocks.tsx @@ -325,39 +325,41 @@ export const WinnersChartMobile = ({ const { t } = useTranslation(); return ( -
    -
    -
    -
    -
    - -
    +
    +
    +
    +
    +
    +
    + +
    -
    - {isDark ? : } +
    + {isDark ? : } +
    + + + {t("pages.collections.collection_of_the_month.winners_month", { + month: previousMonth, + })} +
    - - {t("pages.collections.collection_of_the_month.winners_month", { - month: previousMonth, - })} - + + {t("pages.collections.collection_of_the_month.view_previous_winners")} +
    - - - {t("pages.collections.collection_of_the_month.view_previous_winners")} -
    ); diff --git a/resources/js/Pages/Collections/Components/CollectionVoting/VoteCollections.tsx b/resources/js/Pages/Collections/Components/CollectionVoting/VoteCollections.tsx index 64e39a9cc..e5af64ea2 100644 --- a/resources/js/Pages/Collections/Components/CollectionVoting/VoteCollections.tsx +++ b/resources/js/Pages/Collections/Components/CollectionVoting/VoteCollections.tsx @@ -96,7 +96,7 @@ export const VoteCollections = ({ return ( <> -
    +
    +
    Date: Fri, 12 Jan 2024 15:41:18 +0100 Subject: [PATCH 082/145] fix: change voting limit to once a month instead of 30 days (#595) --- .../Controllers/CollectionVoteController.php | 2 +- .../CollectionVoteControllerTest.php | 24 ++++++++++++++++++- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/app/Http/Controllers/CollectionVoteController.php b/app/Http/Controllers/CollectionVoteController.php index 0614d6540..4d40b6ffc 100644 --- a/app/Http/Controllers/CollectionVoteController.php +++ b/app/Http/Controllers/CollectionVoteController.php @@ -12,7 +12,7 @@ class CollectionVoteController extends Controller { public function store(Request $request, Collection $collection): RedirectResponse { - if ($request->wallet()->votes()->where('voted_at', '>=', now()->subMonth())->exists()) { + if ($request->wallet()->votes()->inCurrentMonth()->exists()) { return back()->toast(trans('pages.collections.collection_of_the_month.vote_failed'), type: 'error'); } diff --git a/tests/App/Http/Controllers/CollectionVoteControllerTest.php b/tests/App/Http/Controllers/CollectionVoteControllerTest.php index 82992160b..e500b053c 100644 --- a/tests/App/Http/Controllers/CollectionVoteControllerTest.php +++ b/tests/App/Http/Controllers/CollectionVoteControllerTest.php @@ -5,6 +5,7 @@ use App\Models\Collection; use App\Models\CollectionVote; use App\Support\Facades\Signature; +use Carbon\Carbon; describe('user without a signed wallet', function () { beforeEach(function () { @@ -45,10 +46,12 @@ expect($collection->votes()->count())->toBe(2); }); - it('cannot vote if already voted for a collection in the last month', function () { + it('cannot vote if already voted for a collection in the current month', function () { $user = createUser(); $collection = Collection::factory()->create(); + Carbon::setTestNow('2023-12-20'); + CollectionVote::factory()->for($collection)->for($user->wallet)->create([ 'voted_at' => now()->subDays(3), ]); @@ -61,4 +64,23 @@ expect($collection->votes()->count())->toBe(1); }); + + it('allows users to vote even if they voted a few days ago, but in a previous month', function () { + $user = createUser(); + $collection = Collection::factory()->create(); + + CollectionVote::factory()->for($collection)->for($user->wallet)->create([ + 'voted_at' => Carbon::parse('2023-11-30'), + ]); + + expect($collection->votes()->count())->toBe(1); + + Carbon::setTestNow('2023-12-01'); + + $this->actingAs($user) + ->post(route('collection-votes.create', $collection)) + ->assertStatus(302); + + expect($collection->votes()->count())->toBe(2); + }); }); From 7c8ed0f00fd921fe4850762374ce3eb7ada2debd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josip=20Crnkovi=C4=87?= Date: Mon, 15 Jan 2024 10:34:56 +0100 Subject: [PATCH 083/145] fix: "featured collections" overflows onto the next line on 768px (#594) --- resources/js/Components/Articles/Article.blocks.test.tsx | 3 ++- resources/js/Components/Articles/Article.blocks.tsx | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/resources/js/Components/Articles/Article.blocks.test.tsx b/resources/js/Components/Articles/Article.blocks.test.tsx index f3420e8e8..5376a079c 100644 --- a/resources/js/Components/Articles/Article.blocks.test.tsx +++ b/resources/js/Components/Articles/Article.blocks.test.tsx @@ -5,7 +5,8 @@ import { render, screen } from "@/Tests/testing-library"; describe("ArticleCardBlocks", () => { it("should calculate featured collection counts", () => { - expect(calculateCircleCount(10, 140)).toBe(5); + expect(calculateCircleCount(10, 200)).toBe(7); + expect(calculateCircleCount(10, 140)).toBe(4); expect(calculateCircleCount(5, 150)).toBe(5); expect(calculateCircleCount(2, 45)).toBe(2); }); diff --git a/resources/js/Components/Articles/Article.blocks.tsx b/resources/js/Components/Articles/Article.blocks.tsx index 760dad149..25599ae39 100644 --- a/resources/js/Components/Articles/Article.blocks.tsx +++ b/resources/js/Components/Articles/Article.blocks.tsx @@ -7,7 +7,7 @@ import { Img } from "@/Components/Image"; import { Tooltip } from "@/Components/Tooltip"; export const calculateCircleCount = (totalCount: number, availableWidth: number): number => { - const circleWidth = 20; + const circleWidth = 22; const overlapWidth = 4; const hiddenLabelWidth = 29; From 4e0bb5a58d61f608cb19b66ad965c43a7dd9b9c5 Mon Sep 17 00:00:00 2001 From: ItsANameToo <35610748+ItsANameToo@users.noreply.github.com> Date: Mon, 15 Jan 2024 10:35:28 +0100 Subject: [PATCH 084/145] chore: update JavaScript dependencies (#596) --- package.json | 36 +-- pnpm-lock.yaml | 749 +++++++++++++++++++++++-------------------------- 2 files changed, 374 insertions(+), 411 deletions(-) diff --git a/package.json b/package.json index 82b1cdabe..3dfc2e702 100644 --- a/package.json +++ b/package.json @@ -30,17 +30,17 @@ "@inertiajs/core": "^1.0.14", "@inertiajs/react": "^1.0.14", "@radix-ui/react-accordion": "^1.1.2", - "@storybook/addon-actions": "^7.6.7", - "@storybook/addon-essentials": "^7.6.7", - "@storybook/addon-interactions": "^7.6.7", - "@storybook/addon-links": "^7.6.7", - "@storybook/blocks": "^7.6.7", - "@storybook/react": "^7.6.7", - "@storybook/react-vite": "^7.6.7", + "@storybook/addon-actions": "^7.6.8", + "@storybook/addon-essentials": "^7.6.8", + "@storybook/addon-interactions": "^7.6.8", + "@storybook/addon-links": "^7.6.8", + "@storybook/blocks": "^7.6.8", + "@storybook/react": "^7.6.8", + "@storybook/react-vite": "^7.6.8", "@storybook/testing-library": "^0.2.2", - "@storybook/types": "^7.6.7", + "@storybook/types": "^7.6.8", "@tailwindcss/forms": "^0.5.7", - "@testing-library/dom": "^9.3.3", + "@testing-library/dom": "^9.3.4", "@testing-library/react": "^14.1.2", "@testing-library/react-hooks": "^8.0.1", "@testing-library/user-event": "^14.5.2", @@ -49,15 +49,15 @@ "@types/file-saver": "^2.0.7", "@types/lodash": "^4.14.202", "@types/lru-cache": "^7.10.10", - "@types/node": "^18.19.4", + "@types/node": "^18.19.6", "@types/react": "^18.2.47", "@types/react-dom": "^18.2.18", "@types/react-table": "^7.7.19", "@types/sortablejs": "^1.15.7", "@types/testing-library__jest-dom": "^6.0.0", "@types/ziggy-js": "^1.3.3", - "@typescript-eslint/eslint-plugin": "^6.18.0", - "@typescript-eslint/parser": "^6.18.0", + "@typescript-eslint/eslint-plugin": "^6.18.1", + "@typescript-eslint/parser": "^6.18.1", "@vavt/vite-plugin-import-markdown": "^1.0.0", "@vitejs/plugin-react": "^4.2.1", "@vitest/coverage-istanbul": "^0.34.6", @@ -73,9 +73,9 @@ "eslint-config-prettier": "^9.1.0", "eslint-config-standard-with-typescript": "^39.1.1", "eslint-plugin-import": "^2.29.1", - "eslint-plugin-n": "^16.6.1", + "eslint-plugin-n": "^16.6.2", "eslint-plugin-prefer-arrow": "^1.2.3", - "eslint-plugin-prettier": "^5.1.2", + "eslint-plugin-prettier": "^5.1.3", "eslint-plugin-promise": "^6.1.1", "eslint-plugin-react": "^7.33.2", "eslint-plugin-sonarjs": "^0.23.0", @@ -93,7 +93,7 @@ "msw": "^1.3.2", "php-parser": "^3.1.5", "postcss": "^8.4.33", - "prettier": "^3.1.1", + "prettier": "^3.2.1", "prettier-plugin-tailwindcss": "^0.5.11", "react": "^18.2.0", "react-chartjs-2": "^5.2.0", @@ -119,7 +119,7 @@ "@ardenthq/sdk-intl": "^1.2.7", "@metamask/providers": "^10.2.1", "@popperjs/core": "^2.11.8", - "@storybook/addon-docs": "^7.6.7", + "@storybook/addon-docs": "^7.6.8", "@tanstack/react-query": "^4.36.1", "@testing-library/jest-dom": "^6.2.0", "@types/string-hash": "^1.1.3", @@ -150,13 +150,13 @@ "rehype-raw": "^7.0.0", "rehype-stringify": "^10.0.0", "remark-gfm": "^4.0.0", - "remark-rehype": "^11.0.0", + "remark-rehype": "^11.1.0", "sortablejs": "^1.15.1", "string-hash": "^1.1.3", "tailwind-merge": "^1.14.0", "tippy.js": "^6.3.7", "unified": "^11.0.4", "unist-util-visit": "^5.0.0", - "wavesurfer.js": "^7.6.1" + "wavesurfer.js": "^7.6.4" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3a3b905a3..4380caddc 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -18,8 +18,8 @@ dependencies: specifier: ^2.11.8 version: 2.11.8 '@storybook/addon-docs': - specifier: ^7.6.7 - version: 7.6.7(@types/react-dom@18.2.18)(@types/react@18.2.47)(react-dom@18.2.0)(react@18.2.0) + specifier: ^7.6.8 + version: 7.6.8(@types/react-dom@18.2.18)(@types/react@18.2.47)(react-dom@18.2.0)(react@18.2.0) '@tanstack/react-query': specifier: ^4.36.1 version: 4.36.1(react-dom@18.2.0)(react@18.2.0) @@ -111,8 +111,8 @@ dependencies: specifier: ^4.0.0 version: 4.0.0 remark-rehype: - specifier: ^11.0.0 - version: 11.0.0 + specifier: ^11.1.0 + version: 11.1.0 sortablejs: specifier: ^1.15.1 version: 1.15.1 @@ -132,8 +132,8 @@ dependencies: specifier: ^5.0.0 version: 5.0.0 wavesurfer.js: - specifier: ^7.6.1 - version: 7.6.1 + specifier: ^7.6.4 + version: 7.6.4 devDependencies: '@babel/core': @@ -158,38 +158,38 @@ devDependencies: specifier: ^1.1.2 version: 1.1.2(@types/react-dom@18.2.18)(@types/react@18.2.47)(react-dom@18.2.0)(react@18.2.0) '@storybook/addon-actions': - specifier: ^7.6.7 - version: 7.6.7 + specifier: ^7.6.8 + version: 7.6.8 '@storybook/addon-essentials': - specifier: ^7.6.7 - version: 7.6.7(@types/react-dom@18.2.18)(@types/react@18.2.47)(react-dom@18.2.0)(react@18.2.0) + specifier: ^7.6.8 + version: 7.6.8(@types/react-dom@18.2.18)(@types/react@18.2.47)(react-dom@18.2.0)(react@18.2.0) '@storybook/addon-interactions': - specifier: ^7.6.7 - version: 7.6.7 + specifier: ^7.6.8 + version: 7.6.8 '@storybook/addon-links': - specifier: ^7.6.7 - version: 7.6.7(react@18.2.0) + specifier: ^7.6.8 + version: 7.6.8(react@18.2.0) '@storybook/blocks': - specifier: ^7.6.7 - version: 7.6.7(@types/react-dom@18.2.18)(@types/react@18.2.47)(react-dom@18.2.0)(react@18.2.0) + specifier: ^7.6.8 + version: 7.6.8(@types/react-dom@18.2.18)(@types/react@18.2.47)(react-dom@18.2.0)(react@18.2.0) '@storybook/react': - specifier: ^7.6.7 - version: 7.6.7(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + specifier: ^7.6.8 + version: 7.6.8(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) '@storybook/react-vite': - specifier: ^7.6.7 - version: 7.6.7(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3)(vite@4.5.1) + specifier: ^7.6.8 + version: 7.6.8(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3)(vite@4.5.1) '@storybook/testing-library': specifier: ^0.2.2 version: 0.2.2 '@storybook/types': - specifier: ^7.6.7 - version: 7.6.7 + specifier: ^7.6.8 + version: 7.6.8 '@tailwindcss/forms': specifier: ^0.5.7 version: 0.5.7(tailwindcss@3.4.1) '@testing-library/dom': - specifier: ^9.3.3 - version: 9.3.3 + specifier: ^9.3.4 + version: 9.3.4 '@testing-library/react': specifier: ^14.1.2 version: 14.1.2(react-dom@18.2.0)(react@18.2.0) @@ -198,7 +198,7 @@ devDependencies: version: 8.0.1(@types/react@18.2.47)(react-dom@18.2.0)(react@18.2.0) '@testing-library/user-event': specifier: ^14.5.2 - version: 14.5.2(@testing-library/dom@9.3.3) + version: 14.5.2(@testing-library/dom@9.3.4) '@tippyjs/react': specifier: ^4.2.6 version: 4.2.6(react-dom@18.2.0)(react@18.2.0) @@ -215,8 +215,8 @@ devDependencies: specifier: ^7.10.10 version: 7.10.10 '@types/node': - specifier: ^18.19.4 - version: 18.19.4 + specifier: ^18.19.6 + version: 18.19.6 '@types/react': specifier: ^18.2.47 version: 18.2.47 @@ -236,11 +236,11 @@ devDependencies: specifier: ^1.3.3 version: 1.3.3 '@typescript-eslint/eslint-plugin': - specifier: ^6.18.0 - version: 6.18.0(@typescript-eslint/parser@6.18.0)(eslint@8.56.0)(typescript@5.3.3) + specifier: ^6.18.1 + version: 6.18.1(@typescript-eslint/parser@6.18.1)(eslint@8.56.0)(typescript@5.3.3) '@typescript-eslint/parser': - specifier: ^6.18.0 - version: 6.18.0(eslint@8.56.0)(typescript@5.3.3) + specifier: ^6.18.1 + version: 6.18.1(eslint@8.56.0)(typescript@5.3.3) '@vavt/vite-plugin-import-markdown': specifier: ^1.0.0 version: 1.0.0(vite@4.5.1) @@ -279,19 +279,19 @@ devDependencies: version: 9.1.0(eslint@8.56.0) eslint-config-standard-with-typescript: specifier: ^39.1.1 - version: 39.1.1(@typescript-eslint/eslint-plugin@6.18.0)(eslint-plugin-import@2.29.1)(eslint-plugin-n@16.6.1)(eslint-plugin-promise@6.1.1)(eslint@8.56.0)(typescript@5.3.3) + version: 39.1.1(@typescript-eslint/eslint-plugin@6.18.1)(eslint-plugin-import@2.29.1)(eslint-plugin-n@16.6.2)(eslint-plugin-promise@6.1.1)(eslint@8.56.0)(typescript@5.3.3) eslint-plugin-import: specifier: ^2.29.1 - version: 2.29.1(@typescript-eslint/parser@6.18.0)(eslint@8.56.0) + version: 2.29.1(@typescript-eslint/parser@6.18.1)(eslint@8.56.0) eslint-plugin-n: - specifier: ^16.6.1 - version: 16.6.1(eslint@8.56.0) + specifier: ^16.6.2 + version: 16.6.2(eslint@8.56.0) eslint-plugin-prefer-arrow: specifier: ^1.2.3 version: 1.2.3(eslint@8.56.0) eslint-plugin-prettier: - specifier: ^5.1.2 - version: 5.1.2(eslint-config-prettier@9.1.0)(eslint@8.56.0)(prettier@3.1.1) + specifier: ^5.1.3 + version: 5.1.3(eslint-config-prettier@9.1.0)(eslint@8.56.0)(prettier@3.2.1) eslint-plugin-promise: specifier: ^6.1.1 version: 6.1.1(eslint@8.56.0) @@ -309,7 +309,7 @@ devDependencies: version: 48.0.1(eslint@8.56.0) eslint-plugin-unused-imports: specifier: ^3.0.0 - version: 3.0.0(@typescript-eslint/eslint-plugin@6.18.0)(eslint@8.56.0) + version: 3.0.0(@typescript-eslint/eslint-plugin@6.18.1)(eslint@8.56.0) husky: specifier: ^8.0.3 version: 8.0.3 @@ -344,11 +344,11 @@ devDependencies: specifier: ^8.4.33 version: 8.4.33 prettier: - specifier: ^3.1.1 - version: 3.1.1 + specifier: ^3.2.1 + version: 3.2.1 prettier-plugin-tailwindcss: specifier: ^0.5.11 - version: 0.5.11(prettier@3.1.1) + version: 0.5.11(prettier@3.2.1) react: specifier: ^18.2.0 version: 18.2.0 @@ -372,7 +372,7 @@ devDependencies: version: 7.6.0-beta.2 storybook-react-i18next: specifier: ^2.0.10 - version: 2.0.10(@storybook/components@7.6.5)(@storybook/manager-api@7.6.5)(@storybook/preview-api@7.6.5)(@storybook/types@7.6.7)(i18next-browser-languagedetector@7.2.0)(i18next-http-backend@2.4.2)(i18next@22.5.1)(react-dom@18.2.0)(react-i18next@12.3.1)(react@18.2.0) + version: 2.0.10(@storybook/components@7.6.7)(@storybook/manager-api@7.6.7)(@storybook/preview-api@7.6.7)(@storybook/types@7.6.8)(i18next-browser-languagedetector@7.2.0)(i18next-http-backend@2.4.2)(i18next@22.5.1)(react-dom@18.2.0)(react-i18next@12.3.1)(react@18.2.0) swiper: specifier: ^9.4.1 version: 9.4.1 @@ -390,7 +390,7 @@ devDependencies: version: 2.9.2 vite: specifier: ^4.5.1 - version: 4.5.1(@types/node@18.19.4) + version: 4.5.1(@types/node@18.19.6) vite-plugin-svgr: specifier: ^2.4.0 version: 2.4.0(vite@4.5.1) @@ -455,13 +455,6 @@ packages: default-browser-id: 3.0.0 dev: true - /@babel/code-frame@7.22.5: - resolution: {integrity: sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/highlight': 7.23.4 - dev: true - /@babel/code-frame@7.23.5: resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==} engines: {node: '>=6.9.0'} @@ -1699,23 +1692,6 @@ packages: '@babel/parser': 7.23.6 '@babel/types': 7.23.6 - /@babel/traverse@7.23.6: - resolution: {integrity: sha512-czastdK1e8YByZqezMPFiZ8ahwVMh/ESl9vPgvgdB9AmFMGP5jfpFax74AQgl5zj4XHzqeYAg2l8PuUeRS1MgQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.23.5 - '@babel/generator': 7.23.6 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/parser': 7.23.6 - '@babel/types': 7.23.6 - debug: 4.3.4 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - /@babel/traverse@7.23.7: resolution: {integrity: sha512-tY3mM8rH9jM0YHFGyfC0/xf+SB5eKUu7HPj7/k3fpi9dAlsMc5YbQvDi0Sh2QTPXqMhyaAtzAr807TIyfQrmyg==} engines: {node: '>=6.9.0'} @@ -1962,7 +1938,7 @@ packages: ajv: 6.12.6 debug: 4.3.4 espree: 9.6.1 - globals: 13.20.0 + globals: 13.24.0 ignore: 5.2.4 import-fresh: 3.3.0 js-yaml: 4.1.0 @@ -2438,7 +2414,7 @@ packages: dependencies: '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 18.19.4 + '@types/node': 18.19.6 '@types/yargs': 16.0.5 chalk: 4.1.2 dev: true @@ -2450,7 +2426,7 @@ packages: '@jest/schemas': 29.6.0 '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 18.19.4 + '@types/node': 18.19.6 '@types/yargs': 17.0.24 chalk: 4.1.2 @@ -2468,7 +2444,7 @@ packages: magic-string: 0.27.0 react-docgen-typescript: 2.2.2(typescript@5.3.3) typescript: 5.3.3 - vite: 4.5.1(@types/node@18.19.4) + vite: 4.5.1(@types/node@18.19.6) dev: true /@jridgewell/gen-mapping@0.3.3: @@ -3281,10 +3257,10 @@ packages: /@sinclair/typebox@0.27.8: resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} - /@storybook/addon-actions@7.6.7: - resolution: {integrity: sha512-+6EZvhIeKEqG/RNsU3R5DxOrd60BL5GEvmzE2w60s2eKaNNxtyilDjiO1g4z2s2zDNyr7JL/Ft03pJ0Jgo0lew==} + /@storybook/addon-actions@7.6.8: + resolution: {integrity: sha512-/KQlr/nLsAazJuSVUoMjQdwAeeXkKEtElKdqXrqI1LVOi5a7kMgB+bmn9aKX+7VBQLfQ36Btyty+FaY7bRtehQ==} dependencies: - '@storybook/core-events': 7.6.7 + '@storybook/core-events': 7.6.8 '@storybook/global': 5.0.0 '@types/uuid': 9.0.7 dequal: 2.0.3 @@ -3292,18 +3268,18 @@ packages: uuid: 9.0.0 dev: true - /@storybook/addon-backgrounds@7.6.7: - resolution: {integrity: sha512-55sBy1YUqponAVe+qL16qtWxdf63vHEnIoqFyHEwGpk7K9IhFA1BmdSpFr5VnWEwXeJXKj30db78frh2LUdk3Q==} + /@storybook/addon-backgrounds@7.6.8: + resolution: {integrity: sha512-b+Oj41z2W/Pv6oCXmcjGdNkOStbVItrlDoIeUGyDKrngzH9Kpv5u2XZTHkZWGWusLhOVq8ENBDqj6ENRL6kDtw==} dependencies: '@storybook/global': 5.0.0 memoizerific: 1.11.3 ts-dedent: 2.2.0 dev: true - /@storybook/addon-controls@7.6.7(@types/react-dom@18.2.18)(@types/react@18.2.47)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-DJ3gfvcdCgqi7AQxu83vx0AEUKiuJrNcSATfWV3Jqi8dH6fYO2yqpemHEeWOEy+DAHxIOaqLKwb1QjIBj+vSRQ==} + /@storybook/addon-controls@7.6.8(@types/react-dom@18.2.18)(@types/react@18.2.47)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-vjBwO1KbjB3l74qOVvLvks4LJjAIStr2n4j7Grdhqf2eeQvj122gT51dXstndtMNFqNHD4y3eImwNAbuaYrrnw==} dependencies: - '@storybook/blocks': 7.6.7(@types/react-dom@18.2.18)(@types/react@18.2.47)(react-dom@18.2.0)(react@18.2.0) + '@storybook/blocks': 7.6.8(@types/react-dom@18.2.18)(@types/react@18.2.47)(react-dom@18.2.0)(react@18.2.0) lodash: 4.17.21 ts-dedent: 2.2.0 transitivePeerDependencies: @@ -3315,27 +3291,27 @@ packages: - supports-color dev: true - /@storybook/addon-docs@7.6.7(@types/react-dom@18.2.18)(@types/react@18.2.47)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-2dfajNhweofJ3LxjGO83UE5sBMvKtJB0Agj7q8mMtK/9PUCUcbvsFSyZnO/s6X1zAjSn5ZrirbSoTXU4IqxwSA==} + /@storybook/addon-docs@7.6.8(@types/react-dom@18.2.18)(@types/react@18.2.47)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-vl7jNKT8x8Hnwn38l5cUr6TQZFCmx09VxarGUrMEO4mwTOoVRL2ofoh9JKFXhCiCHlMI9R0lnupGB/LAplWgPg==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: '@jest/transform': 29.6.1 '@mdx-js/react': 2.3.0(react@18.2.0) - '@storybook/blocks': 7.6.7(@types/react-dom@18.2.18)(@types/react@18.2.47)(react-dom@18.2.0)(react@18.2.0) - '@storybook/client-logger': 7.6.7 - '@storybook/components': 7.6.7(@types/react-dom@18.2.18)(@types/react@18.2.47)(react-dom@18.2.0)(react@18.2.0) - '@storybook/csf-plugin': 7.6.7 - '@storybook/csf-tools': 7.6.7 + '@storybook/blocks': 7.6.8(@types/react-dom@18.2.18)(@types/react@18.2.47)(react-dom@18.2.0)(react@18.2.0) + '@storybook/client-logger': 7.6.8 + '@storybook/components': 7.6.8(@types/react-dom@18.2.18)(@types/react@18.2.47)(react-dom@18.2.0)(react@18.2.0) + '@storybook/csf-plugin': 7.6.8 + '@storybook/csf-tools': 7.6.8 '@storybook/global': 5.0.0 '@storybook/mdx2-csf': 1.1.0 - '@storybook/node-logger': 7.6.7 - '@storybook/postinstall': 7.6.7 - '@storybook/preview-api': 7.6.7 - '@storybook/react-dom-shim': 7.6.7(react-dom@18.2.0)(react@18.2.0) - '@storybook/theming': 7.6.7(react-dom@18.2.0)(react@18.2.0) - '@storybook/types': 7.6.7 + '@storybook/node-logger': 7.6.8 + '@storybook/postinstall': 7.6.8 + '@storybook/preview-api': 7.6.8 + '@storybook/react-dom-shim': 7.6.8(react-dom@18.2.0)(react@18.2.0) + '@storybook/theming': 7.6.8(react-dom@18.2.0)(react@18.2.0) + '@storybook/types': 7.6.8 fs-extra: 11.1.1 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -3348,25 +3324,25 @@ packages: - encoding - supports-color - /@storybook/addon-essentials@7.6.7(@types/react-dom@18.2.18)(@types/react@18.2.47)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-nNLMrpIvc04z4XCA+kval/44eKAFJlUJeeL2pxwP7F/PSzjWe5BXv1bQHOiw8inRO5II0PzqwWnVCI9jsj7K5A==} + /@storybook/addon-essentials@7.6.8(@types/react-dom@18.2.18)(@types/react@18.2.47)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-UoRZWPkDYL/UWsfAJk4q4nn5nayYdOvPApVsF/ZDnGsiv1zB2RpqbkiD1bfxPlGEVCoB+NQIN2s867gEpf+DjA==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: - '@storybook/addon-actions': 7.6.7 - '@storybook/addon-backgrounds': 7.6.7 - '@storybook/addon-controls': 7.6.7(@types/react-dom@18.2.18)(@types/react@18.2.47)(react-dom@18.2.0)(react@18.2.0) - '@storybook/addon-docs': 7.6.7(@types/react-dom@18.2.18)(@types/react@18.2.47)(react-dom@18.2.0)(react@18.2.0) - '@storybook/addon-highlight': 7.6.7 - '@storybook/addon-measure': 7.6.7 - '@storybook/addon-outline': 7.6.7 - '@storybook/addon-toolbars': 7.6.7 - '@storybook/addon-viewport': 7.6.7 - '@storybook/core-common': 7.6.7 - '@storybook/manager-api': 7.6.7(react-dom@18.2.0)(react@18.2.0) - '@storybook/node-logger': 7.6.7 - '@storybook/preview-api': 7.6.7 + '@storybook/addon-actions': 7.6.8 + '@storybook/addon-backgrounds': 7.6.8 + '@storybook/addon-controls': 7.6.8(@types/react-dom@18.2.18)(@types/react@18.2.47)(react-dom@18.2.0)(react@18.2.0) + '@storybook/addon-docs': 7.6.8(@types/react-dom@18.2.18)(@types/react@18.2.47)(react-dom@18.2.0)(react@18.2.0) + '@storybook/addon-highlight': 7.6.8 + '@storybook/addon-measure': 7.6.8 + '@storybook/addon-outline': 7.6.8 + '@storybook/addon-toolbars': 7.6.8 + '@storybook/addon-viewport': 7.6.8 + '@storybook/core-common': 7.6.8 + '@storybook/manager-api': 7.6.8(react-dom@18.2.0)(react@18.2.0) + '@storybook/node-logger': 7.6.8 + '@storybook/preview-api': 7.6.8 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) ts-dedent: 2.2.0 @@ -3377,24 +3353,24 @@ packages: - supports-color dev: true - /@storybook/addon-highlight@7.6.7: - resolution: {integrity: sha512-2F/tJdn45d4zrvf/cmE1vsczl99wK8+I+kkj0G7jLsrJR0w1zTgbgjy6T9j86HBTBvWcnysNFNIRWPAOh5Wdbw==} + /@storybook/addon-highlight@7.6.8: + resolution: {integrity: sha512-3mUfdLxaegCKWSm0i245RhnmEgkE+uLnOkE7h2kiztrWGqYuzGBKjgfZuVrftqsEWWc7LlJ1xdDZsIgs5Z06gA==} dependencies: '@storybook/global': 5.0.0 dev: true - /@storybook/addon-interactions@7.6.7: - resolution: {integrity: sha512-iXE2m9i/1D2baYkRgoYe9zwcAjtBOxBfW4o2AS0pzBNPN7elpP9C6mIa0ScpSltawBfIjfe6iQRXAMXOsIIh3Q==} + /@storybook/addon-interactions@7.6.8: + resolution: {integrity: sha512-E1ZMrJ/4larCPW92AFuY71I9s8Ri+DEdwNtVnU/WV55NA+E9oRKt5/qOrJLcjQorViwh9KOHeeuc8kagA2hjnA==} dependencies: '@storybook/global': 5.0.0 - '@storybook/types': 7.6.7 + '@storybook/types': 7.6.8 jest-mock: 27.5.1 polished: 4.2.2 ts-dedent: 2.2.0 dev: true - /@storybook/addon-links@7.6.7(react@18.2.0): - resolution: {integrity: sha512-O5LekPslkAIDtXC/TCIyg/3c0htBxDYwb/s+NrZUPTNWJsngxvTAwp6aIk6aVSeSCFUMWvBFcVsuV3hv+ndK6w==} + /@storybook/addon-links@7.6.8(react@18.2.0): + resolution: {integrity: sha512-lw+xMvzfhyOR5I5792rGCf31OfVsiNG+uCc6CEewjKdC+e4GZDXzAkLIrLVUvbf6iUvHzERD63Y5nKz2bt5yZA==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 peerDependenciesMeta: @@ -3407,47 +3383,47 @@ packages: ts-dedent: 2.2.0 dev: true - /@storybook/addon-measure@7.6.7: - resolution: {integrity: sha512-t1RnnNO4Xzgnsxu63FlZwsCTF0+9jKxr44NiJAUOxW9ppbCvs/JfSDOOvcDRtPWyjgnyzexNUUctMfxvLrU01A==} + /@storybook/addon-measure@7.6.8: + resolution: {integrity: sha512-76ItcwATq3BRPEtGV5Apby3E+7tOn6d5dtNpBYBZOdjUsj6E+uFtdmfHrc1Bt1ersJ7hRDCgsHArqOGXeLuDrw==} dependencies: '@storybook/global': 5.0.0 tiny-invariant: 1.3.1 dev: true - /@storybook/addon-outline@7.6.7: - resolution: {integrity: sha512-gu2y46ijjMkXlxy1f8Cctgjw5b5y8vSIqNAYlrs5/Qy+hJAWyU6lj2PFGOCCUG4L+F45fAjwWAin6qz43+WnRQ==} + /@storybook/addon-outline@7.6.8: + resolution: {integrity: sha512-eTHreyvxYLIPt5AbMyDO3CEgGClQFt+CtA/RgSjpyv9MgYXPsZp/h1ZHpYYhSPRYnRE4//YnPMuk7eLf4udaag==} dependencies: '@storybook/global': 5.0.0 ts-dedent: 2.2.0 dev: true - /@storybook/addon-toolbars@7.6.7: - resolution: {integrity: sha512-vT+YMzw8yVwndhJglI0XtELfXWq1M0HEy5ST3XPzbjmsJ54LgTf1b29UMkh0E/05qBQNFCcbT9B/tLxqWezxlg==} + /@storybook/addon-toolbars@7.6.8: + resolution: {integrity: sha512-Akr9Pfw+AzQBRPVdo8yjcdS4IiOyEIBPVn/OAcbLi6a2zLYBdn99yKi21P0o03TJjNy32A254iAQQ7zyjIwEtA==} dev: true - /@storybook/addon-viewport@7.6.7: - resolution: {integrity: sha512-Q/BKjJaKzl4RWxH45K2iIXwkicj4ReVAUIpIyd7dPBb/Bx+hEDYZxR5dDg82AMkZdA71x5ttMnuDSuVpmWAE6g==} + /@storybook/addon-viewport@7.6.8: + resolution: {integrity: sha512-9fvaTudqTA7HYygOWq8gnlmR5XLLjMgK4RoZqMP8OhzX0Vkkg72knPI8lyrnHwze/yMcR1e2lmbdLm55rPq6QA==} dependencies: memoizerific: 1.11.3 dev: true - /@storybook/blocks@7.6.7(@types/react-dom@18.2.18)(@types/react@18.2.47)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-+QEvGQ0he/YvFS3lsZORJWxhQIyqcCDWsxbJxJiByePd+Z4my3q8xwtPhHW0TKRL0xUgNE/GnTfMMqJfevTuSw==} + /@storybook/blocks@7.6.8(@types/react-dom@18.2.18)(@types/react@18.2.47)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-9cjwqj+VLmVHD8lU1xIGbZiu2xPQ3A+cAobmam045wvEB/wYhcrF0K0lBwHLqUWTcNdOzZy5uaoaCu/1G5AmDg==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: - '@storybook/channels': 7.6.7 - '@storybook/client-logger': 7.6.7 - '@storybook/components': 7.6.7(@types/react-dom@18.2.18)(@types/react@18.2.47)(react-dom@18.2.0)(react@18.2.0) - '@storybook/core-events': 7.6.7 + '@storybook/channels': 7.6.8 + '@storybook/client-logger': 7.6.8 + '@storybook/components': 7.6.8(@types/react-dom@18.2.18)(@types/react@18.2.47)(react-dom@18.2.0)(react@18.2.0) + '@storybook/core-events': 7.6.8 '@storybook/csf': 0.1.2 - '@storybook/docs-tools': 7.6.7 + '@storybook/docs-tools': 7.6.8 '@storybook/global': 5.0.0 - '@storybook/manager-api': 7.6.7(react-dom@18.2.0)(react@18.2.0) - '@storybook/preview-api': 7.6.7 - '@storybook/theming': 7.6.7(react-dom@18.2.0)(react@18.2.0) - '@storybook/types': 7.6.7 + '@storybook/manager-api': 7.6.8(react-dom@18.2.0)(react@18.2.0) + '@storybook/preview-api': 7.6.8 + '@storybook/theming': 7.6.8(react-dom@18.2.0)(react@18.2.0) + '@storybook/types': 7.6.8 '@types/lodash': 4.14.202 color-convert: 2.0.1 dequal: 2.0.3 @@ -3492,8 +3468,8 @@ packages: - supports-color dev: true - /@storybook/builder-vite@7.6.7(typescript@5.3.3)(vite@4.5.1): - resolution: {integrity: sha512-Sv+0ROFU9k+mkvIPsPHC0lkKDzBeMpvfO9uFRl1RDSsXBfcPPZKNo5YK7U7fOhesH0BILzurGA+U/aaITMSZ9g==} + /@storybook/builder-vite@7.6.8(typescript@5.3.3)(vite@4.5.1): + resolution: {integrity: sha512-EC+v5n3YoTpYhe1Yk3fIa/E+jaJJAN6Udst/sWGBAc1T/f+/ECM1ee7y9PO3Zxl/wYYMFY+3hDx6OQXLAdWlcQ==} peerDependencies: '@preact/preset-vite': '*' typescript: '>= 4.3.x' @@ -3507,14 +3483,14 @@ packages: vite-plugin-glimmerx: optional: true dependencies: - '@storybook/channels': 7.6.7 - '@storybook/client-logger': 7.6.7 - '@storybook/core-common': 7.6.7 - '@storybook/csf-plugin': 7.6.7 - '@storybook/node-logger': 7.6.7 - '@storybook/preview': 7.6.7 - '@storybook/preview-api': 7.6.7 - '@storybook/types': 7.6.7 + '@storybook/channels': 7.6.8 + '@storybook/client-logger': 7.6.8 + '@storybook/core-common': 7.6.8 + '@storybook/csf-plugin': 7.6.8 + '@storybook/node-logger': 7.6.8 + '@storybook/preview': 7.6.8 + '@storybook/preview-api': 7.6.8 + '@storybook/types': 7.6.8 '@types/find-cache-dir': 3.2.1 browser-assert: 1.2.1 es-module-lexer: 0.9.3 @@ -3524,7 +3500,7 @@ packages: magic-string: 0.30.1 rollup: 3.29.2 typescript: 5.3.3 - vite: 4.5.1(@types/node@18.19.4) + vite: 4.5.1(@types/node@18.19.6) transitivePeerDependencies: - encoding - supports-color @@ -3541,22 +3517,22 @@ packages: tiny-invariant: 1.3.1 dev: true - /@storybook/channels@7.6.5: - resolution: {integrity: sha512-FIlNkyfQy9uHoJfAFL2/wO3ASGJELFvBzURBE2rcEF/TS7GcUiqWnBfiDxAbwSEjSOm2F0eEq3UXhaZEjpJHDw==} + /@storybook/channels@7.6.7: + resolution: {integrity: sha512-u1hURhfQHHtZyRIDUENRCp+CRRm7IQfcjQaoWI06XCevQPuhVEtFUfXHjG+J74aA/JuuTLFUtqwNm1zGqbXTAQ==} dependencies: - '@storybook/client-logger': 7.6.5 - '@storybook/core-events': 7.6.5 + '@storybook/client-logger': 7.6.7 + '@storybook/core-events': 7.6.7 '@storybook/global': 5.0.0 qs: 6.11.2 telejson: 7.2.0 tiny-invariant: 1.3.1 dev: true - /@storybook/channels@7.6.7: - resolution: {integrity: sha512-u1hURhfQHHtZyRIDUENRCp+CRRm7IQfcjQaoWI06XCevQPuhVEtFUfXHjG+J74aA/JuuTLFUtqwNm1zGqbXTAQ==} + /@storybook/channels@7.6.8: + resolution: {integrity: sha512-aPgQcSjeyZDhAfr/slCphVfYGCihxuFCaCVlZuJA4uTaGEUkn+kPW2jP0yLtlSN33J79wFXsMLPQYwIS3aQ4Ew==} dependencies: - '@storybook/client-logger': 7.6.7 - '@storybook/core-events': 7.6.7 + '@storybook/client-logger': 7.6.8 + '@storybook/core-events': 7.6.8 '@storybook/global': 5.0.0 qs: 6.11.2 telejson: 7.2.0 @@ -3620,14 +3596,14 @@ packages: '@storybook/global': 5.0.0 dev: true - /@storybook/client-logger@7.6.5: - resolution: {integrity: sha512-S5aROWgssqg7tcs9lgW5wmCAz4SxMAtioiyVj5oFecmPCbQtFVIAREYzeoxE4GfJL+plrfRkum4BzziANn8EhQ==} + /@storybook/client-logger@7.6.7: + resolution: {integrity: sha512-A16zpWgsa0gSdXMR9P3bWVdC9u/1B1oG4H7Z1+JhNzgnL3CdyOYO0qFSiAtNBso4nOjIAJVb6/AoBzdRhmSVQg==} dependencies: '@storybook/global': 5.0.0 dev: true - /@storybook/client-logger@7.6.7: - resolution: {integrity: sha512-A16zpWgsa0gSdXMR9P3bWVdC9u/1B1oG4H7Z1+JhNzgnL3CdyOYO0qFSiAtNBso4nOjIAJVb6/AoBzdRhmSVQg==} + /@storybook/client-logger@7.6.8: + resolution: {integrity: sha512-WyK+RNSYk+sy0pxk8np1MnUXSWFdy54WqtT7u64vDFs9Jxfa1oMZ+Vl6XhaFQYR++tKC7VabLcI6vZ0pOoE9Jw==} dependencies: '@storybook/global': 5.0.0 @@ -3652,19 +3628,19 @@ packages: - supports-color dev: true - /@storybook/components@7.6.5(@types/react-dom@18.2.18)(@types/react@18.2.47)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-w4ZucbBBZ+NKMWlJKVj2I/bMBBq7gzDp9lzc4+8QaQ3vUPXKqc1ilIPYo/7UR5oxwDVMZocmMSgl9L8lvf7+Mw==} + /@storybook/components@7.6.7(@types/react-dom@18.2.18)(@types/react@18.2.47)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-1HN4p+MCI4Tx9VGZayZyqbW7SB7mXQLnS5fUbTE1gXaMYHpzFvcrRNROeV1LZPClJX6qx1jgE5ngZojhxGuxMA==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: '@radix-ui/react-select': 1.2.2(@types/react-dom@18.2.18)(@types/react@18.2.47)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-toolbar': 1.0.4(@types/react-dom@18.2.18)(@types/react@18.2.47)(react-dom@18.2.0)(react@18.2.0) - '@storybook/client-logger': 7.6.5 + '@storybook/client-logger': 7.6.7 '@storybook/csf': 0.1.2 '@storybook/global': 5.0.0 - '@storybook/theming': 7.6.5(react-dom@18.2.0)(react@18.2.0) - '@storybook/types': 7.6.5 + '@storybook/theming': 7.6.7(react-dom@18.2.0)(react@18.2.0) + '@storybook/types': 7.6.7 memoizerific: 1.11.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -3675,19 +3651,19 @@ packages: - '@types/react-dom' dev: true - /@storybook/components@7.6.7(@types/react-dom@18.2.18)(@types/react@18.2.47)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-1HN4p+MCI4Tx9VGZayZyqbW7SB7mXQLnS5fUbTE1gXaMYHpzFvcrRNROeV1LZPClJX6qx1jgE5ngZojhxGuxMA==} + /@storybook/components@7.6.8(@types/react-dom@18.2.18)(@types/react@18.2.47)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-ghrQkws7F2s9xwdiQq2ezQoOozCiYF9g/vnh+qttd4UgKqXDWoILb8LJGKtS7C0u0vV/Ui59EYUyDIVBT6wHlw==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: '@radix-ui/react-select': 1.2.2(@types/react-dom@18.2.18)(@types/react@18.2.47)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-toolbar': 1.0.4(@types/react-dom@18.2.18)(@types/react@18.2.47)(react-dom@18.2.0)(react@18.2.0) - '@storybook/client-logger': 7.6.7 + '@storybook/client-logger': 7.6.8 '@storybook/csf': 0.1.2 '@storybook/global': 5.0.0 - '@storybook/theming': 7.6.7(react-dom@18.2.0)(react@18.2.0) - '@storybook/types': 7.6.7 + '@storybook/theming': 7.6.8(react-dom@18.2.0)(react@18.2.0) + '@storybook/types': 7.6.8 memoizerific: 1.11.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -3697,11 +3673,11 @@ packages: - '@types/react' - '@types/react-dom' - /@storybook/core-client@7.6.7: - resolution: {integrity: sha512-ZQivyEzYsZok8vRj5Qan7LbiMUnO89rueWzTnZs4IS6JIaQtjoPI1rGVq+h6qOCM6tki478hic8FS+zwGQ6q+w==} + /@storybook/core-client@7.6.8: + resolution: {integrity: sha512-Avt0R0F9U+PEndPS23LHyIBxbwVCeF/VCIuIfD1eTYwE9nSLzvJXqlxARfFyhYV43LQcC5fIKjxfrsyUjM5vbQ==} dependencies: - '@storybook/client-logger': 7.6.7 - '@storybook/preview-api': 7.6.7 + '@storybook/client-logger': 7.6.8 + '@storybook/preview-api': 7.6.8 dev: true /@storybook/core-common@7.6.0-beta.2: @@ -3711,7 +3687,7 @@ packages: '@storybook/node-logger': 7.6.0-beta.2 '@storybook/types': 7.6.0-beta.2 '@types/find-cache-dir': 3.2.1 - '@types/node': 18.19.4 + '@types/node': 18.19.6 '@types/node-fetch': 2.6.6 '@types/pretty-hrtime': 1.0.1 chalk: 4.1.2 @@ -3735,14 +3711,14 @@ packages: - supports-color dev: true - /@storybook/core-common@7.6.7: - resolution: {integrity: sha512-F1fJnauVSPQtAlpicbN/O4XW38Ai8kf/IoU0Hgm9gEwurIk6MF5hiVLsaTI/5GUbrepMl9d9J+iIL4lHAT8IyA==} + /@storybook/core-common@7.6.8: + resolution: {integrity: sha512-TRbiv5AF2m88ixyh31yqn6FgWDYZO6e6IxbJolRvEKD4b9opfPJ5e1ocb/QPz9sBUmsrX59ghMjO8R6dDYzdwA==} dependencies: - '@storybook/core-events': 7.6.7 - '@storybook/node-logger': 7.6.7 - '@storybook/types': 7.6.7 + '@storybook/core-events': 7.6.8 + '@storybook/node-logger': 7.6.8 + '@storybook/types': 7.6.8 '@types/find-cache-dir': 3.2.1 - '@types/node': 18.19.4 + '@types/node': 18.19.6 '@types/node-fetch': 2.6.6 '@types/pretty-hrtime': 1.0.1 chalk: 4.1.2 @@ -3771,14 +3747,14 @@ packages: ts-dedent: 2.2.0 dev: true - /@storybook/core-events@7.6.5: - resolution: {integrity: sha512-zk2q/qicYXAzHA4oV3GDbIql+Kd4TOHUgDE8e4jPCOPp856z2ScqEKUAbiJizs6eEJOH4nW9Db1kuzgrBVEykQ==} + /@storybook/core-events@7.6.7: + resolution: {integrity: sha512-KZ5d03c47pnr5/kY26pJtWq7WpmCPXLbgyjJZDSc+TTY153BdZksvlBXRHtqM1yj2UM6QsSyIuiJaADJNAbP2w==} dependencies: ts-dedent: 2.2.0 dev: true - /@storybook/core-events@7.6.7: - resolution: {integrity: sha512-KZ5d03c47pnr5/kY26pJtWq7WpmCPXLbgyjJZDSc+TTY153BdZksvlBXRHtqM1yj2UM6QsSyIuiJaADJNAbP2w==} + /@storybook/core-events@7.6.8: + resolution: {integrity: sha512-c1onJHG71JKbU4hMZC31rVTSbcfhcXaB0ikGnb7rJzlUZ1YkWnb0wf0/ikQR0seDOpR3HS+WQ0M3FIpqANyETg==} dependencies: ts-dedent: 2.2.0 @@ -3801,7 +3777,7 @@ packages: '@storybook/telemetry': 7.6.0-beta.2 '@storybook/types': 7.6.0-beta.2 '@types/detect-port': 1.3.3 - '@types/node': 18.19.4 + '@types/node': 18.19.6 '@types/pretty-hrtime': 1.0.1 '@types/semver': 7.5.3 better-opn: 3.0.2 @@ -3833,10 +3809,10 @@ packages: - utf-8-validate dev: true - /@storybook/csf-plugin@7.6.7: - resolution: {integrity: sha512-YL7e6H4iVcsDI0UpgpdQX2IiGDrlbgaQMHQgDLWXmZyKxBcy0ONROAX5zoT1ml44EHkL60TMaG4f7SinviJCog==} + /@storybook/csf-plugin@7.6.8: + resolution: {integrity: sha512-KYh7VwTHhXz/V9weuGY3pK9messE56TJHUD+0SO9dF2BVNKsKpAOVcjzrE6masiAFX35Dz/t9ywy8iFcfAo0dg==} dependencies: - '@storybook/csf-tools': 7.6.7 + '@storybook/csf-tools': 7.6.8 unplugin: 1.4.0 transitivePeerDependencies: - supports-color @@ -3846,7 +3822,7 @@ packages: dependencies: '@babel/generator': 7.23.6 '@babel/parser': 7.23.6 - '@babel/traverse': 7.23.6 + '@babel/traverse': 7.23.7 '@babel/types': 7.23.6 '@storybook/csf': 0.1.2 '@storybook/types': 7.6.0-beta.2 @@ -3857,15 +3833,15 @@ packages: - supports-color dev: true - /@storybook/csf-tools@7.6.7: - resolution: {integrity: sha512-hyRbUGa2Uxvz3U09BjcOfMNf/5IYgRum1L6XszqK2O8tK9DGte1r6hArCIAcqiEmFMC40d0kalPzqu6WMNn7sg==} + /@storybook/csf-tools@7.6.8: + resolution: {integrity: sha512-ea6QnQRvhPOpSUbfioLlJYRLpJldNZcocgUJwOJ/e3TM6M67BZBzeDnVOJkuUKejrp++KF22GEIkbGAWErIlnA==} dependencies: '@babel/generator': 7.23.6 '@babel/parser': 7.23.6 - '@babel/traverse': 7.23.6 + '@babel/traverse': 7.23.7 '@babel/types': 7.23.6 '@storybook/csf': 0.1.2 - '@storybook/types': 7.6.7 + '@storybook/types': 7.6.8 fs-extra: 11.1.1 recast: 0.23.4 ts-dedent: 2.2.0 @@ -3887,12 +3863,12 @@ packages: resolution: {integrity: sha512-JDaBR9lwVY4eSH5W8EGHrhODjygPd6QImRbwjAuJNEnY0Vw4ie3bPkeGfnacB3OBW6u/agqPv2aRlR46JcAQLg==} dev: true - /@storybook/docs-tools@7.6.7: - resolution: {integrity: sha512-enTO/xVjBqwUraGCYTwdyjMvug3OSAM7TPPUEJ3KPieJNwAzcYkww/qNDMIAR4S39zPMrkAmtS3STvVadlJz7g==} + /@storybook/docs-tools@7.6.8: + resolution: {integrity: sha512-zIbrje4JLFpfK05y3SkDNtIth/vTOEaJVa/zaHuwS1gUX73Pq3jwF2eMGVabeVWi6hvxGeZXhnIsymh/Hpbn5w==} dependencies: - '@storybook/core-common': 7.6.7 - '@storybook/preview-api': 7.6.7 - '@storybook/types': 7.6.7 + '@storybook/core-common': 7.6.8 + '@storybook/preview-api': 7.6.8 + '@storybook/types': 7.6.8 '@types/doctrine': 0.0.3 assert: 2.1.0 doctrine: 3.0.0 @@ -3904,21 +3880,20 @@ packages: /@storybook/global@5.0.0: resolution: {integrity: sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==} - /@storybook/manager-api@7.6.5(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-tE3OShOcs6A3XtI3NJd6hYQOZLaP++Fn0dCtowBwYh/vS1EN/AyroVmL97tsxn1DZTyoRt0GidwbB6dvLMBOwA==} + /@storybook/manager-api@7.6.7(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-3Wk/BvuGUlw/X05s57zZO7gJbzfUeE9Xe+CSIvuH7RY5jx9PYnNwqNlTXPXhJ5LPvwMthae7WJVn3SuBpbptoQ==} dependencies: - '@storybook/channels': 7.6.5 - '@storybook/client-logger': 7.6.5 - '@storybook/core-events': 7.6.5 + '@storybook/channels': 7.6.7 + '@storybook/client-logger': 7.6.7 + '@storybook/core-events': 7.6.7 '@storybook/csf': 0.1.2 '@storybook/global': 5.0.0 - '@storybook/router': 7.6.5 - '@storybook/theming': 7.6.5(react-dom@18.2.0)(react@18.2.0) - '@storybook/types': 7.6.5 + '@storybook/router': 7.6.7 + '@storybook/theming': 7.6.7(react-dom@18.2.0)(react@18.2.0) + '@storybook/types': 7.6.7 dequal: 2.0.3 lodash: 4.17.21 memoizerific: 1.11.3 - semver: 7.5.4 store2: 2.14.2 telejson: 7.2.0 ts-dedent: 2.2.0 @@ -3927,17 +3902,17 @@ packages: - react-dom dev: true - /@storybook/manager-api@7.6.7(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-3Wk/BvuGUlw/X05s57zZO7gJbzfUeE9Xe+CSIvuH7RY5jx9PYnNwqNlTXPXhJ5LPvwMthae7WJVn3SuBpbptoQ==} + /@storybook/manager-api@7.6.8(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-BGVZb0wMTd8Hi8rUYPRzdIhWRw73qXlEupwEYyGtH63sg+aD67wyAo8/pMEpQBH4kVss7VheWY2JGpRJeFVUxw==} dependencies: - '@storybook/channels': 7.6.7 - '@storybook/client-logger': 7.6.7 - '@storybook/core-events': 7.6.7 + '@storybook/channels': 7.6.8 + '@storybook/client-logger': 7.6.8 + '@storybook/core-events': 7.6.8 '@storybook/csf': 0.1.2 '@storybook/global': 5.0.0 - '@storybook/router': 7.6.7 - '@storybook/theming': 7.6.7(react-dom@18.2.0)(react@18.2.0) - '@storybook/types': 7.6.7 + '@storybook/router': 7.6.8 + '@storybook/theming': 7.6.8(react-dom@18.2.0)(react@18.2.0) + '@storybook/types': 7.6.8 dequal: 2.0.3 lodash: 4.17.21 memoizerific: 1.11.3 @@ -3959,11 +3934,11 @@ packages: resolution: {integrity: sha512-MwIBjG4ICVKT2DjB6kZWohogBIiN70FmMNZOaKPKJtzgJ+cyn6xjBTDH2JPBTfsUZovN/vQj+0OVFts6x2v99Q==} dev: true - /@storybook/node-logger@7.6.7: - resolution: {integrity: sha512-XLih8MxylkpZG9+8tgp8sPGc2tldlWF+DpuAkUv6J3Mc81mPyc3cQKQWZ7Hb+m1LpRGqKV4wyOQj1rC+leVMoQ==} + /@storybook/node-logger@7.6.8: + resolution: {integrity: sha512-SVvwZAcOLdkstqnAbE5hVYsriXh6OXjLcwFEBpAYi1meQ0R70iNALVSPEfIDK1r7M163Jngsq2hRnHvbLoQNkg==} - /@storybook/postinstall@7.6.7: - resolution: {integrity: sha512-mrpRmcwFd9FcvtHPXA9x6vOrHLVCKScZX/Xx2QPWgAvB3W6uzP8G+8QNb1u834iToxrWeuszUMB9UXZK4Qj5yg==} + /@storybook/postinstall@7.6.8: + resolution: {integrity: sha512-9ixyNpoT1w3WmSooCzndAWDnw4fENA1WUBcdqrzlcgaSBKiAHad1k/Yct/uBAU95l/uQ13NgXK3mx4+S6unx/g==} /@storybook/preview-api@7.6.0-beta.2: resolution: {integrity: sha512-7T1qdcjAVOO8TGZMlrO9Nx+8ih4suG53YPGFyCn6drd3TJ4w8IefxLtp3zrYdrvCXiW26G8aKRmgvdQmzg70XQ==} @@ -3984,15 +3959,15 @@ packages: util-deprecate: 1.0.2 dev: true - /@storybook/preview-api@7.6.5: - resolution: {integrity: sha512-9XzuDXXgNuA6dDZ3DXsUwEG6ElxeTbzLuYuzcjtS1FusSICZ2iYmxfS0GfSud9MjPPYOJYoSOvMdIHjorjgByA==} + /@storybook/preview-api@7.6.7: + resolution: {integrity: sha512-ja85ItrT6q2TeBQ6n0CNoRi1R6L8yF2kkis9hVeTQHpwLdZyHUTRqqR5WmhtLqqQXcofyasBPOeJV06wuOhgRQ==} dependencies: - '@storybook/channels': 7.6.5 - '@storybook/client-logger': 7.6.5 - '@storybook/core-events': 7.6.5 + '@storybook/channels': 7.6.7 + '@storybook/client-logger': 7.6.7 + '@storybook/core-events': 7.6.7 '@storybook/csf': 0.1.2 '@storybook/global': 5.0.0 - '@storybook/types': 7.6.5 + '@storybook/types': 7.6.7 '@types/qs': 6.9.8 dequal: 2.0.3 lodash: 4.17.21 @@ -4003,15 +3978,15 @@ packages: util-deprecate: 1.0.2 dev: true - /@storybook/preview-api@7.6.7: - resolution: {integrity: sha512-ja85ItrT6q2TeBQ6n0CNoRi1R6L8yF2kkis9hVeTQHpwLdZyHUTRqqR5WmhtLqqQXcofyasBPOeJV06wuOhgRQ==} + /@storybook/preview-api@7.6.8: + resolution: {integrity: sha512-rtP9Yo8ZV1NWhtA3xCOAb1vU70KCV3D2U4E3rOb2prqJ2CEQ/MQbrB7KUTDRSQdT7VFbjsLQWVCTUcNo29U8JQ==} dependencies: - '@storybook/channels': 7.6.7 - '@storybook/client-logger': 7.6.7 - '@storybook/core-events': 7.6.7 + '@storybook/channels': 7.6.8 + '@storybook/client-logger': 7.6.8 + '@storybook/core-events': 7.6.8 '@storybook/csf': 0.1.2 '@storybook/global': 5.0.0 - '@storybook/types': 7.6.7 + '@storybook/types': 7.6.8 '@types/qs': 6.9.8 dequal: 2.0.3 lodash: 4.17.21 @@ -4021,12 +3996,12 @@ packages: ts-dedent: 2.2.0 util-deprecate: 1.0.2 - /@storybook/preview@7.6.7: - resolution: {integrity: sha512-/ddKIyT+6b8CKGJAma1wood4nwCAoi/E1olCqgpCmviMeUtAiMzgK0xzPwvq5Mxkz/cPeXVi8CQgaQZCa4yvNA==} + /@storybook/preview@7.6.8: + resolution: {integrity: sha512-f54EXmJcIkc5A7nQmtnCUtNFNfEOoTuPYFK7pDfcK/bVU+g63zzWhBAeIUZ8yioLKGqZPTzFEhXkpa+OqsT0Jg==} dev: true - /@storybook/react-dom-shim@7.6.7(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-b/rmy/YzVrwP+ifyZG4yXVIdeFVdTbmziodHUlbrWiUNsqtTZZur9kqkKRUH/7ofji9MFe81nd0MRlcTNFomqg==} + /@storybook/react-dom-shim@7.6.8(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-NIvtjdXCTwd0VA/zCaCuCYv7L35nze7qDsFW6JhSHyqB7fKyIEMSbluktO2VISotHOSkgZ2zA+rGpk3O8yh6lg==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -4034,8 +4009,8 @@ packages: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - /@storybook/react-vite@7.6.7(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3)(vite@4.5.1): - resolution: {integrity: sha512-1cBpxVZ4vLO5rGbhTBNR2SjL+ZePCUAEY+I31tbORYFAoOKmlsNef4fRLnXJ9NYUAyjwZpUmbW0cIxxOFk7nGA==} + /@storybook/react-vite@7.6.8(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3)(vite@4.5.1): + resolution: {integrity: sha512-Hlr07oaEdI7LpWV3dCLpDhrzaKuzoPwEYOrxV8iyiu77DfWMoz8w8T2Jfl9OI45WgaqW0n81vXgaoyu//zL2SA==} engines: {node: '>=16'} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -4044,14 +4019,14 @@ packages: dependencies: '@joshwooding/vite-plugin-react-docgen-typescript': 0.3.0(typescript@5.3.3)(vite@4.5.1) '@rollup/pluginutils': 5.0.2 - '@storybook/builder-vite': 7.6.7(typescript@5.3.3)(vite@4.5.1) - '@storybook/react': 7.6.7(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@storybook/builder-vite': 7.6.8(typescript@5.3.3)(vite@4.5.1) + '@storybook/react': 7.6.8(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) '@vitejs/plugin-react': 3.1.0(vite@4.5.1) magic-string: 0.30.1 react: 18.2.0 react-docgen: 7.0.1 react-dom: 18.2.0(react@18.2.0) - vite: 4.5.1(@types/node@18.19.4) + vite: 4.5.1(@types/node@18.19.6) transitivePeerDependencies: - '@preact/preset-vite' - encoding @@ -4061,8 +4036,8 @@ packages: - vite-plugin-glimmerx dev: true - /@storybook/react@7.6.7(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): - resolution: {integrity: sha512-uT9IBPDM1SQg6FglWqb7IemOJ1Z8kYB5rehIDEDToi0u5INihSY8rHd003TxG4Wx4REp6J+rfbDJO2aVui/gxA==} + /@storybook/react@7.6.8(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): + resolution: {integrity: sha512-yMqcCNskCxqoYSGWO1qu6Jdju9zhEEwd8tOC7AgIC8sAB7K8FTxZu0d6+QFpeg9fGq+hyAmRM4GrT9Fq9IKwwQ==} engines: {node: '>=16.0.0'} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -4072,16 +4047,16 @@ packages: typescript: optional: true dependencies: - '@storybook/client-logger': 7.6.7 - '@storybook/core-client': 7.6.7 - '@storybook/docs-tools': 7.6.7 + '@storybook/client-logger': 7.6.8 + '@storybook/core-client': 7.6.8 + '@storybook/docs-tools': 7.6.8 '@storybook/global': 5.0.0 - '@storybook/preview-api': 7.6.7 - '@storybook/react-dom-shim': 7.6.7(react-dom@18.2.0)(react@18.2.0) - '@storybook/types': 7.6.7 + '@storybook/preview-api': 7.6.8 + '@storybook/react-dom-shim': 7.6.8(react-dom@18.2.0)(react@18.2.0) + '@storybook/types': 7.6.8 '@types/escodegen': 0.0.6 '@types/estree': 0.0.51 - '@types/node': 18.19.4 + '@types/node': 18.19.6 acorn: 7.4.1 acorn-jsx: 5.3.2(acorn@7.4.1) acorn-walk: 7.2.0 @@ -4101,18 +4076,18 @@ packages: - supports-color dev: true - /@storybook/router@7.6.5: - resolution: {integrity: sha512-QiTC86gRuoepzzmS6HNJZTwfz/n27NcqtaVEIxJi1Yvsx2/kLa9NkRhylNkfTuZ1gEry9stAlKWanMsB2aKyjQ==} + /@storybook/router@7.6.7: + resolution: {integrity: sha512-kkhNSdC3fXaQxILg8a26RKk4/ZbF/AUVrepUEyO8lwvbJ6LItTyWSE/4I9Ih4qV2Mjx33ncc8vLqM9p8r5qnMA==} dependencies: - '@storybook/client-logger': 7.6.5 + '@storybook/client-logger': 7.6.7 memoizerific: 1.11.3 qs: 6.11.2 dev: true - /@storybook/router@7.6.7: - resolution: {integrity: sha512-kkhNSdC3fXaQxILg8a26RKk4/ZbF/AUVrepUEyO8lwvbJ6LItTyWSE/4I9Ih4qV2Mjx33ncc8vLqM9p8r5qnMA==} + /@storybook/router@7.6.8: + resolution: {integrity: sha512-pFoq22w1kEwduqMpGX3FPSSukdWLMX6UQa2Cw4MDW+hzp3vhC7+3MVaBG5ShQAjGv46NNcSgsIUkyarlU5wd/A==} dependencies: - '@storybook/client-logger': 7.6.7 + '@storybook/client-logger': 7.6.8 memoizerific: 1.11.3 qs: 6.11.2 @@ -4135,33 +4110,33 @@ packages: /@storybook/testing-library@0.2.2: resolution: {integrity: sha512-L8sXFJUHmrlyU2BsWWZGuAjv39Jl1uAqUHdxmN42JY15M4+XCMjGlArdCCjDe1wpTSW6USYISA9axjZojgtvnw==} dependencies: - '@testing-library/dom': 9.3.3 - '@testing-library/user-event': 14.5.2(@testing-library/dom@9.3.3) + '@testing-library/dom': 9.3.4 + '@testing-library/user-event': 14.5.2(@testing-library/dom@9.3.4) ts-dedent: 2.2.0 dev: true - /@storybook/theming@7.6.5(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-RpcWT0YEgiobO41McVPDfQQHHFnjyr1sJnNTPJIvOUgSfURdgSj17mQVxtD5xcXcPWUdle5UhIOrCixHbL/NNw==} + /@storybook/theming@7.6.7(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-+42rfC4rZtWVAXJ7JBUQKnQ6vWBXJVHZ9HtNUWzQLPR9sJSMmHnnSMV6y5tizGgZqmBnAIkuoYk+Tt6NfwUmSA==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: '@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.2.0) - '@storybook/client-logger': 7.6.5 + '@storybook/client-logger': 7.6.7 '@storybook/global': 5.0.0 memoizerific: 1.11.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: true - /@storybook/theming@7.6.7(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-+42rfC4rZtWVAXJ7JBUQKnQ6vWBXJVHZ9HtNUWzQLPR9sJSMmHnnSMV6y5tizGgZqmBnAIkuoYk+Tt6NfwUmSA==} + /@storybook/theming@7.6.8(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-0ervBgeYGieifjISlFS7x5QZF9vNgLtHHlYKdkrAsACTK+VfB0JglVwFdLrgzAKxQRlVompaxl3TecFGWlvhtw==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: '@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.2.0) - '@storybook/client-logger': 7.6.7 + '@storybook/client-logger': 7.6.8 '@storybook/global': 5.0.0 memoizerific: 1.11.3 react: 18.2.0 @@ -4176,19 +4151,19 @@ packages: file-system-cache: 2.3.0 dev: true - /@storybook/types@7.6.5: - resolution: {integrity: sha512-Q757v+fYZZSaEpks/zDL5YgXRozxkgKakXFc+BoQHK5q5sVhJ+0jvpLJiAQAniIIaMIkqY/G24Kd6Uo6UdKBCg==} + /@storybook/types@7.6.7: + resolution: {integrity: sha512-VcGwrI4AkBENxkoAUJ+Z7SyMK73hpoY0TTtw2J7tc05/xdiXhkQTX15Qa12IBWIkoXCyNrtaU+q7KR8Tjzi+uw==} dependencies: - '@storybook/channels': 7.6.5 + '@storybook/channels': 7.6.7 '@types/babel__core': 7.20.5 '@types/express': 4.17.18 file-system-cache: 2.3.0 dev: true - /@storybook/types@7.6.7: - resolution: {integrity: sha512-VcGwrI4AkBENxkoAUJ+Z7SyMK73hpoY0TTtw2J7tc05/xdiXhkQTX15Qa12IBWIkoXCyNrtaU+q7KR8Tjzi+uw==} + /@storybook/types@7.6.8: + resolution: {integrity: sha512-+mABX20OhwJjqULocG5Betfidwrlk+Kq+grti+LAYwYsdBwxctBNSrqK8P9r8XDFL6PbppZeExGiHKwGu6WsKQ==} dependencies: - '@storybook/channels': 7.6.7 + '@storybook/channels': 7.6.8 '@types/babel__core': 7.20.5 '@types/express': 4.17.18 file-system-cache: 2.3.0 @@ -4349,12 +4324,12 @@ packages: use-sync-external-store: 1.2.0(react@18.2.0) dev: false - /@testing-library/dom@9.3.3: - resolution: {integrity: sha512-fB0R+fa3AUqbLHWyxXa2kGVtf1Fe1ZZFr0Zp6AIbIAzXb2mKbEXl+PCQNUOaq5lbTab5tfctfXRNsWXxa2f7Aw==} + /@testing-library/dom@9.3.4: + resolution: {integrity: sha512-FlS4ZWlp97iiNWig0Muq8p+3rVDjRiYE+YKGbAqXOu9nwJFFOdL00kFpz42M+4huzYi86vAK1sOOfyOG45muIQ==} engines: {node: '>=14'} dependencies: - '@babel/code-frame': 7.22.5 - '@babel/runtime': 7.22.6 + '@babel/code-frame': 7.23.5 + '@babel/runtime': 7.23.2 '@types/aria-query': 5.0.1 aria-query: 5.1.3 chalk: 4.1.2 @@ -4422,19 +4397,19 @@ packages: react-dom: ^18.0.0 dependencies: '@babel/runtime': 7.23.2 - '@testing-library/dom': 9.3.3 + '@testing-library/dom': 9.3.4 '@types/react-dom': 18.2.18 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: true - /@testing-library/user-event@14.5.2(@testing-library/dom@9.3.3): + /@testing-library/user-event@14.5.2(@testing-library/dom@9.3.4): resolution: {integrity: sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ==} engines: {node: '>=12', npm: '>=6'} peerDependencies: '@testing-library/dom': '>=7.21.4' dependencies: - '@testing-library/dom': 9.3.3 + '@testing-library/dom': 9.3.4 dev: true /@tippyjs/react@4.2.6(react-dom@18.2.0)(react@18.2.0): @@ -4489,7 +4464,7 @@ packages: resolution: {integrity: sha512-oyl4jvAfTGX9Bt6Or4H9ni1Z447/tQuxnZsytsCaExKlmJiU8sFgnIBRzJUpKwB5eWn9HuBYlUlVA74q/yN0eQ==} dependencies: '@types/connect': 3.4.36 - '@types/node': 18.19.4 + '@types/node': 18.19.6 /@types/body-scroll-lock@3.1.2: resolution: {integrity: sha512-ELhtuphE/YbhEcpBf/rIV9Tl3/O0A0gpCVD+oYFSS8bWstHFJUgA4nNw1ZakVlRC38XaQEIsBogUZKWIPBvpfQ==} @@ -4513,7 +4488,7 @@ packages: /@types/connect@3.4.36: resolution: {integrity: sha512-P63Zd/JUGq+PdrM1lv0Wv5SBYeA2+CORvbrXbngriYY0jzLUWfQMQQxOhjONEz/wlHOAxOdY7CY65rgQdTjq2w==} dependencies: - '@types/node': 18.19.4 + '@types/node': 18.19.6 /@types/cookie@0.4.1: resolution: {integrity: sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==} @@ -4522,7 +4497,7 @@ packages: /@types/cross-spawn@6.0.3: resolution: {integrity: sha512-BDAkU7WHHRHnvBf5z89lcvACsvkz/n7Tv+HyD/uW76O29HoH1Tk/W6iQrepaZVbisvlEek4ygwT8IW7ow9XLAA==} dependencies: - '@types/node': 18.19.4 + '@types/node': 18.19.6 dev: true /@types/debug@4.1.8: @@ -4582,7 +4557,7 @@ packages: /@types/express-serve-static-core@4.17.37: resolution: {integrity: sha512-ZohaCYTgGFcOP7u6aJOhY9uIZQgZ2vxC2yWoArY+FeDXlqeH66ZVBjgvg+RLVAS/DWNq4Ap9ZXu1+SUQiiWYMg==} dependencies: - '@types/node': 18.19.4 + '@types/node': 18.19.6 '@types/qs': 6.9.8 '@types/range-parser': 1.2.5 '@types/send': 0.17.2 @@ -4616,13 +4591,13 @@ packages: resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} dependencies: '@types/minimatch': 5.1.2 - '@types/node': 18.19.4 + '@types/node': 18.19.6 dev: true /@types/graceful-fs@4.1.6: resolution: {integrity: sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==} dependencies: - '@types/node': 18.19.4 + '@types/node': 18.19.6 /@types/har-format@1.2.11: resolution: {integrity: sha512-T232/TneofqK30AD1LRrrf8KnjLvzrjWDp7eWST5KoiSzrBfRsLrWDPk4STQPW4NZG6v2MltnduBVmakbZOBIQ==} @@ -4705,11 +4680,11 @@ packages: /@types/node-fetch@2.6.6: resolution: {integrity: sha512-95X8guJYhfqiuVVhRFxVQcf4hW/2bCuoPwDasMf/531STFoNoWTT7YDnWdXHEZKqAGUigmpG31r2FE70LwnzJw==} dependencies: - '@types/node': 18.19.4 + '@types/node': 18.19.6 form-data: 4.0.0 - /@types/node@18.19.4: - resolution: {integrity: sha512-xNzlUhzoHotIsnFoXmJB+yWmBvFZgKCI9TtPIEdYIMM1KWfwuY8zh7wvc1u1OAXlC7dlf6mZVx/s+Y5KfFz19A==} + /@types/node@18.19.6: + resolution: {integrity: sha512-X36s5CXMrrJOs2lQCdDF68apW4Rfx9ixYMawlepwmE4Anezv/AV2LSpKD1Ub8DAc+urp5bk0BGZ6NtmBitfnsg==} dependencies: undici-types: 5.26.5 @@ -4766,19 +4741,19 @@ packages: resolution: {integrity: sha512-aAG6yRf6r0wQ29bkS+x97BIs64ZLxeE/ARwyS6wrldMm3C1MdKwCcnnEwMC1slI8wuxJOpiUH9MioC0A0i+GJw==} dependencies: '@types/mime': 1.3.3 - '@types/node': 18.19.4 + '@types/node': 18.19.6 /@types/serve-static@1.15.3: resolution: {integrity: sha512-yVRvFsEMrv7s0lGhzrggJjNOSmZCdgCjw9xWrPr/kNNLp6FaDfMC1KaYl3TSJ0c58bECwNBMoQrZJ8hA8E1eFg==} dependencies: '@types/http-errors': 2.0.2 '@types/mime': 3.0.2 - '@types/node': 18.19.4 + '@types/node': 18.19.6 /@types/set-cookie-parser@2.4.3: resolution: {integrity: sha512-7QhnH7bi+6KAhBB+Auejz1uV9DHiopZqu7LfR/5gZZTkejJV5nYeZZpgfFoE0N8aDsXuiYpfKyfyMatCwQhyTQ==} dependencies: - '@types/node': 18.19.4 + '@types/node': 18.19.6 dev: true /@types/sortablejs@1.15.7: @@ -4829,7 +4804,7 @@ packages: resolution: {integrity: sha512-Km7XAtUIduROw7QPgvcft0lIupeG8a8rdKL8RiSyKvlE7dYY31fEn41HVuQsRFDuROA8tA4K2UVL+WdfFmErBA==} requiresBuild: true dependencies: - '@types/node': 18.19.4 + '@types/node': 18.19.6 dev: false optional: true @@ -4839,8 +4814,8 @@ packages: '@types/history': 4.7.11 dev: true - /@typescript-eslint/eslint-plugin@6.18.0(@typescript-eslint/parser@6.18.0)(eslint@8.56.0)(typescript@5.3.3): - resolution: {integrity: sha512-3lqEvQUdCozi6d1mddWqd+kf8KxmGq2Plzx36BlkjuQe3rSTm/O98cLf0A4uDO+a5N1KD2SeEEl6fW97YHY+6w==} + /@typescript-eslint/eslint-plugin@6.18.1(@typescript-eslint/parser@6.18.1)(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-nISDRYnnIpk7VCFrGcu1rnZfM1Dh9LRHnfgdkjcbi/l7g16VYRri3TjXi9Ir4lOZSw5N/gnV/3H7jIPQ8Q4daA==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha @@ -4851,11 +4826,11 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.6.1 - '@typescript-eslint/parser': 6.18.0(eslint@8.56.0)(typescript@5.3.3) - '@typescript-eslint/scope-manager': 6.18.0 - '@typescript-eslint/type-utils': 6.18.0(eslint@8.56.0)(typescript@5.3.3) - '@typescript-eslint/utils': 6.18.0(eslint@8.56.0)(typescript@5.3.3) - '@typescript-eslint/visitor-keys': 6.18.0 + '@typescript-eslint/parser': 6.18.1(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/scope-manager': 6.18.1 + '@typescript-eslint/type-utils': 6.18.1(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/utils': 6.18.1(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/visitor-keys': 6.18.1 debug: 4.3.4 eslint: 8.56.0 graphemer: 1.4.0 @@ -4868,8 +4843,8 @@ packages: - supports-color dev: true - /@typescript-eslint/parser@6.18.0(eslint@8.56.0)(typescript@5.3.3): - resolution: {integrity: sha512-v6uR68SFvqhNQT41frCMCQpsP+5vySy6IdgjlzUWoo7ALCnpaWYcz/Ij2k4L8cEsL0wkvOviCMpjmtRtHNOKzA==} + /@typescript-eslint/parser@6.18.1(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-zct/MdJnVaRRNy9e84XnVtRv9Vf91/qqe+hZJtKanjojud4wAVy/7lXxJmMyX6X6J+xc6c//YEWvpeif8cAhWA==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -4878,10 +4853,10 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 6.18.0 - '@typescript-eslint/types': 6.18.0 - '@typescript-eslint/typescript-estree': 6.18.0(typescript@5.3.3) - '@typescript-eslint/visitor-keys': 6.18.0 + '@typescript-eslint/scope-manager': 6.18.1 + '@typescript-eslint/types': 6.18.1 + '@typescript-eslint/typescript-estree': 6.18.1(typescript@5.3.3) + '@typescript-eslint/visitor-keys': 6.18.1 debug: 4.3.4 eslint: 8.56.0 typescript: 5.3.3 @@ -4897,16 +4872,16 @@ packages: '@typescript-eslint/visitor-keys': 5.62.0 dev: true - /@typescript-eslint/scope-manager@6.18.0: - resolution: {integrity: sha512-o/UoDT2NgOJ2VfHpfr+KBY2ErWvCySNUIX/X7O9g8Zzt/tXdpfEU43qbNk8LVuWUT2E0ptzTWXh79i74PP0twA==} + /@typescript-eslint/scope-manager@6.18.1: + resolution: {integrity: sha512-BgdBwXPFmZzaZUuw6wKiHKIovms97a7eTImjkXCZE04TGHysG+0hDQPmygyvgtkoB/aOQwSM/nWv3LzrOIQOBw==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.18.0 - '@typescript-eslint/visitor-keys': 6.18.0 + '@typescript-eslint/types': 6.18.1 + '@typescript-eslint/visitor-keys': 6.18.1 dev: true - /@typescript-eslint/type-utils@6.18.0(eslint@8.56.0)(typescript@5.3.3): - resolution: {integrity: sha512-ZeMtrXnGmTcHciJN1+u2CigWEEXgy1ufoxtWcHORt5kGvpjjIlK9MUhzHm4RM8iVy6dqSaZA/6PVkX6+r+ChjQ==} + /@typescript-eslint/type-utils@6.18.1(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-wyOSKhuzHeU/5pcRDP2G2Ndci+4g653V43gXTpt4nbyoIOAASkGDA9JIAgbQCdCkcr1MvpSYWzxTz0olCn8+/Q==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -4915,8 +4890,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 6.18.0(typescript@5.3.3) - '@typescript-eslint/utils': 6.18.0(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/typescript-estree': 6.18.1(typescript@5.3.3) + '@typescript-eslint/utils': 6.18.1(eslint@8.56.0)(typescript@5.3.3) debug: 4.3.4 eslint: 8.56.0 ts-api-utils: 1.0.3(typescript@5.3.3) @@ -4930,8 +4905,8 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/types@6.18.0: - resolution: {integrity: sha512-/RFVIccwkwSdW/1zeMx3hADShWbgBxBnV/qSrex6607isYjj05t36P6LyONgqdUrNLl5TYU8NIKdHUYpFvExkA==} + /@typescript-eslint/types@6.18.1: + resolution: {integrity: sha512-4TuMAe+tc5oA7wwfqMtB0Y5OrREPF1GeJBAjqwgZh1lEMH5PJQgWgHGfYufVB51LtjD+peZylmeyxUXPfENLCw==} engines: {node: ^16.0.0 || >=18.0.0} dev: true @@ -4956,8 +4931,8 @@ packages: - supports-color dev: true - /@typescript-eslint/typescript-estree@6.18.0(typescript@5.3.3): - resolution: {integrity: sha512-klNvl+Ql4NsBNGB4W9TZ2Od03lm7aGvTbs0wYaFYsplVPhr+oeXjlPZCDI4U9jgJIDK38W1FKhacCFzCC+nbIg==} + /@typescript-eslint/typescript-estree@6.18.1(typescript@5.3.3): + resolution: {integrity: sha512-fv9B94UAhywPRhUeeV/v+3SBDvcPiLxRZJw/xZeeGgRLQZ6rLMG+8krrJUyIf6s1ecWTzlsbp0rlw7n9sjufHA==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: typescript: '*' @@ -4965,8 +4940,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 6.18.0 - '@typescript-eslint/visitor-keys': 6.18.0 + '@typescript-eslint/types': 6.18.1 + '@typescript-eslint/visitor-keys': 6.18.1 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 @@ -4998,8 +4973,8 @@ packages: - typescript dev: true - /@typescript-eslint/utils@6.18.0(eslint@8.56.0)(typescript@5.3.3): - resolution: {integrity: sha512-wiKKCbUeDPGaYEYQh1S580dGxJ/V9HI7K5sbGAVklyf+o5g3O+adnS4UNJajplF4e7z2q0uVBaTdT/yLb4XAVA==} + /@typescript-eslint/utils@6.18.1(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-zZmTuVZvD1wpoceHvoQpOiewmWu3uP9FuTWo8vqpy2ffsmfCE8mklRPi+vmnIYAIk9t/4kOThri2QCDgor+OpQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -5007,9 +4982,9 @@ packages: '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) '@types/json-schema': 7.0.13 '@types/semver': 7.5.3 - '@typescript-eslint/scope-manager': 6.18.0 - '@typescript-eslint/types': 6.18.0 - '@typescript-eslint/typescript-estree': 6.18.0(typescript@5.3.3) + '@typescript-eslint/scope-manager': 6.18.1 + '@typescript-eslint/types': 6.18.1 + '@typescript-eslint/typescript-estree': 6.18.1(typescript@5.3.3) eslint: 8.56.0 semver: 7.5.4 transitivePeerDependencies: @@ -5025,11 +5000,11 @@ packages: eslint-visitor-keys: 3.4.3 dev: true - /@typescript-eslint/visitor-keys@6.18.0: - resolution: {integrity: sha512-1wetAlSZpewRDb2h9p/Q8kRjdGuqdTAQbkJIOUMLug2LBLG+QOjiWoSj6/3B/hA9/tVTFFdtiKvAYoYnSRW/RA==} + /@typescript-eslint/visitor-keys@6.18.1: + resolution: {integrity: sha512-/kvt0C5lRqGoCfsbmm7/CwMqoSkY3zzHLIjdhHZQW3VFrnz7ATecOHR7nb7V+xn4286MBxfnQfQhAmCI0u+bJA==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.18.0 + '@typescript-eslint/types': 6.18.1 eslint-visitor-keys: 3.4.3 dev: true @@ -5041,7 +5016,7 @@ packages: peerDependencies: vite: '>=2.0.0' dependencies: - vite: 4.5.1(@types/node@18.19.4) + vite: 4.5.1(@types/node@18.19.6) dev: true /@vitejs/plugin-react@3.1.0(vite@4.5.1): @@ -5055,7 +5030,7 @@ packages: '@babel/plugin-transform-react-jsx-source': 7.23.3(@babel/core@7.23.7) magic-string: 0.27.0 react-refresh: 0.14.0 - vite: 4.5.1(@types/node@18.19.4) + vite: 4.5.1(@types/node@18.19.6) transitivePeerDependencies: - supports-color dev: true @@ -5071,7 +5046,7 @@ packages: '@babel/plugin-transform-react-jsx-source': 7.23.3(@babel/core@7.23.7) '@types/babel__core': 7.20.5 react-refresh: 0.14.0 - vite: 4.5.1(@types/node@18.19.4) + vite: 4.5.1(@types/node@18.19.6) transitivePeerDependencies: - supports-color dev: true @@ -5932,7 +5907,7 @@ packages: /call-bind@1.0.2: resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} dependencies: - function-bind: 1.1.1 + function-bind: 1.1.2 get-intrinsic: 1.2.1 /callsites@3.1.0: @@ -6496,20 +6471,12 @@ packages: get-intrinsic: 1.2.1 gopd: 1.0.1 has-property-descriptors: 1.0.0 - dev: true /define-lazy-prop@2.0.0: resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} engines: {node: '>=8'} dev: true - /define-properties@1.2.0: - resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==} - engines: {node: '>= 0.4'} - dependencies: - has-property-descriptors: 1.0.0 - object-keys: 1.1.1 - /define-properties@1.2.1: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} @@ -6517,7 +6484,6 @@ packages: define-data-property: 1.1.0 has-property-descriptors: 1.0.0 object-keys: 1.1.1 - dev: true /defu@6.1.2: resolution: {integrity: sha512-+uO4+qr7msjNNWKYPHqN/3+Dx3NFkmIzayk2L1MyZQlvgZb/J1A0fo410dpKrN2SnqFjt8n4JL8fDJE0wIgjFQ==} @@ -6965,7 +6931,7 @@ packages: eslint: 8.56.0 dev: true - /eslint-config-standard-with-typescript@39.1.1(@typescript-eslint/eslint-plugin@6.18.0)(eslint-plugin-import@2.29.1)(eslint-plugin-n@16.6.1)(eslint-plugin-promise@6.1.1)(eslint@8.56.0)(typescript@5.3.3): + /eslint-config-standard-with-typescript@39.1.1(@typescript-eslint/eslint-plugin@6.18.1)(eslint-plugin-import@2.29.1)(eslint-plugin-n@16.6.2)(eslint-plugin-promise@6.1.1)(eslint@8.56.0)(typescript@5.3.3): resolution: {integrity: sha512-t6B5Ep8E4I18uuoYeYxINyqcXb2UbC0SOOTxRtBSt2JUs+EzeXbfe2oaiPs71AIdnoWhXDO2fYOHz8df3kV84A==} peerDependencies: '@typescript-eslint/eslint-plugin': ^6.4.0 @@ -6975,19 +6941,19 @@ packages: eslint-plugin-promise: ^6.0.0 typescript: '*' dependencies: - '@typescript-eslint/eslint-plugin': 6.18.0(@typescript-eslint/parser@6.18.0)(eslint@8.56.0)(typescript@5.3.3) - '@typescript-eslint/parser': 6.18.0(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/eslint-plugin': 6.18.1(@typescript-eslint/parser@6.18.1)(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/parser': 6.18.1(eslint@8.56.0)(typescript@5.3.3) eslint: 8.56.0 - eslint-config-standard: 17.1.0(eslint-plugin-import@2.29.1)(eslint-plugin-n@16.6.1)(eslint-plugin-promise@6.1.1)(eslint@8.56.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.18.0)(eslint@8.56.0) - eslint-plugin-n: 16.6.1(eslint@8.56.0) + eslint-config-standard: 17.1.0(eslint-plugin-import@2.29.1)(eslint-plugin-n@16.6.2)(eslint-plugin-promise@6.1.1)(eslint@8.56.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.18.1)(eslint@8.56.0) + eslint-plugin-n: 16.6.2(eslint@8.56.0) eslint-plugin-promise: 6.1.1(eslint@8.56.0) typescript: 5.3.3 transitivePeerDependencies: - supports-color dev: true - /eslint-config-standard@17.1.0(eslint-plugin-import@2.29.1)(eslint-plugin-n@16.6.1)(eslint-plugin-promise@6.1.1)(eslint@8.56.0): + /eslint-config-standard@17.1.0(eslint-plugin-import@2.29.1)(eslint-plugin-n@16.6.2)(eslint-plugin-promise@6.1.1)(eslint@8.56.0): resolution: {integrity: sha512-IwHwmaBNtDK4zDHQukFDW5u/aTb8+meQWZvNFWkiGmbWjD6bqyuSSBxxXKkCftCUzc1zwCH2m/baCNDLGmuO5Q==} engines: {node: '>=12.0.0'} peerDependencies: @@ -6997,8 +6963,8 @@ packages: eslint-plugin-promise: ^6.0.0 dependencies: eslint: 8.56.0 - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.18.0)(eslint@8.56.0) - eslint-plugin-n: 16.6.1(eslint@8.56.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.18.1)(eslint@8.56.0) + eslint-plugin-n: 16.6.2(eslint@8.56.0) eslint-plugin-promise: 6.1.1(eslint@8.56.0) dev: true @@ -7012,7 +6978,7 @@ packages: - supports-color dev: true - /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.18.0)(eslint-import-resolver-node@0.3.9)(eslint@8.56.0): + /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.18.1)(eslint-import-resolver-node@0.3.9)(eslint@8.56.0): resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} peerDependencies: @@ -7033,7 +6999,7 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 6.18.0(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/parser': 6.18.1(eslint@8.56.0)(typescript@5.3.3) debug: 3.2.7 eslint: 8.56.0 eslint-import-resolver-node: 0.3.9 @@ -7053,7 +7019,7 @@ packages: eslint-compat-utils: 0.1.2(eslint@8.56.0) dev: true - /eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.18.0)(eslint@8.56.0): + /eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.18.1)(eslint@8.56.0): resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} engines: {node: '>=4'} peerDependencies: @@ -7063,7 +7029,7 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 6.18.0(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/parser': 6.18.1(eslint@8.56.0)(typescript@5.3.3) array-includes: 3.1.7 array.prototype.findlastindex: 1.2.3 array.prototype.flat: 1.3.2 @@ -7072,7 +7038,7 @@ packages: doctrine: 2.1.0 eslint: 8.56.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.18.0)(eslint-import-resolver-node@0.3.9)(eslint@8.56.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.18.1)(eslint-import-resolver-node@0.3.9)(eslint@8.56.0) hasown: 2.0.0 is-core-module: 2.13.1 is-glob: 4.0.3 @@ -7088,8 +7054,8 @@ packages: - supports-color dev: true - /eslint-plugin-n@16.6.1(eslint@8.56.0): - resolution: {integrity: sha512-M1kE5bVQRLBMDYRZwDhWzlzbp370SRRRC1MHqq4I3L2Tatey+9/2csc5mwLDPlmhJaDvkojbrNUME5/llpRyDg==} + /eslint-plugin-n@16.6.2(eslint@8.56.0): + resolution: {integrity: sha512-6TyDmZ1HXoFQXnhCTUjVFULReoBPOAjpuiKELMkeP40yffI/1ZRO+d9ug/VC6fqISo2WkuIBk3cvuRPALaWlOQ==} engines: {node: '>=16.0.0'} peerDependencies: eslint: '>=7.0.0' @@ -7116,8 +7082,8 @@ packages: eslint: 8.56.0 dev: true - /eslint-plugin-prettier@5.1.2(eslint-config-prettier@9.1.0)(eslint@8.56.0)(prettier@3.1.1): - resolution: {integrity: sha512-dhlpWc9vOwohcWmClFcA+HjlvUpuyynYs0Rf+L/P6/0iQE6vlHW9l5bkfzN62/Stm9fbq8ku46qzde76T1xlSg==} + /eslint-plugin-prettier@5.1.3(eslint-config-prettier@9.1.0)(eslint@8.56.0)(prettier@3.2.1): + resolution: {integrity: sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: '@types/eslint': '>=8.0.0' @@ -7132,7 +7098,7 @@ packages: dependencies: eslint: 8.56.0 eslint-config-prettier: 9.1.0(eslint@8.56.0) - prettier: 3.1.1 + prettier: 3.2.1 prettier-linter-helpers: 1.0.0 synckit: 0.8.8 dev: true @@ -7220,7 +7186,7 @@ packages: strip-indent: 3.0.0 dev: true - /eslint-plugin-unused-imports@3.0.0(@typescript-eslint/eslint-plugin@6.18.0)(eslint@8.56.0): + /eslint-plugin-unused-imports@3.0.0(@typescript-eslint/eslint-plugin@6.18.1)(eslint@8.56.0): resolution: {integrity: sha512-sduiswLJfZHeeBJ+MQaG+xYzSWdRXoSw61DpU13mzWumCkR0ufD0HmO4kdNokjrkluMHpj/7PJeN35pgbhW3kw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -7230,7 +7196,7 @@ packages: '@typescript-eslint/eslint-plugin': optional: true dependencies: - '@typescript-eslint/eslint-plugin': 6.18.0(@typescript-eslint/parser@6.18.0)(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/eslint-plugin': 6.18.1(@typescript-eslint/parser@6.18.1)(eslint@8.56.0)(typescript@5.3.3) eslint: 8.56.0 eslint-rule-composer: 0.3.0 dev: true @@ -7774,9 +7740,6 @@ packages: requiresBuild: true optional: true - /function-bind@1.1.1: - resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} - /function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} @@ -8555,7 +8518,7 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.2.0 + define-properties: 1.2.1 /is-negative-zero@2.0.2: resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} @@ -8790,7 +8753,7 @@ packages: dependencies: '@jest/types': 29.6.1 '@types/graceful-fs': 4.1.6 - '@types/node': 18.19.4 + '@types/node': 18.19.6 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -8807,7 +8770,7 @@ packages: engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: '@jest/types': 27.5.1 - '@types/node': 18.19.4 + '@types/node': 18.19.6 dev: true /jest-regex-util@29.4.3: @@ -8819,7 +8782,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.1 - '@types/node': 18.19.4 + '@types/node': 18.19.6 chalk: 4.1.2 ci-info: 3.8.0 graceful-fs: 4.2.11 @@ -8829,7 +8792,7 @@ packages: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 18.19.4 + '@types/node': 18.19.6 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true @@ -8838,7 +8801,7 @@ packages: resolution: {integrity: sha512-U+Wrbca7S8ZAxAe9L6nb6g8kPdia5hj32Puu5iOqBCMTMWFHXuK6dOV2IFrpedbTV8fjMFLdWNttQTBL6u2MRA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@types/node': 18.19.4 + '@types/node': 18.19.6 jest-util: 29.6.1 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -9054,7 +9017,7 @@ packages: vite: ^3.0.0 || ^4.0.0 dependencies: picocolors: 1.0.0 - vite: 4.5.1(@types/node@18.19.4) + vite: 4.5.1(@types/node@18.19.6) vite-plugin-full-reload: 1.0.5(vite@4.5.1) dev: true @@ -9971,7 +9934,7 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.2.0 + define-properties: 1.2.1 /object-keys@1.1.1: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} @@ -9982,7 +9945,7 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.2.0 + define-properties: 1.2.1 has-symbols: 1.0.3 object-keys: 1.1.1 @@ -10423,7 +10386,7 @@ packages: fast-diff: 1.3.0 dev: true - /prettier-plugin-tailwindcss@0.5.11(prettier@3.1.1): + /prettier-plugin-tailwindcss@0.5.11(prettier@3.2.1): resolution: {integrity: sha512-AvI/DNyMctyyxGOjyePgi/gqj5hJYClZ1avtQvLlqMT3uDZkRbi4HhGUpok3DRzv9z7Lti85Kdj3s3/1CeNI0w==} engines: {node: '>=14.21.3'} peerDependencies: @@ -10472,7 +10435,7 @@ packages: prettier-plugin-twig-melody: optional: true dependencies: - prettier: 3.1.1 + prettier: 3.2.1 dev: true /prettier@2.8.8: @@ -10481,8 +10444,8 @@ packages: hasBin: true dev: true - /prettier@3.1.1: - resolution: {integrity: sha512-22UbSzg8luF4UuZtzgiUOfcGM8s4tjBv6dJRT7j275NXsy2jb4aJa4NNveul5x4eqlF1wuhuR2RElK71RvmVaw==} + /prettier@3.2.1: + resolution: {integrity: sha512-qSUWshj1IobVbKc226Gw2pync27t0Kf0EdufZa9j7uBSJay1CC+B3K5lAAZoqgX3ASiKuWsk6OmzKRetXNObWg==} engines: {node: '>=14'} hasBin: true dev: true @@ -10754,7 +10717,7 @@ packages: engines: {node: '>=16.14.0'} dependencies: '@babel/core': 7.23.7 - '@babel/traverse': 7.23.6 + '@babel/traverse': 7.23.7 '@babel/types': 7.23.6 '@types/babel__core': 7.20.5 '@types/babel__traverse': 7.20.1 @@ -10904,7 +10867,7 @@ packages: mdast-util-to-hast: 13.0.2 react: 18.2.0 remark-parse: 11.0.0 - remark-rehype: 11.0.0 + remark-rehype: 11.1.0 unified: 11.0.4 unist-util-visit: 5.0.0 vfile: 6.0.1 @@ -11263,8 +11226,8 @@ packages: - supports-color dev: false - /remark-rehype@11.0.0: - resolution: {integrity: sha512-vx8x2MDMcxuE4lBmQ46zYUDfcFMmvg80WYX+UNLeG6ixjdCCLcw1lrgAukwBTuOFsS78eoAedHGn9sNM0w7TPw==} + /remark-rehype@11.1.0: + resolution: {integrity: sha512-z3tJrAs2kIs1AqIIy6pzHmAHlF1hWQ+OdY4/hv+Wxe35EhyLKcajL33iUEn3ScxtFox9nUvRufR/Zre8Q08H/g==} dependencies: '@types/hast': 3.0.2 '@types/mdast': 4.0.2 @@ -11696,7 +11659,7 @@ packages: /store2@2.14.2: resolution: {integrity: sha512-siT1RiqlfQnGqgT/YzXVUNsom9S0H1OX+dpdGN1xkyYATo4I6sep5NmsRD/40s3IIOvlCq6akxkqG82urIZW1w==} - /storybook-i18n@2.0.13(@storybook/components@7.6.5)(@storybook/manager-api@7.6.5)(@storybook/preview-api@7.6.5)(@storybook/types@7.6.7)(react-dom@18.2.0)(react@18.2.0): + /storybook-i18n@2.0.13(@storybook/components@7.6.7)(@storybook/manager-api@7.6.7)(@storybook/preview-api@7.6.7)(@storybook/types@7.6.8)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-p0VPL5QiHdeS3W9BvV7UnuTKw7Mj1HWLW67LK0EOoh5fpSQIchu7byfrUUe1RbCF1gT0gOOhdNuTSXMoVVoTDw==} peerDependencies: '@storybook/components': ^7.0.0 @@ -11711,15 +11674,15 @@ packages: react-dom: optional: true dependencies: - '@storybook/components': 7.6.5(@types/react-dom@18.2.18)(@types/react@18.2.47)(react-dom@18.2.0)(react@18.2.0) - '@storybook/manager-api': 7.6.5(react-dom@18.2.0)(react@18.2.0) - '@storybook/preview-api': 7.6.5 - '@storybook/types': 7.6.7 + '@storybook/components': 7.6.7(@types/react-dom@18.2.18)(@types/react@18.2.47)(react-dom@18.2.0)(react@18.2.0) + '@storybook/manager-api': 7.6.7(react-dom@18.2.0)(react@18.2.0) + '@storybook/preview-api': 7.6.7 + '@storybook/types': 7.6.8 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: true - /storybook-react-i18next@2.0.10(@storybook/components@7.6.5)(@storybook/manager-api@7.6.5)(@storybook/preview-api@7.6.5)(@storybook/types@7.6.7)(i18next-browser-languagedetector@7.2.0)(i18next-http-backend@2.4.2)(i18next@22.5.1)(react-dom@18.2.0)(react-i18next@12.3.1)(react@18.2.0): + /storybook-react-i18next@2.0.10(@storybook/components@7.6.7)(@storybook/manager-api@7.6.7)(@storybook/preview-api@7.6.7)(@storybook/types@7.6.8)(i18next-browser-languagedetector@7.2.0)(i18next-http-backend@2.4.2)(i18next@22.5.1)(react-dom@18.2.0)(react-i18next@12.3.1)(react@18.2.0): resolution: {integrity: sha512-0gP2XohFaF+R9+7ixt7gMd3DOeGmq4V4mgpKRKB3/7brvRgi7RPkQ2bRi5w92L25r5k91gCtCOSc9YmepOm36g==} peerDependencies: i18next: ^22.0.0 || ^23.0.0 || ^24.0.0 @@ -11740,7 +11703,7 @@ packages: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) react-i18next: 12.3.1(i18next@22.5.1)(react-dom@18.2.0)(react@18.2.0) - storybook-i18n: 2.0.13(@storybook/components@7.6.5)(@storybook/manager-api@7.6.5)(@storybook/preview-api@7.6.5)(@storybook/types@7.6.7)(react-dom@18.2.0)(react@18.2.0) + storybook-i18n: 2.0.13(@storybook/components@7.6.7)(@storybook/manager-api@7.6.7)(@storybook/preview-api@7.6.7)(@storybook/types@7.6.8)(react-dom@18.2.0)(react@18.2.0) transitivePeerDependencies: - '@storybook/components' - '@storybook/manager-api' @@ -12692,7 +12655,7 @@ packages: vfile-message: 4.0.2 dev: false - /vite-node@0.34.6(@types/node@18.19.4): + /vite-node@0.34.6(@types/node@18.19.6): resolution: {integrity: sha512-nlBMJ9x6n7/Amaz6F3zJ97EBwR2FkzhBRxF5e+jE6LA3yi6Wtc2lyTij1OnDMIr34v5g/tVQtsVAzhT0jc5ygA==} engines: {node: '>=v14.18.0'} hasBin: true @@ -12702,7 +12665,7 @@ packages: mlly: 1.4.0 pathe: 1.1.1 picocolors: 1.0.0 - vite: 4.5.1(@types/node@18.19.4) + vite: 4.5.1(@types/node@18.19.6) transitivePeerDependencies: - '@types/node' - less @@ -12720,7 +12683,7 @@ packages: dependencies: picocolors: 1.0.0 picomatch: 2.3.1 - vite: 4.5.1(@types/node@18.19.4) + vite: 4.5.1(@types/node@18.19.6) dev: true /vite-plugin-svgr@2.4.0(vite@4.5.1): @@ -12730,7 +12693,7 @@ packages: dependencies: '@rollup/pluginutils': 5.0.2 '@svgr/core': 6.5.1 - vite: 4.5.1(@types/node@18.19.4) + vite: 4.5.1(@types/node@18.19.6) transitivePeerDependencies: - rollup - supports-color @@ -12743,7 +12706,7 @@ packages: minimatch: 5.1.6 dev: true - /vite@4.5.1(@types/node@18.19.4): + /vite@4.5.1(@types/node@18.19.6): resolution: {integrity: sha512-AXXFaAJ8yebyqzoNB9fu2pHoo/nWX+xZlaRwoeYUxEqBO+Zj4msE5G+BhGBll9lYEKv9Hfks52PAF2X7qDYXQA==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true @@ -12771,7 +12734,7 @@ packages: terser: optional: true dependencies: - '@types/node': 18.19.4 + '@types/node': 18.19.6 esbuild: 0.18.20 postcss: 8.4.33 rollup: 3.29.2 @@ -12811,7 +12774,7 @@ packages: dependencies: '@types/chai': 4.3.5 '@types/chai-subset': 1.3.3 - '@types/node': 18.19.4 + '@types/node': 18.19.6 '@vitest/expect': 0.34.6 '@vitest/runner': 0.34.6 '@vitest/snapshot': 0.34.6 @@ -12831,8 +12794,8 @@ packages: strip-literal: 1.0.1 tinybench: 2.5.0 tinypool: 0.7.0 - vite: 4.5.1(@types/node@18.19.4) - vite-node: 0.34.6(@types/node@18.19.4) + vite: 4.5.1(@types/node@18.19.6) + vite-node: 0.34.6(@types/node@18.19.6) why-is-node-running: 2.2.2 transitivePeerDependencies: - less @@ -12872,8 +12835,8 @@ packages: graceful-fs: 4.2.11 dev: true - /wavesurfer.js@7.6.1: - resolution: {integrity: sha512-KMEkVTgzMSV2KSmdpmdgDBiGpnaa2kFka6gT3oD4hBijnggKOkKZulVDxXelWpJkN9jCYfUpeqFcPM+VC4SBAw==} + /wavesurfer.js@7.6.4: + resolution: {integrity: sha512-ZpGOHzFeShTD02OoXNSoo9hfHM7awPckNjlRuCbLb9eKcHTJB8tEE+REkNOwJKJ46uo0cT7VeRbMlVvKgzUV/w==} dev: false /wcwidth@1.0.1: From 4062581ded1d1fde0b272a1f0e468b7d205aeb85 Mon Sep 17 00:00:00 2001 From: ItsANameToo <35610748+ItsANameToo@users.noreply.github.com> Date: Mon, 15 Jan 2024 10:37:12 +0100 Subject: [PATCH 085/145] chore: update PHP dependencies (#597) --- composer.json | 14 +- composer.lock | 1136 ++++++++++++++++++------- public/css/filament/filament/app.css | 2 +- public/css/filament/forms/forms.css | 2 +- public/js/filament/support/support.js | 2 +- 5 files changed, 816 insertions(+), 340 deletions(-) diff --git a/composer.json b/composer.json index 5a85d7cb8..4b9f975fd 100644 --- a/composer.json +++ b/composer.json @@ -10,7 +10,7 @@ "require": { "php": "^8.2", "atymic/twitter": "^3.2", - "aws/aws-sdk-php": "^3.295", + "aws/aws-sdk-php": "^3.296", "cyrildewit/eloquent-viewable": "dev-master", "filament/filament": "^3.1", "filament/spatie-laravel-media-library-plugin": "^3.1", @@ -19,13 +19,13 @@ "inertiajs/inertia-laravel": "^0.6", "jeffgreco13/filament-breezy": "^2.2", "kornrunner/keccak": "^1.1", - "laravel/framework": "^10.39", + "laravel/framework": "^10.40", "laravel/horizon": "^5.21", "laravel/pennant": "^1.5", "laravel/sanctum": "^3.3", "laravel/slack-notification-channel": "^2.1", "laravel/telescope": "^4.17", - "laravel/tinker": "^2.8", + "laravel/tinker": "^2.9", "monolog/monolog": "^3.5", "sentry/sentry-laravel": "^3.1", "simplito/elliptic-php": "^1.0", @@ -45,13 +45,13 @@ "barryvdh/laravel-debugbar": "^3.9", "fakerphp/faker": "^1.23", "graham-campbell/analyzer": "^4.1", - "laravel/breeze": "^1.27", + "laravel/breeze": "^1.28", "laravel/pint": "^1.13", - "laravel/sail": "^1.26", + "laravel/sail": "^1.27", "mockery/mockery": "^1.6", "nunomaduro/larastan": "^2.8", - "pestphp/pest": "^2.30", - "rector/rector": "^0.18", + "pestphp/pest": "^2.31", + "rector/rector": "^0.19", "spatie/laravel-ignition": "^2.4" }, "autoload": { diff --git a/composer.lock b/composer.lock index 82b2d31d7..a7ab7ae8f 100644 --- a/composer.lock +++ b/composer.lock @@ -4,47 +4,40 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "8f61dc6a97bb4c01db53bdfdc13fe349", + "content-hash": "645a1e1961ce9310276a274aa5150070", "packages": [ { "name": "amphp/amp", - "version": "v2.6.2", + "version": "v3.0.0", "source": { "type": "git", "url": "https://github.com/amphp/amp.git", - "reference": "9d5100cebffa729aaffecd3ad25dc5aeea4f13bb" + "reference": "aaf0ec1d5a2c20b523258995a10e80c1fb765871" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/amphp/amp/zipball/9d5100cebffa729aaffecd3ad25dc5aeea4f13bb", - "reference": "9d5100cebffa729aaffecd3ad25dc5aeea4f13bb", + "url": "https://api.github.com/repos/amphp/amp/zipball/aaf0ec1d5a2c20b523258995a10e80c1fb765871", + "reference": "aaf0ec1d5a2c20b523258995a10e80c1fb765871", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=8.1", + "revolt/event-loop": "^1 || ^0.2" }, "require-dev": { - "amphp/php-cs-fixer-config": "dev-master", - "amphp/phpunit-util": "^1", - "ext-json": "*", - "jetbrains/phpstorm-stubs": "^2019.3", - "phpunit/phpunit": "^7 | ^8 | ^9", - "psalm/phar": "^3.11@dev", - "react/promise": "^2" + "amphp/php-cs-fixer-config": "^2", + "phpunit/phpunit": "^9", + "psalm/phar": "^4.13" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.x-dev" - } - }, "autoload": { "files": [ - "lib/functions.php", - "lib/Internal/functions.php" + "src/functions.php", + "src/Future/functions.php", + "src/Internal/functions.php" ], "psr-4": { - "Amp\\": "lib" + "Amp\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -52,10 +45,6 @@ "MIT" ], "authors": [ - { - "name": "Daniel Lowrey", - "email": "rdlowrey@php.net" - }, { "name": "Aaron Piotrowski", "email": "aaron@trowski.com" @@ -67,6 +56,10 @@ { "name": "Niklas Keller", "email": "me@kelunik.com" + }, + { + "name": "Daniel Lowrey", + "email": "rdlowrey@php.net" } ], "description": "A non-blocking concurrency framework for PHP applications.", @@ -83,9 +76,8 @@ "promise" ], "support": { - "irc": "irc://irc.freenode.org/amphp", "issues": "https://github.com/amphp/amp/issues", - "source": "https://github.com/amphp/amp/tree/v2.6.2" + "source": "https://github.com/amphp/amp/tree/v3.0.0" }, "funding": [ { @@ -93,46 +85,45 @@ "type": "github" } ], - "time": "2022-02-20T17:52:18+00:00" + "time": "2022-12-18T16:52:44+00:00" }, { "name": "amphp/byte-stream", - "version": "v1.8.1", + "version": "v2.1.0", "source": { "type": "git", "url": "https://github.com/amphp/byte-stream.git", - "reference": "acbd8002b3536485c997c4e019206b3f10ca15bd" + "reference": "0a4b0e80dad92c75e6131f8ad253919211540338" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/amphp/byte-stream/zipball/acbd8002b3536485c997c4e019206b3f10ca15bd", - "reference": "acbd8002b3536485c997c4e019206b3f10ca15bd", + "url": "https://api.github.com/repos/amphp/byte-stream/zipball/0a4b0e80dad92c75e6131f8ad253919211540338", + "reference": "0a4b0e80dad92c75e6131f8ad253919211540338", "shasum": "" }, "require": { - "amphp/amp": "^2", - "php": ">=7.1" + "amphp/amp": "^3", + "amphp/parser": "^1.1", + "amphp/pipeline": "^1", + "amphp/serialization": "^1", + "amphp/sync": "^2", + "php": ">=8.1", + "revolt/event-loop": "^1 || ^0.2.3" }, "require-dev": { - "amphp/php-cs-fixer-config": "dev-master", - "amphp/phpunit-util": "^1.4", - "friendsofphp/php-cs-fixer": "^2.3", - "jetbrains/phpstorm-stubs": "^2019.3", - "phpunit/phpunit": "^6 || ^7 || ^8", - "psalm/phar": "^3.11.4" + "amphp/php-cs-fixer-config": "^2", + "amphp/phpunit-util": "^3", + "phpunit/phpunit": "^9", + "psalm/phar": "^5.4" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, "autoload": { "files": [ - "lib/functions.php" + "src/functions.php", + "src/Internal/functions.php" ], "psr-4": { - "Amp\\ByteStream\\": "lib" + "Amp\\ByteStream\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -150,7 +141,7 @@ } ], "description": "A stream abstraction to make working with non-blocking I/O simple.", - "homepage": "http://amphp.org/byte-stream", + "homepage": "https://amphp.org/byte-stream", "keywords": [ "amp", "amphp", @@ -160,9 +151,8 @@ "stream" ], "support": { - "irc": "irc://irc.freenode.org/amphp", "issues": "https://github.com/amphp/byte-stream/issues", - "source": "https://github.com/amphp/byte-stream/tree/v1.8.1" + "source": "https://github.com/amphp/byte-stream/tree/v2.1.0" }, "funding": [ { @@ -170,45 +160,39 @@ "type": "github" } ], - "time": "2021-03-30T17:13:30+00:00" + "time": "2023-11-19T14:34:16+00:00" }, { - "name": "amphp/parallel", - "version": "v1.4.3", + "name": "amphp/cache", + "version": "v2.0.0", "source": { "type": "git", - "url": "https://github.com/amphp/parallel.git", - "reference": "3aac213ba7858566fd83d38ccb85b91b2d652cb0" + "url": "https://github.com/amphp/cache.git", + "reference": "218bb3888d380eb9dd926cd06f803573c84391d3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/amphp/parallel/zipball/3aac213ba7858566fd83d38ccb85b91b2d652cb0", - "reference": "3aac213ba7858566fd83d38ccb85b91b2d652cb0", + "url": "https://api.github.com/repos/amphp/cache/zipball/218bb3888d380eb9dd926cd06f803573c84391d3", + "reference": "218bb3888d380eb9dd926cd06f803573c84391d3", "shasum": "" }, "require": { - "amphp/amp": "^2", - "amphp/byte-stream": "^1.6.1", - "amphp/parser": "^1", - "amphp/process": "^1", + "amphp/amp": "^3", "amphp/serialization": "^1", - "amphp/sync": "^1.0.1", - "php": ">=7.1" + "amphp/sync": "^2", + "php": ">=8.1", + "revolt/event-loop": "^1 || ^0.2" }, "require-dev": { - "amphp/php-cs-fixer-config": "dev-master", - "amphp/phpunit-util": "^1.1", - "phpunit/phpunit": "^8 || ^7" + "amphp/php-cs-fixer-config": "^2", + "amphp/phpunit-util": "^3", + "phpunit/phpunit": "^9", + "psalm/phar": "^5.4" }, "type": "library", "autoload": { - "files": [ - "lib/Context/functions.php", - "lib/Sync/functions.php", - "lib/Worker/functions.php" - ], "psr-4": { - "Amp\\Parallel\\": "lib" + "Amp\\Cache\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -216,27 +200,112 @@ "MIT" ], "authors": [ + { + "name": "Niklas Keller", + "email": "me@kelunik.com" + }, { "name": "Aaron Piotrowski", "email": "aaron@trowski.com" }, { - "name": "Stephen Coakley", - "email": "me@stephencoakley.com" + "name": "Daniel Lowrey", + "email": "rdlowrey@php.net" } ], - "description": "Parallel processing component for Amp.", - "homepage": "https://github.com/amphp/parallel", + "description": "A fiber-aware cache API based on Amp and Revolt.", + "homepage": "https://amphp.org/cache", + "support": { + "issues": "https://github.com/amphp/cache/issues", + "source": "https://github.com/amphp/cache/tree/v2.0.0" + }, + "funding": [ + { + "url": "https://github.com/amphp", + "type": "github" + } + ], + "time": "2023-01-09T21:04:12+00:00" + }, + { + "name": "amphp/dns", + "version": "v2.1.0", + "source": { + "type": "git", + "url": "https://github.com/amphp/dns.git", + "reference": "c3b518f321f26e786554480de580f06b9f34d1cd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/amphp/dns/zipball/c3b518f321f26e786554480de580f06b9f34d1cd", + "reference": "c3b518f321f26e786554480de580f06b9f34d1cd", + "shasum": "" + }, + "require": { + "amphp/amp": "^3", + "amphp/byte-stream": "^2", + "amphp/cache": "^2", + "amphp/parser": "^1", + "amphp/windows-registry": "^1", + "daverandom/libdns": "^2.0.2", + "ext-filter": "*", + "php": ">=8.1", + "revolt/event-loop": "^1 || ^0.2" + }, + "require-dev": { + "amphp/php-cs-fixer-config": "^2", + "amphp/phpunit-util": "^3", + "phpunit/phpunit": "^9", + "psalm/phar": "^5.4" + }, + "type": "library", + "autoload": { + "files": [ + "src/functions.php" + ], + "psr-4": { + "Amp\\Dns\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Chris Wright", + "email": "addr@daverandom.com" + }, + { + "name": "Daniel Lowrey", + "email": "rdlowrey@php.net" + }, + { + "name": "Bob Weinand", + "email": "bobwei9@hotmail.com" + }, + { + "name": "Niklas Keller", + "email": "me@kelunik.com" + }, + { + "name": "Aaron Piotrowski", + "email": "aaron@trowski.com" + } + ], + "description": "Async DNS resolution for Amp.", + "homepage": "https://github.com/amphp/dns", "keywords": [ + "amp", + "amphp", "async", - "asynchronous", - "concurrent", - "multi-processing", - "multi-threading" + "client", + "dns", + "resolve" ], "support": { - "issues": "https://github.com/amphp/parallel/issues", - "source": "https://github.com/amphp/parallel/tree/v1.4.3" + "issues": "https://github.com/amphp/dns/issues", + "source": "https://github.com/amphp/dns/tree/v2.1.0" }, "funding": [ { @@ -244,41 +313,50 @@ "type": "github" } ], - "time": "2023-03-23T08:04:23+00:00" + "time": "2023-11-18T15:49:57+00:00" }, { - "name": "amphp/parallel-functions", - "version": "v1.1.0", + "name": "amphp/parallel", + "version": "v2.2.6", "source": { "type": "git", - "url": "https://github.com/amphp/parallel-functions.git", - "reference": "04e92fcacfc921a56dfe12c23b3265e62593a7cb" + "url": "https://github.com/amphp/parallel.git", + "reference": "5aeaad20297507cc754859236720501b54306eba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/amphp/parallel-functions/zipball/04e92fcacfc921a56dfe12c23b3265e62593a7cb", - "reference": "04e92fcacfc921a56dfe12c23b3265e62593a7cb", + "url": "https://api.github.com/repos/amphp/parallel/zipball/5aeaad20297507cc754859236720501b54306eba", + "reference": "5aeaad20297507cc754859236720501b54306eba", "shasum": "" }, "require": { - "amphp/amp": "^2.0.3", - "amphp/parallel": "^1.4", - "amphp/serialization": "^1.0", - "laravel/serializable-closure": "^1.0", - "php": ">=7.4" + "amphp/amp": "^3", + "amphp/byte-stream": "^2", + "amphp/parser": "^1", + "amphp/pipeline": "^1", + "amphp/process": "^2", + "amphp/serialization": "^1", + "amphp/socket": "^2", + "amphp/sync": "^2", + "php": ">=8.1", + "revolt/event-loop": "^1" }, "require-dev": { - "amphp/php-cs-fixer-config": "v2.x-dev", - "amphp/phpunit-util": "^2.0", - "phpunit/phpunit": "^9.5.11" + "amphp/php-cs-fixer-config": "^2", + "amphp/phpunit-util": "^3", + "phpunit/phpunit": "^9", + "psalm/phar": "^5.18" }, "type": "library", "autoload": { "files": [ - "src/functions.php" + "src/Context/functions.php", + "src/Context/Internal/functions.php", + "src/Ipc/functions.php", + "src/Worker/functions.php" ], "psr-4": { - "Amp\\ParallelFunctions\\": "src" + "Amp\\Parallel\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -286,15 +364,31 @@ "MIT" ], "authors": [ + { + "name": "Aaron Piotrowski", + "email": "aaron@trowski.com" + }, { "name": "Niklas Keller", "email": "me@kelunik.com" + }, + { + "name": "Stephen Coakley", + "email": "me@stephencoakley.com" } ], - "description": "Parallel processing made simple.", + "description": "Parallel processing component for Amp.", + "homepage": "https://github.com/amphp/parallel", + "keywords": [ + "async", + "asynchronous", + "concurrent", + "multi-processing", + "multi-threading" + ], "support": { - "issues": "https://github.com/amphp/parallel-functions/issues", - "source": "https://github.com/amphp/parallel-functions/tree/v1.1.0" + "issues": "https://github.com/amphp/parallel/issues", + "source": "https://github.com/amphp/parallel/tree/v2.2.6" }, "funding": [ { @@ -302,7 +396,7 @@ "type": "github" } ], - "time": "2022-02-03T19:32:41+00:00" + "time": "2024-01-07T18:12:13+00:00" }, { "name": "amphp/parser", @@ -366,37 +460,107 @@ ], "time": "2022-12-30T18:08:47+00:00" }, + { + "name": "amphp/pipeline", + "version": "v1.1.0", + "source": { + "type": "git", + "url": "https://github.com/amphp/pipeline.git", + "reference": "8a0ecc281bb0932d6b4a786453aff18c55756e63" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/amphp/pipeline/zipball/8a0ecc281bb0932d6b4a786453aff18c55756e63", + "reference": "8a0ecc281bb0932d6b4a786453aff18c55756e63", + "shasum": "" + }, + "require": { + "amphp/amp": "^3", + "php": ">=8.1", + "revolt/event-loop": "^1" + }, + "require-dev": { + "amphp/php-cs-fixer-config": "^2", + "amphp/phpunit-util": "^3", + "phpunit/phpunit": "^9", + "psalm/phar": "^5.18" + }, + "type": "library", + "autoload": { + "psr-4": { + "Amp\\Pipeline\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Aaron Piotrowski", + "email": "aaron@trowski.com" + }, + { + "name": "Niklas Keller", + "email": "me@kelunik.com" + } + ], + "description": "Asynchronous iterators and operators.", + "homepage": "https://amphp.org/pipeline", + "keywords": [ + "amp", + "amphp", + "async", + "io", + "iterator", + "non-blocking" + ], + "support": { + "issues": "https://github.com/amphp/pipeline/issues", + "source": "https://github.com/amphp/pipeline/tree/v1.1.0" + }, + "funding": [ + { + "url": "https://github.com/amphp", + "type": "github" + } + ], + "time": "2023-12-23T04:34:28+00:00" + }, { "name": "amphp/process", - "version": "v1.1.4", + "version": "v2.0.1", "source": { "type": "git", "url": "https://github.com/amphp/process.git", - "reference": "76e9495fd6818b43a20167cb11d8a67f7744ee0f" + "reference": "a65d3bc1f36ef12d44df42a68f0f0643183f1052" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/amphp/process/zipball/76e9495fd6818b43a20167cb11d8a67f7744ee0f", - "reference": "76e9495fd6818b43a20167cb11d8a67f7744ee0f", + "url": "https://api.github.com/repos/amphp/process/zipball/a65d3bc1f36ef12d44df42a68f0f0643183f1052", + "reference": "a65d3bc1f36ef12d44df42a68f0f0643183f1052", "shasum": "" }, "require": { - "amphp/amp": "^2", - "amphp/byte-stream": "^1.4", - "php": ">=7" + "amphp/amp": "^3", + "amphp/byte-stream": "^2", + "amphp/sync": "^2", + "php": ">=8.1", + "revolt/event-loop": "^1 || ^0.2" }, "require-dev": { - "amphp/php-cs-fixer-config": "dev-master", - "amphp/phpunit-util": "^1", - "phpunit/phpunit": "^6" + "amphp/php-cs-fixer-config": "^2", + "amphp/phpunit-util": "^3", + "phpunit/phpunit": "^9", + "psalm/phar": "^5.4" }, "type": "library", "autoload": { "files": [ - "lib/functions.php" + "src/functions.php" ], "psr-4": { - "Amp\\Process\\": "lib" + "Amp\\Process\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -417,11 +581,11 @@ "email": "me@kelunik.com" } ], - "description": "Asynchronous process manager.", - "homepage": "https://github.com/amphp/process", + "description": "A fiber-aware process manager based on Amp and Revolt.", + "homepage": "https://amphp.org/process", "support": { "issues": "https://github.com/amphp/process/issues", - "source": "https://github.com/amphp/process/tree/v1.1.4" + "source": "https://github.com/amphp/process/tree/v2.0.1" }, "funding": [ { @@ -429,7 +593,7 @@ "type": "github" } ], - "time": "2022-07-06T23:50:12+00:00" + "time": "2023-01-15T16:00:57+00:00" }, { "name": "amphp/serialization", @@ -489,34 +653,121 @@ }, "time": "2020-03-25T21:39:07+00:00" }, + { + "name": "amphp/socket", + "version": "v2.2.2", + "source": { + "type": "git", + "url": "https://github.com/amphp/socket.git", + "reference": "eb6c5e6baae5aebd9a209f50e81bff38c7efef97" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/amphp/socket/zipball/eb6c5e6baae5aebd9a209f50e81bff38c7efef97", + "reference": "eb6c5e6baae5aebd9a209f50e81bff38c7efef97", + "shasum": "" + }, + "require": { + "amphp/amp": "^3", + "amphp/byte-stream": "^2", + "amphp/dns": "^2", + "ext-openssl": "*", + "kelunik/certificate": "^1.1", + "league/uri": "^6.5 | ^7", + "league/uri-interfaces": "^2.3 | ^7", + "php": ">=8.1", + "revolt/event-loop": "^1 || ^0.2" + }, + "require-dev": { + "amphp/php-cs-fixer-config": "^2", + "amphp/phpunit-util": "^3", + "amphp/process": "^2", + "phpunit/phpunit": "^9", + "psalm/phar": "^5.4" + }, + "type": "library", + "autoload": { + "files": [ + "src/functions.php", + "src/Internal/functions.php", + "src/SocketAddress/functions.php" + ], + "psr-4": { + "Amp\\Socket\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Daniel Lowrey", + "email": "rdlowrey@gmail.com" + }, + { + "name": "Aaron Piotrowski", + "email": "aaron@trowski.com" + }, + { + "name": "Niklas Keller", + "email": "me@kelunik.com" + } + ], + "description": "Non-blocking socket connection / server implementations based on Amp and Revolt.", + "homepage": "https://github.com/amphp/socket", + "keywords": [ + "amp", + "async", + "encryption", + "non-blocking", + "sockets", + "tcp", + "tls" + ], + "support": { + "issues": "https://github.com/amphp/socket/issues", + "source": "https://github.com/amphp/socket/tree/v2.2.2" + }, + "funding": [ + { + "url": "https://github.com/amphp", + "type": "github" + } + ], + "time": "2023-12-31T18:12:01+00:00" + }, { "name": "amphp/sync", - "version": "v1.4.2", + "version": "v2.1.0", "source": { "type": "git", "url": "https://github.com/amphp/sync.git", - "reference": "85ab06764f4f36d63b1356b466df6111cf4b89cf" + "reference": "50ddc7392cc8034b3e4798cef3cc90d3f4c0441c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/amphp/sync/zipball/85ab06764f4f36d63b1356b466df6111cf4b89cf", - "reference": "85ab06764f4f36d63b1356b466df6111cf4b89cf", + "url": "https://api.github.com/repos/amphp/sync/zipball/50ddc7392cc8034b3e4798cef3cc90d3f4c0441c", + "reference": "50ddc7392cc8034b3e4798cef3cc90d3f4c0441c", "shasum": "" }, "require": { - "amphp/amp": "^2.2", - "php": ">=7.1" + "amphp/amp": "^3", + "amphp/pipeline": "^1", + "amphp/serialization": "^1", + "php": ">=8.1", + "revolt/event-loop": "^1 || ^0.2" }, "require-dev": { - "amphp/php-cs-fixer-config": "dev-master", - "amphp/phpunit-util": "^1.1", - "phpunit/phpunit": "^9 || ^8 || ^7" + "amphp/php-cs-fixer-config": "^2", + "amphp/phpunit-util": "^3", + "phpunit/phpunit": "^9", + "psalm/phar": "^5.4" }, "type": "library", "autoload": { "files": [ - "src/functions.php", - "src/ConcurrentIterator/functions.php" + "src/functions.php" ], "psr-4": { "Amp\\Sync\\": "src" @@ -531,12 +782,16 @@ "name": "Aaron Piotrowski", "email": "aaron@trowski.com" }, + { + "name": "Niklas Keller", + "email": "me@kelunik.com" + }, { "name": "Stephen Coakley", "email": "me@stephencoakley.com" } ], - "description": "Mutex, Semaphore, and other synchronization tools for Amp.", + "description": "Non-blocking synchronization primitives for PHP based on Amp and Revolt.", "homepage": "https://github.com/amphp/sync", "keywords": [ "async", @@ -547,7 +802,7 @@ ], "support": { "issues": "https://github.com/amphp/sync/issues", - "source": "https://github.com/amphp/sync/tree/v1.4.2" + "source": "https://github.com/amphp/sync/tree/v2.1.0" }, "funding": [ { @@ -555,7 +810,59 @@ "type": "github" } ], - "time": "2021-10-25T18:29:10+00:00" + "time": "2023-08-19T13:53:40+00:00" + }, + { + "name": "amphp/windows-registry", + "version": "v1.0.0", + "source": { + "type": "git", + "url": "https://github.com/amphp/windows-registry.git", + "reference": "8248247a41af7f97b88e4716c0f8de39696ef111" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/amphp/windows-registry/zipball/8248247a41af7f97b88e4716c0f8de39696ef111", + "reference": "8248247a41af7f97b88e4716c0f8de39696ef111", + "shasum": "" + }, + "require": { + "amphp/byte-stream": "^2", + "amphp/process": "^2", + "php": ">=8.1" + }, + "require-dev": { + "amphp/php-cs-fixer-config": "^2", + "psalm/phar": "^5.4" + }, + "type": "library", + "autoload": { + "psr-4": { + "Amp\\WindowsRegistry\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Niklas Keller", + "email": "me@kelunik.com" + } + ], + "description": "Windows Registry Reader.", + "support": { + "issues": "https://github.com/amphp/windows-registry/issues", + "source": "https://github.com/amphp/windows-registry/tree/v1.0.0" + }, + "funding": [ + { + "url": "https://github.com/amphp", + "type": "github" + } + ], + "time": "2023-01-09T22:29:20+00:00" }, { "name": "atymic/twitter", @@ -700,16 +1007,16 @@ }, { "name": "aws/aws-sdk-php", - "version": "3.295.7", + "version": "3.296.0", "source": { "type": "git", "url": "https://github.com/aws/aws-sdk-php.git", - "reference": "e3ba36c6e52dce373064fbb1741547828235425f" + "reference": "7c61ea4f7df51e6e9f1e7fc1112e296bed8429f9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/e3ba36c6e52dce373064fbb1741547828235425f", - "reference": "e3ba36c6e52dce373064fbb1741547828235425f", + "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/7c61ea4f7df51e6e9f1e7fc1112e296bed8429f9", + "reference": "7c61ea4f7df51e6e9f1e7fc1112e296bed8429f9", "shasum": "" }, "require": { @@ -789,9 +1096,9 @@ "support": { "forum": "https://forums.aws.amazon.com/forum.jspa?forumID=80", "issues": "https://github.com/aws/aws-sdk-php/issues", - "source": "https://github.com/aws/aws-sdk-php/tree/3.295.7" + "source": "https://github.com/aws/aws-sdk-php/tree/3.296.0" }, - "time": "2024-01-05T19:10:48+00:00" + "time": "2024-01-12T19:32:12+00:00" }, { "name": "bacon/bacon-qr-code", @@ -1421,6 +1728,50 @@ }, "time": "2023-08-25T16:18:39+00:00" }, + { + "name": "daverandom/libdns", + "version": "v2.0.3", + "source": { + "type": "git", + "url": "https://github.com/DaveRandom/LibDNS.git", + "reference": "42c2d700d1178c9f9e78664793463f7f1aea248c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/DaveRandom/LibDNS/zipball/42c2d700d1178c9f9e78664793463f7f1aea248c", + "reference": "42c2d700d1178c9f9e78664793463f7f1aea248c", + "shasum": "" + }, + "require": { + "ext-ctype": "*", + "php": ">=7.0" + }, + "suggest": { + "ext-intl": "Required for IDN support" + }, + "type": "library", + "autoload": { + "files": [ + "src/functions.php" + ], + "psr-4": { + "LibDNS\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "DNS protocol implementation written in pure PHP", + "keywords": [ + "dns" + ], + "support": { + "issues": "https://github.com/DaveRandom/LibDNS/issues", + "source": "https://github.com/DaveRandom/LibDNS/tree/v2.0.3" + }, + "time": "2022-09-20T18:15:38+00:00" + }, { "name": "dflydev/dot-access-data", "version": "v3.0.2", @@ -2241,16 +2592,16 @@ }, { "name": "filament/actions", - "version": "v3.1.35", + "version": "v3.1.47", "source": { "type": "git", "url": "https://github.com/filamentphp/actions.git", - "reference": "d615834a6785b87a6eaf59d4935eeb3759683d5d" + "reference": "70c85922297818e290710f23168740c319c378f5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/actions/zipball/d615834a6785b87a6eaf59d4935eeb3759683d5d", - "reference": "d615834a6785b87a6eaf59d4935eeb3759683d5d", + "url": "https://api.github.com/repos/filamentphp/actions/zipball/70c85922297818e290710f23168740c319c378f5", + "reference": "70c85922297818e290710f23168740c319c378f5", "shasum": "" }, "require": { @@ -2288,20 +2639,20 @@ "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2024-01-04T20:29:07+00:00" + "time": "2024-01-12T12:31:49+00:00" }, { "name": "filament/filament", - "version": "v3.1.35", + "version": "v3.1.47", "source": { "type": "git", "url": "https://github.com/filamentphp/panels.git", - "reference": "4c6f1e1efdd3be5582af249055b893a09123777e" + "reference": "075adb3ca819e730679744445e2d6508bb726e3d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/panels/zipball/4c6f1e1efdd3be5582af249055b893a09123777e", - "reference": "4c6f1e1efdd3be5582af249055b893a09123777e", + "url": "https://api.github.com/repos/filamentphp/panels/zipball/075adb3ca819e730679744445e2d6508bb726e3d", + "reference": "075adb3ca819e730679744445e2d6508bb726e3d", "shasum": "" }, "require": { @@ -2353,20 +2704,20 @@ "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2024-01-04T12:28:40+00:00" + "time": "2024-01-12T11:54:25+00:00" }, { "name": "filament/forms", - "version": "v3.1.35", + "version": "v3.1.47", "source": { "type": "git", "url": "https://github.com/filamentphp/forms.git", - "reference": "23526fc23555d55d3fb3b9965efeba2ac04d6bbf" + "reference": "27e9a869c06253ce7b3cd1db252fdceb5621d0c6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/forms/zipball/23526fc23555d55d3fb3b9965efeba2ac04d6bbf", - "reference": "23526fc23555d55d3fb3b9965efeba2ac04d6bbf", + "url": "https://api.github.com/repos/filamentphp/forms/zipball/27e9a869c06253ce7b3cd1db252fdceb5621d0c6", + "reference": "27e9a869c06253ce7b3cd1db252fdceb5621d0c6", "shasum": "" }, "require": { @@ -2409,20 +2760,20 @@ "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2024-01-04T12:28:34+00:00" + "time": "2024-01-12T11:54:20+00:00" }, { "name": "filament/infolists", - "version": "v3.1.35", + "version": "v3.1.47", "source": { "type": "git", "url": "https://github.com/filamentphp/infolists.git", - "reference": "5bc1bfb47d34efd0ee7b3cee43d18996f99d9999" + "reference": "bc0735e0a4efd73af6dd8e2d9f773bdafaf98ab6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/infolists/zipball/5bc1bfb47d34efd0ee7b3cee43d18996f99d9999", - "reference": "5bc1bfb47d34efd0ee7b3cee43d18996f99d9999", + "url": "https://api.github.com/repos/filamentphp/infolists/zipball/bc0735e0a4efd73af6dd8e2d9f773bdafaf98ab6", + "reference": "bc0735e0a4efd73af6dd8e2d9f773bdafaf98ab6", "shasum": "" }, "require": { @@ -2460,11 +2811,11 @@ "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2024-01-02T23:07:20+00:00" + "time": "2024-01-12T11:54:23+00:00" }, { "name": "filament/notifications", - "version": "v3.1.35", + "version": "v3.1.47", "source": { "type": "git", "url": "https://github.com/filamentphp/notifications.git", @@ -2516,16 +2867,16 @@ }, { "name": "filament/spatie-laravel-media-library-plugin", - "version": "v3.1.35", + "version": "v3.1.47", "source": { "type": "git", "url": "https://github.com/filamentphp/spatie-laravel-media-library-plugin.git", - "reference": "64337a634115ea27602e972389c555f2a2e3f3d3" + "reference": "025bcacceea9368742e3a53257ce222906ef7888" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/spatie-laravel-media-library-plugin/zipball/64337a634115ea27602e972389c555f2a2e3f3d3", - "reference": "64337a634115ea27602e972389c555f2a2e3f3d3", + "url": "https://api.github.com/repos/filamentphp/spatie-laravel-media-library-plugin/zipball/025bcacceea9368742e3a53257ce222906ef7888", + "reference": "025bcacceea9368742e3a53257ce222906ef7888", "shasum": "" }, "require": { @@ -2549,20 +2900,20 @@ "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2024-01-04T20:29:06+00:00" + "time": "2024-01-08T12:59:14+00:00" }, { "name": "filament/support", - "version": "v3.1.35", + "version": "v3.1.47", "source": { "type": "git", "url": "https://github.com/filamentphp/support.git", - "reference": "bb580e362e66ae8071d8386e13841c1dc1a252b4" + "reference": "7122e56e5831a6423d7e028c3a2d08255aba08e9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/support/zipball/bb580e362e66ae8071d8386e13841c1dc1a252b4", - "reference": "bb580e362e66ae8071d8386e13841c1dc1a252b4", + "url": "https://api.github.com/repos/filamentphp/support/zipball/7122e56e5831a6423d7e028c3a2d08255aba08e9", + "reference": "7122e56e5831a6423d7e028c3a2d08255aba08e9", "shasum": "" }, "require": { @@ -2606,20 +2957,20 @@ "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2024-01-04T12:29:08+00:00" + "time": "2024-01-12T11:54:33+00:00" }, { "name": "filament/tables", - "version": "v3.1.35", + "version": "v3.1.47", "source": { "type": "git", "url": "https://github.com/filamentphp/tables.git", - "reference": "ba00ac1bf300756a4b240decf8c82d550ff2d024" + "reference": "fa080ebb43ff17e14f8f483e7ad2b69feaadbb3a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/tables/zipball/ba00ac1bf300756a4b240decf8c82d550ff2d024", - "reference": "ba00ac1bf300756a4b240decf8c82d550ff2d024", + "url": "https://api.github.com/repos/filamentphp/tables/zipball/fa080ebb43ff17e14f8f483e7ad2b69feaadbb3a", + "reference": "fa080ebb43ff17e14f8f483e7ad2b69feaadbb3a", "shasum": "" }, "require": { @@ -2659,11 +3010,11 @@ "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2024-01-04T12:29:06+00:00" + "time": "2024-01-11T12:33:25+00:00" }, { "name": "filament/widgets", - "version": "v3.1.35", + "version": "v3.1.47", "source": { "type": "git", "url": "https://github.com/filamentphp/widgets.git", @@ -3694,16 +4045,16 @@ }, { "name": "jeffgreco13/filament-breezy", - "version": "v2.2.3", + "version": "v2.2.4", "source": { "type": "git", "url": "https://github.com/jeffgreco13/filament-breezy.git", - "reference": "76998f5f9213c680166d2d75d4fee96a431dfa91" + "reference": "31687bfad67369e44400ad35d1669a02517cfee4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/jeffgreco13/filament-breezy/zipball/76998f5f9213c680166d2d75d4fee96a431dfa91", - "reference": "76998f5f9213c680166d2d75d4fee96a431dfa91", + "url": "https://api.github.com/repos/jeffgreco13/filament-breezy/zipball/31687bfad67369e44400ad35d1669a02517cfee4", + "reference": "31687bfad67369e44400ad35d1669a02517cfee4", "shasum": "" }, "require": { @@ -3759,9 +4110,9 @@ ], "support": { "issues": "https://github.com/jeffgreco13/filament-breezy/issues", - "source": "https://github.com/jeffgreco13/filament-breezy/tree/v2.2.3" + "source": "https://github.com/jeffgreco13/filament-breezy/tree/v2.2.4" }, - "time": "2023-12-28T15:38:01+00:00" + "time": "2024-01-07T15:37:10+00:00" }, { "name": "kamermans/guzzle-oauth2-subscriber", @@ -3810,6 +4161,64 @@ }, "time": "2023-07-11T21:43:27+00:00" }, + { + "name": "kelunik/certificate", + "version": "v1.1.3", + "source": { + "type": "git", + "url": "https://github.com/kelunik/certificate.git", + "reference": "7e00d498c264d5eb4f78c69f41c8bd6719c0199e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/kelunik/certificate/zipball/7e00d498c264d5eb4f78c69f41c8bd6719c0199e", + "reference": "7e00d498c264d5eb4f78c69f41c8bd6719c0199e", + "shasum": "" + }, + "require": { + "ext-openssl": "*", + "php": ">=7.0" + }, + "require-dev": { + "amphp/php-cs-fixer-config": "^2", + "phpunit/phpunit": "^6 | 7 | ^8 | ^9" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Kelunik\\Certificate\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Niklas Keller", + "email": "me@kelunik.com" + } + ], + "description": "Access certificate details and transform between different formats.", + "keywords": [ + "DER", + "certificate", + "certificates", + "openssl", + "pem", + "x509" + ], + "support": { + "issues": "https://github.com/kelunik/certificate/issues", + "source": "https://github.com/kelunik/certificate/tree/v1.1.3" + }, + "time": "2023-02-03T21:26:53+00:00" + }, { "name": "kirschbaum-development/eloquent-power-joins", "version": "3.4.0", @@ -3923,16 +4332,16 @@ }, { "name": "laravel/framework", - "version": "v10.39.0", + "version": "v10.40.0", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "114926b07bfb5fbf2545c03aa2ce5c8c37be650c" + "reference": "7a9470071dac9579ebf29ad1b9d73e4b8eb586fc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/114926b07bfb5fbf2545c03aa2ce5c8c37be650c", - "reference": "114926b07bfb5fbf2545c03aa2ce5c8c37be650c", + "url": "https://api.github.com/repos/laravel/framework/zipball/7a9470071dac9579ebf29ad1b9d73e4b8eb586fc", + "reference": "7a9470071dac9579ebf29ad1b9d73e4b8eb586fc", "shasum": "" }, "require": { @@ -4124,20 +4533,20 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2023-12-27T14:26:28+00:00" + "time": "2024-01-09T11:46:47+00:00" }, { "name": "laravel/horizon", - "version": "v5.21.4", + "version": "v5.21.5", "source": { "type": "git", "url": "https://github.com/laravel/horizon.git", - "reference": "bdf58c84b592b83f62262cc6ca98b0debbbc308b" + "reference": "081422577fb49608ed68a3b284bcecd0c5860ce6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/horizon/zipball/bdf58c84b592b83f62262cc6ca98b0debbbc308b", - "reference": "bdf58c84b592b83f62262cc6ca98b0debbbc308b", + "url": "https://api.github.com/repos/laravel/horizon/zipball/081422577fb49608ed68a3b284bcecd0c5860ce6", + "reference": "081422577fb49608ed68a3b284bcecd0c5860ce6", "shasum": "" }, "require": { @@ -4200,9 +4609,9 @@ ], "support": { "issues": "https://github.com/laravel/horizon/issues", - "source": "https://github.com/laravel/horizon/tree/v5.21.4" + "source": "https://github.com/laravel/horizon/tree/v5.21.5" }, - "time": "2023-11-23T15:47:58+00:00" + "time": "2023-12-29T22:22:23+00:00" }, { "name": "laravel/pennant", @@ -4282,16 +4691,16 @@ }, { "name": "laravel/prompts", - "version": "v0.1.14", + "version": "v0.1.15", "source": { "type": "git", "url": "https://github.com/laravel/prompts.git", - "reference": "2219fa9c4b944add1e825c3bdb8ecae8bc503bc6" + "reference": "d814a27514d99b03c85aa42b22cfd946568636c1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/prompts/zipball/2219fa9c4b944add1e825c3bdb8ecae8bc503bc6", - "reference": "2219fa9c4b944add1e825c3bdb8ecae8bc503bc6", + "url": "https://api.github.com/repos/laravel/prompts/zipball/d814a27514d99b03c85aa42b22cfd946568636c1", + "reference": "d814a27514d99b03c85aa42b22cfd946568636c1", "shasum": "" }, "require": { @@ -4333,9 +4742,9 @@ ], "support": { "issues": "https://github.com/laravel/prompts/issues", - "source": "https://github.com/laravel/prompts/tree/v0.1.14" + "source": "https://github.com/laravel/prompts/tree/v0.1.15" }, - "time": "2023-12-27T04:18:09+00:00" + "time": "2023-12-29T22:37:42+00:00" }, { "name": "laravel/sanctum", @@ -4597,25 +5006,25 @@ }, { "name": "laravel/tinker", - "version": "v2.8.2", + "version": "v2.9.0", "source": { "type": "git", "url": "https://github.com/laravel/tinker.git", - "reference": "b936d415b252b499e8c3b1f795cd4fc20f57e1f3" + "reference": "502e0fe3f0415d06d5db1f83a472f0f3b754bafe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/tinker/zipball/b936d415b252b499e8c3b1f795cd4fc20f57e1f3", - "reference": "b936d415b252b499e8c3b1f795cd4fc20f57e1f3", + "url": "https://api.github.com/repos/laravel/tinker/zipball/502e0fe3f0415d06d5db1f83a472f0f3b754bafe", + "reference": "502e0fe3f0415d06d5db1f83a472f0f3b754bafe", "shasum": "" }, "require": { - "illuminate/console": "^6.0|^7.0|^8.0|^9.0|^10.0", - "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0|^10.0", - "illuminate/support": "^6.0|^7.0|^8.0|^9.0|^10.0", + "illuminate/console": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0", + "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0", + "illuminate/support": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0", "php": "^7.2.5|^8.0", - "psy/psysh": "^0.10.4|^0.11.1", - "symfony/var-dumper": "^4.3.4|^5.0|^6.0" + "psy/psysh": "^0.11.1|^0.12.0", + "symfony/var-dumper": "^4.3.4|^5.0|^6.0|^7.0" }, "require-dev": { "mockery/mockery": "~1.3.3|^1.4.2", @@ -4623,13 +5032,10 @@ "phpunit/phpunit": "^8.5.8|^9.3.3" }, "suggest": { - "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.0|^10.0)." + "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.0|^10.0|^11.0)." }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "2.x-dev" - }, "laravel": { "providers": [ "Laravel\\Tinker\\TinkerServiceProvider" @@ -4660,9 +5066,9 @@ ], "support": { "issues": "https://github.com/laravel/tinker/issues", - "source": "https://github.com/laravel/tinker/tree/v2.8.2" + "source": "https://github.com/laravel/tinker/tree/v2.9.0" }, - "time": "2023-08-15T14:27:00+00:00" + "time": "2024-01-04T16:10:04+00:00" }, { "name": "league/commonmark", @@ -6999,16 +7405,16 @@ }, { "name": "phpdocumentor/type-resolver", - "version": "1.7.3", + "version": "1.8.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419" + "reference": "fad452781b3d774e3337b0c0b245dd8e5a4455fc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419", - "reference": "3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/fad452781b3d774e3337b0c0b245dd8e5a4455fc", + "reference": "fad452781b3d774e3337b0c0b245dd8e5a4455fc", "shasum": "" }, "require": { @@ -7051,9 +7457,9 @@ "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/1.7.3" + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.8.0" }, - "time": "2023-08-12T11:01:26+00:00" + "time": "2024-01-11T11:49:22+00:00" }, { "name": "phpoption/phpoption", @@ -7692,25 +8098,25 @@ }, { "name": "psy/psysh", - "version": "v0.11.22", + "version": "v0.12.0", "source": { "type": "git", "url": "https://github.com/bobthecow/psysh.git", - "reference": "128fa1b608be651999ed9789c95e6e2a31b5802b" + "reference": "750bf031a48fd07c673dbe3f11f72362ea306d0d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/128fa1b608be651999ed9789c95e6e2a31b5802b", - "reference": "128fa1b608be651999ed9789c95e6e2a31b5802b", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/750bf031a48fd07c673dbe3f11f72362ea306d0d", + "reference": "750bf031a48fd07c673dbe3f11f72362ea306d0d", "shasum": "" }, "require": { "ext-json": "*", "ext-tokenizer": "*", - "nikic/php-parser": "^4.0 || ^3.1", - "php": "^8.0 || ^7.0.8", - "symfony/console": "^6.0 || ^5.0 || ^4.0 || ^3.4", - "symfony/var-dumper": "^6.0 || ^5.0 || ^4.0 || ^3.4" + "nikic/php-parser": "^5.0 || ^4.0", + "php": "^8.0 || ^7.4", + "symfony/console": "^7.0 || ^6.0 || ^5.0 || ^4.0 || ^3.4", + "symfony/var-dumper": "^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" @@ -7721,8 +8127,7 @@ "suggest": { "ext-pcntl": "Enabling the PCNTL extension makes PsySH a lot happier :)", "ext-pdo-sqlite": "The doc command requires SQLite to work.", - "ext-posix": "If you have PCNTL, you'll want the POSIX extension as well.", - "ext-readline": "Enables support for arrow-key history navigation, and showing and manipulating command history." + "ext-posix": "If you have PCNTL, you'll want the POSIX extension as well." }, "bin": [ "bin/psysh" @@ -7730,7 +8135,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-0.11": "0.11.x-dev" + "dev-main": "0.12.x-dev" }, "bamarni-bin": { "bin-links": false, @@ -7766,9 +8171,9 @@ ], "support": { "issues": "https://github.com/bobthecow/psysh/issues", - "source": "https://github.com/bobthecow/psysh/tree/v0.11.22" + "source": "https://github.com/bobthecow/psysh/tree/v0.12.0" }, - "time": "2023-10-14T21:56:36+00:00" + "time": "2023-12-20T15:28:09+00:00" }, { "name": "ralouphie/getallheaders", @@ -8538,6 +8943,78 @@ ], "time": "2023-06-16T10:52:11+00:00" }, + { + "name": "revolt/event-loop", + "version": "v1.0.6", + "source": { + "type": "git", + "url": "https://github.com/revoltphp/event-loop.git", + "reference": "25de49af7223ba039f64da4ae9a28ec2d10d0254" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/revoltphp/event-loop/zipball/25de49af7223ba039f64da4ae9a28ec2d10d0254", + "reference": "25de49af7223ba039f64da4ae9a28ec2d10d0254", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "ext-json": "*", + "jetbrains/phpstorm-stubs": "^2019.3", + "phpunit/phpunit": "^9", + "psalm/phar": "^5.15" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Revolt\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Aaron Piotrowski", + "email": "aaron@trowski.com" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "ceesjank@gmail.com" + }, + { + "name": "Christian Lück", + "email": "christian@clue.engineering" + }, + { + "name": "Niklas Keller", + "email": "me@kelunik.com" + } + ], + "description": "Rock-solid event loop for concurrent PHP applications.", + "keywords": [ + "async", + "asynchronous", + "concurrency", + "event", + "event-loop", + "non-blocking", + "scheduler" + ], + "support": { + "issues": "https://github.com/revoltphp/event-loop/issues", + "source": "https://github.com/revoltphp/event-loop/tree/v1.0.6" + }, + "time": "2023-11-30T05:34:44+00:00" + }, { "name": "ringcentral/psr7", "version": "1.3.0", @@ -8966,16 +9443,16 @@ }, { "name": "simplito/bn-php", - "version": "1.1.3", + "version": "1.1.4", "source": { "type": "git", "url": "https://github.com/simplito/bn-php.git", - "reference": "189167f940cdb681288a967b0f4d66de81adcd97" + "reference": "83446756a81720eacc2ffb87ff97958431451fd6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/simplito/bn-php/zipball/189167f940cdb681288a967b0f4d66de81adcd97", - "reference": "189167f940cdb681288a967b0f4d66de81adcd97", + "url": "https://api.github.com/repos/simplito/bn-php/zipball/83446756a81720eacc2ffb87ff97958431451fd6", + "reference": "83446756a81720eacc2ffb87ff97958431451fd6", "shasum": "" }, "require": { @@ -9004,22 +9481,22 @@ "description": "Big number implementation compatible with bn.js", "support": { "issues": "https://github.com/simplito/bn-php/issues", - "source": "https://github.com/simplito/bn-php/tree/1.1.3" + "source": "https://github.com/simplito/bn-php/tree/1.1.4" }, - "time": "2022-08-12T18:58:14+00:00" + "time": "2024-01-10T16:16:59+00:00" }, { "name": "simplito/elliptic-php", - "version": "1.0.11", + "version": "1.0.12", "source": { "type": "git", "url": "https://github.com/simplito/elliptic-php.git", - "reference": "d0957dd6461f19a5ceb94cf3a0a908d8a0485b40" + "reference": "be321666781be2be2c89c79c43ffcac834bc8868" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/simplito/elliptic-php/zipball/d0957dd6461f19a5ceb94cf3a0a908d8a0485b40", - "reference": "d0957dd6461f19a5ceb94cf3a0a908d8a0485b40", + "url": "https://api.github.com/repos/simplito/elliptic-php/zipball/be321666781be2be2c89c79c43ffcac834bc8868", + "reference": "be321666781be2be2c89c79c43ffcac834bc8868", "shasum": "" }, "require": { @@ -9069,9 +9546,9 @@ ], "support": { "issues": "https://github.com/simplito/elliptic-php/issues", - "source": "https://github.com/simplito/elliptic-php/tree/1.0.11" + "source": "https://github.com/simplito/elliptic-php/tree/1.0.12" }, - "time": "2023-08-28T15:27:19+00:00" + "time": "2024-01-09T14:57:04+00:00" }, { "name": "spatie/browsershot", @@ -9528,23 +10005,23 @@ }, { "name": "spatie/laravel-markdown", - "version": "2.4.1", + "version": "2.4.2", "source": { "type": "git", "url": "https://github.com/spatie/laravel-markdown.git", - "reference": "c47bfee45b705a203550f621eb43ecce164a36c3" + "reference": "7f23584b545d7ec66e6114d9b25c3ec3ddffbb76" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-markdown/zipball/c47bfee45b705a203550f621eb43ecce164a36c3", - "reference": "c47bfee45b705a203550f621eb43ecce164a36c3", + "url": "https://api.github.com/repos/spatie/laravel-markdown/zipball/7f23584b545d7ec66e6114d9b25c3ec3ddffbb76", + "reference": "7f23584b545d7ec66e6114d9b25c3ec3ddffbb76", "shasum": "" }, "require": { - "illuminate/cache": "^8.49|^9.0|^10.0", - "illuminate/contracts": "^8.37|^9.0|^10.0", - "illuminate/support": "^8.49|^9.0|^10.0", - "illuminate/view": "^8.49|^9.0|^10.0", + "illuminate/cache": "^8.49|^9.0|^10.0|^11.0", + "illuminate/contracts": "^8.37|^9.0|^10.0|^11.0", + "illuminate/support": "^8.49|^9.0|^10.0|^11.0", + "illuminate/view": "^8.49|^9.0|^10.0|^11.0", "league/commonmark": "^2.2", "php": "^8.0", "spatie/commonmark-shiki-highlighter": "^2.0", @@ -9592,7 +10069,7 @@ "spatie" ], "support": { - "source": "https://github.com/spatie/laravel-markdown/tree/2.4.1" + "source": "https://github.com/spatie/laravel-markdown/tree/2.4.2" }, "funding": [ { @@ -9600,7 +10077,7 @@ "type": "github" } ], - "time": "2023-12-30T19:55:09+00:00" + "time": "2024-01-11T08:43:31+00:00" }, { "name": "spatie/laravel-medialibrary", @@ -9712,20 +10189,20 @@ }, { "name": "spatie/laravel-package-tools", - "version": "1.16.1", + "version": "1.16.2", "source": { "type": "git", "url": "https://github.com/spatie/laravel-package-tools.git", - "reference": "cc7c991555a37f9fa6b814aa03af73f88026a83d" + "reference": "e62eeb1fe8a8a0b2e83227a6c279c8c59f7d3a15" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-package-tools/zipball/cc7c991555a37f9fa6b814aa03af73f88026a83d", - "reference": "cc7c991555a37f9fa6b814aa03af73f88026a83d", + "url": "https://api.github.com/repos/spatie/laravel-package-tools/zipball/e62eeb1fe8a8a0b2e83227a6c279c8c59f7d3a15", + "reference": "e62eeb1fe8a8a0b2e83227a6c279c8c59f7d3a15", "shasum": "" }, "require": { - "illuminate/contracts": "^9.28|^10.0", + "illuminate/contracts": "^9.28|^10.0|^11.0", "php": "^8.0" }, "require-dev": { @@ -9760,7 +10237,7 @@ ], "support": { "issues": "https://github.com/spatie/laravel-package-tools/issues", - "source": "https://github.com/spatie/laravel-package-tools/tree/1.16.1" + "source": "https://github.com/spatie/laravel-package-tools/tree/1.16.2" }, "funding": [ { @@ -9768,7 +10245,7 @@ "type": "github" } ], - "time": "2023-08-23T09:04:39+00:00" + "time": "2024-01-11T08:43:00+00:00" }, { "name": "spatie/laravel-permission", @@ -10071,22 +10548,21 @@ }, { "name": "spatie/php-structure-discoverer", - "version": "2.0.0", + "version": "2.0.1", "source": { "type": "git", "url": "https://github.com/spatie/php-structure-discoverer.git", - "reference": "3e532f0952d37bb10cddd544800eb659499cda3d" + "reference": "d2e4e6cba962ce2a058ea415a123dd84b37765ac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/php-structure-discoverer/zipball/3e532f0952d37bb10cddd544800eb659499cda3d", - "reference": "3e532f0952d37bb10cddd544800eb659499cda3d", + "url": "https://api.github.com/repos/spatie/php-structure-discoverer/zipball/d2e4e6cba962ce2a058ea415a123dd84b37765ac", + "reference": "d2e4e6cba962ce2a058ea415a123dd84b37765ac", "shasum": "" }, "require": { - "amphp/amp": "^2.6.2", - "amphp/parallel": "^1.4.1", - "amphp/parallel-functions": "^1.1", + "amphp/amp": "^v3.0", + "amphp/parallel": "^2.2", "illuminate/collections": "^9.30|^10.0", "php": "^8.1", "spatie/laravel-package-tools": "^1.4.3", @@ -10140,7 +10616,7 @@ ], "support": { "issues": "https://github.com/spatie/php-structure-discoverer/issues", - "source": "https://github.com/spatie/php-structure-discoverer/tree/2.0.0" + "source": "https://github.com/spatie/php-structure-discoverer/tree/2.0.1" }, "funding": [ { @@ -10148,7 +10624,7 @@ "type": "github" } ], - "time": "2023-12-21T12:04:07+00:00" + "time": "2024-01-08T21:01:26+00:00" }, { "name": "spatie/shiki-php", @@ -13947,16 +14423,16 @@ }, { "name": "laravel/breeze", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/laravel/breeze.git", - "reference": "b0ac214483b5cf42fe5a8007d643d0fe9f95e2e1" + "reference": "6856cd4725b0f261b2d383b01a3875744051acf5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/breeze/zipball/b0ac214483b5cf42fe5a8007d643d0fe9f95e2e1", - "reference": "b0ac214483b5cf42fe5a8007d643d0fe9f95e2e1", + "url": "https://api.github.com/repos/laravel/breeze/zipball/6856cd4725b0f261b2d383b01a3875744051acf5", + "reference": "6856cd4725b0f261b2d383b01a3875744051acf5", "shasum": "" }, "require": { @@ -14005,20 +14481,20 @@ "issues": "https://github.com/laravel/breeze/issues", "source": "https://github.com/laravel/breeze" }, - "time": "2023-12-19T14:44:20+00:00" + "time": "2024-01-06T17:23:00+00:00" }, { "name": "laravel/pint", - "version": "v1.13.7", + "version": "v1.13.8", "source": { "type": "git", "url": "https://github.com/laravel/pint.git", - "reference": "4157768980dbd977f1c4b4cc94997416d8b30ece" + "reference": "69def89df9e0babc0f0a8bea184804a7d8a9c5c0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/pint/zipball/4157768980dbd977f1c4b4cc94997416d8b30ece", - "reference": "4157768980dbd977f1c4b4cc94997416d8b30ece", + "url": "https://api.github.com/repos/laravel/pint/zipball/69def89df9e0babc0f0a8bea184804a7d8a9c5c0", + "reference": "69def89df9e0babc0f0a8bea184804a7d8a9c5c0", "shasum": "" }, "require": { @@ -14029,13 +14505,13 @@ "php": "^8.1.0" }, "require-dev": { - "friendsofphp/php-cs-fixer": "^3.38.0", - "illuminate/view": "^10.30.1", + "friendsofphp/php-cs-fixer": "^3.46.0", + "illuminate/view": "^10.39.0", + "larastan/larastan": "^2.8.1", "laravel-zero/framework": "^10.3.0", - "mockery/mockery": "^1.6.6", - "nunomaduro/larastan": "^2.6.4", + "mockery/mockery": "^1.6.7", "nunomaduro/termwind": "^1.15.1", - "pestphp/pest": "^2.24.2" + "pestphp/pest": "^2.30.0" }, "bin": [ "builds/pint" @@ -14071,20 +14547,20 @@ "issues": "https://github.com/laravel/pint/issues", "source": "https://github.com/laravel/pint" }, - "time": "2023-12-05T19:43:12+00:00" + "time": "2024-01-09T18:03:54+00:00" }, { "name": "laravel/sail", - "version": "v1.26.3", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/laravel/sail.git", - "reference": "fa1ad5fbb03686dfc752bfd1861d86091cc1c32d" + "reference": "65a7764af5daadbd122e3b0d67be371d158a9b9a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/sail/zipball/fa1ad5fbb03686dfc752bfd1861d86091cc1c32d", - "reference": "fa1ad5fbb03686dfc752bfd1861d86091cc1c32d", + "url": "https://api.github.com/repos/laravel/sail/zipball/65a7764af5daadbd122e3b0d67be371d158a9b9a", + "reference": "65a7764af5daadbd122e3b0d67be371d158a9b9a", "shasum": "" }, "require": { @@ -14136,7 +14612,7 @@ "issues": "https://github.com/laravel/sail/issues", "source": "https://github.com/laravel/sail" }, - "time": "2023-12-02T18:26:39+00:00" + "time": "2024-01-03T14:07:34+00:00" }, { "name": "maximebf/debugbar", @@ -14444,16 +14920,16 @@ }, { "name": "nunomaduro/larastan", - "version": "v2.8.0", + "version": "v2.8.1", "source": { "type": "git", "url": "https://github.com/larastan/larastan.git", - "reference": "d60c1a6d49fcbb54b78922a955a55820abdbe3c7" + "reference": "b7cc6a29c457a7d4f3de90466392ae9ad3e17022" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/larastan/larastan/zipball/d60c1a6d49fcbb54b78922a955a55820abdbe3c7", - "reference": "d60c1a6d49fcbb54b78922a955a55820abdbe3c7", + "url": "https://api.github.com/repos/larastan/larastan/zipball/b7cc6a29c457a7d4f3de90466392ae9ad3e17022", + "reference": "b7cc6a29c457a7d4f3de90466392ae9ad3e17022", "shasum": "" }, "require": { @@ -14521,7 +14997,7 @@ ], "support": { "issues": "https://github.com/larastan/larastan/issues", - "source": "https://github.com/larastan/larastan/tree/v2.8.0" + "source": "https://github.com/larastan/larastan/tree/v2.8.1" }, "funding": [ { @@ -14542,20 +15018,20 @@ } ], "abandoned": "larastan/larastan", - "time": "2024-01-02T22:09:07+00:00" + "time": "2024-01-08T09:11:17+00:00" }, { "name": "pestphp/pest", - "version": "v2.30.0", + "version": "v2.31.0", "source": { "type": "git", "url": "https://github.com/pestphp/pest.git", - "reference": "97dc32f9d24b84dd071d9e89438a19e43c833f6f" + "reference": "3457841a9b124653edcfef1d5da24e6afe176f79" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pestphp/pest/zipball/97dc32f9d24b84dd071d9e89438a19e43c833f6f", - "reference": "97dc32f9d24b84dd071d9e89438a19e43c833f6f", + "url": "https://api.github.com/repos/pestphp/pest/zipball/3457841a9b124653edcfef1d5da24e6afe176f79", + "reference": "3457841a9b124653edcfef1d5da24e6afe176f79", "shasum": "" }, "require": { @@ -14563,7 +15039,7 @@ "nunomaduro/collision": "^7.10.0|^8.0.1", "nunomaduro/termwind": "^1.15.1|^2.0.0", "pestphp/pest-plugin": "^2.1.1", - "pestphp/pest-plugin-arch": "^2.5.0", + "pestphp/pest-plugin-arch": "^2.6.1", "php": "^8.1.0", "phpunit/phpunit": "^10.5.5" }, @@ -14574,8 +15050,8 @@ }, "require-dev": { "pestphp/pest-dev-tools": "^2.16.0", - "pestphp/pest-plugin-type-coverage": "^2.6.0", - "symfony/process": "^6.4.0|^7.0.0" + "pestphp/pest-plugin-type-coverage": "^2.8.0", + "symfony/process": "^6.4.0|^7.0.2" }, "bin": [ "bin/pest" @@ -14638,7 +15114,7 @@ ], "support": { "issues": "https://github.com/pestphp/pest/issues", - "source": "https://github.com/pestphp/pest/tree/v2.30.0" + "source": "https://github.com/pestphp/pest/tree/v2.31.0" }, "funding": [ { @@ -14650,7 +15126,7 @@ "type": "github" } ], - "time": "2023-12-28T10:36:40+00:00" + "time": "2024-01-11T15:33:20+00:00" }, { "name": "pestphp/pest-plugin", @@ -14724,23 +15200,23 @@ }, { "name": "pestphp/pest-plugin-arch", - "version": "v2.6.0", + "version": "v2.6.1", "source": { "type": "git", "url": "https://github.com/pestphp/pest-plugin-arch.git", - "reference": "0741696072b5db5989d63013a7b3e83358f4dfcf" + "reference": "99e86316325e55edf66c1f86dd9f990e4e2c2321" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pestphp/pest-plugin-arch/zipball/0741696072b5db5989d63013a7b3e83358f4dfcf", - "reference": "0741696072b5db5989d63013a7b3e83358f4dfcf", + "url": "https://api.github.com/repos/pestphp/pest-plugin-arch/zipball/99e86316325e55edf66c1f86dd9f990e4e2c2321", + "reference": "99e86316325e55edf66c1f86dd9f990e4e2c2321", "shasum": "" }, "require": { "nunomaduro/collision": "^7.10.0|^8.0.1", "pestphp/pest-plugin": "^2.1.1", "php": "^8.1", - "ta-tikoma/phpunit-architecture-test": "^0.8.0" + "ta-tikoma/phpunit-architecture-test": "^0.8.4" }, "require-dev": { "pestphp/pest": "^2.30.0", @@ -14779,7 +15255,7 @@ "unit" ], "support": { - "source": "https://github.com/pestphp/pest-plugin-arch/tree/v2.6.0" + "source": "https://github.com/pestphp/pest-plugin-arch/tree/v2.6.1" }, "funding": [ { @@ -14791,7 +15267,7 @@ "type": "github" } ], - "time": "2024-01-05T11:06:22+00:00" + "time": "2024-01-11T11:21:05+00:00" }, { "name": "phar-io/manifest", @@ -15050,16 +15526,16 @@ }, { "name": "phpstan/phpstan", - "version": "1.10.54", + "version": "1.10.55", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "3e25f279dada0adc14ffd7bad09af2e2fc3523bb" + "reference": "9a88f9d18ddf4cf54c922fbeac16c4cb164c5949" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/3e25f279dada0adc14ffd7bad09af2e2fc3523bb", - "reference": "3e25f279dada0adc14ffd7bad09af2e2fc3523bb", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/9a88f9d18ddf4cf54c922fbeac16c4cb164c5949", + "reference": "9a88f9d18ddf4cf54c922fbeac16c4cb164c5949", "shasum": "" }, "require": { @@ -15108,7 +15584,7 @@ "type": "tidelift" } ], - "time": "2024-01-05T15:50:47+00:00" + "time": "2024-01-08T12:32:40+00:00" }, { "name": "phpunit/php-code-coverage", @@ -15534,21 +16010,21 @@ }, { "name": "rector/rector", - "version": "0.18.13", + "version": "0.19.0", "source": { "type": "git", "url": "https://github.com/rectorphp/rector.git", - "reference": "f8011a76d36aa4f839f60f3b4f97707d97176618" + "reference": "503f4ead06b3892bd106f67f3c86d4e36c94423d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/rectorphp/rector/zipball/f8011a76d36aa4f839f60f3b4f97707d97176618", - "reference": "f8011a76d36aa4f839f60f3b4f97707d97176618", + "url": "https://api.github.com/repos/rectorphp/rector/zipball/503f4ead06b3892bd106f67f3c86d4e36c94423d", + "reference": "503f4ead06b3892bd106f67f3c86d4e36c94423d", "shasum": "" }, "require": { "php": "^7.2|^8.0", - "phpstan/phpstan": "^1.10.35" + "phpstan/phpstan": "^1.10.52" }, "conflict": { "rector/rector-doctrine": "*", @@ -15578,7 +16054,7 @@ ], "support": { "issues": "https://github.com/rectorphp/rector/issues", - "source": "https://github.com/rectorphp/rector/tree/0.18.13" + "source": "https://github.com/rectorphp/rector/tree/0.19.0" }, "funding": [ { @@ -15586,7 +16062,7 @@ "type": "github" } ], - "time": "2023-12-20T16:08:01+00:00" + "time": "2024-01-09T00:49:06+00:00" }, { "name": "sebastian/cli-parser", @@ -16720,16 +17196,16 @@ }, { "name": "spatie/laravel-ignition", - "version": "2.4.0", + "version": "2.4.1", "source": { "type": "git", "url": "https://github.com/spatie/laravel-ignition.git", - "reference": "b9395ba48d3f30d42092cf6ceff75ed7256cd604" + "reference": "005e1e7b1232f3b22d7e7be3f602693efc7dba67" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/b9395ba48d3f30d42092cf6ceff75ed7256cd604", - "reference": "b9395ba48d3f30d42092cf6ceff75ed7256cd604", + "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/005e1e7b1232f3b22d7e7be3f602693efc7dba67", + "reference": "005e1e7b1232f3b22d7e7be3f602693efc7dba67", "shasum": "" }, "require": { @@ -16808,7 +17284,7 @@ "type": "github" } ], - "time": "2024-01-04T14:51:24+00:00" + "time": "2024-01-12T13:14:58+00:00" }, { "name": "symfony/yaml", diff --git a/public/css/filament/filament/app.css b/public/css/filament/filament/app.css index e6e332310..bfa6c4b2d 100644 --- a/public/css/filament/filament/app.css +++ b/public/css/filament/filament/app.css @@ -1 +1 @@ -/*! tailwindcss v3.4.0 | MIT License | https://tailwindcss.com*/*,:after,:before{border-color:rgba(var(--gray-200),1);border-style:solid;border-width:0;box-sizing:border-box}:after,:before{--tw-content:""}:host,html{-webkit-text-size-adjust:100%;font-feature-settings:normal;-webkit-tap-highlight-color:transparent;font-family:var(--font-family),ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-variation-settings:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-feature-settings:normal;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em;font-variation-settings:normal}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{font-feature-settings:inherit;color:inherit;font-family:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:rgba(var(--gray-400),1);opacity:1}input::placeholder,textarea::placeholder{color:rgba(var(--gray-400),1);opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]{display:none}[multiple],[type=date],[type=datetime-local],[type=email],[type=month],[type=number],[type=password],[type=search],[type=tel],[type=text],[type=time],[type=url],[type=week],input:where(:not([type])),select,textarea{--tw-shadow:0 0 #0000;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:rgba(var(--gray-500),var(--tw-border-opacity,1));border-radius:0;border-width:1px;font-size:1rem;line-height:1.5rem;padding:.5rem .75rem}[multiple]:focus,[type=date]:focus,[type=datetime-local]:focus,[type=email]:focus,[type=month]:focus,[type=number]:focus,[type=password]:focus,[type=search]:focus,[type=tel]:focus,[type=text]:focus,[type=time]:focus,[type=url]:focus,[type=week]:focus,input:where(:not([type])):focus,select:focus,textarea:focus{--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#2563eb;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);border-color:#2563eb;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);outline:2px solid transparent;outline-offset:2px}input::-moz-placeholder,textarea::-moz-placeholder{color:rgba(var(--gray-500),var(--tw-text-opacity,1));opacity:1}input::placeholder,textarea::placeholder{color:rgba(var(--gray-500),var(--tw-text-opacity,1));opacity:1}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-date-and-time-value{min-height:1.5em;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-meridiem-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-year-field{padding-bottom:0;padding-top:0}select{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3E%3Cpath stroke='rgba(var(--gray-500), var(--tw-stroke-opacity, 1))' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3E%3C/svg%3E");background-position:right .5rem center;background-repeat:no-repeat;background-size:1.5em 1.5em;padding-right:2.5rem;-webkit-print-color-adjust:exact;print-color-adjust:exact}[multiple],[size]:where(select:not([size="1"])){background-image:none;background-position:0 0;background-repeat:unset;background-size:initial;padding-right:.75rem;-webkit-print-color-adjust:unset;print-color-adjust:unset}[type=checkbox],[type=radio]{--tw-shadow:0 0 #0000;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;background-origin:border-box;border-color:rgba(var(--gray-500),var(--tw-border-opacity,1));border-width:1px;color:#2563eb;display:inline-block;flex-shrink:0;height:1rem;padding:0;-webkit-print-color-adjust:exact;print-color-adjust:exact;-webkit-user-select:none;-moz-user-select:none;user-select:none;vertical-align:middle;width:1rem}[type=checkbox]{border-radius:0}[type=radio]{border-radius:100%}[type=checkbox]:focus,[type=radio]:focus{--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:2px;--tw-ring-offset-color:#fff;--tw-ring-color:#2563eb;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);outline:2px solid transparent;outline-offset:2px}[type=checkbox]:checked,[type=radio]:checked{background-color:currentColor;background-position:50%;background-repeat:no-repeat;background-size:100% 100%;border-color:transparent}[type=checkbox]:checked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12.207 4.793a1 1 0 0 1 0 1.414l-5 5a1 1 0 0 1-1.414 0l-2-2a1 1 0 0 1 1.414-1.414L6.5 9.086l4.293-4.293a1 1 0 0 1 1.414 0z'/%3E%3C/svg%3E")}@media (forced-colors:active) {[type=checkbox]:checked{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=radio]:checked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='8' cy='8' r='3'/%3E%3C/svg%3E")}@media (forced-colors:active) {[type=radio]:checked{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=checkbox]:checked:focus,[type=checkbox]:checked:hover,[type=radio]:checked:focus,[type=radio]:checked:hover{background-color:currentColor;border-color:transparent}[type=checkbox]:indeterminate{background-color:currentColor;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3E%3Cpath stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8h8'/%3E%3C/svg%3E");background-position:50%;background-repeat:no-repeat;background-size:100% 100%;border-color:transparent}@media (forced-colors:active) {[type=checkbox]:indeterminate{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=checkbox]:indeterminate:focus,[type=checkbox]:indeterminate:hover{background-color:currentColor;border-color:transparent}[type=file]{background:unset;border-color:inherit;border-radius:0;border-width:0;font-size:unset;line-height:inherit;padding:0}[type=file]:focus{outline:1px solid ButtonText;outline:1px auto -webkit-focus-ring-color}:root.dark{color-scheme:dark}[data-field-wrapper]{scroll-margin-top:8rem}*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em;margin-top:1.25em}.prose :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-bottom:1.2em;margin-top:1.2em}.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);font-weight:500;text-decoration:underline}.prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal;margin-bottom:1.25em;margin-top:1.25em;padding-left:1.625em}.prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:disc;margin-bottom:1.25em;margin-top:1.25em;padding-left:1.625em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-counters);font-weight:400}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.25em}.prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-bottom:3em;margin-top:3em}.prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){border-left-color:var(--tw-prose-quote-borders);border-left-width:.25rem;color:var(--tw-prose-quotes);font-style:italic;font-weight:500;margin-bottom:1.6em;margin-top:1.6em;padding-left:1em;quotes:"\201C""\201D""\2018""\2019"}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-size:2.25em;font-weight:800;line-height:1.1111111;margin-bottom:.8888889em;margin-top:0}.prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:900}.prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-size:1.5em;font-weight:700;line-height:1.3333333;margin-bottom:1em;margin-top:2em}.prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:800}.prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-size:1.25em;font-weight:600;line-height:1.6;margin-bottom:.6em;margin-top:1.6em}.prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:700}.prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;line-height:1.5;margin-bottom:.5em;margin-top:1.5em}.prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:700}.prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){display:block;margin-bottom:2em;margin-top:2em}.prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.3125rem;box-shadow:0 0 0 1px rgb(var(--tw-prose-kbd-shadows)/10%),0 3px 0 rgb(var(--tw-prose-kbd-shadows)/10%);color:var(--tw-prose-kbd);font-family:inherit;font-size:.875em;font-weight:500;padding:.1875em .375em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code);font-size:.875em;font-weight:600}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:"`"}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:"`"}.prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:var(--tw-prose-pre-bg);border-radius:.375rem;color:var(--tw-prose-pre-code);font-size:.875em;font-weight:400;line-height:1.7142857;margin-bottom:1.7142857em;margin-top:1.7142857em;overflow-x:auto;padding:.8571429em 1.1428571em}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:transparent;border-radius:0;border-width:0;color:inherit;font-family:inherit;font-size:inherit;font-weight:inherit;line-height:inherit;padding:0}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:none}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em;line-height:1.7142857;margin-bottom:2em;margin-top:2em;table-layout:auto;text-align:left;width:100%}.prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-color:var(--tw-prose-th-borders);border-bottom-width:1px}.prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;padding-bottom:.5714286em;padding-left:.5714286em;padding-right:.5714286em;vertical-align:bottom}.prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-color:var(--tw-prose-td-borders);border-bottom-width:1px}.prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-color:var(--tw-prose-th-borders);border-top-width:1px}.prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose{--tw-prose-body:#374151;--tw-prose-headings:#111827;--tw-prose-lead:#4b5563;--tw-prose-links:#111827;--tw-prose-bold:#111827;--tw-prose-counters:#6b7280;--tw-prose-bullets:#d1d5db;--tw-prose-hr:#e5e7eb;--tw-prose-quotes:#111827;--tw-prose-quote-borders:#e5e7eb;--tw-prose-captions:#6b7280;--tw-prose-kbd:#111827;--tw-prose-kbd-shadows:17 24 39;--tw-prose-code:#111827;--tw-prose-pre-code:#e5e7eb;--tw-prose-pre-bg:#1f2937;--tw-prose-th-borders:#d1d5db;--tw-prose-td-borders:#e5e7eb;--tw-prose-invert-body:#d1d5db;--tw-prose-invert-headings:#fff;--tw-prose-invert-lead:#9ca3af;--tw-prose-invert-links:#fff;--tw-prose-invert-bold:#fff;--tw-prose-invert-counters:#9ca3af;--tw-prose-invert-bullets:#4b5563;--tw-prose-invert-hr:#374151;--tw-prose-invert-quotes:#f3f4f6;--tw-prose-invert-quote-borders:#374151;--tw-prose-invert-captions:#9ca3af;--tw-prose-invert-kbd:#fff;--tw-prose-invert-kbd-shadows:255 255 255;--tw-prose-invert-code:#fff;--tw-prose-invert-pre-code:#d1d5db;--tw-prose-invert-pre-bg:rgba(0,0,0,.5);--tw-prose-invert-th-borders:#4b5563;--tw-prose-invert-td-borders:#374151;font-size:1rem;line-height:1.75}.prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.5em;margin-top:.5em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.375em}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.75em;margin-top:.75em}.prose :where(.prose>ul>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.75em;margin-top:.75em}.prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em;margin-top:1.25em}.prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-left:1.625em}.prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding:.5714286em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.prose-sm{font-size:.875rem;line-height:1.7142857}.prose-sm :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em;margin-top:1.1428571em}.prose-sm :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.2857143em;line-height:1.5555556;margin-bottom:.8888889em;margin-top:.8888889em}.prose-sm :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em;margin-top:1.3333333em;padding-left:1.1111111em}.prose-sm :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:2.1428571em;line-height:1.2;margin-bottom:.8em;margin-top:0}.prose-sm :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.4285714em;line-height:1.4;margin-bottom:.8em;margin-top:1.6em}.prose-sm :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.2857143em;line-height:1.5555556;margin-bottom:.4444444em;margin-top:1.5555556em}.prose-sm :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){line-height:1.4285714;margin-bottom:.5714286em;margin-top:1.4285714em}.prose-sm :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7142857em;margin-top:1.7142857em}.prose-sm :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7142857em;margin-top:1.7142857em}.prose-sm :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose-sm :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7142857em;margin-top:1.7142857em}.prose-sm :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.3125rem;font-size:.8571429em;padding:.1428571em .3571429em}.prose-sm :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8571429em}.prose-sm :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.9em}.prose-sm :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8888889em}.prose-sm :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.25rem;font-size:.8571429em;line-height:1.6666667;margin-bottom:1.6666667em;margin-top:1.6666667em;padding:.6666667em 1em}.prose-sm :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em;margin-top:1.1428571em;padding-left:1.5714286em}.prose-sm :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em;margin-top:1.1428571em;padding-left:1.5714286em}.prose-sm :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.2857143em;margin-top:.2857143em}.prose-sm :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.4285714em}.prose-sm :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.4285714em}.prose-sm :where(.prose-sm>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.5714286em;margin-top:.5714286em}.prose-sm :where(.prose-sm>ul>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.1428571em}.prose-sm :where(.prose-sm>ul>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em}.prose-sm :where(.prose-sm>ol>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.1428571em}.prose-sm :where(.prose-sm>ol>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em}.prose-sm :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.5714286em;margin-top:.5714286em}.prose-sm :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em;margin-top:1.1428571em}.prose-sm :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.1428571em}.prose-sm :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.2857143em;padding-left:1.5714286em}.prose-sm :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2.8571429em;margin-top:2.8571429em}.prose-sm :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8571429em;line-height:1.5}.prose-sm :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){padding-bottom:.6666667em;padding-left:1em;padding-right:1em}.prose-sm :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose-sm :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose-sm :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding:.6666667em 1em}.prose-sm :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose-sm :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose-sm :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7142857em;margin-top:1.7142857em}.prose-sm :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose-sm :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8571429em;line-height:1.3333333;margin-top:.6666667em}.prose-sm :where(.prose-sm>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(.prose-sm>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.prose-base{font-size:1rem;line-height:1.75}.prose-base :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em;margin-top:1.25em}.prose-base :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.25em;line-height:1.6;margin-bottom:1.2em;margin-top:1.2em}.prose-base :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.6em;margin-top:1.6em;padding-left:1em}.prose-base :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:2.25em;line-height:1.1111111;margin-bottom:.8888889em;margin-top:0}.prose-base :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.5em;line-height:1.3333333;margin-bottom:1em;margin-top:2em}.prose-base :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.25em;line-height:1.6;margin-bottom:.6em;margin-top:1.6em}.prose-base :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){line-height:1.5;margin-bottom:.5em;margin-top:1.5em}.prose-base :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose-base :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose-base :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose-base :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose-base :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.3125rem;font-size:.875em;padding:.1875em .375em}.prose-base :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em}.prose-base :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em}.prose-base :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.9em}.prose-base :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.375rem;font-size:.875em;line-height:1.7142857;margin-bottom:1.7142857em;margin-top:1.7142857em;padding:.8571429em 1.1428571em}.prose-base :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em;margin-top:1.25em;padding-left:1.625em}.prose-base :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em;margin-top:1.25em;padding-left:1.625em}.prose-base :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.5em;margin-top:.5em}.prose-base :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.375em}.prose-base :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.375em}.prose-base :where(.prose-base>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.75em;margin-top:.75em}.prose-base :where(.prose-base>ul>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose-base :where(.prose-base>ul>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose-base :where(.prose-base>ol>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose-base :where(.prose-base>ol>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose-base :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.75em;margin-top:.75em}.prose-base :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em;margin-top:1.25em}.prose-base :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose-base :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-left:1.625em}.prose-base :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:3em;margin-top:3em}.prose-base :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-base :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-base :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-base :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-base :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em;line-height:1.7142857}.prose-base :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){padding-bottom:.5714286em;padding-left:.5714286em;padding-right:.5714286em}.prose-base :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose-base :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose-base :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding:.5714286em}.prose-base :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose-base :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose-base :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose-base :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose-base :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose-base :where(.prose-base>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-base :where(.prose-base>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.prose-lg{font-size:1.125rem;line-height:1.7777778}.prose-lg :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em;margin-top:1.3333333em}.prose-lg :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.2222222em;line-height:1.4545455;margin-bottom:1.0909091em;margin-top:1.0909091em}.prose-lg :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.6666667em;margin-top:1.6666667em;padding-left:1em}.prose-lg :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:2.6666667em;line-height:1;margin-bottom:.8333333em;margin-top:0}.prose-lg :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.6666667em;line-height:1.3333333;margin-bottom:1.0666667em;margin-top:1.8666667em}.prose-lg :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.3333333em;line-height:1.5;margin-bottom:.6666667em;margin-top:1.6666667em}.prose-lg :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){line-height:1.5555556;margin-bottom:.4444444em;margin-top:1.7777778em}.prose-lg :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7777778em;margin-top:1.7777778em}.prose-lg :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7777778em;margin-top:1.7777778em}.prose-lg :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose-lg :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7777778em;margin-top:1.7777778em}.prose-lg :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.3125rem;font-size:.8888889em;padding:.2222222em .4444444em}.prose-lg :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8888889em}.prose-lg :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8666667em}.prose-lg :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em}.prose-lg :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.375rem;font-size:.8888889em;line-height:1.75;margin-bottom:2em;margin-top:2em;padding:1em 1.5em}.prose-lg :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em;margin-top:1.3333333em;padding-left:1.5555556em}.prose-lg :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em;margin-top:1.3333333em;padding-left:1.5555556em}.prose-lg :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.6666667em;margin-top:.6666667em}.prose-lg :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.4444444em}.prose-lg :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.4444444em}.prose-lg :where(.prose-lg>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.8888889em;margin-top:.8888889em}.prose-lg :where(.prose-lg>ul>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.3333333em}.prose-lg :where(.prose-lg>ul>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em}.prose-lg :where(.prose-lg>ol>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.3333333em}.prose-lg :where(.prose-lg>ol>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em}.prose-lg :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.8888889em;margin-top:.8888889em}.prose-lg :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em;margin-top:1.3333333em}.prose-lg :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.3333333em}.prose-lg :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.6666667em;padding-left:1.5555556em}.prose-lg :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:3.1111111em;margin-top:3.1111111em}.prose-lg :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-lg :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-lg :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-lg :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-lg :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8888889em;line-height:1.5}.prose-lg :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){padding-bottom:.75em;padding-left:.75em;padding-right:.75em}.prose-lg :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose-lg :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose-lg :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding:.75em}.prose-lg :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose-lg :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose-lg :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7777778em;margin-top:1.7777778em}.prose-lg :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose-lg :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8888889em;line-height:1.5;margin-top:1em}.prose-lg :where(.prose-lg>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-lg :where(.prose-lg>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.sr-only{clip:rect(0,0,0,0);border-width:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.visible{visibility:visible}.invisible{visibility:hidden}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.inset-4{inset:1rem}.inset-x-0{left:0;right:0}.inset-x-4{left:1rem;right:1rem}.inset-y-0{bottom:0;top:0}.-bottom-1\/2{bottom:-50%}.-top-1{top:-.25rem}.-top-1\/2{top:-50%}.-top-2{top:-.5rem}.-top-3{top:-.75rem}.bottom-0{bottom:0}.bottom-1\/2{bottom:50%}.end-0{inset-inline-end:0}.end-4{inset-inline-end:1rem}.end-6{inset-inline-end:1.5rem}.left-3{left:.75rem}.start-0{inset-inline-start:0}.start-full{inset-inline-start:100%}.top-0{top:0}.top-1\/2{top:50%}.top-4{top:1rem}.top-6{top:1.5rem}.isolate{isolation:isolate}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.z-\[1\]{z-index:1}.col-\[--col-span-default\]{grid-column:var(--col-span-default)}.col-span-full{grid-column:1/-1}.col-start-2{grid-column-start:2}.col-start-3{grid-column-start:3}.col-start-\[--col-start-default\]{grid-column-start:var(--col-start-default)}.-m-0{margin:0}.-m-0\.5{margin:-.125rem}.-m-1{margin:-.25rem}.-m-1\.5{margin:-.375rem}.-m-2{margin:-.5rem}.-m-2\.5{margin:-.625rem}.-m-3{margin:-.75rem}.-m-3\.5{margin:-.875rem}.-mx-2{margin-left:-.5rem;margin-right:-.5rem}.-mx-4{margin-left:-1rem;margin-right:-1rem}.-mx-6{margin-left:-1.5rem;margin-right:-1.5rem}.-my-1{margin-bottom:-.25rem;margin-top:-.25rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-3{margin-left:.75rem;margin-right:.75rem}.mx-auto{margin-left:auto;margin-right:auto}.my-16{margin-bottom:4rem;margin-top:4rem}.my-2{margin-bottom:.5rem;margin-top:.5rem}.my-4{margin-bottom:1rem;margin-top:1rem}.my-auto{margin-bottom:auto;margin-top:auto}.\!mt-0{margin-top:0!important}.-mb-4{margin-bottom:-1rem}.-mb-6{margin-bottom:-1.5rem}.-me-2{margin-inline-end:-.5rem}.-ms-0{margin-inline-start:0}.-ms-0\.5{margin-inline-start:-.125rem}.-ms-1{margin-inline-start:-.25rem}.-ms-2{margin-inline-start:-.5rem}.-mt-4{margin-top:-1rem}.-mt-6{margin-top:-1.5rem}.mb-2{margin-bottom:.5rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.me-1{margin-inline-end:.25rem}.me-4{margin-inline-end:1rem}.me-6{margin-inline-end:1.5rem}.ml-auto{margin-left:auto}.ms-1{margin-inline-start:.25rem}.ms-auto{margin-inline-start:auto}.mt-0{margin-top:0}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-6{margin-top:1.5rem}.mt-auto{margin-top:auto}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.inline-grid{display:inline-grid}.hidden{display:none}.h-0{height:0}.h-1{height:.25rem}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-11{height:2.75rem}.h-16{height:4rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-32{height:8rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-96{height:24rem}.h-full{height:100%}.h-screen{height:100vh}.max-h-96{max-height:24rem}.min-h-\[theme\(spacing\.48\)\]{min-height:12rem}.min-h-full{min-height:100%}.min-h-screen{min-height:100vh}.w-1{width:.25rem}.w-1\.5{width:.375rem}.w-1\/2{width:50%}.w-10{width:2.5rem}.w-11{width:2.75rem}.w-16{width:4rem}.w-20{width:5rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-32{width:8rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-7{width:1.75rem}.w-72{width:18rem}.w-8{width:2rem}.w-9{width:2.25rem}.w-\[--sidebar-width\]{width:var(--sidebar-width)}.w-\[calc\(100\%\+2rem\)\]{width:calc(100% + 2rem)}.w-auto{width:auto}.w-full{width:100%}.w-max{width:-moz-max-content;width:max-content}.w-px{width:1px}.w-screen{width:100vw}.min-w-0{min-width:0}.min-w-\[theme\(spacing\.4\)\]{min-width:1rem}.min-w-\[theme\(spacing\.5\)\]{min-width:1.25rem}.min-w-\[theme\(spacing\.6\)\]{min-width:1.5rem}.min-w-\[theme\(spacing\.8\)\]{min-width:2rem}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.max-w-4xl{max-width:56rem}.max-w-5xl{max-width:64rem}.max-w-6xl{max-width:72rem}.max-w-7xl{max-width:80rem}.max-w-\[14rem\]{max-width:14rem}.max-w-fit{max-width:-moz-fit-content;max-width:fit-content}.max-w-full{max-width:100%}.max-w-lg{max-width:32rem}.max-w-max{max-width:-moz-max-content;max-width:max-content}.max-w-md{max-width:28rem}.max-w-min{max-width:-moz-min-content;max-width:min-content}.max-w-none{max-width:none}.max-w-prose{max-width:65ch}.max-w-screen-2xl{max-width:1536px}.max-w-screen-lg{max-width:1024px}.max-w-screen-md{max-width:768px}.max-w-screen-sm{max-width:640px}.max-w-screen-xl{max-width:1280px}.max-w-sm{max-width:24rem}.max-w-xl{max-width:36rem}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.shrink-0{flex-shrink:0}.flex-grow,.grow{flex-grow:1}.table-auto{table-layout:auto}.-translate-x-1\/2{--tw-translate-x:-50%}.-translate-x-12,.-translate-x-1\/2{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-x-12{--tw-translate-x:-3rem}.-translate-x-5{--tw-translate-x:-1.25rem}.-translate-x-5,.-translate-x-full{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-x-full{--tw-translate-x:-100%}.-translate-y-12{--tw-translate-y:-3rem}.-translate-y-12,.translate-x-0{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-0{--tw-translate-x:0px}.translate-x-12{--tw-translate-x:3rem}.translate-x-12,.translate-x-5{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-5{--tw-translate-x:1.25rem}.translate-x-full{--tw-translate-x:100%}.translate-x-full,.translate-y-12{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-12{--tw-translate-y:3rem}.-rotate-180{--tw-rotate:-180deg}.-rotate-180,.rotate-180{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180{--tw-rotate:180deg}.scale-100{--tw-scale-x:1;--tw-scale-y:1}.scale-100,.scale-95{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-95{--tw-scale-x:.95;--tw-scale-y:.95}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(1turn)}}.animate-spin{animation:spin 1s linear infinite}.cursor-default{cursor:default}.cursor-move{cursor:move}.cursor-pointer{cursor:pointer}.cursor-wait{cursor:wait}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize-none{resize:none}.scroll-mt-9{scroll-margin-top:2.25rem}.list-inside{list-style-position:inside}.list-disc{list-style-type:disc}.columns-\[--cols-default\]{-moz-columns:var(--cols-default);columns:var(--cols-default)}.break-inside-avoid{-moz-column-break-inside:avoid;break-inside:avoid}.auto-cols-fr{grid-auto-columns:minmax(0,1fr)}.grid-flow-col{grid-auto-flow:column}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.grid-cols-\[--cols-default\]{grid-template-columns:var(--cols-default)}.grid-cols-\[1fr_auto_1fr\]{grid-template-columns:1fr auto 1fr}.grid-cols-\[repeat\(7\2c minmax\(theme\(spacing\.7\)\2c 1fr\)\)\]{grid-template-columns:repeat(7,minmax(1.75rem,1fr))}.grid-cols-\[repeat\(auto-fit\2c minmax\(0\2c 1fr\)\)\]{grid-template-columns:repeat(auto-fit,minmax(0,1fr))}.flex-row-reverse{flex-direction:row-reverse}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.content-start{align-content:flex-start}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-items-start{justify-items:start}.justify-items-center{justify-items:center}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.gap-x-1{-moz-column-gap:.25rem;column-gap:.25rem}.gap-x-1\.5{-moz-column-gap:.375rem;column-gap:.375rem}.gap-x-2{-moz-column-gap:.5rem;column-gap:.5rem}.gap-x-2\.5{-moz-column-gap:.625rem;column-gap:.625rem}.gap-x-3{-moz-column-gap:.75rem;column-gap:.75rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-x-5{-moz-column-gap:1.25rem;column-gap:1.25rem}.gap-x-6{-moz-column-gap:1.5rem;column-gap:1.5rem}.gap-y-1{row-gap:.25rem}.gap-y-1\.5{row-gap:.375rem}.gap-y-2{row-gap:.5rem}.gap-y-3{row-gap:.75rem}.gap-y-4{row-gap:1rem}.gap-y-6{row-gap:1.5rem}.gap-y-7{row-gap:1.75rem}.gap-y-8{row-gap:2rem}.gap-y-px{row-gap:1px}.-space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-.25rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-.25rem*var(--tw-space-x-reverse))}.-space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-.5rem*var(--tw-space-x-reverse))}.-space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-.75rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-.75rem*var(--tw-space-x-reverse))}.-space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-1rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-1rem*var(--tw-space-x-reverse))}.-space-x-5>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-1.25rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-1.25rem*var(--tw-space-x-reverse))}.-space-x-6>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-1.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-1.5rem*var(--tw-space-x-reverse))}.-space-x-7>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-1.75rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-1.75rem*var(--tw-space-x-reverse))}.-space-x-8>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-2rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-2rem*var(--tw-space-x-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.25rem*var(--tw-space-y-reverse));margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.5rem*var(--tw-space-y-reverse));margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.75rem*var(--tw-space-y-reverse));margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1rem*var(--tw-space-y-reverse));margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1.5rem*var(--tw-space-y-reverse));margin-top:calc(1.5rem*(1 - var(--tw-space-y-reverse)))}.divide-x>:not([hidden])~:not([hidden]){--tw-divide-x-reverse:0;border-left-width:calc(1px*(1 - var(--tw-divide-x-reverse)));border-right-width:calc(1px*var(--tw-divide-x-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-bottom-width:calc(1px*var(--tw-divide-y-reverse));border-top-width:calc(1px*(1 - var(--tw-divide-y-reverse)))}.divide-gray-100>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgba(var(--gray-100),var(--tw-divide-opacity))}.divide-gray-200>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgba(var(--gray-200),var(--tw-divide-opacity))}.divide-gray-950\/10>:not([hidden])~:not([hidden]){border-color:rgba(var(--gray-950),.1)}.self-start{align-self:flex-start}.self-stretch{align-self:stretch}.justify-self-start{justify-self:start}.justify-self-end{justify-self:end}.justify-self-center{justify-self:center}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-hidden{overflow-y:hidden}.overflow-x-clip{overflow-x:clip}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-normal{white-space:normal}.whitespace-nowrap{white-space:nowrap}.break-words{overflow-wrap:break-word}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-xl{border-radius:.75rem}.rounded-b-xl{border-bottom-left-radius:.75rem;border-bottom-right-radius:.75rem}.rounded-t-xl{border-top-left-radius:.75rem;border-top-right-radius:.75rem}.border{border-width:1px}.border-2{border-width:2px}.border-x-\[0\.5px\]{border-left-width:.5px;border-right-width:.5px}.border-y{border-bottom-width:1px;border-top-width:1px}.\!border-t-0{border-top-width:0!important}.border-b{border-bottom-width:1px}.border-b-0{border-bottom-width:0}.border-e{border-inline-end-width:1px}.border-s{border-inline-start-width:1px}.border-t{border-top-width:1px}.\!border-none{border-style:none!important}.border-none{border-style:none}.border-gray-100{--tw-border-opacity:1;border-color:rgba(var(--gray-100),var(--tw-border-opacity))}.border-gray-200{--tw-border-opacity:1;border-color:rgba(var(--gray-200),var(--tw-border-opacity))}.border-gray-300{--tw-border-opacity:1;border-color:rgba(var(--gray-300),var(--tw-border-opacity))}.border-gray-600{--tw-border-opacity:1;border-color:rgba(var(--gray-600),var(--tw-border-opacity))}.border-primary-500{--tw-border-opacity:1;border-color:rgba(var(--primary-500),var(--tw-border-opacity))}.border-primary-600{--tw-border-opacity:1;border-color:rgba(var(--primary-600),var(--tw-border-opacity))}.border-transparent{border-color:transparent}.border-t-gray-200{--tw-border-opacity:1;border-top-color:rgba(var(--gray-200),var(--tw-border-opacity))}.\!bg-gray-50{--tw-bg-opacity:1!important;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))!important}.\!bg-gray-700{--tw-bg-opacity:1!important;background-color:rgba(var(--gray-700),var(--tw-bg-opacity))!important}.bg-black\/50{background-color:rgba(0,0,0,.5)}.bg-custom-100{--tw-bg-opacity:1;background-color:rgba(var(--c-100),var(--tw-bg-opacity))}.bg-custom-50{--tw-bg-opacity:1;background-color:rgba(var(--c-50),var(--tw-bg-opacity))}.bg-custom-600{--tw-bg-opacity:1;background-color:rgba(var(--c-600),var(--tw-bg-opacity))}.bg-gray-100{--tw-bg-opacity:1;background-color:rgba(var(--gray-100),var(--tw-bg-opacity))}.bg-gray-200{--tw-bg-opacity:1;background-color:rgba(var(--gray-200),var(--tw-bg-opacity))}.bg-gray-300{--tw-bg-opacity:1;background-color:rgba(var(--gray-300),var(--tw-bg-opacity))}.bg-gray-400{--tw-bg-opacity:1;background-color:rgba(var(--gray-400),var(--tw-bg-opacity))}.bg-gray-50{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.bg-gray-950\/50{background-color:rgba(var(--gray-950),.5)}.bg-primary-500{--tw-bg-opacity:1;background-color:rgba(var(--primary-500),var(--tw-bg-opacity))}.bg-primary-600{--tw-bg-opacity:1;background-color:rgba(var(--primary-600),var(--tw-bg-opacity))}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.bg-white\/0{background-color:hsla(0,0%,100%,0)}.bg-white\/5{background-color:hsla(0,0%,100%,.05)}.bg-cover{background-size:cover}.bg-center{background-position:50%}.object-cover{-o-object-fit:cover;object-fit:cover}.object-center{-o-object-position:center;object-position:center}.p-0{padding:0}.p-0\.5{padding:.125rem}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.px-0{padding-left:0;padding-right:0}.px-0\.5{padding-left:.125rem;padding-right:.125rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-3\.5{padding-left:.875rem;padding-right:.875rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-0{padding-bottom:0;padding-top:0}.py-0\.5{padding-bottom:.125rem;padding-top:.125rem}.py-1{padding-bottom:.25rem;padding-top:.25rem}.py-1\.5{padding-bottom:.375rem;padding-top:.375rem}.py-12{padding-bottom:3rem;padding-top:3rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.py-2\.5{padding-bottom:.625rem;padding-top:.625rem}.py-3{padding-bottom:.75rem;padding-top:.75rem}.py-3\.5{padding-bottom:.875rem;padding-top:.875rem}.py-4{padding-bottom:1rem;padding-top:1rem}.py-5{padding-bottom:1.25rem;padding-top:1.25rem}.py-6{padding-bottom:1.5rem;padding-top:1.5rem}.py-8{padding-bottom:2rem;padding-top:2rem}.pb-4{padding-bottom:1rem}.pb-6{padding-bottom:1.5rem}.pe-0{padding-inline-end:0}.pe-1{padding-inline-end:.25rem}.pe-2{padding-inline-end:.5rem}.pe-3{padding-inline-end:.75rem}.pe-4{padding-inline-end:1rem}.pe-6{padding-inline-end:1.5rem}.pe-8{padding-inline-end:2rem}.ps-0{padding-inline-start:0}.ps-1{padding-inline-start:.25rem}.ps-2{padding-inline-start:.5rem}.ps-3{padding-inline-start:.75rem}.ps-4{padding-inline-start:1rem}.ps-\[5\.25rem\]{padding-inline-start:5.25rem}.pt-0{padding-top:0}.pt-2{padding-top:.5rem}.pt-4{padding-top:1rem}.pt-6{padding-top:1.5rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-justify{text-align:justify}.text-start{text-align:start}.text-end{text-align:end}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.font-sans{font-family:var(--font-family),ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"}.font-serif{font-family:ui-serif,Georgia,Cambria,Times New Roman,Times,serif}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-black{font-weight:900}.font-bold{font-weight:700}.font-extrabold{font-weight:800}.font-extralight{font-weight:200}.font-light{font-weight:300}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.font-thin{font-weight:100}.capitalize{text-transform:capitalize}.italic{font-style:italic}.leading-5{line-height:1.25rem}.leading-6{line-height:1.5rem}.leading-loose{line-height:2}.tracking-tight{letter-spacing:-.025em}.tracking-tighter{letter-spacing:-.05em}.text-custom-400{--tw-text-opacity:1;color:rgba(var(--c-400),var(--tw-text-opacity))}.text-custom-50{--tw-text-opacity:1;color:rgba(var(--c-50),var(--tw-text-opacity))}.text-custom-500{--tw-text-opacity:1;color:rgba(var(--c-500),var(--tw-text-opacity))}.text-custom-600{--tw-text-opacity:1;color:rgba(var(--c-600),var(--tw-text-opacity))}.text-custom-700\/50{color:rgba(var(--c-700),.5)}.text-danger-600{--tw-text-opacity:1;color:rgba(var(--danger-600),var(--tw-text-opacity))}.text-gray-100{--tw-text-opacity:1;color:rgba(var(--gray-100),var(--tw-text-opacity))}.text-gray-200{--tw-text-opacity:1;color:rgba(var(--gray-200),var(--tw-text-opacity))}.text-gray-400{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity:1;color:rgba(var(--gray-600),var(--tw-text-opacity))}.text-gray-700{--tw-text-opacity:1;color:rgba(var(--gray-700),var(--tw-text-opacity))}.text-gray-700\/50{color:rgba(var(--gray-700),.5)}.text-gray-950{--tw-text-opacity:1;color:rgba(var(--gray-950),var(--tw-text-opacity))}.text-primary-400{--tw-text-opacity:1;color:rgba(var(--primary-400),var(--tw-text-opacity))}.text-primary-500{--tw-text-opacity:1;color:rgba(var(--primary-500),var(--tw-text-opacity))}.text-primary-600{--tw-text-opacity:1;color:rgba(var(--primary-600),var(--tw-text-opacity))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.underline{text-decoration-line:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-50{opacity:.5}.opacity-70{opacity:.7}.shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.shadow,.shadow-lg{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.shadow-sm,.shadow-xl{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color)}.outline-none{outline:2px solid transparent;outline-offset:2px}.ring{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring,.ring-0{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-0{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring-1{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring-1,.ring-2{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-2{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring-4{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-inset{--tw-ring-inset:inset}.ring-custom-600{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--c-600),var(--tw-ring-opacity))}.ring-custom-600\/10{--tw-ring-color:rgba(var(--c-600),0.1)}.ring-custom-600\/20{--tw-ring-color:rgba(var(--c-600),0.2)}.ring-danger-600{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--danger-600),var(--tw-ring-opacity))}.ring-gray-200{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--gray-200),var(--tw-ring-opacity))}.ring-gray-300{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--gray-300),var(--tw-ring-opacity))}.ring-gray-600\/10{--tw-ring-color:rgba(var(--gray-600),0.1)}.ring-gray-900\/10{--tw-ring-color:rgba(var(--gray-900),0.1)}.ring-gray-950\/10{--tw-ring-color:rgba(var(--gray-950),0.1)}.ring-gray-950\/5{--tw-ring-color:rgba(var(--gray-950),0.05)}.ring-white{--tw-ring-opacity:1;--tw-ring-color:rgb(255 255 255/var(--tw-ring-opacity))}.ring-white\/10{--tw-ring-color:hsla(0,0%,100%,.1)}.blur{--tw-blur:blur(8px)}.blur,.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-all{transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-colors{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-opacity{transition-duration:.15s;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}.delay-100{transition-delay:.1s}.duration-100{transition-duration:.1s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.duration-500{transition-duration:.5s}.duration-75{transition-duration:75ms}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.\[transform\:translateZ\(0\)\]{transform:translateZ(0)}:is(:where(.dark) .dark\:prose-invert){--tw-prose-body:var(--tw-prose-invert-body);--tw-prose-headings:var(--tw-prose-invert-headings);--tw-prose-lead:var(--tw-prose-invert-lead);--tw-prose-links:var(--tw-prose-invert-links);--tw-prose-bold:var(--tw-prose-invert-bold);--tw-prose-counters:var(--tw-prose-invert-counters);--tw-prose-bullets:var(--tw-prose-invert-bullets);--tw-prose-hr:var(--tw-prose-invert-hr);--tw-prose-quotes:var(--tw-prose-invert-quotes);--tw-prose-quote-borders:var(--tw-prose-invert-quote-borders);--tw-prose-captions:var(--tw-prose-invert-captions);--tw-prose-kbd:var(--tw-prose-invert-kbd);--tw-prose-kbd-shadows:var(--tw-prose-invert-kbd-shadows);--tw-prose-code:var(--tw-prose-invert-code);--tw-prose-pre-code:var(--tw-prose-invert-pre-code);--tw-prose-pre-bg:var(--tw-prose-invert-pre-bg);--tw-prose-th-borders:var(--tw-prose-invert-th-borders);--tw-prose-td-borders:var(--tw-prose-invert-td-borders)}.placeholder\:text-gray-400::-moz-placeholder{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.placeholder\:text-gray-400::placeholder{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.before\:absolute:before{content:var(--tw-content);position:absolute}.before\:inset-y-0:before{bottom:0;content:var(--tw-content);top:0}.before\:start-0:before{content:var(--tw-content);inset-inline-start:0}.before\:h-full:before{content:var(--tw-content);height:100%}.before\:w-0:before{content:var(--tw-content);width:0}.before\:w-0\.5:before{content:var(--tw-content);width:.125rem}.before\:bg-primary-600:before{--tw-bg-opacity:1;background-color:rgba(var(--primary-600),var(--tw-bg-opacity));content:var(--tw-content)}.first\:border-s-0:first-child{border-inline-start-width:0}.first\:border-t-0:first-child{border-top-width:0}.last\:border-e-0:last-child{border-inline-end-width:0}.first-of-type\:ps-1:first-of-type{padding-inline-start:.25rem}.last-of-type\:pe-1:last-of-type{padding-inline-end:.25rem}.checked\:ring-0:checked{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-within\:bg-gray-50:focus-within{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.focus-within\:ring-2:focus-within{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-within\:ring-danger-600:focus-within{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--danger-600),var(--tw-ring-opacity))}.focus-within\:ring-primary-600:focus-within{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-600),var(--tw-ring-opacity))}.hover\:bg-custom-400\/10:hover{background-color:rgba(var(--c-400),.1)}.hover\:bg-custom-50:hover{--tw-bg-opacity:1;background-color:rgba(var(--c-50),var(--tw-bg-opacity))}.hover\:bg-custom-500:hover{--tw-bg-opacity:1;background-color:rgba(var(--c-500),var(--tw-bg-opacity))}.hover\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgba(var(--gray-100),var(--tw-bg-opacity))}.hover\:bg-gray-400\/10:hover{background-color:rgba(var(--gray-400),.1)}.hover\:bg-gray-50:hover{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.hover\:text-custom-600:hover{--tw-text-opacity:1;color:rgba(var(--c-600),var(--tw-text-opacity))}.hover\:text-custom-700\/75:hover{color:rgba(var(--c-700),.75)}.hover\:text-gray-500:hover{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.hover\:text-gray-700:hover{--tw-text-opacity:1;color:rgba(var(--gray-700),var(--tw-text-opacity))}.hover\:text-gray-700\/75:hover{color:rgba(var(--gray-700),.75)}.hover\:opacity-100:hover{opacity:1}.focus\:ring-0:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\:ring-0:focus,.focus\:ring-2:focus{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\:ring-danger-600:focus{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--danger-600),var(--tw-ring-opacity))}.focus\:ring-primary-600:focus{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-600),var(--tw-ring-opacity))}.focus\:ring-offset-0:focus{--tw-ring-offset-width:0px}.checked\:focus\:ring-danger-500\/50:focus:checked{--tw-ring-color:rgba(var(--danger-500),0.5)}.checked\:focus\:ring-primary-500\/50:focus:checked{--tw-ring-color:rgba(var(--primary-500),0.5)}.focus-visible\:z-10:focus-visible{z-index:10}.focus-visible\:border-primary-500:focus-visible{--tw-border-opacity:1;border-color:rgba(var(--primary-500),var(--tw-border-opacity))}.focus-visible\:bg-custom-50:focus-visible{--tw-bg-opacity:1;background-color:rgba(var(--c-50),var(--tw-bg-opacity))}.focus-visible\:bg-gray-100:focus-visible{--tw-bg-opacity:1;background-color:rgba(var(--gray-100),var(--tw-bg-opacity))}.focus-visible\:bg-gray-50:focus-visible{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.focus-visible\:text-custom-700\/75:focus-visible{color:rgba(var(--c-700),.75)}.focus-visible\:text-gray-500:focus-visible{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.focus-visible\:text-gray-700\/75:focus-visible{color:rgba(var(--gray-700),.75)}.focus-visible\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\:ring-1:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\:ring-inset:focus-visible{--tw-ring-inset:inset}.focus-visible\:ring-custom-500\/50:focus-visible{--tw-ring-color:rgba(var(--c-500),0.5)}.focus-visible\:ring-custom-600:focus-visible{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--c-600),var(--tw-ring-opacity))}.focus-visible\:ring-gray-400\/40:focus-visible{--tw-ring-color:rgba(var(--gray-400),0.4)}.focus-visible\:ring-primary-500:focus-visible{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-500),var(--tw-ring-opacity))}.focus-visible\:ring-primary-600:focus-visible{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-600),var(--tw-ring-opacity))}.enabled\:cursor-wait:enabled{cursor:wait}.enabled\:opacity-70:enabled{opacity:.7}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:bg-gray-50:disabled{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.disabled\:text-gray-50:disabled{--tw-text-opacity:1;color:rgba(var(--gray-50),var(--tw-text-opacity))}.disabled\:text-gray-500:disabled{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.disabled\:opacity-70:disabled{opacity:.7}.disabled\:\[-webkit-text-fill-color\:theme\(colors\.gray\.500\)\]:disabled{-webkit-text-fill-color:rgba(var(--gray-500),1)}.disabled\:placeholder\:\[-webkit-text-fill-color\:theme\(colors\.gray\.400\)\]:disabled::-moz-placeholder{-webkit-text-fill-color:rgba(var(--gray-400),1)}.disabled\:placeholder\:\[-webkit-text-fill-color\:theme\(colors\.gray\.400\)\]:disabled::placeholder{-webkit-text-fill-color:rgba(var(--gray-400),1)}.disabled\:checked\:bg-current:checked:disabled{background-color:currentColor}.disabled\:checked\:text-gray-400:checked:disabled{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.group\/item:first-child .group-first\/item\:rounded-s-lg{border-end-start-radius:.5rem;border-start-start-radius:.5rem}.group\/item:last-child .group-last\/item\:rounded-e-lg{border-end-end-radius:.5rem;border-start-end-radius:.5rem}.group:hover .group-hover\:text-gray-500,.group\/button:hover .group-hover\/button\:text-gray-500{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.group:hover .group-hover\:text-gray-700{--tw-text-opacity:1;color:rgba(var(--gray-700),var(--tw-text-opacity))}.group\/item:hover .group-hover\/item\:underline,.group\/link:hover .group-hover\/link\:underline{text-decoration-line:underline}.group:focus-visible .group-focus-visible\:text-gray-500{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.group:focus-visible .group-focus-visible\:text-gray-700{--tw-text-opacity:1;color:rgba(var(--gray-700),var(--tw-text-opacity))}.group\/item:focus-visible .group-focus-visible\/item\:underline{text-decoration-line:underline}.group\/link:focus-visible .group-focus-visible\/link\:underline{text-decoration-line:underline}@media (min-width:640px){.sm\:relative{position:relative}.sm\:inset-x-auto{left:auto;right:auto}.sm\:end-0{inset-inline-end:0}.sm\:col-\[--col-span-sm\]{grid-column:var(--col-span-sm)}.sm\:col-span-2{grid-column:span 2/span 2}.sm\:col-start-\[--col-start-sm\]{grid-column-start:var(--col-start-sm)}.sm\:-mx-6{margin-left:-1.5rem;margin-right:-1.5rem}.sm\:-my-2{margin-bottom:-.5rem;margin-top:-.5rem}.sm\:ms-auto{margin-inline-start:auto}.sm\:mt-7{margin-top:1.75rem}.sm\:block{display:block}.sm\:flex{display:flex}.sm\:table-cell{display:table-cell}.sm\:grid{display:grid}.sm\:inline-grid{display:inline-grid}.sm\:hidden{display:none}.sm\:w-\[calc\(100\%\+3rem\)\]{width:calc(100% + 3rem)}.sm\:w-screen{width:100vw}.sm\:max-w-2xl{max-width:42rem}.sm\:max-w-3xl{max-width:48rem}.sm\:max-w-4xl{max-width:56rem}.sm\:max-w-5xl{max-width:64rem}.sm\:max-w-6xl{max-width:72rem}.sm\:max-w-7xl{max-width:80rem}.sm\:max-w-lg{max-width:32rem}.sm\:max-w-md{max-width:28rem}.sm\:max-w-sm{max-width:24rem}.sm\:max-w-xl{max-width:36rem}.sm\:max-w-xs{max-width:20rem}.sm\:columns-\[--cols-sm\]{-moz-columns:var(--cols-sm);columns:var(--cols-sm)}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-\[--cols-sm\]{grid-template-columns:var(--cols-sm)}.sm\:grid-cols-\[repeat\(auto-fit\2c minmax\(0\2c 1fr\)\)\]{grid-template-columns:repeat(auto-fit,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:flex-nowrap{flex-wrap:nowrap}.sm\:items-start{align-items:flex-start}.sm\:items-end{align-items:flex-end}.sm\:items-center{align-items:center}.sm\:justify-between{justify-content:space-between}.sm\:gap-1{gap:.25rem}.sm\:gap-3{gap:.75rem}.sm\:gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.sm\:rounded-xl{border-radius:.75rem}.sm\:p-10{padding:2.5rem}.sm\:px-12{padding-left:3rem;padding-right:3rem}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:py-1{padding-bottom:.25rem;padding-top:.25rem}.sm\:py-1\.5{padding-bottom:.375rem;padding-top:.375rem}.sm\:pe-3{padding-inline-end:.75rem}.sm\:pe-6{padding-inline-end:1.5rem}.sm\:ps-3{padding-inline-start:.75rem}.sm\:ps-6{padding-inline-start:1.5rem}.sm\:pt-1{padding-top:.25rem}.sm\:pt-1\.5{padding-top:.375rem}.sm\:text-3xl{font-size:1.875rem;line-height:2.25rem}.sm\:text-sm{font-size:.875rem;line-height:1.25rem}.sm\:leading-6{line-height:1.5rem}.sm\:first-of-type\:ps-3:first-of-type{padding-inline-start:.75rem}.sm\:first-of-type\:ps-6:first-of-type{padding-inline-start:1.5rem}.sm\:last-of-type\:pe-3:last-of-type{padding-inline-end:.75rem}.sm\:last-of-type\:pe-6:last-of-type{padding-inline-end:1.5rem}}@media (min-width:768px){.md\:bottom-4{bottom:1rem}.md\:order-first{order:-9999}.md\:col-\[--col-span-md\]{grid-column:var(--col-span-md)}.md\:col-span-2{grid-column:span 2/span 2}.md\:col-start-\[--col-start-md\]{grid-column-start:var(--col-start-md)}.md\:block{display:block}.md\:flex{display:flex}.md\:table-cell{display:table-cell}.md\:inline-grid{display:inline-grid}.md\:hidden{display:none}.md\:columns-\[--cols-md\]{-moz-columns:var(--cols-md);columns:var(--cols-md)}.md\:grid-flow-col{grid-auto-flow:column}.md\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-\[--cols-md\]{grid-template-columns:var(--cols-md)}.md\:flex-row{flex-direction:row}.md\:items-start{align-items:flex-start}.md\:items-center{align-items:center}.md\:justify-end{justify-content:flex-end}.md\:gap-1{gap:.25rem}.md\:gap-3{gap:.75rem}.md\:divide-y-0>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-bottom-width:calc(0px*var(--tw-divide-y-reverse));border-top-width:calc(0px*(1 - var(--tw-divide-y-reverse)))}.md\:rounded-xl{border-radius:.75rem}.md\:p-20{padding:5rem}.md\:px-6{padding-left:1.5rem;padding-right:1.5rem}.md\:pe-3{padding-inline-end:.75rem}.md\:pe-6{padding-inline-end:1.5rem}.md\:ps-3{padding-inline-start:.75rem}}@media (min-width:1024px){.lg\:sticky{position:sticky}.lg\:z-0{z-index:0}.lg\:col-\[--col-span-lg\]{grid-column:var(--col-span-lg)}.lg\:col-start-\[--col-start-lg\]{grid-column-start:var(--col-start-lg)}.lg\:block{display:block}.lg\:flex{display:flex}.lg\:table-cell{display:table-cell}.lg\:inline-grid{display:inline-grid}.lg\:hidden{display:none}.lg\:h-full{height:100%}.lg\:max-w-xs{max-width:20rem}.lg\:-translate-x-full{--tw-translate-x:-100%}.lg\:-translate-x-full,.lg\:translate-x-0{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lg\:translate-x-0{--tw-translate-x:0px}.lg\:columns-\[--cols-lg\]{-moz-columns:var(--cols-lg);columns:var(--cols-lg)}.lg\:grid-cols-\[--cols-lg\]{grid-template-columns:var(--cols-lg)}.lg\:flex-row{flex-direction:row}.lg\:items-start{align-items:flex-start}.lg\:items-center{align-items:center}.lg\:gap-1{gap:.25rem}.lg\:gap-3{gap:.75rem}.lg\:bg-transparent{background-color:transparent}.lg\:px-8{padding-left:2rem;padding-right:2rem}.lg\:pe-8{padding-inline-end:2rem}.lg\:shadow-none{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000}.lg\:shadow-none,.lg\:shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.lg\:shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.lg\:ring-0{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.lg\:transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.lg\:transition-none{transition-property:none}.lg\:delay-100{transition-delay:.1s}}@media (min-width:1280px){.xl\:col-\[--col-span-xl\]{grid-column:var(--col-span-xl)}.xl\:col-start-\[--col-start-xl\]{grid-column-start:var(--col-start-xl)}.xl\:block{display:block}.xl\:table-cell{display:table-cell}.xl\:inline-grid{display:inline-grid}.xl\:hidden{display:none}.xl\:columns-\[--cols-xl\]{-moz-columns:var(--cols-xl);columns:var(--cols-xl)}.xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.xl\:grid-cols-\[--cols-xl\]{grid-template-columns:var(--cols-xl)}.xl\:flex-row{flex-direction:row}.xl\:items-start{align-items:flex-start}.xl\:items-center{align-items:center}.xl\:gap-1{gap:.25rem}.xl\:gap-3{gap:.75rem}}@media (min-width:1536px){.\32xl\:col-\[--col-span-2xl\]{grid-column:var(--col-span-2xl)}.\32xl\:col-start-\[--col-start-2xl\]{grid-column-start:var(--col-start-2xl)}.\32xl\:block{display:block}.\32xl\:table-cell{display:table-cell}.\32xl\:inline-grid{display:inline-grid}.\32xl\:hidden{display:none}.\32xl\:columns-\[--cols-2xl\]{-moz-columns:var(--cols-2xl);columns:var(--cols-2xl)}.\32xl\:grid-cols-\[--cols-2xl\]{grid-template-columns:var(--cols-2xl)}.\32xl\:flex-row{flex-direction:row}.\32xl\:items-start{align-items:flex-start}.\32xl\:items-center{align-items:center}.\32xl\:gap-1{gap:.25rem}.\32xl\:gap-3{gap:.75rem}}:is(:where([dir=ltr]) .ltr\:hidden){display:none}:is(:where([dir=rtl]) .rtl\:hidden){display:none}:is(:where([dir=rtl]) .rtl\:-translate-x-0){--tw-translate-x:-0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}:is(:where([dir=rtl]) .rtl\:-translate-x-5){--tw-translate-x:-1.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}:is(:where([dir=rtl]) .rtl\:-translate-x-full){--tw-translate-x:-100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}:is(:where([dir=rtl]) .rtl\:translate-x-1\/2){--tw-translate-x:50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}:is(:where([dir=rtl]) .rtl\:translate-x-full){--tw-translate-x:100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}:is(:where([dir=rtl]) .rtl\:rotate-180){--tw-rotate:180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}:is(:where([dir=rtl]) .rtl\:flex-row-reverse){flex-direction:row-reverse}:is(:where([dir=rtl]) .rtl\:divide-x-reverse)>:not([hidden])~:not([hidden]){--tw-divide-x-reverse:1}@media (min-width:1024px){:is(:where([dir=rtl]) .rtl\:lg\:-translate-x-0){--tw-translate-x:-0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}:is(:where([dir=rtl]) .rtl\:lg\:translate-x-full){--tw-translate-x:100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}}:is(:where(.dark) .dark\:inline-flex){display:inline-flex}:is(:where(.dark) .dark\:hidden){display:none}:is(:where(.dark) .dark\:divide-white\/10)>:not([hidden])~:not([hidden]){border-color:hsla(0,0%,100%,.1)}:is(:where(.dark) .dark\:divide-white\/20)>:not([hidden])~:not([hidden]){border-color:hsla(0,0%,100%,.2)}:is(:where(.dark) .dark\:divide-white\/5)>:not([hidden])~:not([hidden]){border-color:hsla(0,0%,100%,.05)}:is(:where(.dark) .dark\:border-gray-600){--tw-border-opacity:1;border-color:rgba(var(--gray-600),var(--tw-border-opacity))}:is(:where(.dark) .dark\:border-gray-700){--tw-border-opacity:1;border-color:rgba(var(--gray-700),var(--tw-border-opacity))}:is(:where(.dark) .dark\:border-primary-500){--tw-border-opacity:1;border-color:rgba(var(--primary-500),var(--tw-border-opacity))}:is(:where(.dark) .dark\:border-white\/10){border-color:hsla(0,0%,100%,.1)}:is(:where(.dark) .dark\:border-white\/5){border-color:hsla(0,0%,100%,.05)}:is(:where(.dark) .dark\:border-t-white\/10){border-top-color:hsla(0,0%,100%,.1)}:is(:where(.dark) .dark\:\!bg-gray-700){--tw-bg-opacity:1!important;background-color:rgba(var(--gray-700),var(--tw-bg-opacity))!important}:is(:where(.dark) .dark\:bg-custom-400\/10){background-color:rgba(var(--c-400),.1)}:is(:where(.dark) .dark\:bg-custom-500){--tw-bg-opacity:1;background-color:rgba(var(--c-500),var(--tw-bg-opacity))}:is(:where(.dark) .dark\:bg-custom-500\/20){background-color:rgba(var(--c-500),.2)}:is(:where(.dark) .dark\:bg-gray-400\/10){background-color:rgba(var(--gray-400),.1)}:is(:where(.dark) .dark\:bg-gray-500){--tw-bg-opacity:1;background-color:rgba(var(--gray-500),var(--tw-bg-opacity))}:is(:where(.dark) .dark\:bg-gray-500\/20){background-color:rgba(var(--gray-500),.2)}:is(:where(.dark) .dark\:bg-gray-600){--tw-bg-opacity:1;background-color:rgba(var(--gray-600),var(--tw-bg-opacity))}:is(:where(.dark) .dark\:bg-gray-700){--tw-bg-opacity:1;background-color:rgba(var(--gray-700),var(--tw-bg-opacity))}:is(:where(.dark) .dark\:bg-gray-800){--tw-bg-opacity:1;background-color:rgba(var(--gray-800),var(--tw-bg-opacity))}:is(:where(.dark) .dark\:bg-gray-900){--tw-bg-opacity:1;background-color:rgba(var(--gray-900),var(--tw-bg-opacity))}:is(:where(.dark) .dark\:bg-gray-900\/30){background-color:rgba(var(--gray-900),.3)}:is(:where(.dark) .dark\:bg-gray-950){--tw-bg-opacity:1;background-color:rgba(var(--gray-950),var(--tw-bg-opacity))}:is(:where(.dark) .dark\:bg-gray-950\/75){background-color:rgba(var(--gray-950),.75)}:is(:where(.dark) .dark\:bg-primary-400){--tw-bg-opacity:1;background-color:rgba(var(--primary-400),var(--tw-bg-opacity))}:is(:where(.dark) .dark\:bg-primary-500){--tw-bg-opacity:1;background-color:rgba(var(--primary-500),var(--tw-bg-opacity))}:is(:where(.dark) .dark\:bg-transparent){background-color:transparent}:is(:where(.dark) .dark\:bg-white\/10){background-color:hsla(0,0%,100%,.1)}:is(:where(.dark) .dark\:bg-white\/5){background-color:hsla(0,0%,100%,.05)}:is(:where(.dark) .dark\:fill-current){fill:currentColor}:is(:where(.dark) .dark\:text-custom-300\/50){color:rgba(var(--c-300),.5)}:is(:where(.dark) .dark\:text-custom-400){--tw-text-opacity:1;color:rgba(var(--c-400),var(--tw-text-opacity))}:is(:where(.dark) .dark\:text-custom-400\/10){color:rgba(var(--c-400),.1)}:is(:where(.dark) .dark\:text-danger-400){--tw-text-opacity:1;color:rgba(var(--danger-400),var(--tw-text-opacity))}:is(:where(.dark) .dark\:text-danger-500){--tw-text-opacity:1;color:rgba(var(--danger-500),var(--tw-text-opacity))}:is(:where(.dark) .dark\:text-gray-200){--tw-text-opacity:1;color:rgba(var(--gray-200),var(--tw-text-opacity))}:is(:where(.dark) .dark\:text-gray-300\/50){color:rgba(var(--gray-300),.5)}:is(:where(.dark) .dark\:text-gray-400){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}:is(:where(.dark) .dark\:text-gray-500){--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}:is(:where(.dark) .dark\:text-gray-700){--tw-text-opacity:1;color:rgba(var(--gray-700),var(--tw-text-opacity))}:is(:where(.dark) .dark\:text-gray-800){--tw-text-opacity:1;color:rgba(var(--gray-800),var(--tw-text-opacity))}:is(:where(.dark) .dark\:text-primary-400){--tw-text-opacity:1;color:rgba(var(--primary-400),var(--tw-text-opacity))}:is(:where(.dark) .dark\:text-primary-500){--tw-text-opacity:1;color:rgba(var(--primary-500),var(--tw-text-opacity))}:is(:where(.dark) .dark\:text-white){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}:is(:where(.dark) .dark\:text-white\/5){color:hsla(0,0%,100%,.05)}:is(:where(.dark) .dark\:ring-custom-400\/30){--tw-ring-color:rgba(var(--c-400),0.3)}:is(:where(.dark) .dark\:ring-custom-500){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--c-500),var(--tw-ring-opacity))}:is(:where(.dark) .dark\:ring-danger-500){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--danger-500),var(--tw-ring-opacity))}:is(:where(.dark) .dark\:ring-gray-400\/20){--tw-ring-color:rgba(var(--gray-400),0.2)}:is(:where(.dark) .dark\:ring-gray-50\/10){--tw-ring-color:rgba(var(--gray-50),0.1)}:is(:where(.dark) .dark\:ring-gray-700){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--gray-700),var(--tw-ring-opacity))}:is(:where(.dark) .dark\:ring-gray-900){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--gray-900),var(--tw-ring-opacity))}:is(:where(.dark) .dark\:ring-white\/10){--tw-ring-color:hsla(0,0%,100%,.1)}:is(:where(.dark) .dark\:ring-white\/20){--tw-ring-color:hsla(0,0%,100%,.2)}:is(:where(.dark) .dark\:placeholder\:text-gray-500)::-moz-placeholder{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}:is(:where(.dark) .dark\:placeholder\:text-gray-500)::placeholder{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}:is(:where(.dark) .dark\:before\:bg-primary-500):before{--tw-bg-opacity:1;background-color:rgba(var(--primary-500),var(--tw-bg-opacity));content:var(--tw-content)}:is(:where(.dark) .dark\:checked\:bg-danger-500:checked){--tw-bg-opacity:1;background-color:rgba(var(--danger-500),var(--tw-bg-opacity))}:is(:where(.dark) .dark\:checked\:bg-primary-500:checked){--tw-bg-opacity:1;background-color:rgba(var(--primary-500),var(--tw-bg-opacity))}:is(:where(.dark) .dark\:focus-within\:bg-white\/5:focus-within){background-color:hsla(0,0%,100%,.05)}:is(:where(.dark) .dark\:focus-within\:ring-danger-500:focus-within){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--danger-500),var(--tw-ring-opacity))}:is(:where(.dark) .dark\:focus-within\:ring-primary-500:focus-within){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-500),var(--tw-ring-opacity))}:is(:where(.dark) .dark\:hover\:bg-custom-400:hover){--tw-bg-opacity:1;background-color:rgba(var(--c-400),var(--tw-bg-opacity))}:is(:where(.dark) .dark\:hover\:bg-custom-400\/10:hover){background-color:rgba(var(--c-400),.1)}:is(:where(.dark) .dark\:hover\:bg-white\/10:hover){background-color:hsla(0,0%,100%,.1)}:is(:where(.dark) .dark\:hover\:bg-white\/5:hover){background-color:hsla(0,0%,100%,.05)}:is(:where(.dark) .dark\:hover\:text-custom-300:hover){--tw-text-opacity:1;color:rgba(var(--c-300),var(--tw-text-opacity))}:is(:where(.dark) .dark\:hover\:text-custom-300\/75:hover){color:rgba(var(--c-300),.75)}:is(:where(.dark) .dark\:hover\:text-gray-200:hover){--tw-text-opacity:1;color:rgba(var(--gray-200),var(--tw-text-opacity))}:is(:where(.dark) .dark\:hover\:text-gray-300\/75:hover){color:rgba(var(--gray-300),.75)}:is(:where(.dark) .dark\:hover\:text-gray-400:hover){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}:is(:where(.dark) .dark\:hover\:ring-white\/20:hover){--tw-ring-color:hsla(0,0%,100%,.2)}:is(:where(.dark) .dark\:focus\:ring-danger-500:focus){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--danger-500),var(--tw-ring-opacity))}:is(:where(.dark) .dark\:focus\:ring-primary-500:focus){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-500),var(--tw-ring-opacity))}:is(:where(.dark) .dark\:checked\:focus\:ring-danger-400\/50:focus:checked){--tw-ring-color:rgba(var(--danger-400),0.5)}:is(:where(.dark) .dark\:checked\:focus\:ring-primary-400\/50:focus:checked){--tw-ring-color:rgba(var(--primary-400),0.5)}:is(:where(.dark) .dark\:focus-visible\:border-primary-500:focus-visible){--tw-border-opacity:1;border-color:rgba(var(--primary-500),var(--tw-border-opacity))}:is(:where(.dark) .dark\:focus-visible\:bg-custom-400\/10:focus-visible){background-color:rgba(var(--c-400),.1)}:is(:where(.dark) .dark\:focus-visible\:bg-white\/5:focus-visible){background-color:hsla(0,0%,100%,.05)}:is(:where(.dark) .dark\:focus-visible\:text-custom-300\/75:focus-visible){color:rgba(var(--c-300),.75)}:is(:where(.dark) .dark\:focus-visible\:text-gray-300\/75:focus-visible){color:rgba(var(--gray-300),.75)}:is(:where(.dark) .dark\:focus-visible\:text-gray-400:focus-visible){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}:is(:where(.dark) .dark\:focus-visible\:ring-custom-400\/50:focus-visible){--tw-ring-color:rgba(var(--c-400),0.5)}:is(:where(.dark) .dark\:focus-visible\:ring-custom-500:focus-visible){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--c-500),var(--tw-ring-opacity))}:is(:where(.dark) .dark\:focus-visible\:ring-primary-500:focus-visible){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-500),var(--tw-ring-opacity))}:is(:where(.dark) .dark\:disabled\:bg-transparent:disabled){background-color:transparent}:is(:where(.dark) .dark\:disabled\:text-gray-400:disabled){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}:is(:where(.dark) .dark\:disabled\:ring-white\/10:disabled){--tw-ring-color:hsla(0,0%,100%,.1)}:is(:where(.dark) .dark\:disabled\:\[-webkit-text-fill-color\:theme\(colors\.gray\.400\)\]:disabled){-webkit-text-fill-color:rgba(var(--gray-400),1)}:is(:where(.dark) .dark\:disabled\:placeholder\:\[-webkit-text-fill-color\:theme\(colors\.gray\.500\)\]:disabled)::-moz-placeholder{-webkit-text-fill-color:rgba(var(--gray-500),1)}:is(:where(.dark) .dark\:disabled\:placeholder\:\[-webkit-text-fill-color\:theme\(colors\.gray\.500\)\]:disabled)::placeholder{-webkit-text-fill-color:rgba(var(--gray-500),1)}:is(:where(.dark) .dark\:disabled\:checked\:bg-gray-600:checked:disabled){--tw-bg-opacity:1;background-color:rgba(var(--gray-600),var(--tw-bg-opacity))}:is(:where(.dark) .group\/button:hover .dark\:group-hover\/button\:text-gray-400){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}:is(:where(.dark) .group:hover .dark\:group-hover\:text-gray-200){--tw-text-opacity:1;color:rgba(var(--gray-200),var(--tw-text-opacity))}:is(:where(.dark) .group:hover .dark\:group-hover\:text-gray-400){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}:is(:where(.dark) .group:focus-visible .dark\:group-focus-visible\:text-gray-200){--tw-text-opacity:1;color:rgba(var(--gray-200),var(--tw-text-opacity))}:is(:where(.dark) .group:focus-visible .dark\:group-focus-visible\:text-gray-400){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}@media (min-width:1024px){:is(:where(.dark) .dark\:lg\:bg-transparent){background-color:transparent}}.\[\&\.trix-active\]\:bg-gray-50.trix-active{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.\[\&\.trix-active\]\:text-primary-600.trix-active{--tw-text-opacity:1;color:rgba(var(--primary-600),var(--tw-text-opacity))}:is(:where(.dark) .dark\:\[\&\.trix-active\]\:bg-white\/5.trix-active){background-color:hsla(0,0%,100%,.05)}:is(:where(.dark) .dark\:\[\&\.trix-active\]\:text-primary-400.trix-active){--tw-text-opacity:1;color:rgba(var(--primary-400),var(--tw-text-opacity))}.\[\&\>\*\:first-child\]\:relative>:first-child{position:relative}.\[\&\>\*\:first-child\]\:mt-0>:first-child{margin-top:0}.\[\&\>\*\:first-child\]\:before\:absolute>:first-child:before{content:var(--tw-content);position:absolute}.\[\&\>\*\:first-child\]\:before\:inset-y-0>:first-child:before{bottom:0;content:var(--tw-content);top:0}.\[\&\>\*\:first-child\]\:before\:start-0>:first-child:before{content:var(--tw-content);inset-inline-start:0}.\[\&\>\*\:first-child\]\:before\:w-0\.5>:first-child:before{content:var(--tw-content);width:.125rem}.\[\&\>\*\:first-child\]\:before\:bg-primary-600>:first-child:before{--tw-bg-opacity:1;background-color:rgba(var(--primary-600),var(--tw-bg-opacity));content:var(--tw-content)}:is(:where(.dark) .\[\&\>\*\:first-child\]\:dark\:before\:bg-primary-500)>:first-child:before{--tw-bg-opacity:1;background-color:rgba(var(--primary-500),var(--tw-bg-opacity));content:var(--tw-content)}.\[\&\>\*\:last-child\]\:mb-0>:last-child{margin-bottom:0}.\[\&_\.choices\\_\\_inner\]\:ps-0 .choices__inner{padding-inline-start:0}.\[\&_\.fi-badge-delete-button\]\:hidden .fi-badge-delete-button{display:none}.\[\&_\.filepond--root\]\:font-sans .filepond--root{font-family:var(--font-family),ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"}.\[\&_optgroup\]\:bg-white optgroup{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}:is(:where(.dark) .\[\&_optgroup\]\:dark\:bg-gray-900) optgroup{--tw-bg-opacity:1;background-color:rgba(var(--gray-900),var(--tw-bg-opacity))}.\[\&_option\]\:bg-white option{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}:is(:where(.dark) .\[\&_option\]\:dark\:bg-gray-900) option{--tw-bg-opacity:1;background-color:rgba(var(--gray-900),var(--tw-bg-opacity))}@media(hover:hover){.\[\@media\(hover\:hover\)\]\:transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.\[\@media\(hover\:hover\)\]\:duration-75{transition-duration:75ms}} \ No newline at end of file +/*! tailwindcss v3.4.1 | MIT License | https://tailwindcss.com*/*,:after,:before{border-color:rgba(var(--gray-200),1);border-style:solid;border-width:0;box-sizing:border-box}:after,:before{--tw-content:""}:host,html{-webkit-text-size-adjust:100%;font-feature-settings:normal;-webkit-tap-highlight-color:transparent;font-family:var(--font-family),ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-variation-settings:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-feature-settings:normal;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em;font-variation-settings:normal}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{font-feature-settings:inherit;color:inherit;font-family:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:rgba(var(--gray-400),1);opacity:1}input::placeholder,textarea::placeholder{color:rgba(var(--gray-400),1);opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]{display:none}[multiple],[type=date],[type=datetime-local],[type=email],[type=month],[type=number],[type=password],[type=search],[type=tel],[type=text],[type=time],[type=url],[type=week],input:where(:not([type])),select,textarea{--tw-shadow:0 0 #0000;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:rgba(var(--gray-500),var(--tw-border-opacity,1));border-radius:0;border-width:1px;font-size:1rem;line-height:1.5rem;padding:.5rem .75rem}[multiple]:focus,[type=date]:focus,[type=datetime-local]:focus,[type=email]:focus,[type=month]:focus,[type=number]:focus,[type=password]:focus,[type=search]:focus,[type=tel]:focus,[type=text]:focus,[type=time]:focus,[type=url]:focus,[type=week]:focus,input:where(:not([type])):focus,select:focus,textarea:focus{--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#2563eb;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);border-color:#2563eb;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);outline:2px solid transparent;outline-offset:2px}input::-moz-placeholder,textarea::-moz-placeholder{color:rgba(var(--gray-500),var(--tw-text-opacity,1));opacity:1}input::placeholder,textarea::placeholder{color:rgba(var(--gray-500),var(--tw-text-opacity,1));opacity:1}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-date-and-time-value{min-height:1.5em;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-meridiem-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-year-field{padding-bottom:0;padding-top:0}select{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3E%3Cpath stroke='rgba(var(--gray-500), var(--tw-stroke-opacity, 1))' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3E%3C/svg%3E");background-position:right .5rem center;background-repeat:no-repeat;background-size:1.5em 1.5em;padding-right:2.5rem;-webkit-print-color-adjust:exact;print-color-adjust:exact}[multiple],[size]:where(select:not([size="1"])){background-image:none;background-position:0 0;background-repeat:unset;background-size:initial;padding-right:.75rem;-webkit-print-color-adjust:unset;print-color-adjust:unset}[type=checkbox],[type=radio]{--tw-shadow:0 0 #0000;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;background-origin:border-box;border-color:rgba(var(--gray-500),var(--tw-border-opacity,1));border-width:1px;color:#2563eb;display:inline-block;flex-shrink:0;height:1rem;padding:0;-webkit-print-color-adjust:exact;print-color-adjust:exact;-webkit-user-select:none;-moz-user-select:none;user-select:none;vertical-align:middle;width:1rem}[type=checkbox]{border-radius:0}[type=radio]{border-radius:100%}[type=checkbox]:focus,[type=radio]:focus{--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:2px;--tw-ring-offset-color:#fff;--tw-ring-color:#2563eb;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);outline:2px solid transparent;outline-offset:2px}[type=checkbox]:checked,[type=radio]:checked{background-color:currentColor;background-position:50%;background-repeat:no-repeat;background-size:100% 100%;border-color:transparent}[type=checkbox]:checked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12.207 4.793a1 1 0 0 1 0 1.414l-5 5a1 1 0 0 1-1.414 0l-2-2a1 1 0 0 1 1.414-1.414L6.5 9.086l4.293-4.293a1 1 0 0 1 1.414 0z'/%3E%3C/svg%3E")}@media (forced-colors:active) {[type=checkbox]:checked{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=radio]:checked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='8' cy='8' r='3'/%3E%3C/svg%3E")}@media (forced-colors:active) {[type=radio]:checked{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=checkbox]:checked:focus,[type=checkbox]:checked:hover,[type=radio]:checked:focus,[type=radio]:checked:hover{background-color:currentColor;border-color:transparent}[type=checkbox]:indeterminate{background-color:currentColor;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3E%3Cpath stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8h8'/%3E%3C/svg%3E");background-position:50%;background-repeat:no-repeat;background-size:100% 100%;border-color:transparent}@media (forced-colors:active) {[type=checkbox]:indeterminate{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=checkbox]:indeterminate:focus,[type=checkbox]:indeterminate:hover{background-color:currentColor;border-color:transparent}[type=file]{background:unset;border-color:inherit;border-radius:0;border-width:0;font-size:unset;line-height:inherit;padding:0}[type=file]:focus{outline:1px solid ButtonText;outline:1px auto -webkit-focus-ring-color}:root.dark{color-scheme:dark}[data-field-wrapper]{scroll-margin-top:8rem}*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em;margin-top:1.25em}.prose :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-bottom:1.2em;margin-top:1.2em}.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);font-weight:500;text-decoration:underline}.prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal;margin-bottom:1.25em;margin-top:1.25em;padding-left:1.625em}.prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:disc;margin-bottom:1.25em;margin-top:1.25em;padding-left:1.625em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-counters);font-weight:400}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.25em}.prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-bottom:3em;margin-top:3em}.prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){border-left-color:var(--tw-prose-quote-borders);border-left-width:.25rem;color:var(--tw-prose-quotes);font-style:italic;font-weight:500;margin-bottom:1.6em;margin-top:1.6em;padding-left:1em;quotes:"\201C""\201D""\2018""\2019"}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-size:2.25em;font-weight:800;line-height:1.1111111;margin-bottom:.8888889em;margin-top:0}.prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:900}.prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-size:1.5em;font-weight:700;line-height:1.3333333;margin-bottom:1em;margin-top:2em}.prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:800}.prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-size:1.25em;font-weight:600;line-height:1.6;margin-bottom:.6em;margin-top:1.6em}.prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:700}.prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;line-height:1.5;margin-bottom:.5em;margin-top:1.5em}.prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:700}.prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){display:block;margin-bottom:2em;margin-top:2em}.prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.3125rem;box-shadow:0 0 0 1px rgb(var(--tw-prose-kbd-shadows)/10%),0 3px 0 rgb(var(--tw-prose-kbd-shadows)/10%);color:var(--tw-prose-kbd);font-family:inherit;font-size:.875em;font-weight:500;padding:.1875em .375em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code);font-size:.875em;font-weight:600}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:"`"}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:"`"}.prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:var(--tw-prose-pre-bg);border-radius:.375rem;color:var(--tw-prose-pre-code);font-size:.875em;font-weight:400;line-height:1.7142857;margin-bottom:1.7142857em;margin-top:1.7142857em;overflow-x:auto;padding:.8571429em 1.1428571em}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:transparent;border-radius:0;border-width:0;color:inherit;font-family:inherit;font-size:inherit;font-weight:inherit;line-height:inherit;padding:0}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:none}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em;line-height:1.7142857;margin-bottom:2em;margin-top:2em;table-layout:auto;text-align:left;width:100%}.prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-color:var(--tw-prose-th-borders);border-bottom-width:1px}.prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;padding-bottom:.5714286em;padding-left:.5714286em;padding-right:.5714286em;vertical-align:bottom}.prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-color:var(--tw-prose-td-borders);border-bottom-width:1px}.prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-color:var(--tw-prose-th-borders);border-top-width:1px}.prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose{--tw-prose-body:#374151;--tw-prose-headings:#111827;--tw-prose-lead:#4b5563;--tw-prose-links:#111827;--tw-prose-bold:#111827;--tw-prose-counters:#6b7280;--tw-prose-bullets:#d1d5db;--tw-prose-hr:#e5e7eb;--tw-prose-quotes:#111827;--tw-prose-quote-borders:#e5e7eb;--tw-prose-captions:#6b7280;--tw-prose-kbd:#111827;--tw-prose-kbd-shadows:17 24 39;--tw-prose-code:#111827;--tw-prose-pre-code:#e5e7eb;--tw-prose-pre-bg:#1f2937;--tw-prose-th-borders:#d1d5db;--tw-prose-td-borders:#e5e7eb;--tw-prose-invert-body:#d1d5db;--tw-prose-invert-headings:#fff;--tw-prose-invert-lead:#9ca3af;--tw-prose-invert-links:#fff;--tw-prose-invert-bold:#fff;--tw-prose-invert-counters:#9ca3af;--tw-prose-invert-bullets:#4b5563;--tw-prose-invert-hr:#374151;--tw-prose-invert-quotes:#f3f4f6;--tw-prose-invert-quote-borders:#374151;--tw-prose-invert-captions:#9ca3af;--tw-prose-invert-kbd:#fff;--tw-prose-invert-kbd-shadows:255 255 255;--tw-prose-invert-code:#fff;--tw-prose-invert-pre-code:#d1d5db;--tw-prose-invert-pre-bg:rgba(0,0,0,.5);--tw-prose-invert-th-borders:#4b5563;--tw-prose-invert-td-borders:#374151;font-size:1rem;line-height:1.75}.prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.5em;margin-top:.5em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.375em}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.75em;margin-top:.75em}.prose :where(.prose>ul>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.75em;margin-top:.75em}.prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em;margin-top:1.25em}.prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-left:1.625em}.prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding:.5714286em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.prose-sm{font-size:.875rem;line-height:1.7142857}.prose-sm :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em;margin-top:1.1428571em}.prose-sm :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.2857143em;line-height:1.5555556;margin-bottom:.8888889em;margin-top:.8888889em}.prose-sm :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em;margin-top:1.3333333em;padding-left:1.1111111em}.prose-sm :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:2.1428571em;line-height:1.2;margin-bottom:.8em;margin-top:0}.prose-sm :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.4285714em;line-height:1.4;margin-bottom:.8em;margin-top:1.6em}.prose-sm :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.2857143em;line-height:1.5555556;margin-bottom:.4444444em;margin-top:1.5555556em}.prose-sm :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){line-height:1.4285714;margin-bottom:.5714286em;margin-top:1.4285714em}.prose-sm :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7142857em;margin-top:1.7142857em}.prose-sm :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7142857em;margin-top:1.7142857em}.prose-sm :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose-sm :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7142857em;margin-top:1.7142857em}.prose-sm :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.3125rem;font-size:.8571429em;padding:.1428571em .3571429em}.prose-sm :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8571429em}.prose-sm :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.9em}.prose-sm :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8888889em}.prose-sm :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.25rem;font-size:.8571429em;line-height:1.6666667;margin-bottom:1.6666667em;margin-top:1.6666667em;padding:.6666667em 1em}.prose-sm :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em;margin-top:1.1428571em;padding-left:1.5714286em}.prose-sm :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em;margin-top:1.1428571em;padding-left:1.5714286em}.prose-sm :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.2857143em;margin-top:.2857143em}.prose-sm :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.4285714em}.prose-sm :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.4285714em}.prose-sm :where(.prose-sm>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.5714286em;margin-top:.5714286em}.prose-sm :where(.prose-sm>ul>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.1428571em}.prose-sm :where(.prose-sm>ul>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em}.prose-sm :where(.prose-sm>ol>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.1428571em}.prose-sm :where(.prose-sm>ol>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em}.prose-sm :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.5714286em;margin-top:.5714286em}.prose-sm :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em;margin-top:1.1428571em}.prose-sm :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.1428571em}.prose-sm :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.2857143em;padding-left:1.5714286em}.prose-sm :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2.8571429em;margin-top:2.8571429em}.prose-sm :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8571429em;line-height:1.5}.prose-sm :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){padding-bottom:.6666667em;padding-left:1em;padding-right:1em}.prose-sm :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose-sm :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose-sm :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding:.6666667em 1em}.prose-sm :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose-sm :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose-sm :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7142857em;margin-top:1.7142857em}.prose-sm :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose-sm :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8571429em;line-height:1.3333333;margin-top:.6666667em}.prose-sm :where(.prose-sm>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(.prose-sm>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.prose-base{font-size:1rem;line-height:1.75}.prose-base :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em;margin-top:1.25em}.prose-base :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.25em;line-height:1.6;margin-bottom:1.2em;margin-top:1.2em}.prose-base :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.6em;margin-top:1.6em;padding-left:1em}.prose-base :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:2.25em;line-height:1.1111111;margin-bottom:.8888889em;margin-top:0}.prose-base :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.5em;line-height:1.3333333;margin-bottom:1em;margin-top:2em}.prose-base :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.25em;line-height:1.6;margin-bottom:.6em;margin-top:1.6em}.prose-base :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){line-height:1.5;margin-bottom:.5em;margin-top:1.5em}.prose-base :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose-base :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose-base :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose-base :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose-base :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.3125rem;font-size:.875em;padding:.1875em .375em}.prose-base :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em}.prose-base :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em}.prose-base :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.9em}.prose-base :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.375rem;font-size:.875em;line-height:1.7142857;margin-bottom:1.7142857em;margin-top:1.7142857em;padding:.8571429em 1.1428571em}.prose-base :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em;margin-top:1.25em;padding-left:1.625em}.prose-base :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em;margin-top:1.25em;padding-left:1.625em}.prose-base :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.5em;margin-top:.5em}.prose-base :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.375em}.prose-base :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.375em}.prose-base :where(.prose-base>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.75em;margin-top:.75em}.prose-base :where(.prose-base>ul>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose-base :where(.prose-base>ul>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose-base :where(.prose-base>ol>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose-base :where(.prose-base>ol>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose-base :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.75em;margin-top:.75em}.prose-base :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em;margin-top:1.25em}.prose-base :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose-base :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-left:1.625em}.prose-base :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:3em;margin-top:3em}.prose-base :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-base :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-base :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-base :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-base :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em;line-height:1.7142857}.prose-base :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){padding-bottom:.5714286em;padding-left:.5714286em;padding-right:.5714286em}.prose-base :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose-base :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose-base :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding:.5714286em}.prose-base :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose-base :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose-base :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose-base :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose-base :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose-base :where(.prose-base>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-base :where(.prose-base>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.prose-lg{font-size:1.125rem;line-height:1.7777778}.prose-lg :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em;margin-top:1.3333333em}.prose-lg :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.2222222em;line-height:1.4545455;margin-bottom:1.0909091em;margin-top:1.0909091em}.prose-lg :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.6666667em;margin-top:1.6666667em;padding-left:1em}.prose-lg :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:2.6666667em;line-height:1;margin-bottom:.8333333em;margin-top:0}.prose-lg :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.6666667em;line-height:1.3333333;margin-bottom:1.0666667em;margin-top:1.8666667em}.prose-lg :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.3333333em;line-height:1.5;margin-bottom:.6666667em;margin-top:1.6666667em}.prose-lg :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){line-height:1.5555556;margin-bottom:.4444444em;margin-top:1.7777778em}.prose-lg :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7777778em;margin-top:1.7777778em}.prose-lg :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7777778em;margin-top:1.7777778em}.prose-lg :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose-lg :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7777778em;margin-top:1.7777778em}.prose-lg :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.3125rem;font-size:.8888889em;padding:.2222222em .4444444em}.prose-lg :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8888889em}.prose-lg :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8666667em}.prose-lg :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em}.prose-lg :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.375rem;font-size:.8888889em;line-height:1.75;margin-bottom:2em;margin-top:2em;padding:1em 1.5em}.prose-lg :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em;margin-top:1.3333333em;padding-left:1.5555556em}.prose-lg :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em;margin-top:1.3333333em;padding-left:1.5555556em}.prose-lg :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.6666667em;margin-top:.6666667em}.prose-lg :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.4444444em}.prose-lg :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.4444444em}.prose-lg :where(.prose-lg>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.8888889em;margin-top:.8888889em}.prose-lg :where(.prose-lg>ul>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.3333333em}.prose-lg :where(.prose-lg>ul>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em}.prose-lg :where(.prose-lg>ol>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.3333333em}.prose-lg :where(.prose-lg>ol>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em}.prose-lg :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.8888889em;margin-top:.8888889em}.prose-lg :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em;margin-top:1.3333333em}.prose-lg :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.3333333em}.prose-lg :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.6666667em;padding-left:1.5555556em}.prose-lg :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:3.1111111em;margin-top:3.1111111em}.prose-lg :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-lg :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-lg :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-lg :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-lg :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8888889em;line-height:1.5}.prose-lg :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){padding-bottom:.75em;padding-left:.75em;padding-right:.75em}.prose-lg :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose-lg :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose-lg :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding:.75em}.prose-lg :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose-lg :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose-lg :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7777778em;margin-top:1.7777778em}.prose-lg :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose-lg :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8888889em;line-height:1.5;margin-top:1em}.prose-lg :where(.prose-lg>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-lg :where(.prose-lg>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.sr-only{clip:rect(0,0,0,0);border-width:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.visible{visibility:visible}.invisible{visibility:hidden}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.inset-4{inset:1rem}.inset-x-0{left:0;right:0}.inset-x-4{left:1rem;right:1rem}.inset-y-0{bottom:0;top:0}.-bottom-1\/2{bottom:-50%}.-top-1{top:-.25rem}.-top-1\/2{top:-50%}.-top-2{top:-.5rem}.-top-3{top:-.75rem}.bottom-0{bottom:0}.bottom-1\/2{bottom:50%}.end-0{inset-inline-end:0}.end-4{inset-inline-end:1rem}.end-6{inset-inline-end:1.5rem}.left-3{left:.75rem}.start-0{inset-inline-start:0}.start-full{inset-inline-start:100%}.top-0{top:0}.top-1\/2{top:50%}.top-4{top:1rem}.top-6{top:1.5rem}.isolate{isolation:isolate}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.z-\[1\]{z-index:1}.col-\[--col-span-default\]{grid-column:var(--col-span-default)}.col-span-full{grid-column:1/-1}.col-start-2{grid-column-start:2}.col-start-3{grid-column-start:3}.col-start-\[--col-start-default\]{grid-column-start:var(--col-start-default)}.-m-0{margin:0}.-m-0\.5{margin:-.125rem}.-m-1{margin:-.25rem}.-m-1\.5{margin:-.375rem}.-m-2{margin:-.5rem}.-m-2\.5{margin:-.625rem}.-m-3{margin:-.75rem}.-m-3\.5{margin:-.875rem}.-mx-2{margin-left:-.5rem;margin-right:-.5rem}.-mx-4{margin-left:-1rem;margin-right:-1rem}.-mx-6{margin-left:-1.5rem;margin-right:-1.5rem}.-my-1{margin-bottom:-.25rem;margin-top:-.25rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-3{margin-left:.75rem;margin-right:.75rem}.mx-auto{margin-left:auto;margin-right:auto}.my-16{margin-bottom:4rem;margin-top:4rem}.my-2{margin-bottom:.5rem;margin-top:.5rem}.my-4{margin-bottom:1rem;margin-top:1rem}.my-auto{margin-bottom:auto;margin-top:auto}.\!mt-0{margin-top:0!important}.-mb-4{margin-bottom:-1rem}.-mb-6{margin-bottom:-1.5rem}.-me-2{margin-inline-end:-.5rem}.-ms-0{margin-inline-start:0}.-ms-0\.5{margin-inline-start:-.125rem}.-ms-1{margin-inline-start:-.25rem}.-ms-2{margin-inline-start:-.5rem}.-mt-4{margin-top:-1rem}.-mt-6{margin-top:-1.5rem}.mb-2{margin-bottom:.5rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.me-1{margin-inline-end:.25rem}.me-4{margin-inline-end:1rem}.me-6{margin-inline-end:1.5rem}.ml-auto{margin-left:auto}.ms-1{margin-inline-start:.25rem}.ms-auto{margin-inline-start:auto}.mt-0{margin-top:0}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-6{margin-top:1.5rem}.mt-auto{margin-top:auto}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.inline-grid{display:inline-grid}.hidden{display:none}.h-0{height:0}.h-1{height:.25rem}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-11{height:2.75rem}.h-16{height:4rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-32{height:8rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-96{height:24rem}.h-full{height:100%}.h-screen{height:100vh}.max-h-96{max-height:24rem}.min-h-\[theme\(spacing\.48\)\]{min-height:12rem}.min-h-full{min-height:100%}.min-h-screen{min-height:100vh}.w-1{width:.25rem}.w-1\.5{width:.375rem}.w-1\/2{width:50%}.w-10{width:2.5rem}.w-11{width:2.75rem}.w-16{width:4rem}.w-20{width:5rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-32{width:8rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-7{width:1.75rem}.w-72{width:18rem}.w-8{width:2rem}.w-9{width:2.25rem}.w-\[--sidebar-width\]{width:var(--sidebar-width)}.w-\[calc\(100\%\+2rem\)\]{width:calc(100% + 2rem)}.w-auto{width:auto}.w-full{width:100%}.w-max{width:-moz-max-content;width:max-content}.w-px{width:1px}.w-screen{width:100vw}.min-w-0{min-width:0}.min-w-\[theme\(spacing\.4\)\]{min-width:1rem}.min-w-\[theme\(spacing\.5\)\]{min-width:1.25rem}.min-w-\[theme\(spacing\.6\)\]{min-width:1.5rem}.min-w-\[theme\(spacing\.8\)\]{min-width:2rem}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.max-w-4xl{max-width:56rem}.max-w-5xl{max-width:64rem}.max-w-6xl{max-width:72rem}.max-w-7xl{max-width:80rem}.max-w-\[14rem\]{max-width:14rem}.max-w-fit{max-width:-moz-fit-content;max-width:fit-content}.max-w-full{max-width:100%}.max-w-lg{max-width:32rem}.max-w-max{max-width:-moz-max-content;max-width:max-content}.max-w-md{max-width:28rem}.max-w-min{max-width:-moz-min-content;max-width:min-content}.max-w-none{max-width:none}.max-w-prose{max-width:65ch}.max-w-screen-2xl{max-width:1536px}.max-w-screen-lg{max-width:1024px}.max-w-screen-md{max-width:768px}.max-w-screen-sm{max-width:640px}.max-w-screen-xl{max-width:1280px}.max-w-sm{max-width:24rem}.max-w-xl{max-width:36rem}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.shrink-0{flex-shrink:0}.flex-grow,.grow{flex-grow:1}.table-auto{table-layout:auto}.-translate-x-1\/2{--tw-translate-x:-50%}.-translate-x-12,.-translate-x-1\/2{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-x-12{--tw-translate-x:-3rem}.-translate-x-5{--tw-translate-x:-1.25rem}.-translate-x-5,.-translate-x-full{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-x-full{--tw-translate-x:-100%}.-translate-y-12{--tw-translate-y:-3rem}.-translate-y-12,.translate-x-0{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-0{--tw-translate-x:0px}.translate-x-12{--tw-translate-x:3rem}.translate-x-12,.translate-x-5{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-5{--tw-translate-x:1.25rem}.translate-x-full{--tw-translate-x:100%}.translate-x-full,.translate-y-12{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-12{--tw-translate-y:3rem}.-rotate-180{--tw-rotate:-180deg}.-rotate-180,.rotate-180{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180{--tw-rotate:180deg}.scale-100{--tw-scale-x:1;--tw-scale-y:1}.scale-100,.scale-95{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-95{--tw-scale-x:.95;--tw-scale-y:.95}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(1turn)}}.animate-spin{animation:spin 1s linear infinite}.cursor-default{cursor:default}.cursor-move{cursor:move}.cursor-pointer{cursor:pointer}.cursor-wait{cursor:wait}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize-none{resize:none}.scroll-mt-9{scroll-margin-top:2.25rem}.list-inside{list-style-position:inside}.list-disc{list-style-type:disc}.columns-\[--cols-default\]{-moz-columns:var(--cols-default);columns:var(--cols-default)}.break-inside-avoid{-moz-column-break-inside:avoid;break-inside:avoid}.auto-cols-fr{grid-auto-columns:minmax(0,1fr)}.grid-flow-col{grid-auto-flow:column}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.grid-cols-\[--cols-default\]{grid-template-columns:var(--cols-default)}.grid-cols-\[1fr_auto_1fr\]{grid-template-columns:1fr auto 1fr}.grid-cols-\[repeat\(7\2c minmax\(theme\(spacing\.7\)\2c 1fr\)\)\]{grid-template-columns:repeat(7,minmax(1.75rem,1fr))}.grid-cols-\[repeat\(auto-fit\2c minmax\(0\2c 1fr\)\)\]{grid-template-columns:repeat(auto-fit,minmax(0,1fr))}.flex-row-reverse{flex-direction:row-reverse}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.content-start{align-content:flex-start}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-items-start{justify-items:start}.justify-items-center{justify-items:center}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.gap-x-1{-moz-column-gap:.25rem;column-gap:.25rem}.gap-x-1\.5{-moz-column-gap:.375rem;column-gap:.375rem}.gap-x-2{-moz-column-gap:.5rem;column-gap:.5rem}.gap-x-2\.5{-moz-column-gap:.625rem;column-gap:.625rem}.gap-x-3{-moz-column-gap:.75rem;column-gap:.75rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-x-5{-moz-column-gap:1.25rem;column-gap:1.25rem}.gap-x-6{-moz-column-gap:1.5rem;column-gap:1.5rem}.gap-y-1{row-gap:.25rem}.gap-y-1\.5{row-gap:.375rem}.gap-y-2{row-gap:.5rem}.gap-y-3{row-gap:.75rem}.gap-y-4{row-gap:1rem}.gap-y-6{row-gap:1.5rem}.gap-y-7{row-gap:1.75rem}.gap-y-8{row-gap:2rem}.gap-y-px{row-gap:1px}.-space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-.25rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-.25rem*var(--tw-space-x-reverse))}.-space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-.5rem*var(--tw-space-x-reverse))}.-space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-.75rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-.75rem*var(--tw-space-x-reverse))}.-space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-1rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-1rem*var(--tw-space-x-reverse))}.-space-x-5>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-1.25rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-1.25rem*var(--tw-space-x-reverse))}.-space-x-6>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-1.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-1.5rem*var(--tw-space-x-reverse))}.-space-x-7>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-1.75rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-1.75rem*var(--tw-space-x-reverse))}.-space-x-8>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-2rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-2rem*var(--tw-space-x-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.25rem*var(--tw-space-y-reverse));margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.5rem*var(--tw-space-y-reverse));margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.75rem*var(--tw-space-y-reverse));margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1rem*var(--tw-space-y-reverse));margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1.5rem*var(--tw-space-y-reverse));margin-top:calc(1.5rem*(1 - var(--tw-space-y-reverse)))}.divide-x>:not([hidden])~:not([hidden]){--tw-divide-x-reverse:0;border-left-width:calc(1px*(1 - var(--tw-divide-x-reverse)));border-right-width:calc(1px*var(--tw-divide-x-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-bottom-width:calc(1px*var(--tw-divide-y-reverse));border-top-width:calc(1px*(1 - var(--tw-divide-y-reverse)))}.divide-gray-100>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgba(var(--gray-100),var(--tw-divide-opacity))}.divide-gray-200>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgba(var(--gray-200),var(--tw-divide-opacity))}.divide-gray-950\/10>:not([hidden])~:not([hidden]){border-color:rgba(var(--gray-950),.1)}.self-start{align-self:flex-start}.self-stretch{align-self:stretch}.justify-self-start{justify-self:start}.justify-self-end{justify-self:end}.justify-self-center{justify-self:center}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-hidden{overflow-y:hidden}.overflow-x-clip{overflow-x:clip}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-normal{white-space:normal}.whitespace-nowrap{white-space:nowrap}.break-words{overflow-wrap:break-word}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-xl{border-radius:.75rem}.rounded-b-xl{border-bottom-left-radius:.75rem;border-bottom-right-radius:.75rem}.rounded-t-xl{border-top-left-radius:.75rem;border-top-right-radius:.75rem}.border{border-width:1px}.border-2{border-width:2px}.border-x-\[0\.5px\]{border-left-width:.5px;border-right-width:.5px}.border-y{border-bottom-width:1px;border-top-width:1px}.\!border-t-0{border-top-width:0!important}.border-b{border-bottom-width:1px}.border-b-0{border-bottom-width:0}.border-e{border-inline-end-width:1px}.border-s{border-inline-start-width:1px}.border-t{border-top-width:1px}.\!border-none{border-style:none!important}.border-none{border-style:none}.border-gray-100{--tw-border-opacity:1;border-color:rgba(var(--gray-100),var(--tw-border-opacity))}.border-gray-200{--tw-border-opacity:1;border-color:rgba(var(--gray-200),var(--tw-border-opacity))}.border-gray-300{--tw-border-opacity:1;border-color:rgba(var(--gray-300),var(--tw-border-opacity))}.border-gray-600{--tw-border-opacity:1;border-color:rgba(var(--gray-600),var(--tw-border-opacity))}.border-primary-500{--tw-border-opacity:1;border-color:rgba(var(--primary-500),var(--tw-border-opacity))}.border-primary-600{--tw-border-opacity:1;border-color:rgba(var(--primary-600),var(--tw-border-opacity))}.border-transparent{border-color:transparent}.border-t-gray-200{--tw-border-opacity:1;border-top-color:rgba(var(--gray-200),var(--tw-border-opacity))}.\!bg-gray-50{--tw-bg-opacity:1!important;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))!important}.\!bg-gray-700{--tw-bg-opacity:1!important;background-color:rgba(var(--gray-700),var(--tw-bg-opacity))!important}.bg-black\/50{background-color:rgba(0,0,0,.5)}.bg-custom-100{--tw-bg-opacity:1;background-color:rgba(var(--c-100),var(--tw-bg-opacity))}.bg-custom-50{--tw-bg-opacity:1;background-color:rgba(var(--c-50),var(--tw-bg-opacity))}.bg-custom-600{--tw-bg-opacity:1;background-color:rgba(var(--c-600),var(--tw-bg-opacity))}.bg-gray-100{--tw-bg-opacity:1;background-color:rgba(var(--gray-100),var(--tw-bg-opacity))}.bg-gray-200{--tw-bg-opacity:1;background-color:rgba(var(--gray-200),var(--tw-bg-opacity))}.bg-gray-300{--tw-bg-opacity:1;background-color:rgba(var(--gray-300),var(--tw-bg-opacity))}.bg-gray-400{--tw-bg-opacity:1;background-color:rgba(var(--gray-400),var(--tw-bg-opacity))}.bg-gray-50{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.bg-gray-950\/50{background-color:rgba(var(--gray-950),.5)}.bg-primary-500{--tw-bg-opacity:1;background-color:rgba(var(--primary-500),var(--tw-bg-opacity))}.bg-primary-600{--tw-bg-opacity:1;background-color:rgba(var(--primary-600),var(--tw-bg-opacity))}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.bg-white\/0{background-color:hsla(0,0%,100%,0)}.bg-white\/5{background-color:hsla(0,0%,100%,.05)}.bg-cover{background-size:cover}.bg-center{background-position:50%}.object-cover{-o-object-fit:cover;object-fit:cover}.object-center{-o-object-position:center;object-position:center}.p-0{padding:0}.p-0\.5{padding:.125rem}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.px-0{padding-left:0;padding-right:0}.px-0\.5{padding-left:.125rem;padding-right:.125rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-3\.5{padding-left:.875rem;padding-right:.875rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-0{padding-bottom:0;padding-top:0}.py-0\.5{padding-bottom:.125rem;padding-top:.125rem}.py-1{padding-bottom:.25rem;padding-top:.25rem}.py-1\.5{padding-bottom:.375rem;padding-top:.375rem}.py-12{padding-bottom:3rem;padding-top:3rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.py-2\.5{padding-bottom:.625rem;padding-top:.625rem}.py-3{padding-bottom:.75rem;padding-top:.75rem}.py-3\.5{padding-bottom:.875rem;padding-top:.875rem}.py-4{padding-bottom:1rem;padding-top:1rem}.py-5{padding-bottom:1.25rem;padding-top:1.25rem}.py-6{padding-bottom:1.5rem;padding-top:1.5rem}.py-8{padding-bottom:2rem;padding-top:2rem}.pb-4{padding-bottom:1rem}.pb-6{padding-bottom:1.5rem}.pe-0{padding-inline-end:0}.pe-1{padding-inline-end:.25rem}.pe-2{padding-inline-end:.5rem}.pe-3{padding-inline-end:.75rem}.pe-4{padding-inline-end:1rem}.pe-6{padding-inline-end:1.5rem}.pe-8{padding-inline-end:2rem}.ps-0{padding-inline-start:0}.ps-1{padding-inline-start:.25rem}.ps-2{padding-inline-start:.5rem}.ps-3{padding-inline-start:.75rem}.ps-4{padding-inline-start:1rem}.ps-\[5\.25rem\]{padding-inline-start:5.25rem}.pt-0{padding-top:0}.pt-2{padding-top:.5rem}.pt-4{padding-top:1rem}.pt-6{padding-top:1.5rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-justify{text-align:justify}.text-start{text-align:start}.text-end{text-align:end}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.font-sans{font-family:var(--font-family),ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"}.font-serif{font-family:ui-serif,Georgia,Cambria,Times New Roman,Times,serif}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-black{font-weight:900}.font-bold{font-weight:700}.font-extrabold{font-weight:800}.font-extralight{font-weight:200}.font-light{font-weight:300}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.font-thin{font-weight:100}.capitalize{text-transform:capitalize}.italic{font-style:italic}.leading-5{line-height:1.25rem}.leading-6{line-height:1.5rem}.leading-loose{line-height:2}.tracking-tight{letter-spacing:-.025em}.tracking-tighter{letter-spacing:-.05em}.text-custom-400{--tw-text-opacity:1;color:rgba(var(--c-400),var(--tw-text-opacity))}.text-custom-50{--tw-text-opacity:1;color:rgba(var(--c-50),var(--tw-text-opacity))}.text-custom-500{--tw-text-opacity:1;color:rgba(var(--c-500),var(--tw-text-opacity))}.text-custom-600{--tw-text-opacity:1;color:rgba(var(--c-600),var(--tw-text-opacity))}.text-custom-700\/50{color:rgba(var(--c-700),.5)}.text-danger-600{--tw-text-opacity:1;color:rgba(var(--danger-600),var(--tw-text-opacity))}.text-gray-100{--tw-text-opacity:1;color:rgba(var(--gray-100),var(--tw-text-opacity))}.text-gray-200{--tw-text-opacity:1;color:rgba(var(--gray-200),var(--tw-text-opacity))}.text-gray-400{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity:1;color:rgba(var(--gray-600),var(--tw-text-opacity))}.text-gray-700{--tw-text-opacity:1;color:rgba(var(--gray-700),var(--tw-text-opacity))}.text-gray-700\/50{color:rgba(var(--gray-700),.5)}.text-gray-950{--tw-text-opacity:1;color:rgba(var(--gray-950),var(--tw-text-opacity))}.text-primary-400{--tw-text-opacity:1;color:rgba(var(--primary-400),var(--tw-text-opacity))}.text-primary-500{--tw-text-opacity:1;color:rgba(var(--primary-500),var(--tw-text-opacity))}.text-primary-600{--tw-text-opacity:1;color:rgba(var(--primary-600),var(--tw-text-opacity))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.underline{text-decoration-line:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-50{opacity:.5}.opacity-70{opacity:.7}.shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.shadow,.shadow-lg{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.shadow-sm,.shadow-xl{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color)}.outline-none{outline:2px solid transparent;outline-offset:2px}.ring{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring,.ring-0{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-0{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring-1{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring-1,.ring-2{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-2{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring-4{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-inset{--tw-ring-inset:inset}.ring-custom-600{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--c-600),var(--tw-ring-opacity))}.ring-custom-600\/10{--tw-ring-color:rgba(var(--c-600),0.1)}.ring-custom-600\/20{--tw-ring-color:rgba(var(--c-600),0.2)}.ring-danger-600{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--danger-600),var(--tw-ring-opacity))}.ring-gray-200{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--gray-200),var(--tw-ring-opacity))}.ring-gray-300{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--gray-300),var(--tw-ring-opacity))}.ring-gray-600\/10{--tw-ring-color:rgba(var(--gray-600),0.1)}.ring-gray-900\/10{--tw-ring-color:rgba(var(--gray-900),0.1)}.ring-gray-950\/10{--tw-ring-color:rgba(var(--gray-950),0.1)}.ring-gray-950\/5{--tw-ring-color:rgba(var(--gray-950),0.05)}.ring-white{--tw-ring-opacity:1;--tw-ring-color:rgb(255 255 255/var(--tw-ring-opacity))}.ring-white\/10{--tw-ring-color:hsla(0,0%,100%,.1)}.blur{--tw-blur:blur(8px)}.blur,.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-all{transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-colors{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-opacity{transition-duration:.15s;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}.delay-100{transition-delay:.1s}.duration-100{transition-duration:.1s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.duration-500{transition-duration:.5s}.duration-75{transition-duration:75ms}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.\[transform\:translateZ\(0\)\]{transform:translateZ(0)}:is(.dark .dark\:prose-invert){--tw-prose-body:var(--tw-prose-invert-body);--tw-prose-headings:var(--tw-prose-invert-headings);--tw-prose-lead:var(--tw-prose-invert-lead);--tw-prose-links:var(--tw-prose-invert-links);--tw-prose-bold:var(--tw-prose-invert-bold);--tw-prose-counters:var(--tw-prose-invert-counters);--tw-prose-bullets:var(--tw-prose-invert-bullets);--tw-prose-hr:var(--tw-prose-invert-hr);--tw-prose-quotes:var(--tw-prose-invert-quotes);--tw-prose-quote-borders:var(--tw-prose-invert-quote-borders);--tw-prose-captions:var(--tw-prose-invert-captions);--tw-prose-kbd:var(--tw-prose-invert-kbd);--tw-prose-kbd-shadows:var(--tw-prose-invert-kbd-shadows);--tw-prose-code:var(--tw-prose-invert-code);--tw-prose-pre-code:var(--tw-prose-invert-pre-code);--tw-prose-pre-bg:var(--tw-prose-invert-pre-bg);--tw-prose-th-borders:var(--tw-prose-invert-th-borders);--tw-prose-td-borders:var(--tw-prose-invert-td-borders)}.placeholder\:text-gray-400::-moz-placeholder{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.placeholder\:text-gray-400::placeholder{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.before\:absolute:before{content:var(--tw-content);position:absolute}.before\:inset-y-0:before{bottom:0;content:var(--tw-content);top:0}.before\:start-0:before{content:var(--tw-content);inset-inline-start:0}.before\:h-full:before{content:var(--tw-content);height:100%}.before\:w-0:before{content:var(--tw-content);width:0}.before\:w-0\.5:before{content:var(--tw-content);width:.125rem}.before\:bg-primary-600:before{--tw-bg-opacity:1;background-color:rgba(var(--primary-600),var(--tw-bg-opacity));content:var(--tw-content)}.first\:border-s-0:first-child{border-inline-start-width:0}.first\:border-t-0:first-child{border-top-width:0}.last\:border-e-0:last-child{border-inline-end-width:0}.first-of-type\:ps-1:first-of-type{padding-inline-start:.25rem}.last-of-type\:pe-1:last-of-type{padding-inline-end:.25rem}.checked\:ring-0:checked{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-within\:bg-gray-50:focus-within{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.focus-within\:ring-2:focus-within{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-within\:ring-danger-600:focus-within{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--danger-600),var(--tw-ring-opacity))}.focus-within\:ring-primary-600:focus-within{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-600),var(--tw-ring-opacity))}.hover\:bg-custom-400\/10:hover{background-color:rgba(var(--c-400),.1)}.hover\:bg-custom-50:hover{--tw-bg-opacity:1;background-color:rgba(var(--c-50),var(--tw-bg-opacity))}.hover\:bg-custom-500:hover{--tw-bg-opacity:1;background-color:rgba(var(--c-500),var(--tw-bg-opacity))}.hover\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgba(var(--gray-100),var(--tw-bg-opacity))}.hover\:bg-gray-400\/10:hover{background-color:rgba(var(--gray-400),.1)}.hover\:bg-gray-50:hover{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.hover\:text-custom-600:hover{--tw-text-opacity:1;color:rgba(var(--c-600),var(--tw-text-opacity))}.hover\:text-custom-700\/75:hover{color:rgba(var(--c-700),.75)}.hover\:text-gray-500:hover{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.hover\:text-gray-700:hover{--tw-text-opacity:1;color:rgba(var(--gray-700),var(--tw-text-opacity))}.hover\:text-gray-700\/75:hover{color:rgba(var(--gray-700),.75)}.hover\:opacity-100:hover{opacity:1}.focus\:ring-0:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\:ring-0:focus,.focus\:ring-2:focus{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\:ring-danger-600:focus{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--danger-600),var(--tw-ring-opacity))}.focus\:ring-primary-600:focus{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-600),var(--tw-ring-opacity))}.focus\:ring-offset-0:focus{--tw-ring-offset-width:0px}.checked\:focus\:ring-danger-500\/50:focus:checked{--tw-ring-color:rgba(var(--danger-500),0.5)}.checked\:focus\:ring-primary-500\/50:focus:checked{--tw-ring-color:rgba(var(--primary-500),0.5)}.focus-visible\:z-10:focus-visible{z-index:10}.focus-visible\:border-primary-500:focus-visible{--tw-border-opacity:1;border-color:rgba(var(--primary-500),var(--tw-border-opacity))}.focus-visible\:bg-custom-50:focus-visible{--tw-bg-opacity:1;background-color:rgba(var(--c-50),var(--tw-bg-opacity))}.focus-visible\:bg-gray-100:focus-visible{--tw-bg-opacity:1;background-color:rgba(var(--gray-100),var(--tw-bg-opacity))}.focus-visible\:bg-gray-50:focus-visible{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.focus-visible\:text-custom-700\/75:focus-visible{color:rgba(var(--c-700),.75)}.focus-visible\:text-gray-500:focus-visible{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.focus-visible\:text-gray-700\/75:focus-visible{color:rgba(var(--gray-700),.75)}.focus-visible\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\:ring-1:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\:ring-inset:focus-visible{--tw-ring-inset:inset}.focus-visible\:ring-custom-500\/50:focus-visible{--tw-ring-color:rgba(var(--c-500),0.5)}.focus-visible\:ring-custom-600:focus-visible{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--c-600),var(--tw-ring-opacity))}.focus-visible\:ring-gray-400\/40:focus-visible{--tw-ring-color:rgba(var(--gray-400),0.4)}.focus-visible\:ring-primary-500:focus-visible{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-500),var(--tw-ring-opacity))}.focus-visible\:ring-primary-600:focus-visible{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-600),var(--tw-ring-opacity))}.enabled\:cursor-wait:enabled{cursor:wait}.enabled\:opacity-70:enabled{opacity:.7}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:bg-gray-50:disabled{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.disabled\:text-gray-50:disabled{--tw-text-opacity:1;color:rgba(var(--gray-50),var(--tw-text-opacity))}.disabled\:text-gray-500:disabled{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.disabled\:opacity-70:disabled{opacity:.7}.disabled\:\[-webkit-text-fill-color\:theme\(colors\.gray\.500\)\]:disabled{-webkit-text-fill-color:rgba(var(--gray-500),1)}.disabled\:placeholder\:\[-webkit-text-fill-color\:theme\(colors\.gray\.400\)\]:disabled::-moz-placeholder{-webkit-text-fill-color:rgba(var(--gray-400),1)}.disabled\:placeholder\:\[-webkit-text-fill-color\:theme\(colors\.gray\.400\)\]:disabled::placeholder{-webkit-text-fill-color:rgba(var(--gray-400),1)}.disabled\:checked\:bg-current:checked:disabled{background-color:currentColor}.disabled\:checked\:text-gray-400:checked:disabled{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.group\/item:first-child .group-first\/item\:rounded-s-lg{border-end-start-radius:.5rem;border-start-start-radius:.5rem}.group\/item:last-child .group-last\/item\:rounded-e-lg{border-end-end-radius:.5rem;border-start-end-radius:.5rem}.group:hover .group-hover\:text-gray-500,.group\/button:hover .group-hover\/button\:text-gray-500{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.group:hover .group-hover\:text-gray-700{--tw-text-opacity:1;color:rgba(var(--gray-700),var(--tw-text-opacity))}.group\/item:hover .group-hover\/item\:underline,.group\/link:hover .group-hover\/link\:underline{text-decoration-line:underline}.group:focus-visible .group-focus-visible\:text-gray-500{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.group:focus-visible .group-focus-visible\:text-gray-700{--tw-text-opacity:1;color:rgba(var(--gray-700),var(--tw-text-opacity))}.group\/item:focus-visible .group-focus-visible\/item\:underline{text-decoration-line:underline}.group\/link:focus-visible .group-focus-visible\/link\:underline{text-decoration-line:underline}:is(.dark .dark\:inline-flex){display:inline-flex}:is(.dark .dark\:hidden){display:none}:is(.dark .dark\:divide-white\/10)>:not([hidden])~:not([hidden]){border-color:hsla(0,0%,100%,.1)}:is(.dark .dark\:divide-white\/20)>:not([hidden])~:not([hidden]){border-color:hsla(0,0%,100%,.2)}:is(.dark .dark\:divide-white\/5)>:not([hidden])~:not([hidden]){border-color:hsla(0,0%,100%,.05)}:is(.dark .dark\:border-gray-600){--tw-border-opacity:1;border-color:rgba(var(--gray-600),var(--tw-border-opacity))}:is(.dark .dark\:border-gray-700){--tw-border-opacity:1;border-color:rgba(var(--gray-700),var(--tw-border-opacity))}:is(.dark .dark\:border-primary-500){--tw-border-opacity:1;border-color:rgba(var(--primary-500),var(--tw-border-opacity))}:is(.dark .dark\:border-white\/10){border-color:hsla(0,0%,100%,.1)}:is(.dark .dark\:border-white\/5){border-color:hsla(0,0%,100%,.05)}:is(.dark .dark\:border-t-white\/10){border-top-color:hsla(0,0%,100%,.1)}:is(.dark .dark\:\!bg-gray-700){--tw-bg-opacity:1!important;background-color:rgba(var(--gray-700),var(--tw-bg-opacity))!important}:is(.dark .dark\:bg-custom-400\/10){background-color:rgba(var(--c-400),.1)}:is(.dark .dark\:bg-custom-500){--tw-bg-opacity:1;background-color:rgba(var(--c-500),var(--tw-bg-opacity))}:is(.dark .dark\:bg-custom-500\/20){background-color:rgba(var(--c-500),.2)}:is(.dark .dark\:bg-gray-400\/10){background-color:rgba(var(--gray-400),.1)}:is(.dark .dark\:bg-gray-500){--tw-bg-opacity:1;background-color:rgba(var(--gray-500),var(--tw-bg-opacity))}:is(.dark .dark\:bg-gray-500\/20){background-color:rgba(var(--gray-500),.2)}:is(.dark .dark\:bg-gray-600){--tw-bg-opacity:1;background-color:rgba(var(--gray-600),var(--tw-bg-opacity))}:is(.dark .dark\:bg-gray-700){--tw-bg-opacity:1;background-color:rgba(var(--gray-700),var(--tw-bg-opacity))}:is(.dark .dark\:bg-gray-800){--tw-bg-opacity:1;background-color:rgba(var(--gray-800),var(--tw-bg-opacity))}:is(.dark .dark\:bg-gray-900){--tw-bg-opacity:1;background-color:rgba(var(--gray-900),var(--tw-bg-opacity))}:is(.dark .dark\:bg-gray-900\/30){background-color:rgba(var(--gray-900),.3)}:is(.dark .dark\:bg-gray-950){--tw-bg-opacity:1;background-color:rgba(var(--gray-950),var(--tw-bg-opacity))}:is(.dark .dark\:bg-gray-950\/75){background-color:rgba(var(--gray-950),.75)}:is(.dark .dark\:bg-primary-400){--tw-bg-opacity:1;background-color:rgba(var(--primary-400),var(--tw-bg-opacity))}:is(.dark .dark\:bg-primary-500){--tw-bg-opacity:1;background-color:rgba(var(--primary-500),var(--tw-bg-opacity))}:is(.dark .dark\:bg-transparent){background-color:transparent}:is(.dark .dark\:bg-white\/10){background-color:hsla(0,0%,100%,.1)}:is(.dark .dark\:bg-white\/5){background-color:hsla(0,0%,100%,.05)}:is(.dark .dark\:fill-current){fill:currentColor}:is(.dark .dark\:text-custom-300\/50){color:rgba(var(--c-300),.5)}:is(.dark .dark\:text-custom-400){--tw-text-opacity:1;color:rgba(var(--c-400),var(--tw-text-opacity))}:is(.dark .dark\:text-custom-400\/10){color:rgba(var(--c-400),.1)}:is(.dark .dark\:text-danger-400){--tw-text-opacity:1;color:rgba(var(--danger-400),var(--tw-text-opacity))}:is(.dark .dark\:text-danger-500){--tw-text-opacity:1;color:rgba(var(--danger-500),var(--tw-text-opacity))}:is(.dark .dark\:text-gray-200){--tw-text-opacity:1;color:rgba(var(--gray-200),var(--tw-text-opacity))}:is(.dark .dark\:text-gray-300\/50){color:rgba(var(--gray-300),.5)}:is(.dark .dark\:text-gray-400){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}:is(.dark .dark\:text-gray-500){--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}:is(.dark .dark\:text-gray-700){--tw-text-opacity:1;color:rgba(var(--gray-700),var(--tw-text-opacity))}:is(.dark .dark\:text-gray-800){--tw-text-opacity:1;color:rgba(var(--gray-800),var(--tw-text-opacity))}:is(.dark .dark\:text-primary-400){--tw-text-opacity:1;color:rgba(var(--primary-400),var(--tw-text-opacity))}:is(.dark .dark\:text-primary-500){--tw-text-opacity:1;color:rgba(var(--primary-500),var(--tw-text-opacity))}:is(.dark .dark\:text-white){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}:is(.dark .dark\:text-white\/5){color:hsla(0,0%,100%,.05)}:is(.dark .dark\:ring-custom-400\/30){--tw-ring-color:rgba(var(--c-400),0.3)}:is(.dark .dark\:ring-custom-500){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--c-500),var(--tw-ring-opacity))}:is(.dark .dark\:ring-danger-500){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--danger-500),var(--tw-ring-opacity))}:is(.dark .dark\:ring-gray-400\/20){--tw-ring-color:rgba(var(--gray-400),0.2)}:is(.dark .dark\:ring-gray-50\/10){--tw-ring-color:rgba(var(--gray-50),0.1)}:is(.dark .dark\:ring-gray-700){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--gray-700),var(--tw-ring-opacity))}:is(.dark .dark\:ring-gray-900){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--gray-900),var(--tw-ring-opacity))}:is(.dark .dark\:ring-white\/10){--tw-ring-color:hsla(0,0%,100%,.1)}:is(.dark .dark\:ring-white\/20){--tw-ring-color:hsla(0,0%,100%,.2)}:is(.dark .dark\:placeholder\:text-gray-500)::-moz-placeholder{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}:is(.dark .dark\:placeholder\:text-gray-500)::placeholder{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}:is(.dark .dark\:before\:bg-primary-500):before{--tw-bg-opacity:1;background-color:rgba(var(--primary-500),var(--tw-bg-opacity));content:var(--tw-content)}:is(.dark .dark\:checked\:bg-danger-500:checked){--tw-bg-opacity:1;background-color:rgba(var(--danger-500),var(--tw-bg-opacity))}:is(.dark .dark\:checked\:bg-primary-500:checked){--tw-bg-opacity:1;background-color:rgba(var(--primary-500),var(--tw-bg-opacity))}:is(.dark .dark\:focus-within\:bg-white\/5:focus-within){background-color:hsla(0,0%,100%,.05)}:is(.dark .dark\:focus-within\:ring-danger-500:focus-within){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--danger-500),var(--tw-ring-opacity))}:is(.dark .dark\:focus-within\:ring-primary-500:focus-within){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-500),var(--tw-ring-opacity))}:is(.dark .dark\:hover\:bg-custom-400:hover){--tw-bg-opacity:1;background-color:rgba(var(--c-400),var(--tw-bg-opacity))}:is(.dark .dark\:hover\:bg-custom-400\/10:hover){background-color:rgba(var(--c-400),.1)}:is(.dark .dark\:hover\:bg-white\/10:hover){background-color:hsla(0,0%,100%,.1)}:is(.dark .dark\:hover\:bg-white\/5:hover){background-color:hsla(0,0%,100%,.05)}:is(.dark .dark\:hover\:text-custom-300:hover){--tw-text-opacity:1;color:rgba(var(--c-300),var(--tw-text-opacity))}:is(.dark .dark\:hover\:text-custom-300\/75:hover){color:rgba(var(--c-300),.75)}:is(.dark .dark\:hover\:text-gray-200:hover){--tw-text-opacity:1;color:rgba(var(--gray-200),var(--tw-text-opacity))}:is(.dark .dark\:hover\:text-gray-300\/75:hover){color:rgba(var(--gray-300),.75)}:is(.dark .dark\:hover\:text-gray-400:hover){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}:is(.dark .dark\:hover\:ring-white\/20:hover){--tw-ring-color:hsla(0,0%,100%,.2)}:is(.dark .dark\:focus\:ring-danger-500:focus){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--danger-500),var(--tw-ring-opacity))}:is(.dark .dark\:focus\:ring-primary-500:focus){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-500),var(--tw-ring-opacity))}:is(.dark .dark\:checked\:focus\:ring-danger-400\/50:focus:checked){--tw-ring-color:rgba(var(--danger-400),0.5)}:is(.dark .dark\:checked\:focus\:ring-primary-400\/50:focus:checked){--tw-ring-color:rgba(var(--primary-400),0.5)}:is(.dark .dark\:focus-visible\:border-primary-500:focus-visible){--tw-border-opacity:1;border-color:rgba(var(--primary-500),var(--tw-border-opacity))}:is(.dark .dark\:focus-visible\:bg-custom-400\/10:focus-visible){background-color:rgba(var(--c-400),.1)}:is(.dark .dark\:focus-visible\:bg-white\/5:focus-visible){background-color:hsla(0,0%,100%,.05)}:is(.dark .dark\:focus-visible\:text-custom-300\/75:focus-visible){color:rgba(var(--c-300),.75)}:is(.dark .dark\:focus-visible\:text-gray-300\/75:focus-visible){color:rgba(var(--gray-300),.75)}:is(.dark .dark\:focus-visible\:text-gray-400:focus-visible){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}:is(.dark .dark\:focus-visible\:ring-custom-400\/50:focus-visible){--tw-ring-color:rgba(var(--c-400),0.5)}:is(.dark .dark\:focus-visible\:ring-custom-500:focus-visible){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--c-500),var(--tw-ring-opacity))}:is(.dark .dark\:focus-visible\:ring-primary-500:focus-visible){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-500),var(--tw-ring-opacity))}:is(.dark .dark\:disabled\:bg-transparent:disabled){background-color:transparent}:is(.dark .dark\:disabled\:text-gray-400:disabled){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}:is(.dark .dark\:disabled\:ring-white\/10:disabled){--tw-ring-color:hsla(0,0%,100%,.1)}:is(.dark .dark\:disabled\:\[-webkit-text-fill-color\:theme\(colors\.gray\.400\)\]:disabled){-webkit-text-fill-color:rgba(var(--gray-400),1)}:is(.dark .dark\:disabled\:placeholder\:\[-webkit-text-fill-color\:theme\(colors\.gray\.500\)\]:disabled)::-moz-placeholder{-webkit-text-fill-color:rgba(var(--gray-500),1)}:is(.dark .dark\:disabled\:placeholder\:\[-webkit-text-fill-color\:theme\(colors\.gray\.500\)\]:disabled)::placeholder{-webkit-text-fill-color:rgba(var(--gray-500),1)}:is(.dark .dark\:disabled\:checked\:bg-gray-600:checked:disabled){--tw-bg-opacity:1;background-color:rgba(var(--gray-600),var(--tw-bg-opacity))}:is(.dark .group\/button:hover .dark\:group-hover\/button\:text-gray-400){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}:is(.dark .group:hover .dark\:group-hover\:text-gray-200){--tw-text-opacity:1;color:rgba(var(--gray-200),var(--tw-text-opacity))}:is(.dark .group:hover .dark\:group-hover\:text-gray-400){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}:is(.dark .group:focus-visible .dark\:group-focus-visible\:text-gray-200){--tw-text-opacity:1;color:rgba(var(--gray-200),var(--tw-text-opacity))}:is(.dark .group:focus-visible .dark\:group-focus-visible\:text-gray-400){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}@media (min-width:640px){.sm\:relative{position:relative}.sm\:inset-x-auto{left:auto;right:auto}.sm\:end-0{inset-inline-end:0}.sm\:col-\[--col-span-sm\]{grid-column:var(--col-span-sm)}.sm\:col-span-2{grid-column:span 2/span 2}.sm\:col-start-\[--col-start-sm\]{grid-column-start:var(--col-start-sm)}.sm\:-mx-6{margin-left:-1.5rem;margin-right:-1.5rem}.sm\:-my-2{margin-bottom:-.5rem;margin-top:-.5rem}.sm\:ms-auto{margin-inline-start:auto}.sm\:mt-7{margin-top:1.75rem}.sm\:block{display:block}.sm\:flex{display:flex}.sm\:table-cell{display:table-cell}.sm\:grid{display:grid}.sm\:inline-grid{display:inline-grid}.sm\:hidden{display:none}.sm\:w-\[calc\(100\%\+3rem\)\]{width:calc(100% + 3rem)}.sm\:w-screen{width:100vw}.sm\:max-w-2xl{max-width:42rem}.sm\:max-w-3xl{max-width:48rem}.sm\:max-w-4xl{max-width:56rem}.sm\:max-w-5xl{max-width:64rem}.sm\:max-w-6xl{max-width:72rem}.sm\:max-w-7xl{max-width:80rem}.sm\:max-w-lg{max-width:32rem}.sm\:max-w-md{max-width:28rem}.sm\:max-w-sm{max-width:24rem}.sm\:max-w-xl{max-width:36rem}.sm\:max-w-xs{max-width:20rem}.sm\:columns-\[--cols-sm\]{-moz-columns:var(--cols-sm);columns:var(--cols-sm)}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-\[--cols-sm\]{grid-template-columns:var(--cols-sm)}.sm\:grid-cols-\[repeat\(auto-fit\2c minmax\(0\2c 1fr\)\)\]{grid-template-columns:repeat(auto-fit,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:flex-nowrap{flex-wrap:nowrap}.sm\:items-start{align-items:flex-start}.sm\:items-end{align-items:flex-end}.sm\:items-center{align-items:center}.sm\:justify-between{justify-content:space-between}.sm\:gap-1{gap:.25rem}.sm\:gap-3{gap:.75rem}.sm\:gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.sm\:rounded-xl{border-radius:.75rem}.sm\:p-10{padding:2.5rem}.sm\:px-12{padding-left:3rem;padding-right:3rem}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:py-1{padding-bottom:.25rem;padding-top:.25rem}.sm\:py-1\.5{padding-bottom:.375rem;padding-top:.375rem}.sm\:pe-3{padding-inline-end:.75rem}.sm\:pe-6{padding-inline-end:1.5rem}.sm\:ps-3{padding-inline-start:.75rem}.sm\:ps-6{padding-inline-start:1.5rem}.sm\:pt-1{padding-top:.25rem}.sm\:pt-1\.5{padding-top:.375rem}.sm\:text-3xl{font-size:1.875rem;line-height:2.25rem}.sm\:text-sm{font-size:.875rem;line-height:1.25rem}.sm\:leading-6{line-height:1.5rem}.sm\:first-of-type\:ps-3:first-of-type{padding-inline-start:.75rem}.sm\:first-of-type\:ps-6:first-of-type{padding-inline-start:1.5rem}.sm\:last-of-type\:pe-3:last-of-type{padding-inline-end:.75rem}.sm\:last-of-type\:pe-6:last-of-type{padding-inline-end:1.5rem}}@media (min-width:768px){.md\:bottom-4{bottom:1rem}.md\:order-first{order:-9999}.md\:col-\[--col-span-md\]{grid-column:var(--col-span-md)}.md\:col-span-2{grid-column:span 2/span 2}.md\:col-start-\[--col-start-md\]{grid-column-start:var(--col-start-md)}.md\:block{display:block}.md\:flex{display:flex}.md\:table-cell{display:table-cell}.md\:inline-grid{display:inline-grid}.md\:hidden{display:none}.md\:columns-\[--cols-md\]{-moz-columns:var(--cols-md);columns:var(--cols-md)}.md\:grid-flow-col{grid-auto-flow:column}.md\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-\[--cols-md\]{grid-template-columns:var(--cols-md)}.md\:flex-row{flex-direction:row}.md\:items-start{align-items:flex-start}.md\:items-center{align-items:center}.md\:justify-end{justify-content:flex-end}.md\:gap-1{gap:.25rem}.md\:gap-3{gap:.75rem}.md\:divide-y-0>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-bottom-width:calc(0px*var(--tw-divide-y-reverse));border-top-width:calc(0px*(1 - var(--tw-divide-y-reverse)))}.md\:rounded-xl{border-radius:.75rem}.md\:p-20{padding:5rem}.md\:px-6{padding-left:1.5rem;padding-right:1.5rem}.md\:pe-3{padding-inline-end:.75rem}.md\:pe-6{padding-inline-end:1.5rem}.md\:ps-3{padding-inline-start:.75rem}}@media (min-width:1024px){.lg\:sticky{position:sticky}.lg\:z-0{z-index:0}.lg\:col-\[--col-span-lg\]{grid-column:var(--col-span-lg)}.lg\:col-start-\[--col-start-lg\]{grid-column-start:var(--col-start-lg)}.lg\:block{display:block}.lg\:flex{display:flex}.lg\:table-cell{display:table-cell}.lg\:inline-grid{display:inline-grid}.lg\:hidden{display:none}.lg\:h-full{height:100%}.lg\:max-w-xs{max-width:20rem}.lg\:-translate-x-full{--tw-translate-x:-100%}.lg\:-translate-x-full,.lg\:translate-x-0{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lg\:translate-x-0{--tw-translate-x:0px}.lg\:columns-\[--cols-lg\]{-moz-columns:var(--cols-lg);columns:var(--cols-lg)}.lg\:grid-cols-\[--cols-lg\]{grid-template-columns:var(--cols-lg)}.lg\:flex-row{flex-direction:row}.lg\:items-start{align-items:flex-start}.lg\:items-center{align-items:center}.lg\:gap-1{gap:.25rem}.lg\:gap-3{gap:.75rem}.lg\:bg-transparent{background-color:transparent}.lg\:px-8{padding-left:2rem;padding-right:2rem}.lg\:pe-8{padding-inline-end:2rem}.lg\:shadow-none{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000}.lg\:shadow-none,.lg\:shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.lg\:shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.lg\:ring-0{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.lg\:transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.lg\:transition-none{transition-property:none}.lg\:delay-100{transition-delay:.1s}:is(.dark .dark\:lg\:bg-transparent){background-color:transparent}}@media (min-width:1280px){.xl\:col-\[--col-span-xl\]{grid-column:var(--col-span-xl)}.xl\:col-start-\[--col-start-xl\]{grid-column-start:var(--col-start-xl)}.xl\:block{display:block}.xl\:table-cell{display:table-cell}.xl\:inline-grid{display:inline-grid}.xl\:hidden{display:none}.xl\:columns-\[--cols-xl\]{-moz-columns:var(--cols-xl);columns:var(--cols-xl)}.xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.xl\:grid-cols-\[--cols-xl\]{grid-template-columns:var(--cols-xl)}.xl\:flex-row{flex-direction:row}.xl\:items-start{align-items:flex-start}.xl\:items-center{align-items:center}.xl\:gap-1{gap:.25rem}.xl\:gap-3{gap:.75rem}}@media (min-width:1536px){.\32xl\:col-\[--col-span-2xl\]{grid-column:var(--col-span-2xl)}.\32xl\:col-start-\[--col-start-2xl\]{grid-column-start:var(--col-start-2xl)}.\32xl\:block{display:block}.\32xl\:table-cell{display:table-cell}.\32xl\:inline-grid{display:inline-grid}.\32xl\:hidden{display:none}.\32xl\:columns-\[--cols-2xl\]{-moz-columns:var(--cols-2xl);columns:var(--cols-2xl)}.\32xl\:grid-cols-\[--cols-2xl\]{grid-template-columns:var(--cols-2xl)}.\32xl\:flex-row{flex-direction:row}.\32xl\:items-start{align-items:flex-start}.\32xl\:items-center{align-items:center}.\32xl\:gap-1{gap:.25rem}.\32xl\:gap-3{gap:.75rem}}.ltr\:hidden:where([dir=ltr],[dir=ltr] *){display:none}.rtl\:hidden:where([dir=rtl],[dir=rtl] *){display:none}.rtl\:-translate-x-0:where([dir=rtl],[dir=rtl] *){--tw-translate-x:-0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rtl\:-translate-x-5:where([dir=rtl],[dir=rtl] *){--tw-translate-x:-1.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rtl\:-translate-x-full:where([dir=rtl],[dir=rtl] *){--tw-translate-x:-100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rtl\:translate-x-1\/2:where([dir=rtl],[dir=rtl] *){--tw-translate-x:50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rtl\:translate-x-full:where([dir=rtl],[dir=rtl] *){--tw-translate-x:100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rtl\:rotate-180:where([dir=rtl],[dir=rtl] *){--tw-rotate:180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rtl\:flex-row-reverse:where([dir=rtl],[dir=rtl] *){flex-direction:row-reverse}.rtl\:divide-x-reverse:where([dir=rtl],[dir=rtl] *)>:not([hidden])~:not([hidden]){--tw-divide-x-reverse:1}@media (min-width:1024px){.rtl\:lg\:-translate-x-0:where([dir=rtl],[dir=rtl] *){--tw-translate-x:-0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rtl\:lg\:translate-x-full:where([dir=rtl],[dir=rtl] *){--tw-translate-x:100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}}.\[\&\.trix-active\]\:bg-gray-50.trix-active{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.\[\&\.trix-active\]\:text-primary-600.trix-active{--tw-text-opacity:1;color:rgba(var(--primary-600),var(--tw-text-opacity))}:is(.dark .dark\:\[\&\.trix-active\]\:bg-white\/5.trix-active){background-color:hsla(0,0%,100%,.05)}:is(.dark .dark\:\[\&\.trix-active\]\:text-primary-400.trix-active){--tw-text-opacity:1;color:rgba(var(--primary-400),var(--tw-text-opacity))}.\[\&\>\*\:first-child\]\:relative>:first-child{position:relative}.\[\&\>\*\:first-child\]\:mt-0>:first-child{margin-top:0}.\[\&\>\*\:first-child\]\:before\:absolute>:first-child:before{content:var(--tw-content);position:absolute}.\[\&\>\*\:first-child\]\:before\:inset-y-0>:first-child:before{bottom:0;content:var(--tw-content);top:0}.\[\&\>\*\:first-child\]\:before\:start-0>:first-child:before{content:var(--tw-content);inset-inline-start:0}.\[\&\>\*\:first-child\]\:before\:w-0\.5>:first-child:before{content:var(--tw-content);width:.125rem}.\[\&\>\*\:first-child\]\:before\:bg-primary-600>:first-child:before{--tw-bg-opacity:1;background-color:rgba(var(--primary-600),var(--tw-bg-opacity));content:var(--tw-content)}:is(.dark .\[\&\>\*\:first-child\]\:dark\:before\:bg-primary-500)>:first-child:before{--tw-bg-opacity:1;background-color:rgba(var(--primary-500),var(--tw-bg-opacity));content:var(--tw-content)}.\[\&\>\*\:last-child\]\:mb-0>:last-child{margin-bottom:0}.\[\&_\.choices\\_\\_inner\]\:ps-0 .choices__inner{padding-inline-start:0}.\[\&_\.fi-badge-delete-button\]\:hidden .fi-badge-delete-button{display:none}.\[\&_\.filepond--root\]\:font-sans .filepond--root{font-family:var(--font-family),ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"}.\[\&_optgroup\]\:bg-white optgroup{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}:is(.dark .\[\&_optgroup\]\:dark\:bg-gray-900) optgroup{--tw-bg-opacity:1;background-color:rgba(var(--gray-900),var(--tw-bg-opacity))}.\[\&_option\]\:bg-white option{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}:is(.dark .\[\&_option\]\:dark\:bg-gray-900) option{--tw-bg-opacity:1;background-color:rgba(var(--gray-900),var(--tw-bg-opacity))}@media(hover:hover){.\[\@media\(hover\:hover\)\]\:transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.\[\@media\(hover\:hover\)\]\:duration-75{transition-duration:75ms}} \ No newline at end of file diff --git a/public/css/filament/forms/forms.css b/public/css/filament/forms/forms.css index fa595a3d2..a9458cb7a 100644 --- a/public/css/filament/forms/forms.css +++ b/public/css/filament/forms/forms.css @@ -1,4 +1,4 @@ -input::-webkit-datetime-edit{display:block;padding:0}.cropper-container{direction:ltr;font-size:0;line-height:0;position:relative;touch-action:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.cropper-container img{backface-visibility:hidden;display:block;height:100%;image-orientation:0deg;max-height:none!important;max-width:none!important;min-height:0!important;min-width:0!important;width:100%}.cropper-canvas,.cropper-crop-box,.cropper-drag-box,.cropper-modal,.cropper-wrap-box{inset:0;position:absolute}.cropper-canvas,.cropper-wrap-box{overflow:hidden}.cropper-drag-box{background-color:#fff;opacity:0}.cropper-modal{background-color:#000;opacity:.5}.cropper-view-box{display:block;height:100%;outline:1px solid #39f;outline-color:#3399ffbf;overflow:hidden;width:100%}.cropper-dashed{border:0 dashed #eee;display:block;opacity:.5;position:absolute}.cropper-dashed.dashed-h{border-bottom-width:1px;border-top-width:1px;height:33.33333%;left:0;top:33.33333%;width:100%}.cropper-dashed.dashed-v{border-left-width:1px;border-right-width:1px;height:100%;left:33.33333%;top:0;width:33.33333%}.cropper-center{display:block;height:0;left:50%;opacity:.75;position:absolute;top:50%;width:0}.cropper-center:after,.cropper-center:before{background-color:#eee;content:" ";display:block;position:absolute}.cropper-center:before{height:1px;left:-3px;top:0;width:7px}.cropper-center:after{height:7px;left:0;top:-3px;width:1px}.cropper-face,.cropper-line,.cropper-point{display:block;height:100%;opacity:.1;position:absolute;width:100%}.cropper-face{background-color:#fff;left:0;top:0}.cropper-line{background-color:#39f}.cropper-line.line-e{cursor:ew-resize;right:-3px;top:0;width:5px}.cropper-line.line-n{cursor:ns-resize;height:5px;left:0;top:-3px}.cropper-line.line-w{cursor:ew-resize;left:-3px;top:0;width:5px}.cropper-line.line-s{bottom:-3px;cursor:ns-resize;height:5px;left:0}.cropper-point{background-color:#39f;height:5px;opacity:.75;width:5px}.cropper-point.point-e{cursor:ew-resize;margin-top:-3px;right:-3px;top:50%}.cropper-point.point-n{cursor:ns-resize;left:50%;margin-left:-3px;top:-3px}.cropper-point.point-w{cursor:ew-resize;left:-3px;margin-top:-3px;top:50%}.cropper-point.point-s{bottom:-3px;cursor:s-resize;left:50%;margin-left:-3px}.cropper-point.point-ne{cursor:nesw-resize;right:-3px;top:-3px}.cropper-point.point-nw{cursor:nwse-resize;left:-3px;top:-3px}.cropper-point.point-sw{bottom:-3px;cursor:nesw-resize;left:-3px}.cropper-point.point-se{bottom:-3px;cursor:nwse-resize;height:20px;opacity:1;right:-3px;width:20px}@media (min-width:768px){.cropper-point.point-se{height:15px;width:15px}}@media (min-width:992px){.cropper-point.point-se{height:10px;width:10px}}@media (min-width:1200px){.cropper-point.point-se{height:5px;opacity:.75;width:5px}}.cropper-point.point-se:before{background-color:#39f;bottom:-50%;content:" ";display:block;height:200%;opacity:0;position:absolute;right:-50%;width:200%}.cropper-invisible{opacity:0}.cropper-bg{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAAA3NCSVQICAjb4U/gAAAABlBMVEXMzMz////TjRV2AAAACXBIWXMAAArrAAAK6wGCiw1aAAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M26LyyjAAAABFJREFUCJlj+M/AgBVhF/0PAH6/D/HkDxOGAAAAAElFTkSuQmCC)}.cropper-hide{display:block;height:0;position:absolute;width:0}.cropper-hidden{display:none!important}.cropper-move{cursor:move}.cropper-crop{cursor:crosshair}.cropper-disabled .cropper-drag-box,.cropper-disabled .cropper-face,.cropper-disabled .cropper-line,.cropper-disabled .cropper-point{cursor:not-allowed}.filepond--assistant{clip:rect(1px,1px,1px,1px);border:0;-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.filepond--browser.filepond--browser{font-size:0;left:1em;margin:0;opacity:0;padding:0;position:absolute;top:1.75em;width:calc(100% - 2em)}.filepond--data{border:none;contain:strict;height:0;margin:0;padding:0;visibility:hidden;width:0}.filepond--data,.filepond--drip{pointer-events:none;position:absolute}.filepond--drip{background:rgba(0,0,0,.01);border-radius:.5em;inset:0;opacity:.1;overflow:hidden}.filepond--drip-blob{background:#292625;border-radius:50%;height:8em;margin-left:-4em;margin-top:-4em;transform-origin:center center;width:8em}.filepond--drip-blob,.filepond--drop-label{left:0;position:absolute;top:0;will-change:transform,opacity}.filepond--drop-label{align-items:center;color:#4f4f4f;display:flex;height:0;justify-content:center;margin:0;right:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.filepond--drop-label.filepond--drop-label label{display:block;margin:0;padding:.5em}.filepond--drop-label label{cursor:default;font-size:.875em;font-weight:400;line-height:1.5;text-align:center}.filepond--label-action{-webkit-text-decoration-skip:ink;cursor:pointer;text-decoration:underline;text-decoration-color:#a7a4a4;text-decoration-skip-ink:auto}.filepond--root[data-disabled] .filepond--drop-label label{opacity:.5}.filepond--file-action-button.filepond--file-action-button{border:none;font-family:inherit;font-size:1em;height:1.625em;line-height:inherit;margin:0;outline:none;padding:0;width:1.625em;will-change:transform,opacity}.filepond--file-action-button.filepond--file-action-button span{clip:rect(1px,1px,1px,1px);border:0;-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.filepond--file-action-button.filepond--file-action-button svg{height:100%;width:100%}.filepond--file-action-button.filepond--file-action-button:after{content:"";inset:-.75em;position:absolute}.filepond--file-action-button{background-color:#00000080;background-image:none;border-radius:50%;box-shadow:0 0 #fff0;color:#fff;cursor:auto;transition:box-shadow .25s ease-in}.filepond--file-action-button:focus,.filepond--file-action-button:hover{box-shadow:0 0 0 .125em #ffffffe6}.filepond--file-action-button[disabled]{background-color:#00000040;color:#ffffff80}.filepond--file-action-button[hidden]{display:none}.filepond--file-info{align-items:flex-start;display:flex;flex:1;flex-direction:column;margin:0 .5em 0 0;min-width:0;pointer-events:none;position:static;-webkit-user-select:none;-moz-user-select:none;user-select:none;will-change:transform,opacity}.filepond--file-info *{margin:0}.filepond--file-info .filepond--file-info-main{font-size:.75em;line-height:1.2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%}.filepond--file-info .filepond--file-info-sub{font-size:.625em;opacity:.5;transition:opacity .25s ease-in-out;white-space:nowrap}.filepond--file-info .filepond--file-info-sub:empty{display:none}.filepond--file-status{align-items:flex-end;display:flex;flex-direction:column;flex-grow:0;flex-shrink:0;margin:0;min-width:2.25em;pointer-events:none;position:static;text-align:right;-webkit-user-select:none;-moz-user-select:none;user-select:none;will-change:transform,opacity}.filepond--file-status *{margin:0;white-space:nowrap}.filepond--file-status .filepond--file-status-main{font-size:.75em;line-height:1.2}.filepond--file-status .filepond--file-status-sub{font-size:.625em;opacity:.5;transition:opacity .25s ease-in-out}.filepond--file-wrapper.filepond--file-wrapper{border:none;height:100%;margin:0;min-width:0;padding:0}.filepond--file-wrapper.filepond--file-wrapper>legend{clip:rect(1px,1px,1px,1px);border:0;-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.filepond--file{align-items:flex-start;border-radius:.5em;color:#fff;display:flex;height:100%;padding:.5625em;position:static}.filepond--file .filepond--file-status{margin-left:auto;margin-right:2.25em}.filepond--file .filepond--processing-complete-indicator{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;z-index:3}.filepond--file .filepond--file-action-button,.filepond--file .filepond--processing-complete-indicator,.filepond--file .filepond--progress-indicator{position:absolute}.filepond--file [data-align*=left]{left:.5625em}.filepond--file [data-align*=right]{right:.5625em}.filepond--file [data-align*=center]{left:calc(50% - .8125em)}.filepond--file [data-align*=bottom]{bottom:1.125em}.filepond--file [data-align=center]{top:calc(50% - .8125em)}.filepond--file .filepond--progress-indicator{margin-top:.1875em}.filepond--file .filepond--progress-indicator[data-align*=right]{margin-right:.1875em}.filepond--file .filepond--progress-indicator[data-align*=left]{margin-left:.1875em}[data-filepond-item-state*=error] .filepond--file-info,[data-filepond-item-state*=invalid] .filepond--file-info,[data-filepond-item-state=cancelled] .filepond--file-info{margin-right:2.25em}[data-filepond-item-state~=processing] .filepond--file-status-sub{opacity:0}[data-filepond-item-state~=processing] .filepond--action-abort-item-processing~.filepond--file-status .filepond--file-status-sub{opacity:.5}[data-filepond-item-state=processing-error] .filepond--file-status-sub{opacity:0}[data-filepond-item-state=processing-error] .filepond--action-retry-item-processing~.filepond--file-status .filepond--file-status-sub{opacity:.5}[data-filepond-item-state=processing-complete] .filepond--action-revert-item-processing svg{animation:fall .5s linear .125s both}[data-filepond-item-state=processing-complete] .filepond--file-status-sub{opacity:.5}[data-filepond-item-state=processing-complete] .filepond--file-info-sub,[data-filepond-item-state=processing-complete] .filepond--processing-complete-indicator:not([style*=hidden])~.filepond--file-status .filepond--file-status-sub{opacity:0}[data-filepond-item-state=processing-complete] .filepond--action-revert-item-processing~.filepond--file-info .filepond--file-info-sub{opacity:.5}[data-filepond-item-state*=error] .filepond--file-wrapper,[data-filepond-item-state*=error] .filepond--panel,[data-filepond-item-state*=invalid] .filepond--file-wrapper,[data-filepond-item-state*=invalid] .filepond--panel{animation:shake .65s linear both}[data-filepond-item-state*=busy] .filepond--progress-indicator svg{animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}@keyframes shake{10%,90%{transform:translate(-.0625em)}20%,80%{transform:translate(.125em)}30%,50%,70%{transform:translate(-.25em)}40%,60%{transform:translate(.25em)}}@keyframes fall{0%{animation-timing-function:ease-out;opacity:0;transform:scale(.5)}70%{animation-timing-function:ease-in-out;opacity:1;transform:scale(1.1)}to{animation-timing-function:ease-out;transform:scale(1)}}.filepond--hopper[data-hopper-state=drag-over]>*{pointer-events:none}.filepond--hopper[data-hopper-state=drag-over]:after{content:"";inset:0;position:absolute;z-index:100}.filepond--progress-indicator{z-index:103}.filepond--file-action-button{z-index:102}.filepond--file-status{z-index:101}.filepond--file-info{z-index:100}.filepond--item{left:0;margin:.25em;padding:0;position:absolute;right:0;top:0;will-change:transform,opacity;z-index:1}.filepond--item>.filepond--panel{z-index:-1}.filepond--item>.filepond--panel .filepond--panel-bottom{box-shadow:0 .0625em .125em -.0625em #00000040}.filepond--item>.filepond--file-wrapper,.filepond--item>.filepond--panel{transition:opacity .15s ease-out}.filepond--item[data-drag-state]{cursor:grab}.filepond--item[data-drag-state]>.filepond--panel{box-shadow:0 0 0 transparent;transition:box-shadow .125s ease-in-out}.filepond--item[data-drag-state=drag]{cursor:grabbing}.filepond--item[data-drag-state=drag]>.filepond--panel{box-shadow:0 .125em .3125em #00000053}.filepond--item[data-drag-state]:not([data-drag-state=idle]){z-index:2}.filepond--item-panel{background-color:#64605e}[data-filepond-item-state=processing-complete] .filepond--item-panel{background-color:#369763}[data-filepond-item-state*=error] .filepond--item-panel,[data-filepond-item-state*=invalid] .filepond--item-panel{background-color:#c44e47}.filepond--item-panel{border-radius:.5em;transition:background-color .25s}.filepond--list-scroller{left:0;margin:0;position:absolute;right:0;top:0;will-change:transform}.filepond--list-scroller[data-state=overflow] .filepond--list{bottom:0;right:0}.filepond--list-scroller[data-state=overflow]{-webkit-overflow-scrolling:touch;-webkit-mask:linear-gradient(180deg,#000 calc(100% - .5em),transparent);mask:linear-gradient(180deg,#000 calc(100% - .5em),transparent);overflow-x:hidden;overflow-y:scroll}.filepond--list-scroller::-webkit-scrollbar{background:transparent}.filepond--list-scroller::-webkit-scrollbar:vertical{width:1em}.filepond--list-scroller::-webkit-scrollbar:horizontal{height:0}.filepond--list-scroller::-webkit-scrollbar-thumb{background-clip:content-box;background-color:#0000004d;border:.3125em solid transparent;border-radius:99999px}.filepond--list.filepond--list{list-style-type:none;margin:0;padding:0;position:absolute;top:0;will-change:transform}.filepond--list{left:.75em;right:.75em}.filepond--root[data-style-panel-layout~=integrated]{height:100%;margin:0;max-width:none;width:100%}.filepond--root[data-style-panel-layout~=circle] .filepond--panel-root,.filepond--root[data-style-panel-layout~=integrated] .filepond--panel-root{border-radius:0}.filepond--root[data-style-panel-layout~=circle] .filepond--panel-root>*,.filepond--root[data-style-panel-layout~=integrated] .filepond--panel-root>*{display:none}.filepond--root[data-style-panel-layout~=circle] .filepond--drop-label,.filepond--root[data-style-panel-layout~=integrated] .filepond--drop-label{align-items:center;bottom:0;display:flex;height:auto;justify-content:center;z-index:7}.filepond--root[data-style-panel-layout~=circle] .filepond--item-panel,.filepond--root[data-style-panel-layout~=integrated] .filepond--item-panel{display:none}.filepond--root[data-style-panel-layout~=compact] .filepond--list-scroller,.filepond--root[data-style-panel-layout~=integrated] .filepond--list-scroller{height:100%;margin-bottom:0;margin-top:0;overflow:hidden}.filepond--root[data-style-panel-layout~=compact] .filepond--list,.filepond--root[data-style-panel-layout~=integrated] .filepond--list{height:100%;left:0;right:0}.filepond--root[data-style-panel-layout~=compact] .filepond--item,.filepond--root[data-style-panel-layout~=integrated] .filepond--item{margin:0}.filepond--root[data-style-panel-layout~=compact] .filepond--file-wrapper,.filepond--root[data-style-panel-layout~=integrated] .filepond--file-wrapper{height:100%}.filepond--root[data-style-panel-layout~=compact] .filepond--drop-label,.filepond--root[data-style-panel-layout~=integrated] .filepond--drop-label{z-index:7}.filepond--root[data-style-panel-layout~=circle]{border-radius:99999rem;overflow:hidden}.filepond--root[data-style-panel-layout~=circle]>.filepond--panel{border-radius:inherit}.filepond--root[data-style-panel-layout~=circle] .filepond--file-info,.filepond--root[data-style-panel-layout~=circle] .filepond--file-status,.filepond--root[data-style-panel-layout~=circle]>.filepond--panel>*{display:none}@media not all and (-webkit-min-device-pixel-ratio:0),not all and (min-resolution:.001dpcm){@supports (-webkit-appearance:none) and (stroke-color:transparent){.filepond--root[data-style-panel-layout~=circle]{will-change:transform}}}.filepond--panel-root{background-color:#f1f0ef;border-radius:.5em}.filepond--panel{height:100%!important;left:0;margin:0;pointer-events:none;position:absolute;right:0;top:0}.filepond-panel:not([data-scalable=false]){height:auto!important}.filepond--panel[data-scalable=false]>div{display:none}.filepond--panel[data-scalable=true]{background-color:transparent!important;border:none!important;transform-style:preserve-3d}.filepond--panel-bottom,.filepond--panel-center,.filepond--panel-top{left:0;margin:0;padding:0;position:absolute;right:0;top:0}.filepond--panel-bottom,.filepond--panel-top{height:.5em}.filepond--panel-top{border-bottom:none!important;border-bottom-left-radius:0!important;border-bottom-right-radius:0!important}.filepond--panel-top:after{background-color:inherit;bottom:-1px;content:"";height:2px;left:0;position:absolute;right:0}.filepond--panel-bottom,.filepond--panel-center{backface-visibility:hidden;transform:translate3d(0,.5em,0);transform-origin:left top;will-change:transform}.filepond--panel-bottom{border-top:none!important;border-top-left-radius:0!important;border-top-right-radius:0!important}.filepond--panel-bottom:before{background-color:inherit;content:"";height:2px;left:0;position:absolute;right:0;top:-1px}.filepond--panel-center{border-bottom:none!important;border-radius:0!important;border-top:none!important;height:100px!important}.filepond--panel-center:not([style]){visibility:hidden}.filepond--progress-indicator{color:#fff;height:1.25em;margin:0;pointer-events:none;position:static;width:1.25em;will-change:transform,opacity}.filepond--progress-indicator svg{height:100%;transform-box:fill-box;vertical-align:top;width:100%}.filepond--progress-indicator path{fill:none;stroke:currentColor}.filepond--list-scroller{z-index:6}.filepond--drop-label{z-index:5}.filepond--drip{z-index:3}.filepond--root>.filepond--panel{z-index:2}.filepond--browser{z-index:1}.filepond--root{box-sizing:border-box;contain:layout style size;direction:ltr;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;font-size:1rem;font-weight:450;line-height:normal;margin-bottom:1em;position:relative;text-align:left;text-rendering:optimizeLegibility}.filepond--root *{box-sizing:inherit;line-height:inherit}.filepond--root :not(text){font-size:inherit}.filepond--root[data-disabled]{pointer-events:none}.filepond--root[data-disabled] .filepond--list-scroller{pointer-events:all}.filepond--root[data-disabled] .filepond--list{pointer-events:none}.filepond--root .filepond--drop-label{min-height:4.75em}.filepond--root .filepond--list-scroller{margin-bottom:1em;margin-top:1em}.filepond--root .filepond--credits{bottom:-14px;color:inherit;font-size:11px;line-height:.85;opacity:.175;position:absolute;right:0;text-decoration:none;z-index:3}.filepond--root .filepond--credits[style]{bottom:auto;margin-top:14px;top:0}.filepond--action-edit-item.filepond--action-edit-item{height:2em;padding:.1875em;width:2em}.filepond--action-edit-item.filepond--action-edit-item[data-align*=center]{margin-left:-.1875em}.filepond--action-edit-item.filepond--action-edit-item[data-align*=bottom]{margin-bottom:-.1875em}.filepond--action-edit-item-alt{background:transparent;border:none;color:inherit;font-family:inherit;line-height:inherit;margin:0 0 0 .25em;outline:none;padding:0;pointer-events:all;position:absolute}.filepond--action-edit-item-alt svg{height:1.3125em;width:1.3125em}.filepond--action-edit-item-alt span{font-size:0;opacity:0}.filepond--root[data-style-panel-layout~=circle] .filepond--action-edit-item{opacity:1!important;visibility:visible!important}.filepond--image-preview-markup{left:0;position:absolute;top:0}.filepond--image-preview-wrapper{z-index:2}.filepond--image-preview-overlay{display:block;left:0;margin:0;max-height:7rem;min-height:5rem;opacity:0;pointer-events:none;position:absolute;top:0;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:100%;z-index:2}.filepond--image-preview-overlay svg{color:inherit;height:auto;max-height:inherit;width:100%}.filepond--image-preview-overlay-idle{color:#282828d9;mix-blend-mode:multiply}.filepond--image-preview-overlay-success{color:#369763;mix-blend-mode:normal}.filepond--image-preview-overlay-failure{color:#c44e47;mix-blend-mode:normal}@supports (-webkit-marquee-repetition:infinite) and ((-o-object-fit:fill) or (object-fit:fill)){.filepond--image-preview-overlay-idle{mix-blend-mode:normal}}.filepond--image-preview-wrapper{background:rgba(0,0,0,.01);border-radius:.45em;height:100%;left:0;margin:0;overflow:hidden;position:absolute;right:0;top:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.filepond--image-preview{align-items:center;background:#222;display:flex;height:100%;left:0;pointer-events:none;position:absolute;top:0;width:100%;will-change:transform,opacity;z-index:1}.filepond--image-clip{margin:0 auto;overflow:hidden;position:relative}.filepond--image-clip[data-transparency-indicator=grid] canvas,.filepond--image-clip[data-transparency-indicator=grid] img{background-color:#fff;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg' fill='%23eee'%3E%3Cpath d='M0 0h50v50H0M50 50h50v50H50'/%3E%3C/svg%3E");background-size:1.25em 1.25em}.filepond--image-bitmap,.filepond--image-vector{left:0;position:absolute;top:0;will-change:transform}.filepond--root[data-style-panel-layout~=integrated] .filepond--image-preview-wrapper{border-radius:0}.filepond--root[data-style-panel-layout~=integrated] .filepond--image-preview{align-items:center;display:flex;height:100%;justify-content:center}.filepond--root[data-style-panel-layout~=circle] .filepond--image-preview-wrapper{border-radius:99999rem}.filepond--root[data-style-panel-layout~=circle] .filepond--image-preview-overlay{bottom:0;top:auto;transform:scaleY(-1)}.filepond--root[data-style-panel-layout~=circle] .filepond--file .filepond--file-action-button[data-align*=bottom]:not([data-align*=center]){margin-bottom:.325em}.filepond--root[data-style-panel-layout~=circle] .filepond--file [data-align*=left]{left:calc(50% - 3em)}.filepond--root[data-style-panel-layout~=circle] .filepond--file [data-align*=right]{right:calc(50% - 3em)}.filepond--root[data-style-panel-layout~=circle] .filepond--progress-indicator[data-align*=bottom][data-align*=left],.filepond--root[data-style-panel-layout~=circle] .filepond--progress-indicator[data-align*=bottom][data-align*=right]{margin-bottom:.5125em}.filepond--root[data-style-panel-layout~=circle] .filepond--progress-indicator[data-align*=bottom][data-align*=center]{margin-bottom:.1875em;margin-left:.1875em;margin-top:0}.filepond--media-preview audio{display:none}.filepond--media-preview .audioplayer{margin:2.3em auto auto;width:calc(100% - 1.4em)}.filepond--media-preview .playpausebtn{background-position:50%;background-repeat:no-repeat;border:none;border-radius:25px;cursor:pointer;float:left;height:25px;margin-right:.3em;margin-top:.3em;outline:none;width:25px}.filepond--media-preview .playpausebtn:hover{background-color:#00000080}.filepond--media-preview .play{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAyElEQVQ4T9XUsWoCQRRG4XPaFL5SfIy8gKYKBCysrax8Ahs7qzQ2qVIFOwsrsbEWLEK6EBFGBrIQhN2d3dnGgalm+Jh7789Ix8uOPe4YDCH0gZ66atKW0pJDCE/AEngDXtRjCpwCRucbGANzNVTBqWBhfAJDdV+GNgWj8wtM41bPt3AbsDB2f69d/0dzwC0wUDe54A8wAWbqJbfkD+BZPeQO5QsYqYu6LKb0MIb7VT3VYfG8CnwEHtT3FKi4c8e/TZMyk3LYFrwCgMdHFbRDKS8AAAAASUVORK5CYII=)}.filepond--media-preview .pause{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAh0lEQVQ4T+2UsQkCURBE30PLMbAMMResQrAPsQ0TK9AqDKxGZeTLD74aGNwlhzfZssvADDMrPcOe+RggYZIJcG2s2KinMidZAvu6u6uzT8u+JCeZArfmcKUeK+EaONTdQy23bxgJX8aPHvIHsSnVuzTx36rn2pQFsGuqN//ZlK7vbIDvq6vkJ9yteBXzecYbAAAAAElFTkSuQmCC)}.filepond--media-preview .timeline{background:hsla(0,0%,100%,.3);border-radius:15px;float:left;height:3px;margin-top:1em;width:calc(100% - 2.5em)}.filepond--media-preview .playhead{background:#fff;border-radius:50%;height:13px;margin-top:-5px;width:13px}.filepond--media-preview-wrapper{background:rgba(0,0,0,.01);border-radius:.45em;height:100%;left:0;margin:0;overflow:hidden;pointer-events:auto;position:absolute;right:0;top:0}.filepond--media-preview-wrapper:before{background:linear-gradient(180deg,#000 0,transparent);content:" ";filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#000000",endColorstr="#00000000",GradientType=0);height:2em;position:absolute;width:100%;z-index:3}.filepond--media-preview{display:block;height:100%;position:relative;transform-origin:center center;width:100%;will-change:transform,opacity;z-index:1}.filepond--media-preview audio,.filepond--media-preview video{width:100%;will-change:transform}.filepond--root{--tw-bg-opacity:1;--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-color:rgba(var(--gray-950),0.1);background-color:rgb(255 255 255/var(--tw-bg-opacity));border-radius:.5rem;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);margin-bottom:0}:is(:where(.dark) .filepond--root){--tw-ring-color:hsla(0,0%,100%,.2);background-color:hsla(0,0%,100%,.05)}.filepond--root[data-disabled=disabled]{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}:is(:where(.dark) .filepond--root[data-disabled=disabled]){--tw-ring-color:hsla(0,0%,100%,.1);background-color:transparent}.filepond--panel-root{background-color:transparent}.filepond--drop-label label{--tw-text-opacity:1;color:rgba(var(--gray-600),var(--tw-text-opacity));font-size:.875rem;line-height:1.25rem;padding:.75rem!important}:is(:where(.dark) .filepond--drop-label label){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.filepond--label-action{--tw-text-opacity:1;color:rgba(var(--primary-600),var(--tw-text-opacity));font-weight:500;text-decoration-line:none;transition-duration:75ms;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.filepond--label-action:hover{--tw-text-opacity:1;color:rgba(var(--primary-500),var(--tw-text-opacity))}:is(:where(.dark) .filepond--label-action){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}:is(:where(.dark) .filepond--label-action:hover){--tw-text-opacity:1;color:rgba(var(--primary-500),var(--tw-text-opacity))}.filepond--drip-blob{--tw-bg-opacity:1;background-color:rgba(var(--gray-400),var(--tw-bg-opacity))}:is(:where(.dark) .filepond--drip-blob){--tw-bg-opacity:1;background-color:rgba(var(--gray-500),var(--tw-bg-opacity))}.filepond--root[data-style-panel-layout=grid] .filepond--item{display:inline;width:calc(50% - .5rem)}@media (min-width:1024px){.filepond--root[data-style-panel-layout=grid] .filepond--item{width:calc(33.33% - .5rem)}}.filepond--download-icon{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));display:inline-block;height:1rem;margin-inline-end:.25rem;pointer-events:auto;vertical-align:bottom;width:1rem}.filepond--download-icon:hover{background-color:hsla(0,0%,100%,.7)}.filepond--download-icon{-webkit-mask-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBjbGFzcz0iZmVhdGhlciBmZWF0aGVyLWRvd25sb2FkIj48cGF0aCBkPSJNMjEgMTV2NGEyIDIgMCAwIDEtMiAySDVhMiAyIDAgMCAxLTItMnYtNE03IDEwbDUgNSA1LTVNMTIgMTVWMyIvPjwvc3ZnPg==);mask-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBjbGFzcz0iZmVhdGhlciBmZWF0aGVyLWRvd25sb2FkIj48cGF0aCBkPSJNMjEgMTV2NGEyIDIgMCAwIDEtMiAySDVhMiAyIDAgMCAxLTItMnYtNE03IDEwbDUgNSA1LTVNMTIgMTVWMyIvPjwvc3ZnPg==);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100%;mask-size:100%}.filepond--open-icon{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));display:inline-block;height:1rem;margin-inline-end:.25rem;pointer-events:auto;vertical-align:bottom;width:1rem}.filepond--open-icon:hover{background-color:hsla(0,0%,100%,.7)}.filepond--open-icon{-webkit-mask-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGNsYXNzPSJoLTYgdy02IiBmaWxsPSJub25lIiB2aWV3Qm94PSIwIDAgMjQgMjQiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiPjxwYXRoIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgZD0iTTEwIDZINmEyIDIgMCAwIDAtMiAydjEwYTIgMiAwIDAgMCAyIDJoMTBhMiAyIDAgMCAwIDItMnYtNE0xNCA0aDZtMCAwdjZtMC02TDEwIDE0Ii8+PC9zdmc+);mask-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGNsYXNzPSJoLTYgdy02IiBmaWxsPSJub25lIiB2aWV3Qm94PSIwIDAgMjQgMjQiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiPjxwYXRoIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgZD0iTTEwIDZINmEyIDIgMCAwIDAtMiAydjEwYTIgMiAwIDAgMCAyIDJoMTBhMiAyIDAgMCAwIDItMnYtNE0xNCA0aDZtMCAwdjZtMC02TDEwIDE0Ii8+PC9zdmc+);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100%;mask-size:100%}.filepond--file-action-button.filepond--action-edit-item{background-color:rgba(0,0,0,.5)}.cropper-drag-box.cropper-crop.cropper-modal{background-color:rgba(var(--gray-100),.5);opacity:1}:is(:where(.dark) .cropper-drag-box.cropper-crop.cropper-modal){background-color:rgba(var(--gray-900),.8)}.fi-fo-file-upload-circle-cropper .cropper-face,.fi-fo-file-upload-circle-cropper .cropper-view-box{border-radius:9999px}.CodeMirror{color:#000;direction:ltr;font-family:monospace;height:300px}.CodeMirror-lines{padding:4px 0}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{padding:0 4px}.CodeMirror-gutter-filler,.CodeMirror-scrollbar-filler{background-color:#fff}.CodeMirror-gutters{background-color:#f7f7f7;border-right:1px solid #ddd;white-space:nowrap}.CodeMirror-linenumber{color:#999;min-width:20px;padding:0 3px 0 5px;text-align:right;white-space:nowrap}.CodeMirror-guttermarker{color:#000}.CodeMirror-guttermarker-subtle{color:#999}.CodeMirror-cursor{border-left:1px solid #000;border-right:none;width:0}.CodeMirror div.CodeMirror-secondarycursor{border-left:1px solid silver}.cm-fat-cursor .CodeMirror-cursor{background:#7e7;border:0!important;width:auto}.cm-fat-cursor div.CodeMirror-cursors{z-index:1}.cm-fat-cursor .CodeMirror-line::selection,.cm-fat-cursor .CodeMirror-line>span::selection,.cm-fat-cursor .CodeMirror-line>span>span::selection{background:0 0}.cm-fat-cursor .CodeMirror-line::-moz-selection,.cm-fat-cursor .CodeMirror-line>span::-moz-selection,.cm-fat-cursor .CodeMirror-line>span>span::-moz-selection{background:0 0}.cm-fat-cursor{caret-color:transparent}@keyframes blink{50%{background-color:transparent}}.cm-tab{display:inline-block;text-decoration:inherit}.CodeMirror-rulers{inset:-50px 0 0;overflow:hidden;position:absolute}.CodeMirror-ruler{border-left:1px solid #ccc;bottom:0;position:absolute;top:0}.cm-s-default .cm-header{color:#00f}.cm-s-default .cm-quote{color:#090}.cm-negative{color:#d44}.cm-positive{color:#292}.cm-header,.cm-strong{font-weight:700}.cm-em{font-style:italic}.cm-link{text-decoration:underline}.cm-strikethrough{text-decoration:line-through}.cm-s-default .cm-keyword{color:#708}.cm-s-default .cm-atom{color:#219}.cm-s-default .cm-number{color:#164}.cm-s-default .cm-def{color:#00f}.cm-s-default .cm-variable-2{color:#05a}.cm-s-default .cm-type,.cm-s-default .cm-variable-3{color:#085}.cm-s-default .cm-comment{color:#a50}.cm-s-default .cm-string{color:#a11}.cm-s-default .cm-string-2{color:#f50}.cm-s-default .cm-meta,.cm-s-default .cm-qualifier{color:#555}.cm-s-default .cm-builtin{color:#30a}.cm-s-default .cm-bracket{color:#997}.cm-s-default .cm-tag{color:#170}.cm-s-default .cm-attribute{color:#00c}.cm-s-default .cm-hr{color:#999}.cm-s-default .cm-link{color:#00c}.cm-invalidchar,.cm-s-default .cm-error{color:red}.CodeMirror-composing{border-bottom:2px solid}div.CodeMirror span.CodeMirror-matchingbracket{color:#0b0}div.CodeMirror span.CodeMirror-nonmatchingbracket{color:#a22}.CodeMirror-matchingtag{background:rgba(255,150,0,.3)}.CodeMirror-activeline-background{background:#e8f2ff}.CodeMirror{background:#fff;overflow:hidden;position:relative}.CodeMirror-scroll{height:100%;margin-bottom:-50px;margin-right:-50px;outline:0;overflow:scroll!important;padding-bottom:50px;position:relative;z-index:0}.CodeMirror-sizer{border-right:50px solid transparent;position:relative}.CodeMirror-gutter-filler,.CodeMirror-hscrollbar,.CodeMirror-scrollbar-filler,.CodeMirror-vscrollbar{display:none;outline:0;position:absolute;z-index:6}.CodeMirror-vscrollbar{overflow-x:hidden;overflow-y:scroll;right:0;top:0}.CodeMirror-hscrollbar{bottom:0;left:0;overflow-x:scroll;overflow-y:hidden}.CodeMirror-scrollbar-filler{bottom:0;right:0}.CodeMirror-gutter-filler{bottom:0;left:0}.CodeMirror-gutters{left:0;min-height:100%;position:absolute;top:0;z-index:3}.CodeMirror-gutter{display:inline-block;height:100%;margin-bottom:-50px;vertical-align:top;white-space:normal}.CodeMirror-gutter-wrapper{background:0 0!important;border:none!important;position:absolute;z-index:4}.CodeMirror-gutter-background{bottom:0;position:absolute;top:0;z-index:4}.CodeMirror-gutter-elt{cursor:default;position:absolute;z-index:4}.CodeMirror-gutter-wrapper ::selection{background-color:transparent}.CodeMirror-gutter-wrapper ::-moz-selection{background-color:transparent}.CodeMirror-lines{cursor:text;min-height:1px}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{word-wrap:normal;-webkit-tap-highlight-color:transparent;background:0 0;border-radius:0;border-width:0;color:inherit;font-family:inherit;font-size:inherit;font-variant-ligatures:contextual;line-height:inherit;margin:0;overflow:visible;position:relative;white-space:pre;z-index:2}.CodeMirror-wrap pre.CodeMirror-line,.CodeMirror-wrap pre.CodeMirror-line-like{word-wrap:break-word;white-space:pre-wrap;word-break:normal}.CodeMirror-linebackground{inset:0;position:absolute;z-index:0}.CodeMirror-linewidget{padding:.1px;position:relative;z-index:2}.CodeMirror-code{outline:0}.CodeMirror-gutter,.CodeMirror-gutters,.CodeMirror-linenumber,.CodeMirror-scroll,.CodeMirror-sizer{box-sizing:content-box}.CodeMirror-measure{height:0;overflow:hidden;position:absolute;visibility:hidden;width:100%}.CodeMirror-cursor{pointer-events:none;position:absolute}.CodeMirror-measure pre{position:static}div.CodeMirror-cursors{position:relative;visibility:hidden;z-index:3}.CodeMirror-focused div.CodeMirror-cursors,div.CodeMirror-dragcursors{visibility:visible}.CodeMirror-selected{background:#d9d9d9}.CodeMirror-focused .CodeMirror-selected{background:#d7d4f0}.CodeMirror-crosshair{cursor:crosshair}.CodeMirror-line::selection,.CodeMirror-line>span::selection,.CodeMirror-line>span>span::selection{background:#d7d4f0}.CodeMirror-line::-moz-selection,.CodeMirror-line>span::-moz-selection,.CodeMirror-line>span>span::-moz-selection{background:#d7d4f0}.cm-searching{background-color:#ffa;background-color:#ff06}.cm-force-border{padding-right:.1px}@media print{.CodeMirror div.CodeMirror-cursors{visibility:hidden}}.cm-tab-wrap-hack:after{content:""}span.CodeMirror-selectedtext{background:0 0}.EasyMDEContainer{display:block}.CodeMirror-rtl pre{direction:rtl}.EasyMDEContainer.sided--no-fullscreen{display:flex;flex-direction:row;flex-wrap:wrap}.EasyMDEContainer .CodeMirror{word-wrap:break-word;border:1px solid #ced4da;border-bottom-left-radius:4px;border-bottom-right-radius:4px;box-sizing:border-box;font:inherit;height:auto;padding:10px;z-index:0}.EasyMDEContainer .CodeMirror-scroll{cursor:text}.EasyMDEContainer .CodeMirror-fullscreen{background:#fff;border-bottom-right-radius:0!important;border-right:none!important;height:auto;inset:50px 0 0;position:fixed!important;z-index:8}.EasyMDEContainer .CodeMirror-sided{width:50%!important}.EasyMDEContainer.sided--no-fullscreen .CodeMirror-sided{border-bottom-right-radius:0;border-right:none!important;flex:1 1 auto;position:relative}.EasyMDEContainer .CodeMirror-placeholder{opacity:.5}.EasyMDEContainer .CodeMirror-focused .CodeMirror-selected{background:#d9d9d9}.editor-toolbar{border-left:1px solid #ced4da;border-right:1px solid #ced4da;border-top:1px solid #ced4da;border-top-left-radius:4px;border-top-right-radius:4px;padding:9px 10px;position:relative;-webkit-user-select:none;-moz-user-select:none;-o-user-select:none;user-select:none}.editor-toolbar.fullscreen{background:#fff;border:0;box-sizing:border-box;height:50px;left:0;opacity:1;padding-bottom:10px;padding-top:10px;position:fixed;top:0;width:100%;z-index:9}.editor-toolbar.fullscreen:before{background:linear-gradient(90deg,#fff 0,hsla(0,0%,100%,0));height:50px;left:0;margin:0;padding:0;position:fixed;top:0;width:20px}.editor-toolbar.fullscreen:after{background:linear-gradient(90deg,hsla(0,0%,100%,0) 0,#fff);height:50px;margin:0;padding:0;position:fixed;right:0;top:0;width:20px}.EasyMDEContainer.sided--no-fullscreen .editor-toolbar{width:100%}.editor-toolbar .easymde-dropdown,.editor-toolbar button{background:0 0;border:1px solid transparent;border-radius:3px;cursor:pointer;display:inline-block;height:30px;margin:0;padding:0;text-align:center;text-decoration:none!important}.editor-toolbar button{font-weight:700;min-width:30px;padding:0 6px;white-space:nowrap}.editor-toolbar button.active,.editor-toolbar button:hover{background:#fcfcfc;border-color:#95a5a6}.editor-toolbar i.separator{border-left:1px solid #d9d9d9;border-right:1px solid #fff;color:transparent;display:inline-block;margin:0 6px;text-indent:-10px;width:0}.editor-toolbar button:after{font-family:Arial,Helvetica Neue,Helvetica,sans-serif;font-size:65%;position:relative;top:2px;vertical-align:text-bottom}.editor-toolbar button.heading-1:after{content:"1"}.editor-toolbar button.heading-2:after{content:"2"}.editor-toolbar button.heading-3:after{content:"3"}.editor-toolbar button.heading-bigger:after{content:"\25b2"}.editor-toolbar button.heading-smaller:after{content:"\25bc"}.editor-toolbar.disabled-for-preview button:not(.no-disable){opacity:.6;pointer-events:none}@media only screen and (max-width:700px){.editor-toolbar i.no-mobile{display:none}}.editor-statusbar{color:#959694;font-size:12px;padding:8px 10px;text-align:right}.EasyMDEContainer.sided--no-fullscreen .editor-statusbar{width:100%}.editor-statusbar span{display:inline-block;margin-left:1em;min-width:4em}.editor-statusbar .lines:before{content:"lines: "}.editor-statusbar .words:before{content:"words: "}.editor-statusbar .characters:before{content:"characters: "}.editor-preview-full{height:100%;left:0;position:absolute;top:0;width:100%;z-index:7}.editor-preview-full,.editor-preview-side{box-sizing:border-box;display:none;overflow:auto}.editor-preview-side{word-wrap:break-word;border:1px solid #ddd;bottom:0;position:fixed;right:0;top:50px;width:50%;z-index:9}.editor-preview-active-side{display:block}.EasyMDEContainer.sided--no-fullscreen .editor-preview-active-side{flex:1 1 auto;height:auto;position:static}.editor-preview-active{display:block}.editor-preview{background:#fafafa;padding:10px}.editor-preview>p{margin-top:0}.editor-preview pre{background:#eee;margin-bottom:10px}.editor-preview table td,.editor-preview table th{border:1px solid #ddd;padding:5px}.cm-s-easymde .cm-tag{color:#63a35c}.cm-s-easymde .cm-attribute{color:#795da3}.cm-s-easymde .cm-string{color:#183691}.cm-s-easymde .cm-header-1{font-size:calc(1.375rem + 1.5vw)}.cm-s-easymde .cm-header-2{font-size:calc(1.325rem + .9vw)}.cm-s-easymde .cm-header-3{font-size:calc(1.3rem + .6vw)}.cm-s-easymde .cm-header-4{font-size:calc(1.275rem + .3vw)}.cm-s-easymde .cm-header-5{font-size:1.25rem}.cm-s-easymde .cm-header-6{font-size:1rem}.cm-s-easymde .cm-header-1,.cm-s-easymde .cm-header-2,.cm-s-easymde .cm-header-3,.cm-s-easymde .cm-header-4,.cm-s-easymde .cm-header-5,.cm-s-easymde .cm-header-6{line-height:1.2;margin-bottom:.5rem}.cm-s-easymde .cm-comment{background:rgba(0,0,0,.05);border-radius:2px}.cm-s-easymde .cm-link{color:#7f8c8d}.cm-s-easymde .cm-url{color:#aab2b3}.cm-s-easymde .cm-quote{color:#7f8c8d;font-style:italic}.editor-toolbar .easymde-dropdown{border:1px solid #fff;border-radius:0;position:relative}.editor-toolbar .easymde-dropdown,.editor-toolbar .easymde-dropdown:hover{background:linear-gradient(to bottom right,#fff,#fff 84%,#333 0,#333)}.easymde-dropdown-content{background-color:#f9f9f9;box-shadow:0 8px 16px #0003;display:block;padding:8px;position:absolute;top:30px;visibility:hidden;z-index:2}.easymde-dropdown:active .easymde-dropdown-content,.easymde-dropdown:focus .easymde-dropdown-content,.easymde-dropdown:focus-within .easymde-dropdown-content{visibility:visible}.easymde-dropdown-content button{display:block}span[data-img-src]:after{background-image:var(--bg-image);background-repeat:no-repeat;background-size:contain;content:"";display:block;height:0;max-height:100%;max-width:100%;padding-top:var(--height);width:var(--width)}.CodeMirror .cm-spell-error:not(.cm-url):not(.cm-comment):not(.cm-tag):not(.cm-word){background:rgba(255,0,0,.15)}:root{--color-cm-red:#991b1b;--color-cm-orange:#9a3412;--color-cm-amber:#92400e;--color-cm-yellow:#854d0e;--color-cm-lime:#3f6212;--color-cm-green:#166534;--color-cm-emerald:#065f46;--color-cm-teal:#115e59;--color-cm-cyan:#155e75;--color-cm-sky:#075985;--color-cm-blue:#1e40af;--color-cm-indigo:#3730a3;--color-cm-violet:#5b21b6;--color-cm-purple:#6b21a8;--color-cm-fuchsia:#86198f;--color-cm-pink:#9d174d;--color-cm-rose:#9f1239;--color-cm-gray:#18181b;--color-cm-gray-muted:#71717a;--color-cm-gray-background:#e4e4e7}.dark{--color-cm-red:#f87171;--color-cm-orange:#fb923c;--color-cm-amber:#fbbf24;--color-cm-yellow:#facc15;--color-cm-lime:#a3e635;--color-cm-green:#4ade80;--color-cm-emerald:#4ade80;--color-cm-teal:#2dd4bf;--color-cm-cyan:#22d3ee;--color-cm-sky:#38bdf8;--color-cm-blue:#60a5fa;--color-cm-indigo:#818cf8;--color-cm-violet:#a78bfa;--color-cm-purple:#c084fc;--color-cm-fuchsia:#e879f9;--color-cm-pink:#f472b6;--color-cm-rose:#fb7185;--color-cm-gray:#fafafa;--color-cm-gray-muted:#a1a1aa;--color-cm-gray-background:#52525b}.cm-s-easymde .cm-comment{background-color:transparent;color:var(--color-cm-gray-muted)}.EasyMDEContainer .CodeMirror-cursor{border-color:currentColor}.dark .EasyMDEContainer .cm-s-easymde span.CodeMirror-selectedtext{filter:invert(100%)}.EasyMDEContainer .cm-s-easymde .cm-keyword{color:var(--color-cm-violet)}.EasyMDEContainer .cm-s-easymde .cm-atom{color:var(--color-cm-blue)}.EasyMDEContainer .cm-s-easymde .cm-number{color:var(--color-cm-green)}.EasyMDEContainer .cm-s-easymde .cm-def{color:var(--color-cm-blue)}.EasyMDEContainer .cm-s-easymde .cm-variable{color:var(--color-cm-yellow)}.EasyMDEContainer .cm-s-easymde .cm-variable-2{color:var(--color-cm-blue)}.EasyMDEContainer .cm-s-easymde .cm-variable-3{color:var(--color-cm-emerald)}.EasyMDEContainer .cm-s-easymde .cm-operator,.EasyMDEContainer .cm-s-easymde .cm-property{color:var(--color-cm-gray)}.EasyMDEContainer .cm-s-easymde .cm-string,.EasyMDEContainer .cm-s-easymde .cm-string-2{color:var(--color-cm-rose)}.EasyMDEContainer .cm-s-easymde .cm-meta{color:var(--color-cm-gray-muted)}.EasyMDEContainer .cm-s-easymde .cm-error{color:var(--color-cm-red)}.EasyMDEContainer .cm-s-easymde .cm-qualifier{color:var(--color-cm-gray-muted)}.EasyMDEContainer .cm-s-easymde .cm-builtin{color:var(--color-cm-violet)}.EasyMDEContainer .cm-s-easymde .cm-bracket{color:var(--color-cm-gray-muted)}.EasyMDEContainer .cm-s-easymde .cm-tag{color:var(--color-cm-green)}.EasyMDEContainer .cm-s-easymde .cm-attribute{color:var(--color-cm-blue)}.EasyMDEContainer .cm-s-easymde .cm-hr{color:var(--color-cm-gray-muted)}.EasyMDEContainer .cm-s-easymde .cm-formatting-quote{color:var(--color-cm-sky)}.EasyMDEContainer .cm-s-easymde .cm-formatting-quote+.cm-quote{color:var(--color-cm-gray-muted)}.EasyMDEContainer .cm-s-easymde .cm-formatting-list,.EasyMDEContainer .cm-s-easymde .cm-formatting-list+.cm-variable-2,.EasyMDEContainer .cm-s-easymde .cm-tab+.cm-variable-2{color:var(--color-cm-gray)}.EasyMDEContainer .cm-s-easymde .cm-link{color:var(--color-cm-blue)}.EasyMDEContainer .cm-s-easymde .cm-tag{color:var(--color-cm-red)}.EasyMDEContainer .cm-s-easymde .cm-attribute{color:var(--color-cm-amber)}.EasyMDEContainer .cm-s-easymde .cm-attribute+.cm-string{color:var(--color-cm-green)}.EasyMDEContainer .cm-s-easymde .cm-formatting-code+.cm-comment:not(.cm-formatting-code){background-color:var(--color-cm-gray-background);color:var(--color-cm-gray)}.EasyMDEContainer .cm-s-easymde .cm-header-1{font-size:1.875rem;line-height:2.25rem}.EasyMDEContainer .cm-s-easymde .cm-header-2{font-size:1.5rem;line-height:2rem}.EasyMDEContainer .cm-s-easymde .cm-header-3{font-size:1.25rem;line-height:1.75rem}.EasyMDEContainer .cm-s-easymde .cm-header-4{font-size:1.125rem;line-height:1.75rem}.EasyMDEContainer .cm-s-easymde .cm-header-5{font-size:1rem;line-height:1.5rem}.EasyMDEContainer .cm-s-easymde .cm-header-6{font-size:.875rem;line-height:1.25rem}.EasyMDEContainer .cm-s-easymde .cm-comment{background-image:none}.EasyMDEContainer .CodeMirror,.EasyMDEContainer .cm-s-easymde .cm-formatting-code-block,.EasyMDEContainer .cm-s-easymde .cm-tab+.cm-comment{background-color:transparent;color:inherit}.EasyMDEContainer .CodeMirror{border-style:none;padding:.375rem .75rem}.EasyMDEContainer .CodeMirror-scroll{height:auto}.EasyMDEContainer .editor-toolbar{--tw-border-opacity:1;border-color:rgba(var(--gray-200),var(--tw-border-opacity));border-radius:0;border-width:0 0 1px;-moz-column-gap:.25rem;column-gap:.25rem;display:flex;overflow-x:auto;padding:.5rem .625rem}:is(:where(.dark) .EasyMDEContainer .editor-toolbar){border-color:hsla(0,0%,100%,.1)}.EasyMDEContainer .editor-toolbar button{border-radius:.5rem;border-style:none;cursor:pointer;display:grid;height:2rem;padding:0;place-content:center;transition-duration:75ms;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);width:2rem}.EasyMDEContainer .editor-toolbar button:hover{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.EasyMDEContainer .editor-toolbar button:focus-visible{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}:is(:where(.dark) .EasyMDEContainer .editor-toolbar button:hover){background-color:hsla(0,0%,100%,.05)}:is(:where(.dark) .EasyMDEContainer .editor-toolbar button:focus-visible){background-color:hsla(0,0%,100%,.05)}.EasyMDEContainer .editor-toolbar button.active{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}:is(:where(.dark) .EasyMDEContainer .editor-toolbar button.active){background-color:hsla(0,0%,100%,.05)}.EasyMDEContainer .editor-toolbar button:before{--tw-bg-opacity:1;background-color:rgba(var(--gray-700),var(--tw-bg-opacity));display:block;height:1rem;width:1rem}:is(:where(.dark) .EasyMDEContainer .editor-toolbar button):before{--tw-bg-opacity:1;background-color:rgba(var(--gray-300),var(--tw-bg-opacity))}.EasyMDEContainer .editor-toolbar button:before{content:"";-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.EasyMDEContainer .editor-toolbar button.active:before{--tw-bg-opacity:1;background-color:rgba(var(--primary-600),var(--tw-bg-opacity))}:is(:where(.dark) .EasyMDEContainer .editor-toolbar button.active):before{--tw-bg-opacity:1;background-color:rgba(var(--primary-400),var(--tw-bg-opacity))}.EasyMDEContainer .editor-toolbar .separator{border-style:none;margin:0!important;width:.25rem}.EasyMDEContainer .editor-toolbar .bold:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 384 512'%3E%3Cpath d='M321.1 242.4c19-22.3 30.9-50.8 30.9-82.4 0-70.59-57.42-128-128-128l-192 .01c-17.67 0-32 14.31-32 32s14.33 32 32 32h16v320H32c-17.67 0-32 14.31-32 32s14.33 32 32 32h224c70.58 0 128-57.41 128-128 0-46.71-25.4-87.21-62.9-109.61zM112 96.01h112c35.3 0 64 28.72 64 64s-28.7 64-64 64H112v-128zM256 416H112V288h144c35.3 0 64 28.71 64 63.1S291.3 416 256 416z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 384 512'%3E%3Cpath d='M321.1 242.4c19-22.3 30.9-50.8 30.9-82.4 0-70.59-57.42-128-128-128l-192 .01c-17.67 0-32 14.31-32 32s14.33 32 32 32h16v320H32c-17.67 0-32 14.31-32 32s14.33 32 32 32h224c70.58 0 128-57.41 128-128 0-46.71-25.4-87.21-62.9-109.61zM112 96.01h112c35.3 0 64 28.72 64 64s-28.7 64-64 64H112v-128zM256 416H112V288h144c35.3 0 64 28.71 64 63.1S291.3 416 256 416z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .italic:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 384 512'%3E%3Cpath d='M384 64.01c0 17.69-14.31 32-32 32h-58.67l-133.3 320H224c17.69 0 32 14.31 32 32s-14.31 32-32 32H32c-17.69 0-32-14.31-32-32s14.31-32 32-32h58.67l133.3-320H160c-17.69 0-32-14.31-32-32s14.31-32 32-32h192c17.7 0 32 14.32 32 32z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 384 512'%3E%3Cpath d='M384 64.01c0 17.69-14.31 32-32 32h-58.67l-133.3 320H224c17.69 0 32 14.31 32 32s-14.31 32-32 32H32c-17.69 0-32-14.31-32-32s14.31-32 32-32h58.67l133.3-320H160c-17.69 0-32-14.31-32-32s14.31-32 32-32h192c17.7 0 32 14.32 32 32z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .strikethrough:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M332.2 319.9c17.22 12.17 22.33 26.51 18.61 48.21-3.031 17.59-10.88 29.34-24.72 36.99-35.44 19.75-108.5 11.96-186-19.68-16.34-6.686-35.03 1.156-41.72 17.53s1.188 35.05 17.53 41.71c31.75 12.93 95.69 35.37 157.6 35.37 29.62 0 58.81-5.156 83.72-18.96 30.81-17.09 50.44-45.46 56.72-82.11 3.998-23.27 2.168-42.58-3.488-59.05H332.2zm155.8-80-176.5-.03c-15.85-5.614-31.83-10.34-46.7-14.62-85.47-24.62-110.9-39.05-103.7-81.33 2.5-14.53 10.16-25.96 22.72-34.03 20.47-13.15 64.06-23.84 155.4.343 17.09 4.53 34.59-5.654 39.13-22.74 4.531-17.09-5.656-34.59-22.75-39.12-91.31-24.18-160.7-21.62-206.3 7.654C121.8 73.72 103.6 101.1 98.09 133.1c-8.83 51.4 9.81 84.2 39.11 106.8H24c-13.25 0-24 10.75-24 23.1 0 13.25 10.75 23.1 24 23.1h464c13.25 0 24-10.75 24-23.1 0-12.3-10.7-23.1-24-23.1z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M332.2 319.9c17.22 12.17 22.33 26.51 18.61 48.21-3.031 17.59-10.88 29.34-24.72 36.99-35.44 19.75-108.5 11.96-186-19.68-16.34-6.686-35.03 1.156-41.72 17.53s1.188 35.05 17.53 41.71c31.75 12.93 95.69 35.37 157.6 35.37 29.62 0 58.81-5.156 83.72-18.96 30.81-17.09 50.44-45.46 56.72-82.11 3.998-23.27 2.168-42.58-3.488-59.05H332.2zm155.8-80-176.5-.03c-15.85-5.614-31.83-10.34-46.7-14.62-85.47-24.62-110.9-39.05-103.7-81.33 2.5-14.53 10.16-25.96 22.72-34.03 20.47-13.15 64.06-23.84 155.4.343 17.09 4.53 34.59-5.654 39.13-22.74 4.531-17.09-5.656-34.59-22.75-39.12-91.31-24.18-160.7-21.62-206.3 7.654C121.8 73.72 103.6 101.1 98.09 133.1c-8.83 51.4 9.81 84.2 39.11 106.8H24c-13.25 0-24 10.75-24 23.1 0 13.25 10.75 23.1 24 23.1h464c13.25 0 24-10.75 24-23.1 0-12.3-10.7-23.1-24-23.1z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .link:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 640 512'%3E%3Cpath d='M598.6 41.41C570.1 13.8 534.8 0 498.6 0s-72.36 13.8-99.96 41.41l-43.36 43.36c15.11 8.012 29.47 17.58 41.91 30.02 3.146 3.146 5.898 6.518 8.742 9.838l37.96-37.96C458.5 72.05 477.1 64 498.6 64c20.67 0 40.1 8.047 54.71 22.66 14.61 14.61 22.66 34.04 22.66 54.71s-8.049 40.1-22.66 54.71l-133.3 133.3C405.5 343.1 386 352 365.4 352s-40.1-8.048-54.71-22.66C296 314.7 287.1 295.3 287.1 274.6s8.047-40.1 22.66-54.71l4.44-3.49c-2.1-3.9-4.3-7.9-7.5-11.1-8.6-8.6-19.9-13.3-32.1-13.3-11.93 0-23.1 4.664-31.61 12.97-30.71 53.96-23.63 123.6 22.39 169.6C293 402.2 329.2 416 365.4 416c36.18 0 72.36-13.8 99.96-41.41L598.6 241.3c28.45-28.45 42.24-66.01 41.37-103.3-.87-35.9-14.57-69.84-41.37-96.59zM234 387.4l-37.9 37.9C181.5 439.1 162 448 141.4 448c-20.67 0-40.1-8.047-54.71-22.66-14.61-14.61-22.66-34.04-22.66-54.71s8.049-40.1 22.66-54.71l133.3-133.3C234.5 168 253.1 160 274.6 160s40.1 8.048 54.71 22.66c14.62 14.61 22.66 34.04 22.66 54.71s-8.047 40.1-22.66 54.71l-3.51 3.52c2.094 3.939 4.219 7.895 7.465 11.15C341.9 315.3 353.3 320 365.4 320c11.93 0 23.1-4.664 31.61-12.97 30.71-53.96 23.63-123.6-22.39-169.6C346.1 109.8 310.8 96 274.6 96c-36.2 0-72.3 13.8-99.9 41.4L41.41 270.7C13.81 298.3 0 334.48 0 370.66c0 36.18 13.8 72.36 41.41 99.97C69.01 498.2 105.2 512 141.4 512c36.18 0 72.36-13.8 99.96-41.41l43.36-43.36c-15.11-8.012-29.47-17.58-41.91-30.02-3.21-3.11-5.91-6.51-8.81-9.81z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 640 512'%3E%3Cpath d='M598.6 41.41C570.1 13.8 534.8 0 498.6 0s-72.36 13.8-99.96 41.41l-43.36 43.36c15.11 8.012 29.47 17.58 41.91 30.02 3.146 3.146 5.898 6.518 8.742 9.838l37.96-37.96C458.5 72.05 477.1 64 498.6 64c20.67 0 40.1 8.047 54.71 22.66 14.61 14.61 22.66 34.04 22.66 54.71s-8.049 40.1-22.66 54.71l-133.3 133.3C405.5 343.1 386 352 365.4 352s-40.1-8.048-54.71-22.66C296 314.7 287.1 295.3 287.1 274.6s8.047-40.1 22.66-54.71l4.44-3.49c-2.1-3.9-4.3-7.9-7.5-11.1-8.6-8.6-19.9-13.3-32.1-13.3-11.93 0-23.1 4.664-31.61 12.97-30.71 53.96-23.63 123.6 22.39 169.6C293 402.2 329.2 416 365.4 416c36.18 0 72.36-13.8 99.96-41.41L598.6 241.3c28.45-28.45 42.24-66.01 41.37-103.3-.87-35.9-14.57-69.84-41.37-96.59zM234 387.4l-37.9 37.9C181.5 439.1 162 448 141.4 448c-20.67 0-40.1-8.047-54.71-22.66-14.61-14.61-22.66-34.04-22.66-54.71s8.049-40.1 22.66-54.71l133.3-133.3C234.5 168 253.1 160 274.6 160s40.1 8.048 54.71 22.66c14.62 14.61 22.66 34.04 22.66 54.71s-8.047 40.1-22.66 54.71l-3.51 3.52c2.094 3.939 4.219 7.895 7.465 11.15C341.9 315.3 353.3 320 365.4 320c11.93 0 23.1-4.664 31.61-12.97 30.71-53.96 23.63-123.6-22.39-169.6C346.1 109.8 310.8 96 274.6 96c-36.2 0-72.3 13.8-99.9 41.4L41.41 270.7C13.81 298.3 0 334.48 0 370.66c0 36.18 13.8 72.36 41.41 99.97C69.01 498.2 105.2 512 141.4 512c36.18 0 72.36-13.8 99.96-41.41l43.36-43.36c-15.11-8.012-29.47-17.58-41.91-30.02-3.21-3.11-5.91-6.51-8.81-9.81z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .heading:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 512'%3E%3Cpath d='M0 64c0-17.7 14.3-32 32-32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32h-16v112h224V96h-16c-17.7 0-32-14.3-32-32s14.3-32 32-32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32h-16v320h16c17.7 0 32 14.3 32 32s-14.3 32-32 32h-96c-17.7 0-32-14.3-32-32s14.3-32 32-32h16V272H112v144h16c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32h16V96H32C14.3 96 0 81.7 0 64z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 512'%3E%3Cpath d='M0 64c0-17.7 14.3-32 32-32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32h-16v112h224V96h-16c-17.7 0-32-14.3-32-32s14.3-32 32-32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32h-16v320h16c17.7 0 32 14.3 32 32s-14.3 32-32 32h-96c-17.7 0-32-14.3-32-32s14.3-32 32-32h16V272H112v144h16c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32h16V96H32C14.3 96 0 81.7 0 64z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .quote:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 512'%3E%3Cpath d='M96 224c-11.28 0-21.95 2.3-32 5.9V224c0-35.3 28.7-64 64-64 17.67 0 32-14.33 32-32s-14.3-32-32-32C57.42 96 0 153.4 0 224v96c0 53.02 42.98 96 96 96s96-42.98 96-96-43-96-96-96zm256 0c-11.28 0-21.95 2.305-32 5.879V224c0-35.3 28.7-64 64-64 17.67 0 32-14.33 32-32s-14.33-32-32-32c-70.58 0-128 57.42-128 128v96c0 53.02 42.98 96 96 96s96-42.98 96-96-43-96-96-96z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 512'%3E%3Cpath d='M96 224c-11.28 0-21.95 2.3-32 5.9V224c0-35.3 28.7-64 64-64 17.67 0 32-14.33 32-32s-14.3-32-32-32C57.42 96 0 153.4 0 224v96c0 53.02 42.98 96 96 96s96-42.98 96-96-43-96-96-96zm256 0c-11.28 0-21.95 2.305-32 5.879V224c0-35.3 28.7-64 64-64 17.67 0 32-14.33 32-32s-14.33-32-32-32c-70.58 0-128 57.42-128 128v96c0 53.02 42.98 96 96 96s96-42.98 96-96-43-96-96-96z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .code:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 640 512'%3E%3Cpath d='M416 31.94C416 21.75 408.1 0 384.1 0c-13.98 0-26.87 9.072-30.89 23.18l-128 448a31.933 31.933 0 0 0-1.241 8.801C223.1 490.3 232 512 256 512c13.92 0 26.73-9.157 30.75-23.22l128-448c.85-2.97 1.25-5.93 1.25-8.84zM176 143.1c0-18.28-14.95-32-32-32-8.188 0-16.38 3.125-22.62 9.376l-112 112C3.125 239.6 0 247.8 0 255.1s3.125 17.3 9.375 23.5l112 112c6.225 6.3 14.425 8.5 22.625 8.5 17.05 0 32-13.73 32-32 0-8.188-3.125-16.38-9.375-22.63L77.25 255.1l89.38-89.38c6.27-5.42 9.37-13.52 9.37-22.62zm464 112c0-8.188-3.125-16.38-9.375-22.63l-112-112C512.4 115.1 504.2 111.1 496 111.1c-17.05 0-32 13.73-32 32 0 8.188 3.125 16.38 9.375 22.63l89.38 89.38-89.38 89.38C467.1 351.6 464 359.8 464 367.1c0 18.28 14.95 32 32 32 8.188 0 16.38-3.125 22.62-9.376l112-112C636.9 272.4 640 264.2 640 255.1z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 640 512'%3E%3Cpath d='M416 31.94C416 21.75 408.1 0 384.1 0c-13.98 0-26.87 9.072-30.89 23.18l-128 448a31.933 31.933 0 0 0-1.241 8.801C223.1 490.3 232 512 256 512c13.92 0 26.73-9.157 30.75-23.22l128-448c.85-2.97 1.25-5.93 1.25-8.84zM176 143.1c0-18.28-14.95-32-32-32-8.188 0-16.38 3.125-22.62 9.376l-112 112C3.125 239.6 0 247.8 0 255.1s3.125 17.3 9.375 23.5l112 112c6.225 6.3 14.425 8.5 22.625 8.5 17.05 0 32-13.73 32-32 0-8.188-3.125-16.38-9.375-22.63L77.25 255.1l89.38-89.38c6.27-5.42 9.37-13.52 9.37-22.62zm464 112c0-8.188-3.125-16.38-9.375-22.63l-112-112C512.4 115.1 504.2 111.1 496 111.1c-17.05 0-32 13.73-32 32 0 8.188 3.125 16.38 9.375 22.63l89.38 89.38-89.38 89.38C467.1 351.6 464 359.8 464 367.1c0 18.28 14.95 32 32 32 8.188 0 16.38-3.125 22.62-9.376l112-112C636.9 272.4 640 264.2 640 255.1z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .unordered-list:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M16 96c0-26.51 21.49-48 48-48s48 21.49 48 48c0 26.5-21.49 48-48 48s-48-21.5-48-48zm464-32c17.7 0 32 14.33 32 32 0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32 0-17.67 14.3-32 32-32h288zm0 160c17.7 0 32 14.3 32 32s-14.3 32-32 32H192c-17.7 0-32-14.3-32-32s14.3-32 32-32h288zm0 160c17.7 0 32 14.3 32 32s-14.3 32-32 32H192c-17.7 0-32-14.3-32-32s14.3-32 32-32h288zM16 416c0-26.5 21.49-48 48-48s48 21.5 48 48-21.49 48-48 48-48-21.5-48-48zm96-160c0 26.5-21.49 48-48 48s-48-21.5-48-48 21.49-48 48-48 48 21.5 48 48z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M16 96c0-26.51 21.49-48 48-48s48 21.49 48 48c0 26.5-21.49 48-48 48s-48-21.5-48-48zm464-32c17.7 0 32 14.33 32 32 0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32 0-17.67 14.3-32 32-32h288zm0 160c17.7 0 32 14.3 32 32s-14.3 32-32 32H192c-17.7 0-32-14.3-32-32s14.3-32 32-32h288zm0 160c17.7 0 32 14.3 32 32s-14.3 32-32 32H192c-17.7 0-32-14.3-32-32s14.3-32 32-32h288zM16 416c0-26.5 21.49-48 48-48s48 21.5 48 48-21.49 48-48 48-48-21.5-48-48zm96-160c0 26.5-21.49 48-48 48s-48-21.5-48-48 21.49-48 48-48 48 21.5 48 48z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .ordered-list:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M55.1 56.04c0-13.26 11.64-24 24-24h32c14.2 0 24 10.74 24 24V176h16c14.2 0 24 10.8 24 24 0 13.3-9.8 24-24 24h-80c-12.36 0-24-10.7-24-24 0-13.2 11.64-24 24-24h16V80.04h-8c-12.36 0-24-10.75-24-24zm63.6 285.16c-6.6-7.4-18.3-6.9-24.05 1.2l-11.12 15.5c-7.7 10.8-22.69 13.3-33.48 5.6-10.79-7.7-13.28-22.7-5.58-33.4l11.12-15.6c23.74-33.3 72.31-35.7 99.21-4.9 21.3 23.5 20.8 60.9-1.1 84.7L118.8 432H152c13.3 0 24 10.7 24 24s-10.7 24-24 24H64c-9.53 0-18.16-5.6-21.98-14.4-3.83-8.7-2.12-18.9 4.34-25.9l72.04-78c5.3-5.8 5.4-14.6.3-20.5zM512 64c17.7 0 32 14.33 32 32 0 17.7-14.3 32-32 32H256c-17.7 0-32-14.3-32-32 0-17.67 14.3-32 32-32h256zm0 160c17.7 0 32 14.3 32 32s-14.3 32-32 32H256c-17.7 0-32-14.3-32-32s14.3-32 32-32h256zm0 160c17.7 0 32 14.3 32 32s-14.3 32-32 32H256c-17.7 0-32-14.3-32-32s14.3-32 32-32h256z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M55.1 56.04c0-13.26 11.64-24 24-24h32c14.2 0 24 10.74 24 24V176h16c14.2 0 24 10.8 24 24 0 13.3-9.8 24-24 24h-80c-12.36 0-24-10.7-24-24 0-13.2 11.64-24 24-24h16V80.04h-8c-12.36 0-24-10.75-24-24zm63.6 285.16c-6.6-7.4-18.3-6.9-24.05 1.2l-11.12 15.5c-7.7 10.8-22.69 13.3-33.48 5.6-10.79-7.7-13.28-22.7-5.58-33.4l11.12-15.6c23.74-33.3 72.31-35.7 99.21-4.9 21.3 23.5 20.8 60.9-1.1 84.7L118.8 432H152c13.3 0 24 10.7 24 24s-10.7 24-24 24H64c-9.53 0-18.16-5.6-21.98-14.4-3.83-8.7-2.12-18.9 4.34-25.9l72.04-78c5.3-5.8 5.4-14.6.3-20.5zM512 64c17.7 0 32 14.33 32 32 0 17.7-14.3 32-32 32H256c-17.7 0-32-14.3-32-32 0-17.67 14.3-32 32-32h256zm0 160c17.7 0 32 14.3 32 32s-14.3 32-32 32H256c-17.7 0-32-14.3-32-32s14.3-32 32-32h256zm0 160c17.7 0 32 14.3 32 32s-14.3 32-32 32H256c-17.7 0-32-14.3-32-32s14.3-32 32-32h256z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .table:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1792 1792'%3E%3Cpath d='M576 1376v-192q0-14-9-23t-23-9H224q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm0-384V800q0-14-9-23t-23-9H224q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm512 384v-192q0-14-9-23t-23-9H736q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zM576 608V416q0-14-9-23t-23-9H224q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm512 384V800q0-14-9-23t-23-9H736q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm512 384v-192q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm-512-768V416q0-14-9-23t-23-9H736q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm512 384V800q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm0-384V416q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm128-320v1088q0 66-47 113t-113 47H224q-66 0-113-47t-47-113V288q0-66 47-113t113-47h1344q66 0 113 47t47 113z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1792 1792'%3E%3Cpath d='M576 1376v-192q0-14-9-23t-23-9H224q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm0-384V800q0-14-9-23t-23-9H224q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm512 384v-192q0-14-9-23t-23-9H736q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zM576 608V416q0-14-9-23t-23-9H224q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm512 384V800q0-14-9-23t-23-9H736q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm512 384v-192q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm-512-768V416q0-14-9-23t-23-9H736q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm512 384V800q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm0-384V416q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm128-320v1088q0 66-47 113t-113 47H224q-66 0-113-47t-47-113V288q0-66 47-113t113-47h1344q66 0 113 47t47 113z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .upload-image:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M447.1 32h-484C28.64 32-.01 60.65-.01 96v320c0 35.35 28.65 64 63.1 64h384c35.35 0 64-28.65 64-64V96c.01-35.35-27.79-64-63.99-64zm-336 64c26.51 0 48 21.49 48 48s-20.6 48-48 48-48-21.49-48-48 22.38-48 48-48zm335 311.6c-2.8 5.2-8.2 8.4-14.1 8.4H82.01a15.993 15.993 0 0 1-14.26-8.75 16 16 0 0 1 1.334-16.68l70-96C142.1 290.4 146.9 288 152 288s9.916 2.441 12.93 6.574l32.46 44.51 93.3-139.1C293.7 194.7 298.7 192 304 192s10.35 2.672 13.31 7.125l128 192c3.29 4.875 3.59 11.175.79 16.475z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M447.1 32h-484C28.64 32-.01 60.65-.01 96v320c0 35.35 28.65 64 63.1 64h384c35.35 0 64-28.65 64-64V96c.01-35.35-27.79-64-63.99-64zm-336 64c26.51 0 48 21.49 48 48s-20.6 48-48 48-48-21.49-48-48 22.38-48 48-48zm335 311.6c-2.8 5.2-8.2 8.4-14.1 8.4H82.01a15.993 15.993 0 0 1-14.26-8.75 16 16 0 0 1 1.334-16.68l70-96C142.1 290.4 146.9 288 152 288s9.916 2.441 12.93 6.574l32.46 44.51 93.3-139.1C293.7 194.7 298.7 192 304 192s10.35 2.672 13.31 7.125l128 192c3.29 4.875 3.59 11.175.79 16.475z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .undo:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M480 256c0 123.4-100.5 223.9-223.9 223.9-48.84 0-95.17-15.58-134.2-44.86-14.12-10.59-16.97-30.66-6.375-44.81 10.59-14.12 30.62-16.94 44.81-6.375 27.84 20.91 61 31.94 95.88 31.94C344.3 415.8 416 344.1 416 256S344.31 96.2 256.2 96.2c-37.46 0-73.09 13.49-101.3 36.64l45.12 45.14c17.01 17.02 4.955 46.1-19.1 46.1H35.17C24.58 224.1 16 215.5 16 204.9V59.04C16 35 45.07 22.96 62.07 39.97l47.6 47.63C149.9 52.71 201.5 32.11 256.1 32.11 379.5 32.11 480 132.6 480 256z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M480 256c0 123.4-100.5 223.9-223.9 223.9-48.84 0-95.17-15.58-134.2-44.86-14.12-10.59-16.97-30.66-6.375-44.81 10.59-14.12 30.62-16.94 44.81-6.375 27.84 20.91 61 31.94 95.88 31.94C344.3 415.8 416 344.1 416 256S344.31 96.2 256.2 96.2c-37.46 0-73.09 13.49-101.3 36.64l45.12 45.14c17.01 17.02 4.955 46.1-19.1 46.1H35.17C24.58 224.1 16 215.5 16 204.9V59.04C16 35 45.07 22.96 62.07 39.97l47.6 47.63C149.9 52.71 201.5 32.11 256.1 32.11 379.5 32.11 480 132.6 480 256z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .redo:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M468.9 32.11c13.87 0 27.18 10.77 27.18 27.04v145.9c0 10.59-8.584 19.17-19.17 19.17h-145.7c-16.28 0-27.06-13.32-27.06-27.2 0-6.634 2.461-13.4 7.96-18.9l45.12-45.14c-28.22-23.14-63.85-36.64-101.3-36.64-88.09 0-159.8 71.69-159.8 159.8S167.8 415.9 255.9 415.9c73.14 0 89.44-38.31 115.1-38.31 18.48 0 31.97 15.04 31.97 31.96 0 35.04-81.59 70.41-147 70.41-123.4 0-223.9-100.5-223.9-223.9S132.6 32.44 256 32.44c54.6 0 106.2 20.39 146.4 55.26L450 40.07c5.5-5.5 12.3-7.96 18.9-7.96z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M468.9 32.11c13.87 0 27.18 10.77 27.18 27.04v145.9c0 10.59-8.584 19.17-19.17 19.17h-145.7c-16.28 0-27.06-13.32-27.06-27.2 0-6.634 2.461-13.4 7.96-18.9l45.12-45.14c-28.22-23.14-63.85-36.64-101.3-36.64-88.09 0-159.8 71.69-159.8 159.8S167.8 415.9 255.9 415.9c73.14 0 89.44-38.31 115.1-38.31 18.48 0 31.97 15.04 31.97 31.96 0 35.04-81.59 70.41-147 70.41-123.4 0-223.9-100.5-223.9-223.9S132.6 32.44 256 32.44c54.6 0 106.2 20.39 146.4 55.26L450 40.07c5.5-5.5 12.3-7.96 18.9-7.96z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-statusbar{display:none}.fi-fo-rich-editor trix-toolbar .trix-dialogs{position:relative}.fi-fo-rich-editor trix-toolbar .trix-dialog{--tw-bg-opacity:1;--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color);background-color:rgba(var(--gray-50),var(--tw-bg-opacity));border-radius:.5rem;bottom:auto;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);left:0;padding:.5rem;position:absolute;right:0;top:1rem}:is(:where(.dark) .fi-fo-rich-editor trix-toolbar .trix-dialog){--tw-bg-opacity:1;background-color:rgba(var(--gray-800),var(--tw-bg-opacity))}.fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields{display:flex;flex-direction:column;gap:.5rem;width:100%}.fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-button-group{display:flex;gap:.5rem}.fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-input{--tw-bg-opacity:1;--tw-text-opacity:1;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-color:rgba(var(--gray-950),0.1);background-color:rgb(255 255 255/var(--tw-bg-opacity));border-radius:.375rem;border-style:none;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);color:rgba(var(--gray-950),var(--tw-text-opacity));display:block;font-size:.875rem;line-height:1.25rem;outline:2px solid transparent;outline-offset:2px;padding-bottom:.375rem;padding-inline-end:.75rem;padding-top:.375rem;padding-inline-start:.75rem;transition-duration:75ms;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);width:100%}.fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-input::-moz-placeholder{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-input::placeholder{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-input:focus-within{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-600),var(--tw-ring-opacity))}@media (min-width:640px){.fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-input{font-size:.875rem;line-height:1.5rem}}:is(:where(.dark) .fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-input){--tw-bg-opacity:1;--tw-text-opacity:1;--tw-ring-color:hsla(0,0%,100%,.2);background-color:rgba(var(--gray-700),var(--tw-bg-opacity));color:rgb(255 255 255/var(--tw-text-opacity))}:is(:where(.dark) .fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-input)::-moz-placeholder{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}:is(:where(.dark) .fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-input)::placeholder{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}:is(:where(.dark) .fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-input:focus-within){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-600),var(--tw-ring-opacity))}.fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-button-group .trix-button{--tw-bg-opacity:1;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgba(var(--gray-200),var(--tw-ring-opacity));background-color:rgba(var(--gray-50),var(--tw-bg-opacity));border-radius:.375rem;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);font-size:.75rem;line-height:1rem;padding:.125rem .5rem}:is(:where(.dark) .fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-button-group .trix-button){--tw-bg-opacity:1;--tw-ring-opacity:1;--tw-ring-color:rgba(var(--gray-600),var(--tw-ring-opacity));background-color:rgba(var(--gray-700),var(--tw-bg-opacity))}.fi-fo-rich-editor trix-editor:empty:before{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}:is(:where(.dark) .fi-fo-rich-editor trix-editor:empty):before{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.fi-fo-rich-editor trix-editor:empty:before{content:attr(placeholder)}.fi-fo-rich-editor trix-editor.prose :where(ol):not(:where([class~=not-prose] *)),.fi-fo-rich-editor trix-editor.prose :where(ul):not(:where([class~=not-prose] *)){padding-inline-end:0!important;padding-inline-start:1.625em!important}.fi-fo-rich-editor trix-editor.prose :where(ul>li):not(:where([class~=not-prose] *)){padding-inline-end:0!important;padding-inline-start:.375em!important}select:not(.choices){background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3E%3Cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3E%3C/svg%3E")}[dir=rtl] select{background-position:left .5rem center!important}.choices{outline:2px solid transparent;outline-offset:2px;position:relative}.choices [hidden]{display:none!important}.choices[data-type*=select-one] .has-no-choices{display:none}.choices[data-type*=select-one] .choices__input{display:block;margin:0;width:100%}.choices__inner{background-repeat:no-repeat;outline:2px solid transparent;outline-offset:2px;padding-bottom:.375rem;padding-inline-end:2rem;padding-top:.375rem;padding-inline-start:.75rem}@media (min-width:640px){.choices__inner{font-size:.875rem;line-height:1.5rem}}.choices__inner{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3E%3Cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3E%3C/svg%3E");background-position:right .5rem center;background-size:1.5em 1.5em}.choices.is-disabled .choices__inner{cursor:default}[dir=rtl] .choices__inner{background-position:left .5rem center}.choices__list--single{display:inline-block}.choices__list--single .choices__item{--tw-text-opacity:1;color:rgba(var(--gray-950),var(--tw-text-opacity))}:is(:where(.dark) .choices__list--single .choices__item){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.choices.is-disabled .choices__list--single .choices__item{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}:is(:where(.dark) .choices.is-disabled .choices__list--single .choices__item){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.choices__list--multiple{display:flex;flex-wrap:wrap;gap:.375rem}.choices__list--multiple:not(:empty){margin-bottom:.25rem;margin-left:-.25rem;margin-right:-.25rem;padding-bottom:.125rem;padding-top:.125rem}.choices__list--multiple .choices__item{--tw-bg-opacity:1;--tw-text-opacity:1;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-inset:inset;--tw-ring-color:rgba(var(--primary-600),0.1);align-items:center;background-color:rgba(var(--primary-50),var(--tw-bg-opacity));border-radius:.375rem;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);color:rgba(var(--primary-600),var(--tw-text-opacity));display:inline-flex;font-size:.75rem;font-weight:500;gap:.25rem;line-height:1rem;padding:.25rem .5rem;word-break:break-all}:is(:where(.dark) .choices__list--multiple .choices__item){--tw-text-opacity:1;--tw-ring-color:rgba(var(--primary-400),0.3);background-color:rgba(var(--primary-400),.1);color:rgba(var(--primary-400),var(--tw-text-opacity))}.choices__list--dropdown,.choices__list[aria-expanded]{--tw-bg-opacity:1;--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color);--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-color:rgba(var(--gray-950),0.05);background-color:rgb(255 255 255/var(--tw-bg-opacity));border-radius:.5rem;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);display:none;font-size:.875rem;line-height:1.25rem;margin-top:.5rem;overflow:hidden;overflow-wrap:break-word;position:absolute;top:100%;width:100%;will-change:visibility;z-index:10}:is(:where(.dark) .choices__list--dropdown),:is(:where(.dark) .choices__list[aria-expanded]){--tw-bg-opacity:1;--tw-ring-color:hsla(0,0%,100%,.1);background-color:rgba(var(--gray-900),var(--tw-bg-opacity))}.is-active.choices__list--dropdown,.is-active.choices__list[aria-expanded]{display:block;padding:.25rem}.choices__list--dropdown .choices__list,.choices__list[aria-expanded] .choices__list{max-height:15rem;overflow:auto;will-change:scroll-position}.choices__item--choice{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity));padding:.5rem;transition-duration:75ms;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}:is(:where(.dark) .choices__item--choice){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.choices__item--choice.choices__item--selectable{--tw-text-opacity:1;border-radius:.375rem;color:rgba(var(--gray-950),var(--tw-text-opacity))}:is(:where(.dark) .choices__item--choice.choices__item--selectable){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.choices__list--dropdown .choices__item--selectable.is-highlighted,.choices__list[aria-expanded] .choices__item--selectable.is-highlighted{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}:is(:where(.dark) .choices__list--dropdown .choices__item--selectable.is-highlighted),:is(:where(.dark) .choices__list[aria-expanded] .choices__item--selectable.is-highlighted){background-color:hsla(0,0%,100%,.05)}.choices__item{cursor:default}.choices__item--disabled{pointer-events:none}.choices__item--disabled:disabled{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}:is(:where(.dark) .choices__item--disabled:disabled){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.choices.is-disabled .choices__placeholder.choices__item,.choices__placeholder.choices__item{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity));cursor:default}:is(:where(.dark) .choices.is-disabled .choices__placeholder.choices__item),:is(:where(.dark) .choices__placeholder.choices__item){--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.choices__button{background-color:transparent;background-position:50%;background-repeat:no-repeat;border-width:0;outline:2px solid transparent;outline-offset:2px;text-indent:-9999px}.choices[data-type*=select-one] .choices__button{height:1rem;inset-inline-end:0;margin-inline-end:2.25rem;opacity:.5;padding:0;position:absolute;transition-duration:75ms;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);width:1rem}:is(:where(.dark) .choices[data-type*=select-one] .choices__button){opacity:.4}.choices[data-type*=select-one] .choices__button{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJtMi41OTIuMDQ0IDE4LjM2NCAxOC4zNjQtMi41NDggMi41NDhMLjA0NCAyLjU5MnoiLz48cGF0aCBkPSJNMCAxOC4zNjQgMTguMzY0IDBsMi41NDggMi41NDhMMi41NDggMjAuOTEyeiIvPjwvZz48L3N2Zz4=);background-size:.7142em .7142em;top:calc(50% - .5714em)}.dark .choices[data-type*=select-one] .choices__button{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJtMi41OTIuMDQ0IDE4LjM2NCAxOC4zNjQtMi41NDggMi41NDhMLjA0NCAyLjU5MnoiLz48cGF0aCBkPSJNMCAxOC4zNjQgMTguMzY0IDBsMi41NDggMi41NDhMMi41NDggMjAuOTEyeiIvPjwvZz48L3N2Zz4=)}.choices[data-type*=select-multiple] .choices__button{height:1rem;opacity:.5;width:1rem}:is(:where(.dark) .choices[data-type*=select-multiple] .choices__button){opacity:.4}.choices[data-type*=select-multiple] .choices__button{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJtMi41OTIuMDQ0IDE4LjM2NCAxOC4zNjQtMi41NDggMi41NDhMLjA0NCAyLjU5MnoiLz48cGF0aCBkPSJNMCAxOC4zNjQgMTguMzY0IDBsMi41NDggMi41NDhMMi41NDggMjAuOTEyeiIvPjwvZz48L3N2Zz4=);background-size:.7142em .7142em}.dark .choices[data-type*=select-multiple] .choices__button{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJtMi41OTIuMDQ0IDE4LjM2NCAxOC4zNjQtMi41NDggMi41NDhMLjA0NCAyLjU5MnoiLz48cGF0aCBkPSJNMCAxOC4zNjQgMTguMzY0IDBsMi41NDggMi41NDhMMi41NDggMjAuOTEyeiIvPjwvZz48L3N2Zz4=)}.choices[data-type*=select-multiple] .choices__button:focus-visible,.choices[data-type*=select-multiple] .choices__button:hover,.choices[data-type*=select-one] .choices__button:focus-visible,.choices[data-type*=select-one] .choices__button:hover{opacity:.7}:is(:where(.dark) .choices[data-type*=select-multiple] .choices__button:focus-visible),:is(:where(.dark) .choices[data-type*=select-multiple] .choices__button:hover),:is(:where(.dark) .choices[data-type*=select-one] .choices__button:focus-visible),:is(:where(.dark) .choices[data-type*=select-one] .choices__button:hover){opacity:.6}.choices.is-disabled .choices__button,.choices[data-type*=select-one] .choices__item[data-value=""] .choices__button{display:none}.choices__input{--tw-text-opacity:1;background-color:transparent!important;border-style:none;color:rgba(var(--gray-950),var(--tw-text-opacity));font-size:1rem!important;line-height:1.5rem!important;padding:0!important;transition-duration:75ms;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.choices__input::-moz-placeholder{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.choices__input::placeholder{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.choices__input:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)!important;--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color)!important;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)!important}.choices__input:disabled{--tw-text-opacity:1;-webkit-text-fill-color:rgba(var(--gray-500),1);color:rgba(var(--gray-500),var(--tw-text-opacity))}@media (min-width:640px){.choices__input{font-size:.875rem!important;line-height:1.5rem}}:is(:where(.dark) .choices__input){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}:is(:where(.dark) .choices__input)::-moz-placeholder{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}:is(:where(.dark) .choices__input)::placeholder{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}:is(:where(.dark) .choices__input:disabled){--tw-text-opacity:1;-webkit-text-fill-color:rgba(var(--gray-400),1);color:rgba(var(--gray-400),var(--tw-text-opacity))}.choices__list--dropdown .choices__input{padding:.5rem!important}.choices__input::-webkit-search-cancel-button,.choices__input::-webkit-search-decoration,.choices__input::-webkit-search-results-button,.choices__input::-webkit-search-results-decoration{display:none}.choices__input::-ms-clear,.choices__input::-ms-reveal{display:none;height:0;width:0}.choices__group{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity));padding:1rem .5rem .5rem}.choices__group:first-child{padding-top:.5rem}:is(:where(.dark) .choices__group){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.webkit-calendar-picker-indicator\:opacity-0::-webkit-calendar-picker-indicator{opacity:0}/*! Bundled license information: +input::-webkit-datetime-edit{display:block;padding:0}.cropper-container{direction:ltr;font-size:0;line-height:0;position:relative;touch-action:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.cropper-container img{backface-visibility:hidden;display:block;height:100%;image-orientation:0deg;max-height:none!important;max-width:none!important;min-height:0!important;min-width:0!important;width:100%}.cropper-canvas,.cropper-crop-box,.cropper-drag-box,.cropper-modal,.cropper-wrap-box{inset:0;position:absolute}.cropper-canvas,.cropper-wrap-box{overflow:hidden}.cropper-drag-box{background-color:#fff;opacity:0}.cropper-modal{background-color:#000;opacity:.5}.cropper-view-box{display:block;height:100%;outline:1px solid #39f;outline-color:#3399ffbf;overflow:hidden;width:100%}.cropper-dashed{border:0 dashed #eee;display:block;opacity:.5;position:absolute}.cropper-dashed.dashed-h{border-bottom-width:1px;border-top-width:1px;height:33.33333%;left:0;top:33.33333%;width:100%}.cropper-dashed.dashed-v{border-left-width:1px;border-right-width:1px;height:100%;left:33.33333%;top:0;width:33.33333%}.cropper-center{display:block;height:0;left:50%;opacity:.75;position:absolute;top:50%;width:0}.cropper-center:after,.cropper-center:before{background-color:#eee;content:" ";display:block;position:absolute}.cropper-center:before{height:1px;left:-3px;top:0;width:7px}.cropper-center:after{height:7px;left:0;top:-3px;width:1px}.cropper-face,.cropper-line,.cropper-point{display:block;height:100%;opacity:.1;position:absolute;width:100%}.cropper-face{background-color:#fff;left:0;top:0}.cropper-line{background-color:#39f}.cropper-line.line-e{cursor:ew-resize;right:-3px;top:0;width:5px}.cropper-line.line-n{cursor:ns-resize;height:5px;left:0;top:-3px}.cropper-line.line-w{cursor:ew-resize;left:-3px;top:0;width:5px}.cropper-line.line-s{bottom:-3px;cursor:ns-resize;height:5px;left:0}.cropper-point{background-color:#39f;height:5px;opacity:.75;width:5px}.cropper-point.point-e{cursor:ew-resize;margin-top:-3px;right:-3px;top:50%}.cropper-point.point-n{cursor:ns-resize;left:50%;margin-left:-3px;top:-3px}.cropper-point.point-w{cursor:ew-resize;left:-3px;margin-top:-3px;top:50%}.cropper-point.point-s{bottom:-3px;cursor:s-resize;left:50%;margin-left:-3px}.cropper-point.point-ne{cursor:nesw-resize;right:-3px;top:-3px}.cropper-point.point-nw{cursor:nwse-resize;left:-3px;top:-3px}.cropper-point.point-sw{bottom:-3px;cursor:nesw-resize;left:-3px}.cropper-point.point-se{bottom:-3px;cursor:nwse-resize;height:20px;opacity:1;right:-3px;width:20px}@media (min-width:768px){.cropper-point.point-se{height:15px;width:15px}}@media (min-width:992px){.cropper-point.point-se{height:10px;width:10px}}@media (min-width:1200px){.cropper-point.point-se{height:5px;opacity:.75;width:5px}}.cropper-point.point-se:before{background-color:#39f;bottom:-50%;content:" ";display:block;height:200%;opacity:0;position:absolute;right:-50%;width:200%}.cropper-invisible{opacity:0}.cropper-bg{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAAA3NCSVQICAjb4U/gAAAABlBMVEXMzMz////TjRV2AAAACXBIWXMAAArrAAAK6wGCiw1aAAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M26LyyjAAAABFJREFUCJlj+M/AgBVhF/0PAH6/D/HkDxOGAAAAAElFTkSuQmCC)}.cropper-hide{display:block;height:0;position:absolute;width:0}.cropper-hidden{display:none!important}.cropper-move{cursor:move}.cropper-crop{cursor:crosshair}.cropper-disabled .cropper-drag-box,.cropper-disabled .cropper-face,.cropper-disabled .cropper-line,.cropper-disabled .cropper-point{cursor:not-allowed}.filepond--assistant{clip:rect(1px,1px,1px,1px);border:0;-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.filepond--browser.filepond--browser{font-size:0;left:1em;margin:0;opacity:0;padding:0;position:absolute;top:1.75em;width:calc(100% - 2em)}.filepond--data{border:none;contain:strict;height:0;margin:0;padding:0;visibility:hidden;width:0}.filepond--data,.filepond--drip{pointer-events:none;position:absolute}.filepond--drip{background:rgba(0,0,0,.01);border-radius:.5em;inset:0;opacity:.1;overflow:hidden}.filepond--drip-blob{background:#292625;border-radius:50%;height:8em;margin-left:-4em;margin-top:-4em;transform-origin:center center;width:8em}.filepond--drip-blob,.filepond--drop-label{left:0;position:absolute;top:0;will-change:transform,opacity}.filepond--drop-label{align-items:center;color:#4f4f4f;display:flex;height:0;justify-content:center;margin:0;right:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.filepond--drop-label.filepond--drop-label label{display:block;margin:0;padding:.5em}.filepond--drop-label label{cursor:default;font-size:.875em;font-weight:400;line-height:1.5;text-align:center}.filepond--label-action{-webkit-text-decoration-skip:ink;cursor:pointer;text-decoration:underline;text-decoration-color:#a7a4a4;text-decoration-skip-ink:auto}.filepond--root[data-disabled] .filepond--drop-label label{opacity:.5}.filepond--file-action-button.filepond--file-action-button{border:none;font-family:inherit;font-size:1em;height:1.625em;line-height:inherit;margin:0;outline:none;padding:0;width:1.625em;will-change:transform,opacity}.filepond--file-action-button.filepond--file-action-button span{clip:rect(1px,1px,1px,1px);border:0;-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.filepond--file-action-button.filepond--file-action-button svg{height:100%;width:100%}.filepond--file-action-button.filepond--file-action-button:after{content:"";inset:-.75em;position:absolute}.filepond--file-action-button{background-color:#00000080;background-image:none;border-radius:50%;box-shadow:0 0 #fff0;color:#fff;cursor:auto;transition:box-shadow .25s ease-in}.filepond--file-action-button:focus,.filepond--file-action-button:hover{box-shadow:0 0 0 .125em #ffffffe6}.filepond--file-action-button[disabled]{background-color:#00000040;color:#ffffff80}.filepond--file-action-button[hidden]{display:none}.filepond--file-info{align-items:flex-start;display:flex;flex:1;flex-direction:column;margin:0 .5em 0 0;min-width:0;pointer-events:none;position:static;-webkit-user-select:none;-moz-user-select:none;user-select:none;will-change:transform,opacity}.filepond--file-info *{margin:0}.filepond--file-info .filepond--file-info-main{font-size:.75em;line-height:1.2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%}.filepond--file-info .filepond--file-info-sub{font-size:.625em;opacity:.5;transition:opacity .25s ease-in-out;white-space:nowrap}.filepond--file-info .filepond--file-info-sub:empty{display:none}.filepond--file-status{align-items:flex-end;display:flex;flex-direction:column;flex-grow:0;flex-shrink:0;margin:0;min-width:2.25em;pointer-events:none;position:static;text-align:right;-webkit-user-select:none;-moz-user-select:none;user-select:none;will-change:transform,opacity}.filepond--file-status *{margin:0;white-space:nowrap}.filepond--file-status .filepond--file-status-main{font-size:.75em;line-height:1.2}.filepond--file-status .filepond--file-status-sub{font-size:.625em;opacity:.5;transition:opacity .25s ease-in-out}.filepond--file-wrapper.filepond--file-wrapper{border:none;height:100%;margin:0;min-width:0;padding:0}.filepond--file-wrapper.filepond--file-wrapper>legend{clip:rect(1px,1px,1px,1px);border:0;-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.filepond--file{align-items:flex-start;border-radius:.5em;color:#fff;display:flex;height:100%;padding:.5625em;position:static}.filepond--file .filepond--file-status{margin-left:auto;margin-right:2.25em}.filepond--file .filepond--processing-complete-indicator{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;z-index:3}.filepond--file .filepond--file-action-button,.filepond--file .filepond--processing-complete-indicator,.filepond--file .filepond--progress-indicator{position:absolute}.filepond--file [data-align*=left]{left:.5625em}.filepond--file [data-align*=right]{right:.5625em}.filepond--file [data-align*=center]{left:calc(50% - .8125em)}.filepond--file [data-align*=bottom]{bottom:1.125em}.filepond--file [data-align=center]{top:calc(50% - .8125em)}.filepond--file .filepond--progress-indicator{margin-top:.1875em}.filepond--file .filepond--progress-indicator[data-align*=right]{margin-right:.1875em}.filepond--file .filepond--progress-indicator[data-align*=left]{margin-left:.1875em}[data-filepond-item-state*=error] .filepond--file-info,[data-filepond-item-state*=invalid] .filepond--file-info,[data-filepond-item-state=cancelled] .filepond--file-info{margin-right:2.25em}[data-filepond-item-state~=processing] .filepond--file-status-sub{opacity:0}[data-filepond-item-state~=processing] .filepond--action-abort-item-processing~.filepond--file-status .filepond--file-status-sub{opacity:.5}[data-filepond-item-state=processing-error] .filepond--file-status-sub{opacity:0}[data-filepond-item-state=processing-error] .filepond--action-retry-item-processing~.filepond--file-status .filepond--file-status-sub{opacity:.5}[data-filepond-item-state=processing-complete] .filepond--action-revert-item-processing svg{animation:fall .5s linear .125s both}[data-filepond-item-state=processing-complete] .filepond--file-status-sub{opacity:.5}[data-filepond-item-state=processing-complete] .filepond--file-info-sub,[data-filepond-item-state=processing-complete] .filepond--processing-complete-indicator:not([style*=hidden])~.filepond--file-status .filepond--file-status-sub{opacity:0}[data-filepond-item-state=processing-complete] .filepond--action-revert-item-processing~.filepond--file-info .filepond--file-info-sub{opacity:.5}[data-filepond-item-state*=error] .filepond--file-wrapper,[data-filepond-item-state*=error] .filepond--panel,[data-filepond-item-state*=invalid] .filepond--file-wrapper,[data-filepond-item-state*=invalid] .filepond--panel{animation:shake .65s linear both}[data-filepond-item-state*=busy] .filepond--progress-indicator svg{animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}@keyframes shake{10%,90%{transform:translate(-.0625em)}20%,80%{transform:translate(.125em)}30%,50%,70%{transform:translate(-.25em)}40%,60%{transform:translate(.25em)}}@keyframes fall{0%{animation-timing-function:ease-out;opacity:0;transform:scale(.5)}70%{animation-timing-function:ease-in-out;opacity:1;transform:scale(1.1)}to{animation-timing-function:ease-out;transform:scale(1)}}.filepond--hopper[data-hopper-state=drag-over]>*{pointer-events:none}.filepond--hopper[data-hopper-state=drag-over]:after{content:"";inset:0;position:absolute;z-index:100}.filepond--progress-indicator{z-index:103}.filepond--file-action-button{z-index:102}.filepond--file-status{z-index:101}.filepond--file-info{z-index:100}.filepond--item{left:0;margin:.25em;padding:0;position:absolute;right:0;top:0;will-change:transform,opacity;z-index:1}.filepond--item>.filepond--panel{z-index:-1}.filepond--item>.filepond--panel .filepond--panel-bottom{box-shadow:0 .0625em .125em -.0625em #00000040}.filepond--item>.filepond--file-wrapper,.filepond--item>.filepond--panel{transition:opacity .15s ease-out}.filepond--item[data-drag-state]{cursor:grab}.filepond--item[data-drag-state]>.filepond--panel{box-shadow:0 0 0 transparent;transition:box-shadow .125s ease-in-out}.filepond--item[data-drag-state=drag]{cursor:grabbing}.filepond--item[data-drag-state=drag]>.filepond--panel{box-shadow:0 .125em .3125em #00000053}.filepond--item[data-drag-state]:not([data-drag-state=idle]){z-index:2}.filepond--item-panel{background-color:#64605e}[data-filepond-item-state=processing-complete] .filepond--item-panel{background-color:#369763}[data-filepond-item-state*=error] .filepond--item-panel,[data-filepond-item-state*=invalid] .filepond--item-panel{background-color:#c44e47}.filepond--item-panel{border-radius:.5em;transition:background-color .25s}.filepond--list-scroller{left:0;margin:0;position:absolute;right:0;top:0;will-change:transform}.filepond--list-scroller[data-state=overflow] .filepond--list{bottom:0;right:0}.filepond--list-scroller[data-state=overflow]{-webkit-overflow-scrolling:touch;-webkit-mask:linear-gradient(180deg,#000 calc(100% - .5em),transparent);mask:linear-gradient(180deg,#000 calc(100% - .5em),transparent);overflow-x:hidden;overflow-y:scroll}.filepond--list-scroller::-webkit-scrollbar{background:transparent}.filepond--list-scroller::-webkit-scrollbar:vertical{width:1em}.filepond--list-scroller::-webkit-scrollbar:horizontal{height:0}.filepond--list-scroller::-webkit-scrollbar-thumb{background-clip:content-box;background-color:#0000004d;border:.3125em solid transparent;border-radius:99999px}.filepond--list.filepond--list{list-style-type:none;margin:0;padding:0;position:absolute;top:0;will-change:transform}.filepond--list{left:.75em;right:.75em}.filepond--root[data-style-panel-layout~=integrated]{height:100%;margin:0;max-width:none;width:100%}.filepond--root[data-style-panel-layout~=circle] .filepond--panel-root,.filepond--root[data-style-panel-layout~=integrated] .filepond--panel-root{border-radius:0}.filepond--root[data-style-panel-layout~=circle] .filepond--panel-root>*,.filepond--root[data-style-panel-layout~=integrated] .filepond--panel-root>*{display:none}.filepond--root[data-style-panel-layout~=circle] .filepond--drop-label,.filepond--root[data-style-panel-layout~=integrated] .filepond--drop-label{align-items:center;bottom:0;display:flex;height:auto;justify-content:center;z-index:7}.filepond--root[data-style-panel-layout~=circle] .filepond--item-panel,.filepond--root[data-style-panel-layout~=integrated] .filepond--item-panel{display:none}.filepond--root[data-style-panel-layout~=compact] .filepond--list-scroller,.filepond--root[data-style-panel-layout~=integrated] .filepond--list-scroller{height:100%;margin-bottom:0;margin-top:0;overflow:hidden}.filepond--root[data-style-panel-layout~=compact] .filepond--list,.filepond--root[data-style-panel-layout~=integrated] .filepond--list{height:100%;left:0;right:0}.filepond--root[data-style-panel-layout~=compact] .filepond--item,.filepond--root[data-style-panel-layout~=integrated] .filepond--item{margin:0}.filepond--root[data-style-panel-layout~=compact] .filepond--file-wrapper,.filepond--root[data-style-panel-layout~=integrated] .filepond--file-wrapper{height:100%}.filepond--root[data-style-panel-layout~=compact] .filepond--drop-label,.filepond--root[data-style-panel-layout~=integrated] .filepond--drop-label{z-index:7}.filepond--root[data-style-panel-layout~=circle]{border-radius:99999rem;overflow:hidden}.filepond--root[data-style-panel-layout~=circle]>.filepond--panel{border-radius:inherit}.filepond--root[data-style-panel-layout~=circle] .filepond--file-info,.filepond--root[data-style-panel-layout~=circle] .filepond--file-status,.filepond--root[data-style-panel-layout~=circle]>.filepond--panel>*{display:none}@media not all and (-webkit-min-device-pixel-ratio:0),not all and (min-resolution:.001dpcm){@supports (-webkit-appearance:none) and (stroke-color:transparent){.filepond--root[data-style-panel-layout~=circle]{will-change:transform}}}.filepond--panel-root{background-color:#f1f0ef;border-radius:.5em}.filepond--panel{height:100%!important;left:0;margin:0;pointer-events:none;position:absolute;right:0;top:0}.filepond-panel:not([data-scalable=false]){height:auto!important}.filepond--panel[data-scalable=false]>div{display:none}.filepond--panel[data-scalable=true]{background-color:transparent!important;border:none!important;transform-style:preserve-3d}.filepond--panel-bottom,.filepond--panel-center,.filepond--panel-top{left:0;margin:0;padding:0;position:absolute;right:0;top:0}.filepond--panel-bottom,.filepond--panel-top{height:.5em}.filepond--panel-top{border-bottom:none!important;border-bottom-left-radius:0!important;border-bottom-right-radius:0!important}.filepond--panel-top:after{background-color:inherit;bottom:-1px;content:"";height:2px;left:0;position:absolute;right:0}.filepond--panel-bottom,.filepond--panel-center{backface-visibility:hidden;transform:translate3d(0,.5em,0);transform-origin:left top;will-change:transform}.filepond--panel-bottom{border-top:none!important;border-top-left-radius:0!important;border-top-right-radius:0!important}.filepond--panel-bottom:before{background-color:inherit;content:"";height:2px;left:0;position:absolute;right:0;top:-1px}.filepond--panel-center{border-bottom:none!important;border-radius:0!important;border-top:none!important;height:100px!important}.filepond--panel-center:not([style]){visibility:hidden}.filepond--progress-indicator{color:#fff;height:1.25em;margin:0;pointer-events:none;position:static;width:1.25em;will-change:transform,opacity}.filepond--progress-indicator svg{height:100%;transform-box:fill-box;vertical-align:top;width:100%}.filepond--progress-indicator path{fill:none;stroke:currentColor}.filepond--list-scroller{z-index:6}.filepond--drop-label{z-index:5}.filepond--drip{z-index:3}.filepond--root>.filepond--panel{z-index:2}.filepond--browser{z-index:1}.filepond--root{box-sizing:border-box;contain:layout style size;direction:ltr;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;font-size:1rem;font-weight:450;line-height:normal;margin-bottom:1em;position:relative;text-align:left;text-rendering:optimizeLegibility}.filepond--root *{box-sizing:inherit;line-height:inherit}.filepond--root :not(text){font-size:inherit}.filepond--root[data-disabled]{pointer-events:none}.filepond--root[data-disabled] .filepond--list-scroller{pointer-events:all}.filepond--root[data-disabled] .filepond--list{pointer-events:none}.filepond--root .filepond--drop-label{min-height:4.75em}.filepond--root .filepond--list-scroller{margin-bottom:1em;margin-top:1em}.filepond--root .filepond--credits{bottom:-14px;color:inherit;font-size:11px;line-height:.85;opacity:.175;position:absolute;right:0;text-decoration:none;z-index:3}.filepond--root .filepond--credits[style]{bottom:auto;margin-top:14px;top:0}.filepond--action-edit-item.filepond--action-edit-item{height:2em;padding:.1875em;width:2em}.filepond--action-edit-item.filepond--action-edit-item[data-align*=center]{margin-left:-.1875em}.filepond--action-edit-item.filepond--action-edit-item[data-align*=bottom]{margin-bottom:-.1875em}.filepond--action-edit-item-alt{background:transparent;border:none;color:inherit;font-family:inherit;line-height:inherit;margin:0 0 0 .25em;outline:none;padding:0;pointer-events:all;position:absolute}.filepond--action-edit-item-alt svg{height:1.3125em;width:1.3125em}.filepond--action-edit-item-alt span{font-size:0;opacity:0}.filepond--root[data-style-panel-layout~=circle] .filepond--action-edit-item{opacity:1!important;visibility:visible!important}.filepond--image-preview-markup{left:0;position:absolute;top:0}.filepond--image-preview-wrapper{z-index:2}.filepond--image-preview-overlay{display:block;left:0;margin:0;max-height:7rem;min-height:5rem;opacity:0;pointer-events:none;position:absolute;top:0;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:100%;z-index:2}.filepond--image-preview-overlay svg{color:inherit;height:auto;max-height:inherit;width:100%}.filepond--image-preview-overlay-idle{color:#282828d9;mix-blend-mode:multiply}.filepond--image-preview-overlay-success{color:#369763;mix-blend-mode:normal}.filepond--image-preview-overlay-failure{color:#c44e47;mix-blend-mode:normal}@supports (-webkit-marquee-repetition:infinite) and ((-o-object-fit:fill) or (object-fit:fill)){.filepond--image-preview-overlay-idle{mix-blend-mode:normal}}.filepond--image-preview-wrapper{background:rgba(0,0,0,.01);border-radius:.45em;height:100%;left:0;margin:0;overflow:hidden;position:absolute;right:0;top:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.filepond--image-preview{align-items:center;background:#222;display:flex;height:100%;left:0;pointer-events:none;position:absolute;top:0;width:100%;will-change:transform,opacity;z-index:1}.filepond--image-clip{margin:0 auto;overflow:hidden;position:relative}.filepond--image-clip[data-transparency-indicator=grid] canvas,.filepond--image-clip[data-transparency-indicator=grid] img{background-color:#fff;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg' fill='%23eee'%3E%3Cpath d='M0 0h50v50H0M50 50h50v50H50'/%3E%3C/svg%3E");background-size:1.25em 1.25em}.filepond--image-bitmap,.filepond--image-vector{left:0;position:absolute;top:0;will-change:transform}.filepond--root[data-style-panel-layout~=integrated] .filepond--image-preview-wrapper{border-radius:0}.filepond--root[data-style-panel-layout~=integrated] .filepond--image-preview{align-items:center;display:flex;height:100%;justify-content:center}.filepond--root[data-style-panel-layout~=circle] .filepond--image-preview-wrapper{border-radius:99999rem}.filepond--root[data-style-panel-layout~=circle] .filepond--image-preview-overlay{bottom:0;top:auto;transform:scaleY(-1)}.filepond--root[data-style-panel-layout~=circle] .filepond--file .filepond--file-action-button[data-align*=bottom]:not([data-align*=center]){margin-bottom:.325em}.filepond--root[data-style-panel-layout~=circle] .filepond--file [data-align*=left]{left:calc(50% - 3em)}.filepond--root[data-style-panel-layout~=circle] .filepond--file [data-align*=right]{right:calc(50% - 3em)}.filepond--root[data-style-panel-layout~=circle] .filepond--progress-indicator[data-align*=bottom][data-align*=left],.filepond--root[data-style-panel-layout~=circle] .filepond--progress-indicator[data-align*=bottom][data-align*=right]{margin-bottom:.5125em}.filepond--root[data-style-panel-layout~=circle] .filepond--progress-indicator[data-align*=bottom][data-align*=center]{margin-bottom:.1875em;margin-left:.1875em;margin-top:0}.filepond--media-preview audio{display:none}.filepond--media-preview .audioplayer{margin:2.3em auto auto;width:calc(100% - 1.4em)}.filepond--media-preview .playpausebtn{background-position:50%;background-repeat:no-repeat;border:none;border-radius:25px;cursor:pointer;float:left;height:25px;margin-right:.3em;margin-top:.3em;outline:none;width:25px}.filepond--media-preview .playpausebtn:hover{background-color:#00000080}.filepond--media-preview .play{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAyElEQVQ4T9XUsWoCQRRG4XPaFL5SfIy8gKYKBCysrax8Ahs7qzQ2qVIFOwsrsbEWLEK6EBFGBrIQhN2d3dnGgalm+Jh7789Ix8uOPe4YDCH0gZ66atKW0pJDCE/AEngDXtRjCpwCRucbGANzNVTBqWBhfAJDdV+GNgWj8wtM41bPt3AbsDB2f69d/0dzwC0wUDe54A8wAWbqJbfkD+BZPeQO5QsYqYu6LKb0MIb7VT3VYfG8CnwEHtT3FKi4c8e/TZMyk3LYFrwCgMdHFbRDKS8AAAAASUVORK5CYII=)}.filepond--media-preview .pause{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAh0lEQVQ4T+2UsQkCURBE30PLMbAMMResQrAPsQ0TK9AqDKxGZeTLD74aGNwlhzfZssvADDMrPcOe+RggYZIJcG2s2KinMidZAvu6u6uzT8u+JCeZArfmcKUeK+EaONTdQy23bxgJX8aPHvIHsSnVuzTx36rn2pQFsGuqN//ZlK7vbIDvq6vkJ9yteBXzecYbAAAAAElFTkSuQmCC)}.filepond--media-preview .timeline{background:hsla(0,0%,100%,.3);border-radius:15px;float:left;height:3px;margin-top:1em;width:calc(100% - 2.5em)}.filepond--media-preview .playhead{background:#fff;border-radius:50%;height:13px;margin-top:-5px;width:13px}.filepond--media-preview-wrapper{background:rgba(0,0,0,.01);border-radius:.45em;height:100%;left:0;margin:0;overflow:hidden;pointer-events:auto;position:absolute;right:0;top:0}.filepond--media-preview-wrapper:before{background:linear-gradient(180deg,#000 0,transparent);content:" ";filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#000000",endColorstr="#00000000",GradientType=0);height:2em;position:absolute;width:100%;z-index:3}.filepond--media-preview{display:block;height:100%;position:relative;transform-origin:center center;width:100%;will-change:transform,opacity;z-index:1}.filepond--media-preview audio,.filepond--media-preview video{width:100%;will-change:transform}.filepond--root{--tw-bg-opacity:1;--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-color:rgba(var(--gray-950),0.1);background-color:rgb(255 255 255/var(--tw-bg-opacity));border-radius:.5rem;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);margin-bottom:0}:is(.dark .filepond--root){--tw-ring-color:hsla(0,0%,100%,.2);background-color:hsla(0,0%,100%,.05)}.filepond--root[data-disabled=disabled]{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}:is(.dark .filepond--root[data-disabled=disabled]){--tw-ring-color:hsla(0,0%,100%,.1);background-color:transparent}.filepond--panel-root{background-color:transparent}.filepond--drop-label label{--tw-text-opacity:1;color:rgba(var(--gray-600),var(--tw-text-opacity));font-size:.875rem;line-height:1.25rem;padding:.75rem!important}:is(.dark .filepond--drop-label label){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.filepond--label-action{--tw-text-opacity:1;color:rgba(var(--primary-600),var(--tw-text-opacity));font-weight:500;text-decoration-line:none;transition-duration:75ms;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.filepond--label-action:hover{--tw-text-opacity:1;color:rgba(var(--primary-500),var(--tw-text-opacity))}:is(.dark .filepond--label-action){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}:is(.dark .filepond--label-action:hover){--tw-text-opacity:1;color:rgba(var(--primary-500),var(--tw-text-opacity))}.filepond--drip-blob{--tw-bg-opacity:1;background-color:rgba(var(--gray-400),var(--tw-bg-opacity))}:is(.dark .filepond--drip-blob){--tw-bg-opacity:1;background-color:rgba(var(--gray-500),var(--tw-bg-opacity))}.filepond--root[data-style-panel-layout=grid] .filepond--item{display:inline;width:calc(50% - .5rem)}@media (min-width:1024px){.filepond--root[data-style-panel-layout=grid] .filepond--item{width:calc(33.33% - .5rem)}}.filepond--download-icon{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));display:inline-block;height:1rem;margin-inline-end:.25rem;pointer-events:auto;vertical-align:bottom;width:1rem}.filepond--download-icon:hover{background-color:hsla(0,0%,100%,.7)}.filepond--download-icon{-webkit-mask-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBjbGFzcz0iZmVhdGhlciBmZWF0aGVyLWRvd25sb2FkIj48cGF0aCBkPSJNMjEgMTV2NGEyIDIgMCAwIDEtMiAySDVhMiAyIDAgMCAxLTItMnYtNE03IDEwbDUgNSA1LTVNMTIgMTVWMyIvPjwvc3ZnPg==);mask-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBjbGFzcz0iZmVhdGhlciBmZWF0aGVyLWRvd25sb2FkIj48cGF0aCBkPSJNMjEgMTV2NGEyIDIgMCAwIDEtMiAySDVhMiAyIDAgMCAxLTItMnYtNE03IDEwbDUgNSA1LTVNMTIgMTVWMyIvPjwvc3ZnPg==);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100%;mask-size:100%}.filepond--open-icon{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));display:inline-block;height:1rem;margin-inline-end:.25rem;pointer-events:auto;vertical-align:bottom;width:1rem}.filepond--open-icon:hover{background-color:hsla(0,0%,100%,.7)}.filepond--open-icon{-webkit-mask-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGNsYXNzPSJoLTYgdy02IiBmaWxsPSJub25lIiB2aWV3Qm94PSIwIDAgMjQgMjQiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiPjxwYXRoIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgZD0iTTEwIDZINmEyIDIgMCAwIDAtMiAydjEwYTIgMiAwIDAgMCAyIDJoMTBhMiAyIDAgMCAwIDItMnYtNE0xNCA0aDZtMCAwdjZtMC02TDEwIDE0Ii8+PC9zdmc+);mask-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGNsYXNzPSJoLTYgdy02IiBmaWxsPSJub25lIiB2aWV3Qm94PSIwIDAgMjQgMjQiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiPjxwYXRoIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgZD0iTTEwIDZINmEyIDIgMCAwIDAtMiAydjEwYTIgMiAwIDAgMCAyIDJoMTBhMiAyIDAgMCAwIDItMnYtNE0xNCA0aDZtMCAwdjZtMC02TDEwIDE0Ii8+PC9zdmc+);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100%;mask-size:100%}.filepond--file-action-button.filepond--action-edit-item{background-color:rgba(0,0,0,.5)}.cropper-drag-box.cropper-crop.cropper-modal{background-color:rgba(var(--gray-100),.5);opacity:1}:is(.dark .cropper-drag-box.cropper-crop.cropper-modal){background-color:rgba(var(--gray-900),.8)}.fi-fo-file-upload-circle-cropper .cropper-face,.fi-fo-file-upload-circle-cropper .cropper-view-box{border-radius:50%}.CodeMirror{color:#000;direction:ltr;font-family:monospace;height:300px}.CodeMirror-lines{padding:4px 0}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{padding:0 4px}.CodeMirror-gutter-filler,.CodeMirror-scrollbar-filler{background-color:#fff}.CodeMirror-gutters{background-color:#f7f7f7;border-right:1px solid #ddd;white-space:nowrap}.CodeMirror-linenumber{color:#999;min-width:20px;padding:0 3px 0 5px;text-align:right;white-space:nowrap}.CodeMirror-guttermarker{color:#000}.CodeMirror-guttermarker-subtle{color:#999}.CodeMirror-cursor{border-left:1px solid #000;border-right:none;width:0}.CodeMirror div.CodeMirror-secondarycursor{border-left:1px solid silver}.cm-fat-cursor .CodeMirror-cursor{background:#7e7;border:0!important;width:auto}.cm-fat-cursor div.CodeMirror-cursors{z-index:1}.cm-fat-cursor .CodeMirror-line::selection,.cm-fat-cursor .CodeMirror-line>span::selection,.cm-fat-cursor .CodeMirror-line>span>span::selection{background:0 0}.cm-fat-cursor .CodeMirror-line::-moz-selection,.cm-fat-cursor .CodeMirror-line>span::-moz-selection,.cm-fat-cursor .CodeMirror-line>span>span::-moz-selection{background:0 0}.cm-fat-cursor{caret-color:transparent}@keyframes blink{50%{background-color:transparent}}.cm-tab{display:inline-block;text-decoration:inherit}.CodeMirror-rulers{inset:-50px 0 0;overflow:hidden;position:absolute}.CodeMirror-ruler{border-left:1px solid #ccc;bottom:0;position:absolute;top:0}.cm-s-default .cm-header{color:#00f}.cm-s-default .cm-quote{color:#090}.cm-negative{color:#d44}.cm-positive{color:#292}.cm-header,.cm-strong{font-weight:700}.cm-em{font-style:italic}.cm-link{text-decoration:underline}.cm-strikethrough{text-decoration:line-through}.cm-s-default .cm-keyword{color:#708}.cm-s-default .cm-atom{color:#219}.cm-s-default .cm-number{color:#164}.cm-s-default .cm-def{color:#00f}.cm-s-default .cm-variable-2{color:#05a}.cm-s-default .cm-type,.cm-s-default .cm-variable-3{color:#085}.cm-s-default .cm-comment{color:#a50}.cm-s-default .cm-string{color:#a11}.cm-s-default .cm-string-2{color:#f50}.cm-s-default .cm-meta,.cm-s-default .cm-qualifier{color:#555}.cm-s-default .cm-builtin{color:#30a}.cm-s-default .cm-bracket{color:#997}.cm-s-default .cm-tag{color:#170}.cm-s-default .cm-attribute{color:#00c}.cm-s-default .cm-hr{color:#999}.cm-s-default .cm-link{color:#00c}.cm-invalidchar,.cm-s-default .cm-error{color:red}.CodeMirror-composing{border-bottom:2px solid}div.CodeMirror span.CodeMirror-matchingbracket{color:#0b0}div.CodeMirror span.CodeMirror-nonmatchingbracket{color:#a22}.CodeMirror-matchingtag{background:rgba(255,150,0,.3)}.CodeMirror-activeline-background{background:#e8f2ff}.CodeMirror{background:#fff;overflow:hidden;position:relative}.CodeMirror-scroll{height:100%;margin-bottom:-50px;margin-right:-50px;outline:0;overflow:scroll!important;padding-bottom:50px;position:relative;z-index:0}.CodeMirror-sizer{border-right:50px solid transparent;position:relative}.CodeMirror-gutter-filler,.CodeMirror-hscrollbar,.CodeMirror-scrollbar-filler,.CodeMirror-vscrollbar{display:none;outline:0;position:absolute;z-index:6}.CodeMirror-vscrollbar{overflow-x:hidden;overflow-y:scroll;right:0;top:0}.CodeMirror-hscrollbar{bottom:0;left:0;overflow-x:scroll;overflow-y:hidden}.CodeMirror-scrollbar-filler{bottom:0;right:0}.CodeMirror-gutter-filler{bottom:0;left:0}.CodeMirror-gutters{left:0;min-height:100%;position:absolute;top:0;z-index:3}.CodeMirror-gutter{display:inline-block;height:100%;margin-bottom:-50px;vertical-align:top;white-space:normal}.CodeMirror-gutter-wrapper{background:0 0!important;border:none!important;position:absolute;z-index:4}.CodeMirror-gutter-background{bottom:0;position:absolute;top:0;z-index:4}.CodeMirror-gutter-elt{cursor:default;position:absolute;z-index:4}.CodeMirror-gutter-wrapper ::selection{background-color:transparent}.CodeMirror-gutter-wrapper ::-moz-selection{background-color:transparent}.CodeMirror-lines{cursor:text;min-height:1px}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{word-wrap:normal;-webkit-tap-highlight-color:transparent;background:0 0;border-radius:0;border-width:0;color:inherit;font-family:inherit;font-size:inherit;font-variant-ligatures:contextual;line-height:inherit;margin:0;overflow:visible;position:relative;white-space:pre;z-index:2}.CodeMirror-wrap pre.CodeMirror-line,.CodeMirror-wrap pre.CodeMirror-line-like{word-wrap:break-word;white-space:pre-wrap;word-break:normal}.CodeMirror-linebackground{inset:0;position:absolute;z-index:0}.CodeMirror-linewidget{padding:.1px;position:relative;z-index:2}.CodeMirror-code{outline:0}.CodeMirror-gutter,.CodeMirror-gutters,.CodeMirror-linenumber,.CodeMirror-scroll,.CodeMirror-sizer{box-sizing:content-box}.CodeMirror-measure{height:0;overflow:hidden;position:absolute;visibility:hidden;width:100%}.CodeMirror-cursor{pointer-events:none;position:absolute}.CodeMirror-measure pre{position:static}div.CodeMirror-cursors{position:relative;visibility:hidden;z-index:3}.CodeMirror-focused div.CodeMirror-cursors,div.CodeMirror-dragcursors{visibility:visible}.CodeMirror-selected{background:#d9d9d9}.CodeMirror-focused .CodeMirror-selected{background:#d7d4f0}.CodeMirror-crosshair{cursor:crosshair}.CodeMirror-line::selection,.CodeMirror-line>span::selection,.CodeMirror-line>span>span::selection{background:#d7d4f0}.CodeMirror-line::-moz-selection,.CodeMirror-line>span::-moz-selection,.CodeMirror-line>span>span::-moz-selection{background:#d7d4f0}.cm-searching{background-color:#ffa;background-color:#ff06}.cm-force-border{padding-right:.1px}@media print{.CodeMirror div.CodeMirror-cursors{visibility:hidden}}.cm-tab-wrap-hack:after{content:""}span.CodeMirror-selectedtext{background:0 0}.EasyMDEContainer{display:block}.CodeMirror-rtl pre{direction:rtl}.EasyMDEContainer.sided--no-fullscreen{display:flex;flex-direction:row;flex-wrap:wrap}.EasyMDEContainer .CodeMirror{word-wrap:break-word;border:1px solid #ced4da;border-bottom-left-radius:4px;border-bottom-right-radius:4px;box-sizing:border-box;font:inherit;height:auto;padding:10px;z-index:0}.EasyMDEContainer .CodeMirror-scroll{cursor:text}.EasyMDEContainer .CodeMirror-fullscreen{background:#fff;border-bottom-right-radius:0!important;border-right:none!important;height:auto;inset:50px 0 0;position:fixed!important;z-index:8}.EasyMDEContainer .CodeMirror-sided{width:50%!important}.EasyMDEContainer.sided--no-fullscreen .CodeMirror-sided{border-bottom-right-radius:0;border-right:none!important;flex:1 1 auto;position:relative}.EasyMDEContainer .CodeMirror-placeholder{opacity:.5}.EasyMDEContainer .CodeMirror-focused .CodeMirror-selected{background:#d9d9d9}.editor-toolbar{border-left:1px solid #ced4da;border-right:1px solid #ced4da;border-top:1px solid #ced4da;border-top-left-radius:4px;border-top-right-radius:4px;padding:9px 10px;position:relative;-webkit-user-select:none;-moz-user-select:none;-o-user-select:none;user-select:none}.editor-toolbar.fullscreen{background:#fff;border:0;box-sizing:border-box;height:50px;left:0;opacity:1;padding-bottom:10px;padding-top:10px;position:fixed;top:0;width:100%;z-index:9}.editor-toolbar.fullscreen:before{background:linear-gradient(90deg,#fff 0,hsla(0,0%,100%,0));height:50px;left:0;margin:0;padding:0;position:fixed;top:0;width:20px}.editor-toolbar.fullscreen:after{background:linear-gradient(90deg,hsla(0,0%,100%,0) 0,#fff);height:50px;margin:0;padding:0;position:fixed;right:0;top:0;width:20px}.EasyMDEContainer.sided--no-fullscreen .editor-toolbar{width:100%}.editor-toolbar .easymde-dropdown,.editor-toolbar button{background:0 0;border:1px solid transparent;border-radius:3px;cursor:pointer;display:inline-block;height:30px;margin:0;padding:0;text-align:center;text-decoration:none!important}.editor-toolbar button{font-weight:700;min-width:30px;padding:0 6px;white-space:nowrap}.editor-toolbar button.active,.editor-toolbar button:hover{background:#fcfcfc;border-color:#95a5a6}.editor-toolbar i.separator{border-left:1px solid #d9d9d9;border-right:1px solid #fff;color:transparent;display:inline-block;margin:0 6px;text-indent:-10px;width:0}.editor-toolbar button:after{font-family:Arial,Helvetica Neue,Helvetica,sans-serif;font-size:65%;position:relative;top:2px;vertical-align:text-bottom}.editor-toolbar button.heading-1:after{content:"1"}.editor-toolbar button.heading-2:after{content:"2"}.editor-toolbar button.heading-3:after{content:"3"}.editor-toolbar button.heading-bigger:after{content:"\25b2"}.editor-toolbar button.heading-smaller:after{content:"\25bc"}.editor-toolbar.disabled-for-preview button:not(.no-disable){opacity:.6;pointer-events:none}@media only screen and (max-width:700px){.editor-toolbar i.no-mobile{display:none}}.editor-statusbar{color:#959694;font-size:12px;padding:8px 10px;text-align:right}.EasyMDEContainer.sided--no-fullscreen .editor-statusbar{width:100%}.editor-statusbar span{display:inline-block;margin-left:1em;min-width:4em}.editor-statusbar .lines:before{content:"lines: "}.editor-statusbar .words:before{content:"words: "}.editor-statusbar .characters:before{content:"characters: "}.editor-preview-full{height:100%;left:0;position:absolute;top:0;width:100%;z-index:7}.editor-preview-full,.editor-preview-side{box-sizing:border-box;display:none;overflow:auto}.editor-preview-side{word-wrap:break-word;border:1px solid #ddd;bottom:0;position:fixed;right:0;top:50px;width:50%;z-index:9}.editor-preview-active-side{display:block}.EasyMDEContainer.sided--no-fullscreen .editor-preview-active-side{flex:1 1 auto;height:auto;position:static}.editor-preview-active{display:block}.editor-preview{background:#fafafa;padding:10px}.editor-preview>p{margin-top:0}.editor-preview pre{background:#eee;margin-bottom:10px}.editor-preview table td,.editor-preview table th{border:1px solid #ddd;padding:5px}.cm-s-easymde .cm-tag{color:#63a35c}.cm-s-easymde .cm-attribute{color:#795da3}.cm-s-easymde .cm-string{color:#183691}.cm-s-easymde .cm-header-1{font-size:calc(1.375rem + 1.5vw)}.cm-s-easymde .cm-header-2{font-size:calc(1.325rem + .9vw)}.cm-s-easymde .cm-header-3{font-size:calc(1.3rem + .6vw)}.cm-s-easymde .cm-header-4{font-size:calc(1.275rem + .3vw)}.cm-s-easymde .cm-header-5{font-size:1.25rem}.cm-s-easymde .cm-header-6{font-size:1rem}.cm-s-easymde .cm-header-1,.cm-s-easymde .cm-header-2,.cm-s-easymde .cm-header-3,.cm-s-easymde .cm-header-4,.cm-s-easymde .cm-header-5,.cm-s-easymde .cm-header-6{line-height:1.2;margin-bottom:.5rem}.cm-s-easymde .cm-comment{background:rgba(0,0,0,.05);border-radius:2px}.cm-s-easymde .cm-link{color:#7f8c8d}.cm-s-easymde .cm-url{color:#aab2b3}.cm-s-easymde .cm-quote{color:#7f8c8d;font-style:italic}.editor-toolbar .easymde-dropdown{border:1px solid #fff;border-radius:0;position:relative}.editor-toolbar .easymde-dropdown,.editor-toolbar .easymde-dropdown:hover{background:linear-gradient(to bottom right,#fff,#fff 84%,#333 0,#333)}.easymde-dropdown-content{background-color:#f9f9f9;box-shadow:0 8px 16px #0003;display:block;padding:8px;position:absolute;top:30px;visibility:hidden;z-index:2}.easymde-dropdown:active .easymde-dropdown-content,.easymde-dropdown:focus .easymde-dropdown-content,.easymde-dropdown:focus-within .easymde-dropdown-content{visibility:visible}.easymde-dropdown-content button{display:block}span[data-img-src]:after{background-image:var(--bg-image);background-repeat:no-repeat;background-size:contain;content:"";display:block;height:0;max-height:100%;max-width:100%;padding-top:var(--height);width:var(--width)}.CodeMirror .cm-spell-error:not(.cm-url):not(.cm-comment):not(.cm-tag):not(.cm-word){background:rgba(255,0,0,.15)}:root{--color-cm-red:#991b1b;--color-cm-orange:#9a3412;--color-cm-amber:#92400e;--color-cm-yellow:#854d0e;--color-cm-lime:#3f6212;--color-cm-green:#166534;--color-cm-emerald:#065f46;--color-cm-teal:#115e59;--color-cm-cyan:#155e75;--color-cm-sky:#075985;--color-cm-blue:#1e40af;--color-cm-indigo:#3730a3;--color-cm-violet:#5b21b6;--color-cm-purple:#6b21a8;--color-cm-fuchsia:#86198f;--color-cm-pink:#9d174d;--color-cm-rose:#9f1239;--color-cm-gray:#18181b;--color-cm-gray-muted:#71717a;--color-cm-gray-background:#e4e4e7}.dark{--color-cm-red:#f87171;--color-cm-orange:#fb923c;--color-cm-amber:#fbbf24;--color-cm-yellow:#facc15;--color-cm-lime:#a3e635;--color-cm-green:#4ade80;--color-cm-emerald:#4ade80;--color-cm-teal:#2dd4bf;--color-cm-cyan:#22d3ee;--color-cm-sky:#38bdf8;--color-cm-blue:#60a5fa;--color-cm-indigo:#818cf8;--color-cm-violet:#a78bfa;--color-cm-purple:#c084fc;--color-cm-fuchsia:#e879f9;--color-cm-pink:#f472b6;--color-cm-rose:#fb7185;--color-cm-gray:#fafafa;--color-cm-gray-muted:#a1a1aa;--color-cm-gray-background:#52525b}.cm-s-easymde .cm-comment{background-color:transparent;color:var(--color-cm-gray-muted)}.EasyMDEContainer .CodeMirror-cursor{border-color:currentColor}.dark .EasyMDEContainer .cm-s-easymde span.CodeMirror-selectedtext{filter:invert(100%)}.EasyMDEContainer .cm-s-easymde .cm-keyword{color:var(--color-cm-violet)}.EasyMDEContainer .cm-s-easymde .cm-atom{color:var(--color-cm-blue)}.EasyMDEContainer .cm-s-easymde .cm-number{color:var(--color-cm-green)}.EasyMDEContainer .cm-s-easymde .cm-def{color:var(--color-cm-blue)}.EasyMDEContainer .cm-s-easymde .cm-variable{color:var(--color-cm-yellow)}.EasyMDEContainer .cm-s-easymde .cm-variable-2{color:var(--color-cm-blue)}.EasyMDEContainer .cm-s-easymde .cm-variable-3{color:var(--color-cm-emerald)}.EasyMDEContainer .cm-s-easymde .cm-operator,.EasyMDEContainer .cm-s-easymde .cm-property{color:var(--color-cm-gray)}.EasyMDEContainer .cm-s-easymde .cm-string,.EasyMDEContainer .cm-s-easymde .cm-string-2{color:var(--color-cm-rose)}.EasyMDEContainer .cm-s-easymde .cm-meta{color:var(--color-cm-gray-muted)}.EasyMDEContainer .cm-s-easymde .cm-error{color:var(--color-cm-red)}.EasyMDEContainer .cm-s-easymde .cm-qualifier{color:var(--color-cm-gray-muted)}.EasyMDEContainer .cm-s-easymde .cm-builtin{color:var(--color-cm-violet)}.EasyMDEContainer .cm-s-easymde .cm-bracket{color:var(--color-cm-gray-muted)}.EasyMDEContainer .cm-s-easymde .cm-tag{color:var(--color-cm-green)}.EasyMDEContainer .cm-s-easymde .cm-attribute{color:var(--color-cm-blue)}.EasyMDEContainer .cm-s-easymde .cm-hr{color:var(--color-cm-gray-muted)}.EasyMDEContainer .cm-s-easymde .cm-formatting-quote{color:var(--color-cm-sky)}.EasyMDEContainer .cm-s-easymde .cm-formatting-quote+.cm-quote{color:var(--color-cm-gray-muted)}.EasyMDEContainer .cm-s-easymde .cm-formatting-list,.EasyMDEContainer .cm-s-easymde .cm-formatting-list+.cm-variable-2,.EasyMDEContainer .cm-s-easymde .cm-tab+.cm-variable-2{color:var(--color-cm-gray)}.EasyMDEContainer .cm-s-easymde .cm-link{color:var(--color-cm-blue)}.EasyMDEContainer .cm-s-easymde .cm-tag{color:var(--color-cm-red)}.EasyMDEContainer .cm-s-easymde .cm-attribute{color:var(--color-cm-amber)}.EasyMDEContainer .cm-s-easymde .cm-attribute+.cm-string{color:var(--color-cm-green)}.EasyMDEContainer .cm-s-easymde .cm-formatting-code+.cm-comment:not(.cm-formatting-code){background-color:var(--color-cm-gray-background);color:var(--color-cm-gray)}.EasyMDEContainer .cm-s-easymde .cm-header-1{font-size:1.875rem;line-height:2.25rem}.EasyMDEContainer .cm-s-easymde .cm-header-2{font-size:1.5rem;line-height:2rem}.EasyMDEContainer .cm-s-easymde .cm-header-3{font-size:1.25rem;line-height:1.75rem}.EasyMDEContainer .cm-s-easymde .cm-header-4{font-size:1.125rem;line-height:1.75rem}.EasyMDEContainer .cm-s-easymde .cm-header-5{font-size:1rem;line-height:1.5rem}.EasyMDEContainer .cm-s-easymde .cm-header-6{font-size:.875rem;line-height:1.25rem}.EasyMDEContainer .cm-s-easymde .cm-comment{background-image:none}.EasyMDEContainer .CodeMirror,.EasyMDEContainer .cm-s-easymde .cm-formatting-code-block,.EasyMDEContainer .cm-s-easymde .cm-tab+.cm-comment{background-color:transparent;color:inherit}.EasyMDEContainer .CodeMirror{border-style:none;padding:.375rem .75rem}.EasyMDEContainer .CodeMirror-scroll{height:auto}.EasyMDEContainer .editor-toolbar{--tw-border-opacity:1;border-color:rgba(var(--gray-200),var(--tw-border-opacity));border-radius:0;border-width:0 0 1px;-moz-column-gap:.25rem;column-gap:.25rem;display:flex;overflow-x:auto;padding:.5rem .625rem}:is(.dark .EasyMDEContainer .editor-toolbar){border-color:hsla(0,0%,100%,.1)}.EasyMDEContainer .editor-toolbar button{border-radius:.5rem;border-style:none;cursor:pointer;display:grid;height:2rem;padding:0;place-content:center;transition-duration:75ms;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);width:2rem}.EasyMDEContainer .editor-toolbar button:hover{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.EasyMDEContainer .editor-toolbar button:focus-visible{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}:is(.dark .EasyMDEContainer .editor-toolbar button:hover){background-color:hsla(0,0%,100%,.05)}:is(.dark .EasyMDEContainer .editor-toolbar button:focus-visible){background-color:hsla(0,0%,100%,.05)}.EasyMDEContainer .editor-toolbar button.active{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}:is(.dark .EasyMDEContainer .editor-toolbar button.active){background-color:hsla(0,0%,100%,.05)}.EasyMDEContainer .editor-toolbar button:before{--tw-bg-opacity:1;background-color:rgba(var(--gray-700),var(--tw-bg-opacity));display:block;height:1rem;width:1rem}:is(.dark .EasyMDEContainer .editor-toolbar button):before{--tw-bg-opacity:1;background-color:rgba(var(--gray-300),var(--tw-bg-opacity))}.EasyMDEContainer .editor-toolbar button:before{content:"";-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.EasyMDEContainer .editor-toolbar button.active:before{--tw-bg-opacity:1;background-color:rgba(var(--primary-600),var(--tw-bg-opacity))}:is(.dark .EasyMDEContainer .editor-toolbar button.active):before{--tw-bg-opacity:1;background-color:rgba(var(--primary-400),var(--tw-bg-opacity))}.EasyMDEContainer .editor-toolbar .separator{border-style:none;margin:0!important;width:.25rem}.EasyMDEContainer .editor-toolbar .bold:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 384 512'%3E%3Cpath d='M321.1 242.4c19-22.3 30.9-50.8 30.9-82.4 0-70.59-57.42-128-128-128l-192 .01c-17.67 0-32 14.31-32 32s14.33 32 32 32h16v320H32c-17.67 0-32 14.31-32 32s14.33 32 32 32h224c70.58 0 128-57.41 128-128 0-46.71-25.4-87.21-62.9-109.61zM112 96.01h112c35.3 0 64 28.72 64 64s-28.7 64-64 64H112v-128zM256 416H112V288h144c35.3 0 64 28.71 64 63.1S291.3 416 256 416z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 384 512'%3E%3Cpath d='M321.1 242.4c19-22.3 30.9-50.8 30.9-82.4 0-70.59-57.42-128-128-128l-192 .01c-17.67 0-32 14.31-32 32s14.33 32 32 32h16v320H32c-17.67 0-32 14.31-32 32s14.33 32 32 32h224c70.58 0 128-57.41 128-128 0-46.71-25.4-87.21-62.9-109.61zM112 96.01h112c35.3 0 64 28.72 64 64s-28.7 64-64 64H112v-128zM256 416H112V288h144c35.3 0 64 28.71 64 63.1S291.3 416 256 416z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .italic:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 384 512'%3E%3Cpath d='M384 64.01c0 17.69-14.31 32-32 32h-58.67l-133.3 320H224c17.69 0 32 14.31 32 32s-14.31 32-32 32H32c-17.69 0-32-14.31-32-32s14.31-32 32-32h58.67l133.3-320H160c-17.69 0-32-14.31-32-32s14.31-32 32-32h192c17.7 0 32 14.32 32 32z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 384 512'%3E%3Cpath d='M384 64.01c0 17.69-14.31 32-32 32h-58.67l-133.3 320H224c17.69 0 32 14.31 32 32s-14.31 32-32 32H32c-17.69 0-32-14.31-32-32s14.31-32 32-32h58.67l133.3-320H160c-17.69 0-32-14.31-32-32s14.31-32 32-32h192c17.7 0 32 14.32 32 32z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .strikethrough:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M332.2 319.9c17.22 12.17 22.33 26.51 18.61 48.21-3.031 17.59-10.88 29.34-24.72 36.99-35.44 19.75-108.5 11.96-186-19.68-16.34-6.686-35.03 1.156-41.72 17.53s1.188 35.05 17.53 41.71c31.75 12.93 95.69 35.37 157.6 35.37 29.62 0 58.81-5.156 83.72-18.96 30.81-17.09 50.44-45.46 56.72-82.11 3.998-23.27 2.168-42.58-3.488-59.05H332.2zm155.8-80-176.5-.03c-15.85-5.614-31.83-10.34-46.7-14.62-85.47-24.62-110.9-39.05-103.7-81.33 2.5-14.53 10.16-25.96 22.72-34.03 20.47-13.15 64.06-23.84 155.4.343 17.09 4.53 34.59-5.654 39.13-22.74 4.531-17.09-5.656-34.59-22.75-39.12-91.31-24.18-160.7-21.62-206.3 7.654C121.8 73.72 103.6 101.1 98.09 133.1c-8.83 51.4 9.81 84.2 39.11 106.8H24c-13.25 0-24 10.75-24 23.1 0 13.25 10.75 23.1 24 23.1h464c13.25 0 24-10.75 24-23.1 0-12.3-10.7-23.1-24-23.1z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M332.2 319.9c17.22 12.17 22.33 26.51 18.61 48.21-3.031 17.59-10.88 29.34-24.72 36.99-35.44 19.75-108.5 11.96-186-19.68-16.34-6.686-35.03 1.156-41.72 17.53s1.188 35.05 17.53 41.71c31.75 12.93 95.69 35.37 157.6 35.37 29.62 0 58.81-5.156 83.72-18.96 30.81-17.09 50.44-45.46 56.72-82.11 3.998-23.27 2.168-42.58-3.488-59.05H332.2zm155.8-80-176.5-.03c-15.85-5.614-31.83-10.34-46.7-14.62-85.47-24.62-110.9-39.05-103.7-81.33 2.5-14.53 10.16-25.96 22.72-34.03 20.47-13.15 64.06-23.84 155.4.343 17.09 4.53 34.59-5.654 39.13-22.74 4.531-17.09-5.656-34.59-22.75-39.12-91.31-24.18-160.7-21.62-206.3 7.654C121.8 73.72 103.6 101.1 98.09 133.1c-8.83 51.4 9.81 84.2 39.11 106.8H24c-13.25 0-24 10.75-24 23.1 0 13.25 10.75 23.1 24 23.1h464c13.25 0 24-10.75 24-23.1 0-12.3-10.7-23.1-24-23.1z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .link:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 640 512'%3E%3Cpath d='M598.6 41.41C570.1 13.8 534.8 0 498.6 0s-72.36 13.8-99.96 41.41l-43.36 43.36c15.11 8.012 29.47 17.58 41.91 30.02 3.146 3.146 5.898 6.518 8.742 9.838l37.96-37.96C458.5 72.05 477.1 64 498.6 64c20.67 0 40.1 8.047 54.71 22.66 14.61 14.61 22.66 34.04 22.66 54.71s-8.049 40.1-22.66 54.71l-133.3 133.3C405.5 343.1 386 352 365.4 352s-40.1-8.048-54.71-22.66C296 314.7 287.1 295.3 287.1 274.6s8.047-40.1 22.66-54.71l4.44-3.49c-2.1-3.9-4.3-7.9-7.5-11.1-8.6-8.6-19.9-13.3-32.1-13.3-11.93 0-23.1 4.664-31.61 12.97-30.71 53.96-23.63 123.6 22.39 169.6C293 402.2 329.2 416 365.4 416c36.18 0 72.36-13.8 99.96-41.41L598.6 241.3c28.45-28.45 42.24-66.01 41.37-103.3-.87-35.9-14.57-69.84-41.37-96.59zM234 387.4l-37.9 37.9C181.5 439.1 162 448 141.4 448c-20.67 0-40.1-8.047-54.71-22.66-14.61-14.61-22.66-34.04-22.66-54.71s8.049-40.1 22.66-54.71l133.3-133.3C234.5 168 253.1 160 274.6 160s40.1 8.048 54.71 22.66c14.62 14.61 22.66 34.04 22.66 54.71s-8.047 40.1-22.66 54.71l-3.51 3.52c2.094 3.939 4.219 7.895 7.465 11.15C341.9 315.3 353.3 320 365.4 320c11.93 0 23.1-4.664 31.61-12.97 30.71-53.96 23.63-123.6-22.39-169.6C346.1 109.8 310.8 96 274.6 96c-36.2 0-72.3 13.8-99.9 41.4L41.41 270.7C13.81 298.3 0 334.48 0 370.66c0 36.18 13.8 72.36 41.41 99.97C69.01 498.2 105.2 512 141.4 512c36.18 0 72.36-13.8 99.96-41.41l43.36-43.36c-15.11-8.012-29.47-17.58-41.91-30.02-3.21-3.11-5.91-6.51-8.81-9.81z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 640 512'%3E%3Cpath d='M598.6 41.41C570.1 13.8 534.8 0 498.6 0s-72.36 13.8-99.96 41.41l-43.36 43.36c15.11 8.012 29.47 17.58 41.91 30.02 3.146 3.146 5.898 6.518 8.742 9.838l37.96-37.96C458.5 72.05 477.1 64 498.6 64c20.67 0 40.1 8.047 54.71 22.66 14.61 14.61 22.66 34.04 22.66 54.71s-8.049 40.1-22.66 54.71l-133.3 133.3C405.5 343.1 386 352 365.4 352s-40.1-8.048-54.71-22.66C296 314.7 287.1 295.3 287.1 274.6s8.047-40.1 22.66-54.71l4.44-3.49c-2.1-3.9-4.3-7.9-7.5-11.1-8.6-8.6-19.9-13.3-32.1-13.3-11.93 0-23.1 4.664-31.61 12.97-30.71 53.96-23.63 123.6 22.39 169.6C293 402.2 329.2 416 365.4 416c36.18 0 72.36-13.8 99.96-41.41L598.6 241.3c28.45-28.45 42.24-66.01 41.37-103.3-.87-35.9-14.57-69.84-41.37-96.59zM234 387.4l-37.9 37.9C181.5 439.1 162 448 141.4 448c-20.67 0-40.1-8.047-54.71-22.66-14.61-14.61-22.66-34.04-22.66-54.71s8.049-40.1 22.66-54.71l133.3-133.3C234.5 168 253.1 160 274.6 160s40.1 8.048 54.71 22.66c14.62 14.61 22.66 34.04 22.66 54.71s-8.047 40.1-22.66 54.71l-3.51 3.52c2.094 3.939 4.219 7.895 7.465 11.15C341.9 315.3 353.3 320 365.4 320c11.93 0 23.1-4.664 31.61-12.97 30.71-53.96 23.63-123.6-22.39-169.6C346.1 109.8 310.8 96 274.6 96c-36.2 0-72.3 13.8-99.9 41.4L41.41 270.7C13.81 298.3 0 334.48 0 370.66c0 36.18 13.8 72.36 41.41 99.97C69.01 498.2 105.2 512 141.4 512c36.18 0 72.36-13.8 99.96-41.41l43.36-43.36c-15.11-8.012-29.47-17.58-41.91-30.02-3.21-3.11-5.91-6.51-8.81-9.81z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .heading:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 512'%3E%3Cpath d='M0 64c0-17.7 14.3-32 32-32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32h-16v112h224V96h-16c-17.7 0-32-14.3-32-32s14.3-32 32-32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32h-16v320h16c17.7 0 32 14.3 32 32s-14.3 32-32 32h-96c-17.7 0-32-14.3-32-32s14.3-32 32-32h16V272H112v144h16c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32h16V96H32C14.3 96 0 81.7 0 64z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 512'%3E%3Cpath d='M0 64c0-17.7 14.3-32 32-32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32h-16v112h224V96h-16c-17.7 0-32-14.3-32-32s14.3-32 32-32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32h-16v320h16c17.7 0 32 14.3 32 32s-14.3 32-32 32h-96c-17.7 0-32-14.3-32-32s14.3-32 32-32h16V272H112v144h16c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32h16V96H32C14.3 96 0 81.7 0 64z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .quote:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 512'%3E%3Cpath d='M96 224c-11.28 0-21.95 2.3-32 5.9V224c0-35.3 28.7-64 64-64 17.67 0 32-14.33 32-32s-14.3-32-32-32C57.42 96 0 153.4 0 224v96c0 53.02 42.98 96 96 96s96-42.98 96-96-43-96-96-96zm256 0c-11.28 0-21.95 2.305-32 5.879V224c0-35.3 28.7-64 64-64 17.67 0 32-14.33 32-32s-14.33-32-32-32c-70.58 0-128 57.42-128 128v96c0 53.02 42.98 96 96 96s96-42.98 96-96-43-96-96-96z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 512'%3E%3Cpath d='M96 224c-11.28 0-21.95 2.3-32 5.9V224c0-35.3 28.7-64 64-64 17.67 0 32-14.33 32-32s-14.3-32-32-32C57.42 96 0 153.4 0 224v96c0 53.02 42.98 96 96 96s96-42.98 96-96-43-96-96-96zm256 0c-11.28 0-21.95 2.305-32 5.879V224c0-35.3 28.7-64 64-64 17.67 0 32-14.33 32-32s-14.33-32-32-32c-70.58 0-128 57.42-128 128v96c0 53.02 42.98 96 96 96s96-42.98 96-96-43-96-96-96z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .code:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 640 512'%3E%3Cpath d='M416 31.94C416 21.75 408.1 0 384.1 0c-13.98 0-26.87 9.072-30.89 23.18l-128 448a31.933 31.933 0 0 0-1.241 8.801C223.1 490.3 232 512 256 512c13.92 0 26.73-9.157 30.75-23.22l128-448c.85-2.97 1.25-5.93 1.25-8.84zM176 143.1c0-18.28-14.95-32-32-32-8.188 0-16.38 3.125-22.62 9.376l-112 112C3.125 239.6 0 247.8 0 255.1s3.125 17.3 9.375 23.5l112 112c6.225 6.3 14.425 8.5 22.625 8.5 17.05 0 32-13.73 32-32 0-8.188-3.125-16.38-9.375-22.63L77.25 255.1l89.38-89.38c6.27-5.42 9.37-13.52 9.37-22.62zm464 112c0-8.188-3.125-16.38-9.375-22.63l-112-112C512.4 115.1 504.2 111.1 496 111.1c-17.05 0-32 13.73-32 32 0 8.188 3.125 16.38 9.375 22.63l89.38 89.38-89.38 89.38C467.1 351.6 464 359.8 464 367.1c0 18.28 14.95 32 32 32 8.188 0 16.38-3.125 22.62-9.376l112-112C636.9 272.4 640 264.2 640 255.1z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 640 512'%3E%3Cpath d='M416 31.94C416 21.75 408.1 0 384.1 0c-13.98 0-26.87 9.072-30.89 23.18l-128 448a31.933 31.933 0 0 0-1.241 8.801C223.1 490.3 232 512 256 512c13.92 0 26.73-9.157 30.75-23.22l128-448c.85-2.97 1.25-5.93 1.25-8.84zM176 143.1c0-18.28-14.95-32-32-32-8.188 0-16.38 3.125-22.62 9.376l-112 112C3.125 239.6 0 247.8 0 255.1s3.125 17.3 9.375 23.5l112 112c6.225 6.3 14.425 8.5 22.625 8.5 17.05 0 32-13.73 32-32 0-8.188-3.125-16.38-9.375-22.63L77.25 255.1l89.38-89.38c6.27-5.42 9.37-13.52 9.37-22.62zm464 112c0-8.188-3.125-16.38-9.375-22.63l-112-112C512.4 115.1 504.2 111.1 496 111.1c-17.05 0-32 13.73-32 32 0 8.188 3.125 16.38 9.375 22.63l89.38 89.38-89.38 89.38C467.1 351.6 464 359.8 464 367.1c0 18.28 14.95 32 32 32 8.188 0 16.38-3.125 22.62-9.376l112-112C636.9 272.4 640 264.2 640 255.1z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .unordered-list:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M16 96c0-26.51 21.49-48 48-48s48 21.49 48 48c0 26.5-21.49 48-48 48s-48-21.5-48-48zm464-32c17.7 0 32 14.33 32 32 0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32 0-17.67 14.3-32 32-32h288zm0 160c17.7 0 32 14.3 32 32s-14.3 32-32 32H192c-17.7 0-32-14.3-32-32s14.3-32 32-32h288zm0 160c17.7 0 32 14.3 32 32s-14.3 32-32 32H192c-17.7 0-32-14.3-32-32s14.3-32 32-32h288zM16 416c0-26.5 21.49-48 48-48s48 21.5 48 48-21.49 48-48 48-48-21.5-48-48zm96-160c0 26.5-21.49 48-48 48s-48-21.5-48-48 21.49-48 48-48 48 21.5 48 48z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M16 96c0-26.51 21.49-48 48-48s48 21.49 48 48c0 26.5-21.49 48-48 48s-48-21.5-48-48zm464-32c17.7 0 32 14.33 32 32 0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32 0-17.67 14.3-32 32-32h288zm0 160c17.7 0 32 14.3 32 32s-14.3 32-32 32H192c-17.7 0-32-14.3-32-32s14.3-32 32-32h288zm0 160c17.7 0 32 14.3 32 32s-14.3 32-32 32H192c-17.7 0-32-14.3-32-32s14.3-32 32-32h288zM16 416c0-26.5 21.49-48 48-48s48 21.5 48 48-21.49 48-48 48-48-21.5-48-48zm96-160c0 26.5-21.49 48-48 48s-48-21.5-48-48 21.49-48 48-48 48 21.5 48 48z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .ordered-list:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M55.1 56.04c0-13.26 11.64-24 24-24h32c14.2 0 24 10.74 24 24V176h16c14.2 0 24 10.8 24 24 0 13.3-9.8 24-24 24h-80c-12.36 0-24-10.7-24-24 0-13.2 11.64-24 24-24h16V80.04h-8c-12.36 0-24-10.75-24-24zm63.6 285.16c-6.6-7.4-18.3-6.9-24.05 1.2l-11.12 15.5c-7.7 10.8-22.69 13.3-33.48 5.6-10.79-7.7-13.28-22.7-5.58-33.4l11.12-15.6c23.74-33.3 72.31-35.7 99.21-4.9 21.3 23.5 20.8 60.9-1.1 84.7L118.8 432H152c13.3 0 24 10.7 24 24s-10.7 24-24 24H64c-9.53 0-18.16-5.6-21.98-14.4-3.83-8.7-2.12-18.9 4.34-25.9l72.04-78c5.3-5.8 5.4-14.6.3-20.5zM512 64c17.7 0 32 14.33 32 32 0 17.7-14.3 32-32 32H256c-17.7 0-32-14.3-32-32 0-17.67 14.3-32 32-32h256zm0 160c17.7 0 32 14.3 32 32s-14.3 32-32 32H256c-17.7 0-32-14.3-32-32s14.3-32 32-32h256zm0 160c17.7 0 32 14.3 32 32s-14.3 32-32 32H256c-17.7 0-32-14.3-32-32s14.3-32 32-32h256z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M55.1 56.04c0-13.26 11.64-24 24-24h32c14.2 0 24 10.74 24 24V176h16c14.2 0 24 10.8 24 24 0 13.3-9.8 24-24 24h-80c-12.36 0-24-10.7-24-24 0-13.2 11.64-24 24-24h16V80.04h-8c-12.36 0-24-10.75-24-24zm63.6 285.16c-6.6-7.4-18.3-6.9-24.05 1.2l-11.12 15.5c-7.7 10.8-22.69 13.3-33.48 5.6-10.79-7.7-13.28-22.7-5.58-33.4l11.12-15.6c23.74-33.3 72.31-35.7 99.21-4.9 21.3 23.5 20.8 60.9-1.1 84.7L118.8 432H152c13.3 0 24 10.7 24 24s-10.7 24-24 24H64c-9.53 0-18.16-5.6-21.98-14.4-3.83-8.7-2.12-18.9 4.34-25.9l72.04-78c5.3-5.8 5.4-14.6.3-20.5zM512 64c17.7 0 32 14.33 32 32 0 17.7-14.3 32-32 32H256c-17.7 0-32-14.3-32-32 0-17.67 14.3-32 32-32h256zm0 160c17.7 0 32 14.3 32 32s-14.3 32-32 32H256c-17.7 0-32-14.3-32-32s14.3-32 32-32h256zm0 160c17.7 0 32 14.3 32 32s-14.3 32-32 32H256c-17.7 0-32-14.3-32-32s14.3-32 32-32h256z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .table:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1792 1792'%3E%3Cpath d='M576 1376v-192q0-14-9-23t-23-9H224q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm0-384V800q0-14-9-23t-23-9H224q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm512 384v-192q0-14-9-23t-23-9H736q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zM576 608V416q0-14-9-23t-23-9H224q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm512 384V800q0-14-9-23t-23-9H736q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm512 384v-192q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm-512-768V416q0-14-9-23t-23-9H736q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm512 384V800q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm0-384V416q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm128-320v1088q0 66-47 113t-113 47H224q-66 0-113-47t-47-113V288q0-66 47-113t113-47h1344q66 0 113 47t47 113z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1792 1792'%3E%3Cpath d='M576 1376v-192q0-14-9-23t-23-9H224q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm0-384V800q0-14-9-23t-23-9H224q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm512 384v-192q0-14-9-23t-23-9H736q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zM576 608V416q0-14-9-23t-23-9H224q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm512 384V800q0-14-9-23t-23-9H736q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm512 384v-192q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm-512-768V416q0-14-9-23t-23-9H736q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm512 384V800q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm0-384V416q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm128-320v1088q0 66-47 113t-113 47H224q-66 0-113-47t-47-113V288q0-66 47-113t113-47h1344q66 0 113 47t47 113z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .upload-image:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M447.1 32h-484C28.64 32-.01 60.65-.01 96v320c0 35.35 28.65 64 63.1 64h384c35.35 0 64-28.65 64-64V96c.01-35.35-27.79-64-63.99-64zm-336 64c26.51 0 48 21.49 48 48s-20.6 48-48 48-48-21.49-48-48 22.38-48 48-48zm335 311.6c-2.8 5.2-8.2 8.4-14.1 8.4H82.01a15.993 15.993 0 0 1-14.26-8.75 16 16 0 0 1 1.334-16.68l70-96C142.1 290.4 146.9 288 152 288s9.916 2.441 12.93 6.574l32.46 44.51 93.3-139.1C293.7 194.7 298.7 192 304 192s10.35 2.672 13.31 7.125l128 192c3.29 4.875 3.59 11.175.79 16.475z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M447.1 32h-484C28.64 32-.01 60.65-.01 96v320c0 35.35 28.65 64 63.1 64h384c35.35 0 64-28.65 64-64V96c.01-35.35-27.79-64-63.99-64zm-336 64c26.51 0 48 21.49 48 48s-20.6 48-48 48-48-21.49-48-48 22.38-48 48-48zm335 311.6c-2.8 5.2-8.2 8.4-14.1 8.4H82.01a15.993 15.993 0 0 1-14.26-8.75 16 16 0 0 1 1.334-16.68l70-96C142.1 290.4 146.9 288 152 288s9.916 2.441 12.93 6.574l32.46 44.51 93.3-139.1C293.7 194.7 298.7 192 304 192s10.35 2.672 13.31 7.125l128 192c3.29 4.875 3.59 11.175.79 16.475z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .undo:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M480 256c0 123.4-100.5 223.9-223.9 223.9-48.84 0-95.17-15.58-134.2-44.86-14.12-10.59-16.97-30.66-6.375-44.81 10.59-14.12 30.62-16.94 44.81-6.375 27.84 20.91 61 31.94 95.88 31.94C344.3 415.8 416 344.1 416 256S344.31 96.2 256.2 96.2c-37.46 0-73.09 13.49-101.3 36.64l45.12 45.14c17.01 17.02 4.955 46.1-19.1 46.1H35.17C24.58 224.1 16 215.5 16 204.9V59.04C16 35 45.07 22.96 62.07 39.97l47.6 47.63C149.9 52.71 201.5 32.11 256.1 32.11 379.5 32.11 480 132.6 480 256z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M480 256c0 123.4-100.5 223.9-223.9 223.9-48.84 0-95.17-15.58-134.2-44.86-14.12-10.59-16.97-30.66-6.375-44.81 10.59-14.12 30.62-16.94 44.81-6.375 27.84 20.91 61 31.94 95.88 31.94C344.3 415.8 416 344.1 416 256S344.31 96.2 256.2 96.2c-37.46 0-73.09 13.49-101.3 36.64l45.12 45.14c17.01 17.02 4.955 46.1-19.1 46.1H35.17C24.58 224.1 16 215.5 16 204.9V59.04C16 35 45.07 22.96 62.07 39.97l47.6 47.63C149.9 52.71 201.5 32.11 256.1 32.11 379.5 32.11 480 132.6 480 256z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .redo:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M468.9 32.11c13.87 0 27.18 10.77 27.18 27.04v145.9c0 10.59-8.584 19.17-19.17 19.17h-145.7c-16.28 0-27.06-13.32-27.06-27.2 0-6.634 2.461-13.4 7.96-18.9l45.12-45.14c-28.22-23.14-63.85-36.64-101.3-36.64-88.09 0-159.8 71.69-159.8 159.8S167.8 415.9 255.9 415.9c73.14 0 89.44-38.31 115.1-38.31 18.48 0 31.97 15.04 31.97 31.96 0 35.04-81.59 70.41-147 70.41-123.4 0-223.9-100.5-223.9-223.9S132.6 32.44 256 32.44c54.6 0 106.2 20.39 146.4 55.26L450 40.07c5.5-5.5 12.3-7.96 18.9-7.96z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M468.9 32.11c13.87 0 27.18 10.77 27.18 27.04v145.9c0 10.59-8.584 19.17-19.17 19.17h-145.7c-16.28 0-27.06-13.32-27.06-27.2 0-6.634 2.461-13.4 7.96-18.9l45.12-45.14c-28.22-23.14-63.85-36.64-101.3-36.64-88.09 0-159.8 71.69-159.8 159.8S167.8 415.9 255.9 415.9c73.14 0 89.44-38.31 115.1-38.31 18.48 0 31.97 15.04 31.97 31.96 0 35.04-81.59 70.41-147 70.41-123.4 0-223.9-100.5-223.9-223.9S132.6 32.44 256 32.44c54.6 0 106.2 20.39 146.4 55.26L450 40.07c5.5-5.5 12.3-7.96 18.9-7.96z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-statusbar{display:none}.fi-fo-rich-editor trix-toolbar .trix-dialogs{position:relative}.fi-fo-rich-editor trix-toolbar .trix-dialog{--tw-bg-opacity:1;--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color);background-color:rgba(var(--gray-50),var(--tw-bg-opacity));border-radius:.5rem;bottom:auto;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);left:0;padding:.5rem;position:absolute;right:0;top:1rem}:is(.dark .fi-fo-rich-editor trix-toolbar .trix-dialog){--tw-bg-opacity:1;background-color:rgba(var(--gray-800),var(--tw-bg-opacity))}.fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields{display:flex;flex-direction:column;gap:.5rem;width:100%}.fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-button-group{display:flex;gap:.5rem}.fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-input{--tw-bg-opacity:1;--tw-text-opacity:1;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-color:rgba(var(--gray-950),0.1);background-color:rgb(255 255 255/var(--tw-bg-opacity));border-radius:.375rem;border-style:none;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);color:rgba(var(--gray-950),var(--tw-text-opacity));display:block;font-size:.875rem;line-height:1.25rem;outline:2px solid transparent;outline-offset:2px;padding-bottom:.375rem;padding-inline-end:.75rem;padding-top:.375rem;padding-inline-start:.75rem;transition-duration:75ms;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);width:100%}.fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-input::-moz-placeholder{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-input::placeholder{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-input:focus-within{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-600),var(--tw-ring-opacity))}:is(.dark .fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-input){--tw-bg-opacity:1;--tw-text-opacity:1;--tw-ring-color:hsla(0,0%,100%,.2);background-color:rgba(var(--gray-700),var(--tw-bg-opacity));color:rgb(255 255 255/var(--tw-text-opacity))}:is(.dark .fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-input)::-moz-placeholder{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}:is(.dark .fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-input)::placeholder{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}:is(.dark .fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-input:focus-within){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-600),var(--tw-ring-opacity))}@media (min-width:640px){.fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-input{font-size:.875rem;line-height:1.5rem}}.fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-button-group .trix-button{--tw-bg-opacity:1;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgba(var(--gray-200),var(--tw-ring-opacity));background-color:rgba(var(--gray-50),var(--tw-bg-opacity));border-radius:.375rem;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);font-size:.75rem;line-height:1rem;padding:.125rem .5rem}:is(.dark .fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-button-group .trix-button){--tw-bg-opacity:1;--tw-ring-opacity:1;--tw-ring-color:rgba(var(--gray-600),var(--tw-ring-opacity));background-color:rgba(var(--gray-700),var(--tw-bg-opacity))}.fi-fo-rich-editor trix-editor:empty:before{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}:is(.dark .fi-fo-rich-editor trix-editor:empty):before{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.fi-fo-rich-editor trix-editor:empty:before{content:attr(placeholder)}.fi-fo-rich-editor trix-editor.prose :where(ol):not(:where([class~=not-prose] *)),.fi-fo-rich-editor trix-editor.prose :where(ul):not(:where([class~=not-prose] *)){padding-inline-end:0!important;padding-inline-start:1.625em!important}.fi-fo-rich-editor trix-editor.prose :where(ul>li):not(:where([class~=not-prose] *)){padding-inline-end:0!important;padding-inline-start:.375em!important}select:not(.choices){background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3E%3Cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3E%3C/svg%3E")}[dir=rtl] select{background-position:left .5rem center!important}.choices{outline:2px solid transparent;outline-offset:2px;position:relative}.choices [hidden]{display:none!important}.choices[data-type*=select-one] .has-no-choices{display:none}.choices[data-type*=select-one] .choices__input{display:block;margin:0;width:100%}.choices__inner{background-repeat:no-repeat;outline:2px solid transparent;outline-offset:2px;padding-bottom:.375rem;padding-inline-end:2rem;padding-top:.375rem;padding-inline-start:.75rem}@media (min-width:640px){.choices__inner{font-size:.875rem;line-height:1.5rem}}.choices__inner{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3E%3Cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3E%3C/svg%3E");background-position:right .5rem center;background-size:1.5em 1.5em}.choices.is-disabled .choices__inner{cursor:default}[dir=rtl] .choices__inner{background-position:left .5rem center}.choices__list--single{display:inline-block}.choices__list--single .choices__item{--tw-text-opacity:1;color:rgba(var(--gray-950),var(--tw-text-opacity))}:is(.dark .choices__list--single .choices__item){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.choices.is-disabled .choices__list--single .choices__item{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}:is(.dark .choices.is-disabled .choices__list--single .choices__item){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.choices__list--multiple{display:flex;flex-wrap:wrap;gap:.375rem}.choices__list--multiple:not(:empty){margin-bottom:.25rem;margin-left:-.25rem;margin-right:-.25rem;padding-bottom:.125rem;padding-top:.125rem}.choices__list--multiple .choices__item{--tw-bg-opacity:1;--tw-text-opacity:1;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-inset:inset;--tw-ring-color:rgba(var(--primary-600),0.1);align-items:center;background-color:rgba(var(--primary-50),var(--tw-bg-opacity));border-radius:.375rem;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);color:rgba(var(--primary-600),var(--tw-text-opacity));display:inline-flex;font-size:.75rem;font-weight:500;gap:.25rem;line-height:1rem;padding:.25rem .5rem;word-break:break-all}:is(.dark .choices__list--multiple .choices__item){--tw-text-opacity:1;--tw-ring-color:rgba(var(--primary-400),0.3);background-color:rgba(var(--primary-400),.1);color:rgba(var(--primary-400),var(--tw-text-opacity))}.choices__list--dropdown,.choices__list[aria-expanded]{--tw-bg-opacity:1;--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color);--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-color:rgba(var(--gray-950),0.05);background-color:rgb(255 255 255/var(--tw-bg-opacity));border-radius:.5rem;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);display:none;font-size:.875rem;line-height:1.25rem;margin-top:.5rem;overflow:hidden;overflow-wrap:break-word;position:absolute;top:100%;width:100%;will-change:visibility;z-index:10}:is(.dark .choices__list--dropdown),:is(.dark .choices__list[aria-expanded]){--tw-bg-opacity:1;--tw-ring-color:hsla(0,0%,100%,.1);background-color:rgba(var(--gray-900),var(--tw-bg-opacity))}.is-active.choices__list--dropdown,.is-active.choices__list[aria-expanded]{display:block;padding:.25rem}.choices__list--dropdown .choices__list,.choices__list[aria-expanded] .choices__list{max-height:15rem;overflow:auto;will-change:scroll-position}.choices__item--choice{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity));padding:.5rem;transition-duration:75ms;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}:is(.dark .choices__item--choice){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.choices__item--choice.choices__item--selectable{--tw-text-opacity:1;border-radius:.375rem;color:rgba(var(--gray-950),var(--tw-text-opacity))}:is(.dark .choices__item--choice.choices__item--selectable){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.choices__list--dropdown .choices__item--selectable.is-highlighted,.choices__list[aria-expanded] .choices__item--selectable.is-highlighted{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}:is(.dark .choices__list--dropdown .choices__item--selectable.is-highlighted),:is(.dark .choices__list[aria-expanded] .choices__item--selectable.is-highlighted){background-color:hsla(0,0%,100%,.05)}.choices__item{cursor:default}.choices__item--disabled{pointer-events:none}.choices__item--disabled:disabled{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}:is(.dark .choices__item--disabled:disabled){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.choices.is-disabled .choices__placeholder.choices__item,.choices__placeholder.choices__item{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity));cursor:default}:is(.dark .choices.is-disabled .choices__placeholder.choices__item),:is(.dark .choices__placeholder.choices__item){--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.choices__button{background-color:transparent;background-position:50%;background-repeat:no-repeat;border-width:0;outline:2px solid transparent;outline-offset:2px;text-indent:-9999px}.choices[data-type*=select-one] .choices__button{height:1rem;inset-inline-end:0;margin-inline-end:2.25rem;opacity:.5;padding:0;position:absolute;transition-duration:75ms;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);width:1rem}:is(.dark .choices[data-type*=select-one] .choices__button){opacity:.4}.choices[data-type*=select-one] .choices__button{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJtMi41OTIuMDQ0IDE4LjM2NCAxOC4zNjQtMi41NDggMi41NDhMLjA0NCAyLjU5MnoiLz48cGF0aCBkPSJNMCAxOC4zNjQgMTguMzY0IDBsMi41NDggMi41NDhMMi41NDggMjAuOTEyeiIvPjwvZz48L3N2Zz4=);background-size:.7142em .7142em;top:calc(50% - .5714em)}.dark .choices[data-type*=select-one] .choices__button{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJtMi41OTIuMDQ0IDE4LjM2NCAxOC4zNjQtMi41NDggMi41NDhMLjA0NCAyLjU5MnoiLz48cGF0aCBkPSJNMCAxOC4zNjQgMTguMzY0IDBsMi41NDggMi41NDhMMi41NDggMjAuOTEyeiIvPjwvZz48L3N2Zz4=)}.choices[data-type*=select-multiple] .choices__button{height:1rem;opacity:.5;width:1rem}:is(.dark .choices[data-type*=select-multiple] .choices__button){opacity:.4}.choices[data-type*=select-multiple] .choices__button{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJtMi41OTIuMDQ0IDE4LjM2NCAxOC4zNjQtMi41NDggMi41NDhMLjA0NCAyLjU5MnoiLz48cGF0aCBkPSJNMCAxOC4zNjQgMTguMzY0IDBsMi41NDggMi41NDhMMi41NDggMjAuOTEyeiIvPjwvZz48L3N2Zz4=);background-size:.7142em .7142em}.dark .choices[data-type*=select-multiple] .choices__button{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJtMi41OTIuMDQ0IDE4LjM2NCAxOC4zNjQtMi41NDggMi41NDhMLjA0NCAyLjU5MnoiLz48cGF0aCBkPSJNMCAxOC4zNjQgMTguMzY0IDBsMi41NDggMi41NDhMMi41NDggMjAuOTEyeiIvPjwvZz48L3N2Zz4=)}.choices[data-type*=select-multiple] .choices__button:focus-visible,.choices[data-type*=select-multiple] .choices__button:hover,.choices[data-type*=select-one] .choices__button:focus-visible,.choices[data-type*=select-one] .choices__button:hover{opacity:.7}:is(.dark .choices[data-type*=select-multiple] .choices__button:focus-visible),:is(.dark .choices[data-type*=select-multiple] .choices__button:hover),:is(.dark .choices[data-type*=select-one] .choices__button:focus-visible),:is(.dark .choices[data-type*=select-one] .choices__button:hover){opacity:.6}.choices.is-disabled .choices__button,.choices[data-type*=select-one] .choices__item[data-value=""] .choices__button{display:none}.choices__input{--tw-text-opacity:1;background-color:transparent!important;border-style:none;color:rgba(var(--gray-950),var(--tw-text-opacity));font-size:1rem!important;line-height:1.5rem!important;padding:0!important;transition-duration:75ms;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.choices__input::-moz-placeholder{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.choices__input::placeholder{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.choices__input:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)!important;--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color)!important;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)!important}.choices__input:disabled{--tw-text-opacity:1;-webkit-text-fill-color:rgba(var(--gray-500),1);color:rgba(var(--gray-500),var(--tw-text-opacity))}:is(.dark .choices__input){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}:is(.dark .choices__input)::-moz-placeholder{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}:is(.dark .choices__input)::placeholder{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}:is(.dark .choices__input:disabled){--tw-text-opacity:1;-webkit-text-fill-color:rgba(var(--gray-400),1);color:rgba(var(--gray-400),var(--tw-text-opacity))}@media (min-width:640px){.choices__input{font-size:.875rem!important;line-height:1.5rem}}.choices__list--dropdown .choices__input{padding:.5rem!important}.choices__input::-webkit-search-cancel-button,.choices__input::-webkit-search-decoration,.choices__input::-webkit-search-results-button,.choices__input::-webkit-search-results-decoration{display:none}.choices__input::-ms-clear,.choices__input::-ms-reveal{display:none;height:0;width:0}.choices__group{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity));padding:1rem .5rem .5rem}.choices__group:first-child{padding-top:.5rem}:is(.dark .choices__group){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.webkit-calendar-picker-indicator\:opacity-0::-webkit-calendar-picker-indicator{opacity:0}/*! Bundled license information: cropperjs/dist/cropper.min.css: (*! diff --git a/public/js/filament/support/support.js b/public/js/filament/support/support.js index 73ad79856..d869ff9e1 100644 --- a/public/js/filament/support/support.js +++ b/public/js/filament/support/support.js @@ -22,7 +22,7 @@ `,"Instead, pass the .innerHTML of the element, or use a function that","returns a cloned version of the element instead.",` `,`1) content: element.innerHTML -`,"2) content: () => element.cloneNode(true)"].join(" "));var se=k.reduce(function(G,te){var le=te&&tn(te,C);return le&&G.push(le),G},[]);return Z(f)?se[0]:se}lt.defaultProps=Ke,lt.setDefaultProps=Nr,lt.currentInput=Te;var rr=function(h){var y=h===void 0?{}:h,C=y.exclude,k=y.duration;vn.forEach(function(M){var _=!1;if(C&&(_=ae(C)?M.reference===C:M.popper===C.popper),!_){var se=M.props.duration;M.setProps({duration:k}),M.hide(),M.state.isDestroyed||M.setProps({duration:se})}})},or=Object.assign({},t.applyStyles,{effect:function(h){var y=h.state,C={popper:{position:y.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};Object.assign(y.elements.popper.style,C.popper),y.styles=C,y.elements.arrow&&Object.assign(y.elements.arrow.style,C.arrow)}}),ir=function(h,y){var C;y===void 0&&(y={}),jt(!Array.isArray(h),["The first argument passed to createSingleton() must be an array of","tippy instances. The passed value was",String(h)].join(" "));var k=h,M=[],_,se=y.overrides,G=[],te=!1;function le(){M=k.map(function($){return $.reference})}function Oe($){k.forEach(function(Y){$?Y.enable():Y.disable()})}function Ne($){return k.map(function(Y){var g=Y.setProps;return Y.setProps=function(Ye){g(Ye),Y.reference===_&&$.setProps(Ye)},function(){Y.setProps=g}})}function be($,Y){var g=M.indexOf(Y);if(Y!==_){_=Y;var Ye=(se||[]).concat("content").reduce(function(Q,Ct){return Q[Ct]=k[g].props[Ct],Q},{});$.setProps(Object.assign({},Ye,{getReferenceClientRect:typeof Ye.getReferenceClientRect=="function"?Ye.getReferenceClientRect:function(){return Y.getBoundingClientRect()}}))}}Oe(!1),le();var _e={fn:function(){return{onDestroy:function(){Oe(!0)},onHidden:function(){_=null},onClickOutside:function(g){g.props.showOnCreate&&!te&&(te=!0,_=null)},onShow:function(g){g.props.showOnCreate&&!te&&(te=!0,be(g,M[0]))},onTrigger:function(g,Ye){be(g,Ye.currentTarget)}}}},X=lt(ee(),Object.assign({},S(y,["overrides"]),{plugins:[_e].concat(y.plugins||[]),triggerTarget:M,popperOptions:Object.assign({},y.popperOptions,{modifiers:[].concat(((C=y.popperOptions)==null?void 0:C.modifiers)||[],[or])})})),ne=X.show;X.show=function($){if(ne(),!_&&$==null)return be(X,M[0]);if(!(_&&$==null)){if(typeof $=="number")return M[$]&&be(X,M[$]);if(k.includes($)){var Y=$.reference;return be(X,Y)}if(M.includes($))return be(X,$)}},X.showNext=function(){var $=M[0];if(!_)return X.show(0);var Y=M.indexOf(_);X.show(M[Y+1]||$)},X.showPrevious=function(){var $=M[M.length-1];if(!_)return X.show($);var Y=M.indexOf(_),g=M[Y-1]||$;X.show(g)};var re=X.setProps;return X.setProps=function($){se=$.overrides||se,re($)},X.setInstances=function($){Oe(!0),G.forEach(function(Y){return Y()}),k=$,Oe(!1),le(),Ne(X),X.setProps({triggerTarget:M})},G=Ne(X),X},ar={mouseover:"mouseenter",focusin:"focus",click:"click"};function Ht(f,h){jt(!(h&&h.target),["You must specity a `target` prop indicating a CSS selector string matching","the target elements that should receive a tippy."].join(" "));var y=[],C=[],k=!1,M=h.target,_=S(h,["target"]),se=Object.assign({},_,{trigger:"manual",touch:!1}),G=Object.assign({},_,{showOnCreate:!0}),te=lt(f,se),le=B(te);function Oe(ne){if(!(!ne.target||k)){var re=ne.target.closest(M);if(re){var $=re.getAttribute("data-tippy-trigger")||h.trigger||Ke.trigger;if(!re._tippy&&!(ne.type==="touchstart"&&typeof G.touch=="boolean")&&!(ne.type!=="touchstart"&&$.indexOf(ar[ne.type])<0)){var Y=lt(re,G);Y&&(C=C.concat(Y))}}}}function Ne(ne,re,$,Y){Y===void 0&&(Y=!1),ne.addEventListener(re,$,Y),y.push({node:ne,eventType:re,handler:$,options:Y})}function be(ne){var re=ne.reference;Ne(re,"touchstart",Oe,u),Ne(re,"mouseover",Oe),Ne(re,"focusin",Oe),Ne(re,"click",Oe)}function _e(){y.forEach(function(ne){var re=ne.node,$=ne.eventType,Y=ne.handler,g=ne.options;re.removeEventListener($,Y,g)}),y=[]}function X(ne){var re=ne.destroy,$=ne.enable,Y=ne.disable;ne.destroy=function(g){g===void 0&&(g=!0),g&&C.forEach(function(Ye){Ye.destroy()}),C=[],_e(),re()},ne.enable=function(){$(),C.forEach(function(g){return g.enable()}),k=!1},ne.disable=function(){Y(),C.forEach(function(g){return g.disable()}),k=!0},be(ne)}return le.forEach(X),te}var sr={name:"animateFill",defaultValue:!1,fn:function(h){var y;if(!((y=h.props.render)!=null&&y.$$tippy))return jt(h.props.animateFill,"The `animateFill` plugin requires the default render function."),{};var C=Ft(h.popper),k=C.box,M=C.content,_=h.props.animateFill?jr():null;return{onCreate:function(){_&&(k.insertBefore(_,k.firstElementChild),k.setAttribute("data-animatefill",""),k.style.overflow="hidden",h.setProps({arrow:!1,animation:"shift-away"}))},onMount:function(){if(_){var G=k.style.transitionDuration,te=Number(G.replace("ms",""));M.style.transitionDelay=Math.round(te/10)+"ms",_.style.transitionDuration=G,pe([_],"visible")}},onShow:function(){_&&(_.style.transitionDuration="0ms")},onHide:function(){_&&pe([_],"hidden")}}}};function jr(){var f=ee();return f.className=o,pe([f],"hidden"),f}var gn={clientX:0,clientY:0},nn=[];function mn(f){var h=f.clientX,y=f.clientY;gn={clientX:h,clientY:y}}function bn(f){f.addEventListener("mousemove",mn)}function Br(f){f.removeEventListener("mousemove",mn)}var Mn={name:"followCursor",defaultValue:!1,fn:function(h){var y=h.reference,C=ve(h.props.triggerTarget||y),k=!1,M=!1,_=!0,se=h.props;function G(){return h.props.followCursor==="initial"&&h.state.isVisible}function te(){C.addEventListener("mousemove",Ne)}function le(){C.removeEventListener("mousemove",Ne)}function Oe(){k=!0,h.setProps({getReferenceClientRect:null}),k=!1}function Ne(X){var ne=X.target?y.contains(X.target):!0,re=h.props.followCursor,$=X.clientX,Y=X.clientY,g=y.getBoundingClientRect(),Ye=$-g.left,Q=Y-g.top;(ne||!h.props.interactive)&&h.setProps({getReferenceClientRect:function(){var dt=y.getBoundingClientRect(),$t=$,Wt=Y;re==="initial"&&($t=dt.left+Ye,Wt=dt.top+Q);var Vt=re==="horizontal"?dt.top:Wt,Ze=re==="vertical"?dt.right:$t,ot=re==="horizontal"?dt.bottom:Wt,pt=re==="vertical"?dt.left:$t;return{width:Ze-pt,height:ot-Vt,top:Vt,right:Ze,bottom:ot,left:pt}}})}function be(){h.props.followCursor&&(nn.push({instance:h,doc:C}),bn(C))}function _e(){nn=nn.filter(function(X){return X.instance!==h}),nn.filter(function(X){return X.doc===C}).length===0&&Br(C)}return{onCreate:be,onDestroy:_e,onBeforeUpdate:function(){se=h.props},onAfterUpdate:function(ne,re){var $=re.followCursor;k||$!==void 0&&se.followCursor!==$&&(_e(),$?(be(),h.state.isMounted&&!M&&!G()&&te()):(le(),Oe()))},onMount:function(){h.props.followCursor&&!M&&(_&&(Ne(gn),_=!1),G()||te())},onTrigger:function(ne,re){N(re)&&(gn={clientX:re.clientX,clientY:re.clientY}),M=re.type==="focus"},onHidden:function(){h.props.followCursor&&(Oe(),le(),_=!0)}}}};function Fr(f,h){var y;return{popperOptions:Object.assign({},f.popperOptions,{modifiers:[].concat((((y=f.popperOptions)==null?void 0:y.modifiers)||[]).filter(function(C){var k=C.name;return k!==h.name}),[h])})}}var Rn={name:"inlinePositioning",defaultValue:!1,fn:function(h){var y=h.reference;function C(){return!!h.props.inlinePositioning}var k,M=-1,_=!1,se={name:"tippyInlinePositioning",enabled:!0,phase:"afterWrite",fn:function(Ne){var be=Ne.state;C()&&(k!==be.placement&&h.setProps({getReferenceClientRect:function(){return G(be.placement)}}),k=be.placement)}};function G(Oe){return Hr(K(Oe),y.getBoundingClientRect(),V(y.getClientRects()),M)}function te(Oe){_=!0,h.setProps(Oe),_=!1}function le(){_||te(Fr(h.props,se))}return{onCreate:le,onAfterUpdate:le,onTrigger:function(Ne,be){if(N(be)){var _e=V(h.reference.getClientRects()),X=_e.find(function(ne){return ne.left-2<=be.clientX&&ne.right+2>=be.clientX&&ne.top-2<=be.clientY&&ne.bottom+2>=be.clientY});M=_e.indexOf(X)}},onUntrigger:function(){M=-1}}}};function Hr(f,h,y,C){if(y.length<2||f===null)return h;if(y.length===2&&C>=0&&y[0].left>y[1].right)return y[C]||h;switch(f){case"top":case"bottom":{var k=y[0],M=y[y.length-1],_=f==="top",se=k.top,G=M.bottom,te=_?k.left:M.left,le=_?k.right:M.right,Oe=le-te,Ne=G-se;return{top:se,bottom:G,left:te,right:le,width:Oe,height:Ne}}case"left":case"right":{var be=Math.min.apply(Math,y.map(function(Q){return Q.left})),_e=Math.max.apply(Math,y.map(function(Q){return Q.right})),X=y.filter(function(Q){return f==="left"?Q.left===be:Q.right===_e}),ne=X[0].top,re=X[X.length-1].bottom,$=be,Y=_e,g=Y-$,Ye=re-ne;return{top:ne,bottom:re,left:$,right:Y,width:g,height:Ye}}default:return h}}var $r={name:"sticky",defaultValue:!1,fn:function(h){var y=h.reference,C=h.popper;function k(){return h.popperInstance?h.popperInstance.state.elements.reference:y}function M(te){return h.props.sticky===!0||h.props.sticky===te}var _=null,se=null;function G(){var te=M("reference")?k().getBoundingClientRect():null,le=M("popper")?C.getBoundingClientRect():null;(te&&In(_,te)||le&&In(se,le))&&h.popperInstance&&h.popperInstance.update(),_=te,se=le,h.state.isMounted&&requestAnimationFrame(G)}return{onMount:function(){h.props.sticky&&G()}}}};function In(f,h){return f&&h?f.top!==h.top||f.right!==h.right||f.bottom!==h.bottom||f.left!==h.left:!0}lt.setDefaultProps({render:tr}),e.animateFill=sr,e.createSingleton=ir,e.default=lt,e.delegate=Ht,e.followCursor=Mn,e.hideAll=rr,e.inlinePositioning=Rn,e.roundArrow=n,e.sticky=$r}),mo=Oi(Si()),Va=Oi(Si()),Ua=e=>{let t={plugins:[]},n=r=>e[e.indexOf(r)+1];if(e.includes("animation")&&(t.animation=n("animation")),e.includes("duration")&&(t.duration=parseInt(n("duration"))),e.includes("delay")){let r=n("delay");t.delay=r.includes("-")?r.split("-").map(i=>parseInt(i)):parseInt(r)}if(e.includes("cursor")){t.plugins.push(Va.followCursor);let r=n("cursor");["x","initial"].includes(r)?t.followCursor=r==="x"?"horizontal":"initial":t.followCursor=!0}return e.includes("on")&&(t.trigger=n("on")),e.includes("arrowless")&&(t.arrow=!1),e.includes("html")&&(t.allowHTML=!0),e.includes("interactive")&&(t.interactive=!0),e.includes("border")&&t.interactive&&(t.interactiveBorder=parseInt(n("border"))),e.includes("debounce")&&t.interactive&&(t.interactiveDebounce=parseInt(n("debounce"))),e.includes("max-width")&&(t.maxWidth=parseInt(n("max-width"))),e.includes("theme")&&(t.theme=n("theme")),e.includes("placement")&&(t.placement=n("placement")),t};function bo(e){e.magic("tooltip",t=>(n,r={})=>{let i=r.timeout;delete r.timeout;let o=(0,mo.default)(t,{content:n,trigger:"manual",...r});o.show(),setTimeout(()=>{o.hide(),setTimeout(()=>o.destroy(),r.duration||300)},i||2e3)}),e.directive("tooltip",(t,{modifiers:n,expression:r},{evaluateLater:i,effect:o})=>{let s=n.length>0?Ua(n):{};t.__x_tippy||(t.__x_tippy=(0,mo.default)(t,s));let c=()=>t.__x_tippy.enable(),u=()=>t.__x_tippy.disable(),p=m=>{m?(c(),t.__x_tippy.setContent(m)):u()};if(n.includes("raw"))p(r);else{let m=i(r);o(()=>{m(v=>{typeof v=="object"?(t.__x_tippy.setProps(v),c()):p(v)})})}})}bo.defaultProps=e=>(mo.default.setDefaultProps(e),bo);var Xa=bo,Ai=Xa;document.addEventListener("alpine:init",()=>{window.Alpine.plugin(Ko),window.Alpine.plugin(Jo),window.Alpine.plugin(Ei),window.Alpine.plugin(Ai)});var Ya=function(e,t,n){function r(m,v){for(let b of m){let O=i(b,v);if(O!==null)return O}}function i(m,v){let b=m.match(/^[\{\[]([^\[\]\{\}]*)[\}\]](.*)/s);if(b===null||b.length!==3)return null;let O=b[1],S=b[2];if(O.includes(",")){let[A,B]=O.split(",",2);if(B==="*"&&v>=A)return S;if(A==="*"&&v<=B)return S;if(v>=A&&v<=B)return S}return O==v?S:null}function o(m){return m.toString().charAt(0).toUpperCase()+m.toString().slice(1)}function s(m,v){if(v.length===0)return m;let b={};for(let[O,S]of Object.entries(v))b[":"+o(O??"")]=o(S??""),b[":"+O.toUpperCase()]=S.toString().toUpperCase(),b[":"+O]=S;return Object.entries(b).forEach(([O,S])=>{m=m.replaceAll(O,S)}),m}function c(m){return m.map(v=>v.replace(/^[\{\[]([^\[\]\{\}]*)[\}\]]/,""))}let u=e.split("|"),p=r(u,t);return p!=null?s(p.trim(),n):(u=c(u),s(u.length>1&&t>1?u[1]:u[0],n))};window.pluralize=Ya;})(); +`,"2) content: () => element.cloneNode(true)"].join(" "));var se=k.reduce(function(G,te){var le=te&&tn(te,C);return le&&G.push(le),G},[]);return Z(f)?se[0]:se}lt.defaultProps=Ke,lt.setDefaultProps=Nr,lt.currentInput=Te;var rr=function(h){var y=h===void 0?{}:h,C=y.exclude,k=y.duration;vn.forEach(function(M){var _=!1;if(C&&(_=ae(C)?M.reference===C:M.popper===C.popper),!_){var se=M.props.duration;M.setProps({duration:k}),M.hide(),M.state.isDestroyed||M.setProps({duration:se})}})},or=Object.assign({},t.applyStyles,{effect:function(h){var y=h.state,C={popper:{position:y.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};Object.assign(y.elements.popper.style,C.popper),y.styles=C,y.elements.arrow&&Object.assign(y.elements.arrow.style,C.arrow)}}),ir=function(h,y){var C;y===void 0&&(y={}),jt(!Array.isArray(h),["The first argument passed to createSingleton() must be an array of","tippy instances. The passed value was",String(h)].join(" "));var k=h,M=[],_,se=y.overrides,G=[],te=!1;function le(){M=k.map(function($){return $.reference})}function Oe($){k.forEach(function(Y){$?Y.enable():Y.disable()})}function Ne($){return k.map(function(Y){var g=Y.setProps;return Y.setProps=function(Ye){g(Ye),Y.reference===_&&$.setProps(Ye)},function(){Y.setProps=g}})}function be($,Y){var g=M.indexOf(Y);if(Y!==_){_=Y;var Ye=(se||[]).concat("content").reduce(function(Q,Ct){return Q[Ct]=k[g].props[Ct],Q},{});$.setProps(Object.assign({},Ye,{getReferenceClientRect:typeof Ye.getReferenceClientRect=="function"?Ye.getReferenceClientRect:function(){return Y.getBoundingClientRect()}}))}}Oe(!1),le();var _e={fn:function(){return{onDestroy:function(){Oe(!0)},onHidden:function(){_=null},onClickOutside:function(g){g.props.showOnCreate&&!te&&(te=!0,_=null)},onShow:function(g){g.props.showOnCreate&&!te&&(te=!0,be(g,M[0]))},onTrigger:function(g,Ye){be(g,Ye.currentTarget)}}}},X=lt(ee(),Object.assign({},S(y,["overrides"]),{plugins:[_e].concat(y.plugins||[]),triggerTarget:M,popperOptions:Object.assign({},y.popperOptions,{modifiers:[].concat(((C=y.popperOptions)==null?void 0:C.modifiers)||[],[or])})})),ne=X.show;X.show=function($){if(ne(),!_&&$==null)return be(X,M[0]);if(!(_&&$==null)){if(typeof $=="number")return M[$]&&be(X,M[$]);if(k.includes($)){var Y=$.reference;return be(X,Y)}if(M.includes($))return be(X,$)}},X.showNext=function(){var $=M[0];if(!_)return X.show(0);var Y=M.indexOf(_);X.show(M[Y+1]||$)},X.showPrevious=function(){var $=M[M.length-1];if(!_)return X.show($);var Y=M.indexOf(_),g=M[Y-1]||$;X.show(g)};var re=X.setProps;return X.setProps=function($){se=$.overrides||se,re($)},X.setInstances=function($){Oe(!0),G.forEach(function(Y){return Y()}),k=$,Oe(!1),le(),Ne(X),X.setProps({triggerTarget:M})},G=Ne(X),X},ar={mouseover:"mouseenter",focusin:"focus",click:"click"};function Ht(f,h){jt(!(h&&h.target),["You must specity a `target` prop indicating a CSS selector string matching","the target elements that should receive a tippy."].join(" "));var y=[],C=[],k=!1,M=h.target,_=S(h,["target"]),se=Object.assign({},_,{trigger:"manual",touch:!1}),G=Object.assign({},_,{showOnCreate:!0}),te=lt(f,se),le=B(te);function Oe(ne){if(!(!ne.target||k)){var re=ne.target.closest(M);if(re){var $=re.getAttribute("data-tippy-trigger")||h.trigger||Ke.trigger;if(!re._tippy&&!(ne.type==="touchstart"&&typeof G.touch=="boolean")&&!(ne.type!=="touchstart"&&$.indexOf(ar[ne.type])<0)){var Y=lt(re,G);Y&&(C=C.concat(Y))}}}}function Ne(ne,re,$,Y){Y===void 0&&(Y=!1),ne.addEventListener(re,$,Y),y.push({node:ne,eventType:re,handler:$,options:Y})}function be(ne){var re=ne.reference;Ne(re,"touchstart",Oe,u),Ne(re,"mouseover",Oe),Ne(re,"focusin",Oe),Ne(re,"click",Oe)}function _e(){y.forEach(function(ne){var re=ne.node,$=ne.eventType,Y=ne.handler,g=ne.options;re.removeEventListener($,Y,g)}),y=[]}function X(ne){var re=ne.destroy,$=ne.enable,Y=ne.disable;ne.destroy=function(g){g===void 0&&(g=!0),g&&C.forEach(function(Ye){Ye.destroy()}),C=[],_e(),re()},ne.enable=function(){$(),C.forEach(function(g){return g.enable()}),k=!1},ne.disable=function(){Y(),C.forEach(function(g){return g.disable()}),k=!0},be(ne)}return le.forEach(X),te}var sr={name:"animateFill",defaultValue:!1,fn:function(h){var y;if(!((y=h.props.render)!=null&&y.$$tippy))return jt(h.props.animateFill,"The `animateFill` plugin requires the default render function."),{};var C=Ft(h.popper),k=C.box,M=C.content,_=h.props.animateFill?jr():null;return{onCreate:function(){_&&(k.insertBefore(_,k.firstElementChild),k.setAttribute("data-animatefill",""),k.style.overflow="hidden",h.setProps({arrow:!1,animation:"shift-away"}))},onMount:function(){if(_){var G=k.style.transitionDuration,te=Number(G.replace("ms",""));M.style.transitionDelay=Math.round(te/10)+"ms",_.style.transitionDuration=G,pe([_],"visible")}},onShow:function(){_&&(_.style.transitionDuration="0ms")},onHide:function(){_&&pe([_],"hidden")}}}};function jr(){var f=ee();return f.className=o,pe([f],"hidden"),f}var gn={clientX:0,clientY:0},nn=[];function mn(f){var h=f.clientX,y=f.clientY;gn={clientX:h,clientY:y}}function bn(f){f.addEventListener("mousemove",mn)}function Br(f){f.removeEventListener("mousemove",mn)}var Mn={name:"followCursor",defaultValue:!1,fn:function(h){var y=h.reference,C=ve(h.props.triggerTarget||y),k=!1,M=!1,_=!0,se=h.props;function G(){return h.props.followCursor==="initial"&&h.state.isVisible}function te(){C.addEventListener("mousemove",Ne)}function le(){C.removeEventListener("mousemove",Ne)}function Oe(){k=!0,h.setProps({getReferenceClientRect:null}),k=!1}function Ne(X){var ne=X.target?y.contains(X.target):!0,re=h.props.followCursor,$=X.clientX,Y=X.clientY,g=y.getBoundingClientRect(),Ye=$-g.left,Q=Y-g.top;(ne||!h.props.interactive)&&h.setProps({getReferenceClientRect:function(){var dt=y.getBoundingClientRect(),$t=$,Wt=Y;re==="initial"&&($t=dt.left+Ye,Wt=dt.top+Q);var Vt=re==="horizontal"?dt.top:Wt,Ze=re==="vertical"?dt.right:$t,ot=re==="horizontal"?dt.bottom:Wt,pt=re==="vertical"?dt.left:$t;return{width:Ze-pt,height:ot-Vt,top:Vt,right:Ze,bottom:ot,left:pt}}})}function be(){h.props.followCursor&&(nn.push({instance:h,doc:C}),bn(C))}function _e(){nn=nn.filter(function(X){return X.instance!==h}),nn.filter(function(X){return X.doc===C}).length===0&&Br(C)}return{onCreate:be,onDestroy:_e,onBeforeUpdate:function(){se=h.props},onAfterUpdate:function(ne,re){var $=re.followCursor;k||$!==void 0&&se.followCursor!==$&&(_e(),$?(be(),h.state.isMounted&&!M&&!G()&&te()):(le(),Oe()))},onMount:function(){h.props.followCursor&&!M&&(_&&(Ne(gn),_=!1),G()||te())},onTrigger:function(ne,re){N(re)&&(gn={clientX:re.clientX,clientY:re.clientY}),M=re.type==="focus"},onHidden:function(){h.props.followCursor&&(Oe(),le(),_=!0)}}}};function Fr(f,h){var y;return{popperOptions:Object.assign({},f.popperOptions,{modifiers:[].concat((((y=f.popperOptions)==null?void 0:y.modifiers)||[]).filter(function(C){var k=C.name;return k!==h.name}),[h])})}}var Rn={name:"inlinePositioning",defaultValue:!1,fn:function(h){var y=h.reference;function C(){return!!h.props.inlinePositioning}var k,M=-1,_=!1,se={name:"tippyInlinePositioning",enabled:!0,phase:"afterWrite",fn:function(Ne){var be=Ne.state;C()&&(k!==be.placement&&h.setProps({getReferenceClientRect:function(){return G(be.placement)}}),k=be.placement)}};function G(Oe){return Hr(K(Oe),y.getBoundingClientRect(),V(y.getClientRects()),M)}function te(Oe){_=!0,h.setProps(Oe),_=!1}function le(){_||te(Fr(h.props,se))}return{onCreate:le,onAfterUpdate:le,onTrigger:function(Ne,be){if(N(be)){var _e=V(h.reference.getClientRects()),X=_e.find(function(ne){return ne.left-2<=be.clientX&&ne.right+2>=be.clientX&&ne.top-2<=be.clientY&&ne.bottom+2>=be.clientY});M=_e.indexOf(X)}},onUntrigger:function(){M=-1}}}};function Hr(f,h,y,C){if(y.length<2||f===null)return h;if(y.length===2&&C>=0&&y[0].left>y[1].right)return y[C]||h;switch(f){case"top":case"bottom":{var k=y[0],M=y[y.length-1],_=f==="top",se=k.top,G=M.bottom,te=_?k.left:M.left,le=_?k.right:M.right,Oe=le-te,Ne=G-se;return{top:se,bottom:G,left:te,right:le,width:Oe,height:Ne}}case"left":case"right":{var be=Math.min.apply(Math,y.map(function(Q){return Q.left})),_e=Math.max.apply(Math,y.map(function(Q){return Q.right})),X=y.filter(function(Q){return f==="left"?Q.left===be:Q.right===_e}),ne=X[0].top,re=X[X.length-1].bottom,$=be,Y=_e,g=Y-$,Ye=re-ne;return{top:ne,bottom:re,left:$,right:Y,width:g,height:Ye}}default:return h}}var $r={name:"sticky",defaultValue:!1,fn:function(h){var y=h.reference,C=h.popper;function k(){return h.popperInstance?h.popperInstance.state.elements.reference:y}function M(te){return h.props.sticky===!0||h.props.sticky===te}var _=null,se=null;function G(){var te=M("reference")?k().getBoundingClientRect():null,le=M("popper")?C.getBoundingClientRect():null;(te&&In(_,te)||le&&In(se,le))&&h.popperInstance&&h.popperInstance.update(),_=te,se=le,h.state.isMounted&&requestAnimationFrame(G)}return{onMount:function(){h.props.sticky&&G()}}}};function In(f,h){return f&&h?f.top!==h.top||f.right!==h.right||f.bottom!==h.bottom||f.left!==h.left:!0}lt.setDefaultProps({render:tr}),e.animateFill=sr,e.createSingleton=ir,e.default=lt,e.delegate=Ht,e.followCursor=Mn,e.hideAll=rr,e.inlinePositioning=Rn,e.roundArrow=n,e.sticky=$r}),mo=Oi(Si()),Va=Oi(Si()),Ua=e=>{let t={plugins:[]},n=i=>e[e.indexOf(i)+1];if(e.includes("animation")&&(t.animation=n("animation")),e.includes("duration")&&(t.duration=parseInt(n("duration"))),e.includes("delay")){let i=n("delay");t.delay=i.includes("-")?i.split("-").map(o=>parseInt(o)):parseInt(i)}if(e.includes("cursor")){t.plugins.push(Va.followCursor);let i=n("cursor");["x","initial"].includes(i)?t.followCursor=i==="x"?"horizontal":"initial":t.followCursor=!0}e.includes("on")&&(t.trigger=n("on")),e.includes("arrowless")&&(t.arrow=!1),e.includes("html")&&(t.allowHTML=!0),e.includes("interactive")&&(t.interactive=!0),e.includes("border")&&t.interactive&&(t.interactiveBorder=parseInt(n("border"))),e.includes("debounce")&&t.interactive&&(t.interactiveDebounce=parseInt(n("debounce"))),e.includes("max-width")&&(t.maxWidth=parseInt(n("max-width"))),e.includes("theme")&&(t.theme=n("theme")),e.includes("placement")&&(t.placement=n("placement"));let r={};return e.includes("no-flip")&&(r.modifiers||(r.modifiers=[]),r.modifiers.push({name:"flip",enabled:!1})),t.popperOptions=r,t};function bo(e){e.magic("tooltip",t=>(n,r={})=>{let i=r.timeout;delete r.timeout;let o=(0,mo.default)(t,{content:n,trigger:"manual",...r});o.show(),setTimeout(()=>{o.hide(),setTimeout(()=>o.destroy(),r.duration||300)},i||2e3)}),e.directive("tooltip",(t,{modifiers:n,expression:r},{evaluateLater:i,effect:o})=>{let s=n.length>0?Ua(n):{};t.__x_tippy||(t.__x_tippy=(0,mo.default)(t,s));let c=()=>t.__x_tippy.enable(),u=()=>t.__x_tippy.disable(),p=m=>{m?(c(),t.__x_tippy.setContent(m)):u()};if(n.includes("raw"))p(r);else{let m=i(r);o(()=>{m(v=>{typeof v=="object"?(t.__x_tippy.setProps(v),c()):p(v)})})}})}bo.defaultProps=e=>(mo.default.setDefaultProps(e),bo);var Xa=bo,Ai=Xa;document.addEventListener("alpine:init",()=>{window.Alpine.plugin(Ko),window.Alpine.plugin(Jo),window.Alpine.plugin(Ei),window.Alpine.plugin(Ai)});var Ya=function(e,t,n){function r(m,v){for(let b of m){let O=i(b,v);if(O!==null)return O}}function i(m,v){let b=m.match(/^[\{\[]([^\[\]\{\}]*)[\}\]](.*)/s);if(b===null||b.length!==3)return null;let O=b[1],S=b[2];if(O.includes(",")){let[A,B]=O.split(",",2);if(B==="*"&&v>=A)return S;if(A==="*"&&v<=B)return S;if(v>=A&&v<=B)return S}return O==v?S:null}function o(m){return m.toString().charAt(0).toUpperCase()+m.toString().slice(1)}function s(m,v){if(v.length===0)return m;let b={};for(let[O,S]of Object.entries(v))b[":"+o(O??"")]=o(S??""),b[":"+O.toUpperCase()]=S.toString().toUpperCase(),b[":"+O]=S;return Object.entries(b).forEach(([O,S])=>{m=m.replaceAll(O,S)}),m}function c(m){return m.map(v=>v.replace(/^[\{\[]([^\[\]\{\}]*)[\}\]]/,""))}let u=e.split("|"),p=r(u,t);return p!=null?s(p.trim(),n):(u=c(u),s(u.length>1&&t>1?u[1]:u[0],n))};window.pluralize=Ya;})(); /*! Bundled license information: sortablejs/modular/sortable.esm.js: From 4dd1c733a427f612f25d00d83b312e8443ce4794 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josip=20Crnkovi=C4=87?= Date: Mon, 15 Jan 2024 13:52:41 +0100 Subject: [PATCH 086/145] feat: fetch total volume for collections (#587) --- .../Commands/FetchCollectionTotalVolume.php | 41 +++++++ app/Console/Kernel.php | 10 +- app/Data/Collections/CollectionDetailData.php | 2 +- .../Client/Opensea/OpenseaPendingRequest.php | 29 ++++- app/Jobs/FetchCollectionTotalVolume.php | 53 +++++++++ app/Jobs/RefreshWalletCollections.php | 1 + app/Support/Facades/Opensea.php | 2 + ...tal_volume_column_to_collections_table.php | 20 ++++ .../FetchCollectionTotalVolumeTest.php | 102 ++++++++++++++++++ .../Opensea/OpenseaPendingRequestTest.php | 35 ++++++ .../Jobs/FetchCollectionTotalVolumeTest.php | 49 +++++++++ .../App/Jobs/RefreshWalletCollectionsTest.php | 2 +- 12 files changed, 342 insertions(+), 4 deletions(-) create mode 100644 app/Console/Commands/FetchCollectionTotalVolume.php create mode 100644 app/Jobs/FetchCollectionTotalVolume.php create mode 100644 database/migrations/2024_01_10_121726_add_total_volume_column_to_collections_table.php create mode 100644 tests/App/Console/Commands/FetchCollectionTotalVolumeTest.php create mode 100644 tests/App/Jobs/FetchCollectionTotalVolumeTest.php diff --git a/app/Console/Commands/FetchCollectionTotalVolume.php b/app/Console/Commands/FetchCollectionTotalVolume.php new file mode 100644 index 000000000..6a5506ef8 --- /dev/null +++ b/app/Console/Commands/FetchCollectionTotalVolume.php @@ -0,0 +1,41 @@ + $query->whereNotNull('extra_attributes->opensea_slug'); + + $this->forEachCollection(function ($collection) { + FetchCollectionTotalVolumeJob::dispatch($collection); + }, queryCallback: $queryCallback); + + return Command::SUCCESS; + } +} diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php index c29374854..5700f9fa1 100644 --- a/app/Console/Kernel.php +++ b/app/Console/Kernel.php @@ -11,6 +11,7 @@ use App\Console\Commands\FetchCollectionMetadata; use App\Console\Commands\FetchCollectionNfts; use App\Console\Commands\FetchCollectionOpenseaSlug; +use App\Console\Commands\FetchCollectionTotalVolume; use App\Console\Commands\FetchEnsDetails; use App\Console\Commands\FetchNativeBalances; use App\Console\Commands\FetchTokens; @@ -115,12 +116,19 @@ protected function schedule(Schedule $schedule): void private function scheduleJobsForCollectionsOrGalleries(Schedule $schedule): void { $schedule - // Command only fetches collections that doesn't have a slug yet + // Command only fetches collections that don't have a slug yet // so in most cases it will not run any request ->command(FetchCollectionOpenseaSlug::class) ->withoutOverlapping() ->hourly(); + $schedule + // Command only fetches collections that don't have a slug yet + // so in most cases it will not run any request + ->command(FetchCollectionTotalVolume::class) + ->withoutOverlapping() + ->daily(); + $schedule ->command(FetchCollectionActivity::class) ->withoutOverlapping() diff --git a/app/Data/Collections/CollectionDetailData.php b/app/Data/Collections/CollectionDetailData.php index ceb47326f..007eb6e76 100644 --- a/app/Data/Collections/CollectionDetailData.php +++ b/app/Data/Collections/CollectionDetailData.php @@ -70,7 +70,7 @@ public static function fromModel(Collection $collection, ?CurrencyCode $currency twitter: $collection->twitter(), discord: $collection->discord(), supply: $collection->supply, - volume: $collection->volume, + volume: $collection->total_volume, owners: $collection->owners, nftsCount: $collection->nfts()->when($user !== null, fn ($q) => $q->ownedBy($user))->count(), mintedAt: $collection->minted_at?->getTimestampMs(), diff --git a/app/Http/Client/Opensea/OpenseaPendingRequest.php b/app/Http/Client/Opensea/OpenseaPendingRequest.php index 855010175..e76a03814 100644 --- a/app/Http/Client/Opensea/OpenseaPendingRequest.php +++ b/app/Http/Client/Opensea/OpenseaPendingRequest.php @@ -11,6 +11,7 @@ use App\Exceptions\ConnectionException; use App\Exceptions\RateLimitException; use App\Http\Client\Opensea\Data\OpenseaNftDetails; +use App\Models\Collection; use App\Support\CryptoUtils; use Carbon\Carbon; use GuzzleHttp\Exception\ClientException; @@ -19,6 +20,7 @@ use Illuminate\Http\Client\Factory; use Illuminate\Http\Client\PendingRequest; use Illuminate\Http\Client\Response; +use Illuminate\Support\Facades\Cache; use Throwable; class OpenseaPendingRequest extends PendingRequest @@ -97,7 +99,7 @@ public function nft(Chain $chain, string $address, string $identifier): ?Opensea public function getNftCollectionFloorPrice(string $collectionSlug): ?Web3NftCollectionFloorPrice { try { - $response = self::get(sprintf('collection/%s/stats', $collectionSlug)); + $response = $this->makeCollectionStatsRequest($collectionSlug); $floorPrice = $response->json('stats.floor_price'); @@ -124,4 +126,29 @@ public function getNftCollectionFloorPrice(string $collectionSlug): ?Web3NftColl throw $exception; } } + + /** + * @see https://docs.opensea.io/reference/get_collection_stats + */ + public function getCollectionTotalVolume(Collection $collection): ?string + { + $response = $this->makeCollectionStatsRequest($collection->openSeaSlug()); + + $volume = $response->json('stats.total_volume'); + + return $volume === null + ? null + : CryptoUtils::convertToWei($volume, CryptoCurrencyDecimals::ETH->value); + } + + private function makeCollectionStatsRequest(string $collectionSlug): Response + { + // We cache for an hour because floor price job runs every hour... + // But we cache it just so that we can reuse the response for total volume without needing to hit an API endpoint again... + $ttl = now()->addMinutes(59); + + return Cache::remember('opensea:collection-stats:'.$collectionSlug, $ttl, function () use ($collectionSlug) { + return self::get(sprintf('collection/%s/stats', $collectionSlug)); + }); + } } diff --git a/app/Jobs/FetchCollectionTotalVolume.php b/app/Jobs/FetchCollectionTotalVolume.php new file mode 100644 index 000000000..6d14895c0 --- /dev/null +++ b/app/Jobs/FetchCollectionTotalVolume.php @@ -0,0 +1,53 @@ +onQueue(Queues::SCHEDULED_NFTS); + } + + /** + * Execute the job. + */ + public function handle(): void + { + if ($this->collection->openSeaSlug() !== null) { + $this->collection->update([ + 'total_volume' => Opensea::getCollectionTotalVolume($this->collection), + ]); + } + } + + public function uniqueId(): string + { + return static::class.':'.$this->collection->id; + } + + public function retryUntil(): DateTime + { + return now()->addMinutes(20); + } +} diff --git a/app/Jobs/RefreshWalletCollections.php b/app/Jobs/RefreshWalletCollections.php index e88729743..aaef8d845 100644 --- a/app/Jobs/RefreshWalletCollections.php +++ b/app/Jobs/RefreshWalletCollections.php @@ -45,6 +45,7 @@ public function handle(): void new FetchCollectionTraits($collection), new FetchCollectionOwners($collection), new FetchCollectionVolume($collection), + new FetchCollectionTotalVolume($collection), ]))->finally(function () use ($wallet) { $wallet->update([ 'is_refreshing_collections' => false, diff --git a/app/Support/Facades/Opensea.php b/app/Support/Facades/Opensea.php index edf4c2300..30d59c2ff 100644 --- a/app/Support/Facades/Opensea.php +++ b/app/Support/Facades/Opensea.php @@ -8,9 +8,11 @@ use App\Enums\Chain; use App\Http\Client\Opensea\Data\OpenseaNftDetails; use App\Http\Client\Opensea\OpenseaFactory; +use App\Models\Collection; use Illuminate\Support\Facades\Http; /** + * @method static string getCollectionTotalVolume(Collection $collection) * @method static Web3NftCollectionFloorPrice | null getNftCollectionFloorPrice(string $collectionSlug) * @method static OpenseaNftDetails | null nft(Chain $chain, string $address, string $identifier) * diff --git a/database/migrations/2024_01_10_121726_add_total_volume_column_to_collections_table.php b/database/migrations/2024_01_10_121726_add_total_volume_column_to_collections_table.php new file mode 100644 index 000000000..11edcef2d --- /dev/null +++ b/database/migrations/2024_01_10_121726_add_total_volume_column_to_collections_table.php @@ -0,0 +1,20 @@ +string('total_volume')->nullable(); + }); + } +}; diff --git a/tests/App/Console/Commands/FetchCollectionTotalVolumeTest.php b/tests/App/Console/Commands/FetchCollectionTotalVolumeTest.php new file mode 100644 index 000000000..749317f72 --- /dev/null +++ b/tests/App/Console/Commands/FetchCollectionTotalVolumeTest.php @@ -0,0 +1,102 @@ +create([ + 'extra_attributes' => [ + 'opensea_slug' => 'some-slug', + ], + ]); + + Bus::assertDispatchedTimes(FetchCollectionTotalVolume::class, 0); + + $this->artisan('collections:fetch-total-volume'); + + Bus::assertDispatchedTimes(FetchCollectionTotalVolume::class, 3); +}); + +it('should not dispatch a job for a spam collection', function () { + Bus::fake([FetchCollectionTotalVolume::class]); + + $collections = Collection::factory(3)->create([ + 'extra_attributes' => [ + 'opensea_slug' => 'some-slug', + ], + ]); + + SpamContract::query()->insert([ + 'address' => $collections->first()->address, + 'network_id' => $collections->first()->network_id, + ]); + + Bus::assertDispatchedTimes(FetchCollectionTotalVolume::class, 0); + + $this->artisan('collections:fetch-total-volume'); + + Bus::assertDispatchedTimes(FetchCollectionTotalVolume::class, 2); +}); + +it('dispatches a job for a specific collection', function () { + Bus::fake([FetchCollectionTotalVolume::class]); + + $collection = Collection::factory()->create([ + 'extra_attributes' => [ + 'opensea_slug' => 'some-slug', + ], + ]); + + Bus::assertDispatchedTimes(FetchCollectionTotalVolume::class, 0); + + $this->artisan('collections:fetch-total-volume', [ + '--collection-id' => $collection->id, + ]); + + Bus::assertDispatchedTimes(FetchCollectionTotalVolume::class, 1); +}); + +it('should not dispatch a job for a given spam collection', function () { + Bus::fake([FetchCollectionTotalVolume::class]); + + $collection = Collection::factory()->create([ + 'extra_attributes' => [ + 'opensea_slug' => 'some-slug', + ], + ]); + + SpamContract::query()->insert([ + 'address' => $collection->address, + 'network_id' => $collection->network_id, + ]); + + Bus::assertDispatchedTimes(FetchCollectionTotalVolume::class, 0); + + $this->artisan('collections:fetch-total-volume', [ + '--collection-id' => $collection->id, + ]); + + Bus::assertDispatchedTimes(FetchCollectionTotalVolume::class, 0); +}); + +it('should not dispatch a job for collections that dont have OpenSea slug', function () { + Bus::fake([FetchCollectionTotalVolume::class]); + + $collection = Collection::factory()->create([ + 'extra_attributes' => [ + 'opensea_slug' => null, + ], + ]); + + Bus::assertDispatchedTimes(FetchCollectionTotalVolume::class, 0); + + $this->artisan('collections:fetch-total-volume'); + + Bus::assertDispatchedTimes(FetchCollectionTotalVolume::class, 0); +}); diff --git a/tests/App/Http/Client/Opensea/OpenseaPendingRequestTest.php b/tests/App/Http/Client/Opensea/OpenseaPendingRequestTest.php index 18265a10e..a237d632d 100644 --- a/tests/App/Http/Client/Opensea/OpenseaPendingRequestTest.php +++ b/tests/App/Http/Client/Opensea/OpenseaPendingRequestTest.php @@ -6,6 +6,7 @@ use App\Enums\Chain; use App\Exceptions\ConnectionException; use App\Exceptions\RateLimitException; +use App\Models\Collection; use App\Support\Facades\Opensea; use GuzzleHttp\Exception\ClientException; use Illuminate\Support\Facades\Http; @@ -109,3 +110,37 @@ identifier: $identifier ); })->throws(ClientException::class); + +it('can get total volume for a collection', function () { + Opensea::fake([ + 'https://api.opensea.io/api/v1/collection*' => Opensea::response(fixtureData('opensea.collection_stats')), + ]); + + $collection = new Collection([ + 'address' => '0x670fd103b1a08628e9557cd66b87ded841115190', + 'extra_attributes' => [ + 'opensea_slug' => 'test', + ], + ]); + + expect(Opensea::getCollectionTotalVolume($collection))->toBe('288921605076300000000000'); +}); + +it('can get total volume for a collection, if the total volume is 0', function () { + $response = fixtureData('opensea.collection_stats'); + + $response['stats']['total_volume'] = null; + + Opensea::fake([ + 'https://api.opensea.io/api/v1/collection*' => Opensea::response($response), + ]); + + $collection = new Collection([ + 'address' => '0x670fd103b1a08628e9557cd66b87ded841115190', + 'extra_attributes' => [ + 'opensea_slug' => 'test', + ], + ]); + + expect(Opensea::getCollectionTotalVolume($collection))->toBeNull(); +}); diff --git a/tests/App/Jobs/FetchCollectionTotalVolumeTest.php b/tests/App/Jobs/FetchCollectionTotalVolumeTest.php new file mode 100644 index 000000000..3f4643d97 --- /dev/null +++ b/tests/App/Jobs/FetchCollectionTotalVolumeTest.php @@ -0,0 +1,49 @@ +andReturn(753); + + $collection = Collection::factory()->create([ + 'total_volume' => '254', + 'extra_attributes' => [ + 'opensea_slug' => 'test', + ], + ]); + + (new FetchCollectionTotalVolume($collection))->handle(); + + expect($collection->fresh()->total_volume)->toBe('753'); +}); + +it('does not run for collections without an OpenSea slug', function () { + Opensea::shouldReceive('getCollectionTotalVolume')->never(); + + $collection = Collection::factory()->create([ + 'total_volume' => null, + 'extra_attributes' => [ + 'opensea_slug' => null, + ], + ]); + + (new FetchCollectionTotalVolume($collection))->handle(); + + expect($collection->fresh()->total_volume)->toBeNull(); +}); + +it('has a unique ID', function () { + $collection = Collection::factory()->create(); + + expect((new FetchCollectionTotalVolume($collection))->uniqueId())->toBeString(); +}); + +it('has a retry limit', function () { + $collection = Collection::factory()->create(); + + expect((new FetchCollectionTotalVolume($collection))->retryUntil())->toBeInstanceOf(DateTime::class); +}); diff --git a/tests/App/Jobs/RefreshWalletCollectionsTest.php b/tests/App/Jobs/RefreshWalletCollectionsTest.php index b9fbc4a48..0272b45c4 100644 --- a/tests/App/Jobs/RefreshWalletCollectionsTest.php +++ b/tests/App/Jobs/RefreshWalletCollectionsTest.php @@ -24,7 +24,7 @@ $job->handle(); Bus::assertBatched(function (PendingBatch $batch) { - return $batch->jobs->count() === 8; + return $batch->jobs->count() === 10; }); $user->wallet->refresh(); From 4b8ec04bb31de8ae875ac6a49721b6e75d199c72 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josip=20Crnkovi=C4=87?= Date: Tue, 16 Jan 2024 10:12:42 +0100 Subject: [PATCH 087/145] fix: pagination style on popular collections page (#600) --- .../Pagination/Pagination.contracts.ts | 1 + .../js/Components/Pagination/Pagination.tsx | 46 +++++++++++++++++-- .../CollectionsFullTablePagination.tsx | 1 + 3 files changed, 43 insertions(+), 5 deletions(-) diff --git a/resources/js/Components/Pagination/Pagination.contracts.ts b/resources/js/Components/Pagination/Pagination.contracts.ts index 82b506185..695e084f2 100644 --- a/resources/js/Components/Pagination/Pagination.contracts.ts +++ b/resources/js/Components/Pagination/Pagination.contracts.ts @@ -43,6 +43,7 @@ export interface PaginationData { } export interface PaginationProperties extends HTMLAttributes { + responsiveBreakpoint?: "xs" | "sm" | "md" | "lg"; data: PaginationData; onPageChange?: (page: number) => void; } diff --git a/resources/js/Components/Pagination/Pagination.tsx b/resources/js/Components/Pagination/Pagination.tsx index 6004beb51..cf36a1ca7 100644 --- a/resources/js/Components/Pagination/Pagination.tsx +++ b/resources/js/Components/Pagination/Pagination.tsx @@ -1,4 +1,5 @@ import { router } from "@inertiajs/react"; +import cn from "classnames"; import { type FormEvent, useMemo, useState } from "react"; import { ButtonLink } from "@/Components/Buttons/ButtonLink"; import { IconButton } from "@/Components/Buttons/IconButton"; @@ -10,7 +11,12 @@ import { PageLink } from "@/Components/Pagination/PageLink"; import { type PaginationProperties } from "@/Components/Pagination/Pagination.contracts"; import { PreviousPageLink } from "@/Components/Pagination/PreviousPageLink"; -export const Pagination = ({ data, onPageChange, ...properties }: PaginationProperties): JSX.Element => { +export const Pagination = ({ + data, + responsiveBreakpoint = "xs", + onPageChange, + ...properties +}: PaginationProperties): JSX.Element => { const [showInput, setShowInput] = useState(false); const [page, setPage] = useState(data.meta.current_page.toString()); @@ -91,7 +97,17 @@ export const Pagination = ({ data, onPageChange, ...properties }: Pagination className="w-full sm:w-fit" {...properties} > -
    +
    ({ data, onPageChange, ...properties }: Pagination /> ) : ( <> -
    + -
    +
    -
    +
    { handlePageChange(event, 1); diff --git a/resources/js/Pages/Collections/Components/CollectionsFullTablePagination/CollectionsFullTablePagination.tsx b/resources/js/Pages/Collections/Components/CollectionsFullTablePagination/CollectionsFullTablePagination.tsx index 768215a1b..998f81ade 100644 --- a/resources/js/Pages/Collections/Components/CollectionsFullTablePagination/CollectionsFullTablePagination.tsx +++ b/resources/js/Pages/Collections/Components/CollectionsFullTablePagination/CollectionsFullTablePagination.tsx @@ -29,6 +29,7 @@ export const CollectionsFullTablePagination = ({ pagination, onPageLimitChange } )}
    From cd8a5b4e5199d8d17eb231909522b9e4c7a5928a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josip=20Crnkovi=C4=87?= Date: Tue, 16 Jan 2024 10:14:19 +0100 Subject: [PATCH 088/145] refactor: indicate cotm winners and disable voting for those collections (#599) --- app/Data/Collections/VotableCollectionData.php | 6 ++++-- .../Api/NominatableCollectionController.php | 5 ++++- app/Http/Controllers/CollectionController.php | 6 ++++-- .../Controllers/CollectionVoteController.php | 5 +++++ lang/en/pages.php | 1 + resources/js/I18n/Locales/en.json | 2 +- .../CollectionVoting/NomineeCollection.tsx | 5 ++--- .../CollectionVoting/VoteCollections.tsx | 12 +++++++----- .../Collections/VotableCollectionDataFactory.ts | 1 + resources/types/generated.d.ts | 1 + .../Controllers/CollectionVoteControllerTest.php | 16 ++++++++++++++++ 11 files changed, 46 insertions(+), 14 deletions(-) diff --git a/app/Data/Collections/VotableCollectionData.php b/app/Data/Collections/VotableCollectionData.php index 6899fabe9..e20d7dff2 100644 --- a/app/Data/Collections/VotableCollectionData.php +++ b/app/Data/Collections/VotableCollectionData.php @@ -33,10 +33,11 @@ public function __construct( public int $volumeDecimals, public int $nftsCount, public ?string $twitterUsername, + public bool $alreadyWon, ) { } - public static function fromModel(Collection $collection, CurrencyCode $currency, bool $showVotes): self + public static function fromModel(Collection $collection, CurrencyCode $currency, bool $showVotes, bool $alreadyWon = false): self { /** * @var mixed $collection @@ -61,7 +62,8 @@ public static function fromModel(Collection $collection, CurrencyCode $currency, nftsCount: $collection->nfts_count, // We are not using the `->twitter` method because we need the username // not the twitter url - twitterUsername: $collection->extra_attributes->get('socials.twitter') + twitterUsername: $collection->extra_attributes->get('socials.twitter'), + alreadyWon: $alreadyWon, ); } } diff --git a/app/Http/Controllers/Api/NominatableCollectionController.php b/app/Http/Controllers/Api/NominatableCollectionController.php index 186e1b467..c77fe67f9 100644 --- a/app/Http/Controllers/Api/NominatableCollectionController.php +++ b/app/Http/Controllers/Api/NominatableCollectionController.php @@ -7,6 +7,7 @@ use App\Data\Collections\VotableCollectionData; use App\Http\Controllers\Controller; use App\Models\Collection; +use App\Models\CollectionWinner; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; @@ -27,9 +28,11 @@ public function index(Request $request): JsonResponse ->orderBy('name', 'asc') ->get(); + $winners = CollectionWinner::ineligibleCollectionIds(); + return response()->json([ 'collections' => $collections->map( - fn ($collection) => VotableCollectionData::fromModel($collection, $currency, showVotes: false) + fn ($collection) => VotableCollectionData::fromModel($collection, $currency, showVotes: false, alreadyWon: $winners->contains($collection->id)) ), ]); } diff --git a/app/Http/Controllers/CollectionController.php b/app/Http/Controllers/CollectionController.php index 0f8b492e8..5b55f9bd7 100644 --- a/app/Http/Controllers/CollectionController.php +++ b/app/Http/Controllers/CollectionController.php @@ -101,8 +101,10 @@ private function getVotableCollections(Request $request): SupportCollection // 8 collections on the vote table + 5 collections to nominate $collections = Collection::votable($currency)->limit(13)->get(); - return $collections->map(function (Collection $collection) use ($userVoted, $currency) { - return VotableCollectionData::fromModel($collection, $currency, showVotes: $userVoted); + $winners = CollectionWinner::ineligibleCollectionIds(); + + return $collections->map(function (Collection $collection) use ($userVoted, $currency, $winners) { + return VotableCollectionData::fromModel($collection, $currency, showVotes: $userVoted, alreadyWon: $winners->contains($collection->id)); }); } diff --git a/app/Http/Controllers/CollectionVoteController.php b/app/Http/Controllers/CollectionVoteController.php index 4d40b6ffc..976d053c4 100644 --- a/app/Http/Controllers/CollectionVoteController.php +++ b/app/Http/Controllers/CollectionVoteController.php @@ -5,6 +5,7 @@ namespace App\Http\Controllers; use App\Models\Collection; +use App\Models\CollectionWinner; use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; @@ -12,6 +13,10 @@ class CollectionVoteController extends Controller { public function store(Request $request, Collection $collection): RedirectResponse { + if (CollectionWinner::where('collection_id', $collection->id)->exists()) { + return back()->toast(trans('pages.collections.collection_of_the_month.already_won'), type: 'error'); + } + if ($request->wallet()->votes()->inCurrentMonth()->exists()) { return back()->toast(trans('pages.collections.collection_of_the_month.vote_failed'), type: 'error'); } diff --git a/lang/en/pages.php b/lang/en/pages.php index 81ff1bf94..49336b854 100644 --- a/lang/en/pages.php +++ b/lang/en/pages.php @@ -92,6 +92,7 @@ ], 'vote_success' => 'Your vote has been successfully submitted', 'vote_failed' => 'You already cast your vote', + 'already_won' => 'This collecction has already won Collection of the Month.', 'content_to_be_added' => [ 'title' => 'Content to be added', 'description' => 'There will be a list of previous month winners here soon!', diff --git a/resources/js/I18n/Locales/en.json b/resources/js/I18n/Locales/en.json index c34a0316d..52da78b3d 100644 --- a/resources/js/I18n/Locales/en.json +++ b/resources/js/I18n/Locales/en.json @@ -1 +1 @@ -{"auth.welcome":"Welcome to Dashbrd","auth.logged_in":"You're logged in!","auth.log_out":"Log out","auth.failed":"These credentials do not match our records.","auth.session_timeout":"Your session has timed out. Please refresh the page and try connecting your account again.","auth.session_timeout_modal":"Seems like your session has timed out. Please connnect your wallet again.","auth.password":"The provided password is incorrect.","auth.throttle":"Too many login attempts. Please try again in {{seconds}} seconds.","auth.wallet.connecting":"Connecting …","auth.wallet.waiting_for_signature":"Waiting for Signature …","auth.wallet.switching_wallet":"Switching Wallet …","auth.wallet.connect":"Connect Wallet","auth.wallet.connect_long":"Connect Your Wallet to Get Started","auth.wallet.sign_subtitle":"Connect Your Wallet to Continue","auth.wallet.disconnect":"Disconnect Wallet","auth.wallet.install":"Install MetaMask","auth.wallet.install_long":"Install MetaMask to Get Started","auth.wallet.sign":"Sign Message","auth.wallet.sign_message":"Welcome to Dashbrd. In order to login, sign this message with your wallet. It doesn't cost you anything!\n\nSigning ID (you can ignore this): {{nonce}}","auth.wallet.connect_subtitle":"Click on the MetaMask icon in your browser to confirm the action and connect your wallet.","auth.wallet.requires_signature":"In order to prevent impersonation, we require a signature to perform this action. This signature is only a signed message and does not give any access to your wallet.","auth.errors.metamask.no_account":"No account found. Please connect your wallet and try again.","auth.errors.metamask.generic":"Connection attempt error. Please retry and follow the steps to connect your wallet.","auth.errors.metamask.invalid_network":"Please switch to Polygon or Ethereum Mainnet in your MetaMask plugin to connect to Dashbrd.","auth.errors.metamask.provider_missing":"You don't have MetaMask installed in your browser. Please install and try again.","auth.errors.metamask.user_rejected":"It looks like you cancelled signing of the authentication message. Please try again.","auth.errors.metamask.provider_not_set":"Ethereum provider is not set","auth.validation.wallet_login_failed":"There was a problem trying to verify your signature. Please try again.","auth.validation.invalid_address":"Your wallet address is invalid. Please try again.","auth.validation.invalid_signature":"Signature is invalid. Please try again.","auth.validation.invalid_network":"Please switch to Polygon or Ethereum Mainnet in your MetaMask plugin to connect to Dashbrd.","common.author":"Author","common.add":"Add","common.amount":"Amount","common.balance":"Balance","common.cancel":"Cancel","common.delete":"Delete","common.edit":"Edit","common.confirm":"Confirm","common.connect":"Connect","common.continue":"Continue","common.done":"Done","common.filter":"Filter","common.items":"Items","common.receive":"Receive","common.received":"Received","common.retry":"Retry","common.records":"Records","common.save":"Save","common.send":"Send","common.sent":"Sent","common.show":"Show","common.searching":"Searching...","common.other":"Other","common.owned":"Owned","common.token":"Token","common.tokens":"Tokens","common.wallet":"Wallet","common.pending":"Pending","common.publish":"Publish","common.published":"Published","common.empty":"Empty","common.your_address":"Your Address","common.warning":"Warning","common.my_address":"My Address","common.my_wallet":"My Wallet","common.my_collections":"My Collections","common.my_balance":"My Balance","common.na":"N/A","common.simple_plural_without_data":"One comment|Many comments","common.simple_plural_with_data":"{{count}} comment|{{count}} comments","common.advanced_plural_without_data":"{0} no comments yet|{1} 1 comment|[2,*] Many comments","common.advanced_plural_with_data":"{0} no comments yet|{1} 1 comment|[2,*] {{count}} comments","common.copy_clipboard":"Copy to Clipboard","common.copy":"Copy","common.download":"Download","common.zoom":"Zoom","common.my_collection":"My Collection","common.max":"Max","common.chain":"Chain","common.search":"Search","common.copied":"Copied!","common.coming_soon":"Coming Soon","common.more_details":"More Details","common.close":"Close","common.close_toast":"Close toast","common.loading":"Loading","common.price":"Price","common.articles":"Articles","common.most_popular":"Most Popular","common.market_cap":"Market Cap","common.volume":"Volume","common.volume_frequency":"Volume {{frequency}}","common.value":"Value","common.last_n_days":"Last {{count}} Days","common.details":"Details","common.view_all":"View All","common.view_more_on_polygonscan":"View More on Polygonscan","common.view_more_on_etherscan":"View More on Etherscan","common.view_nft_on_etherscan":"View NFT on Etherscan","common.view_nft_on_polygonscan":"View NFT on Polygonscan","common.view_nft_on_goerli_tesnet":"View NFT on Goerli Testnet Explorer","common.view_nft_on_mumbai_tesnet":"View NFT on Mumbai Testnet Explorer","common.polygonscan":"Polygonscan","common.etherscan":"Etherscan","common.featured":"Featured","common.floor_price":"Floor Price","common.floor":"Floor","common.supply":"Supply","common.owners":"Owners","common.created":"Created","common.nft":"NFT","common.collection":"Collection","common.collections":"Collections","common.gallery":"Gallery","common.basic_gallery":"Basic Gallery","common.gallery_name":"Gallery Name","common.create_gallery":"Create Gallery","common.external_link":"External Link","common.follow_link":"Follow Link","common.cover":"Cover","common.template":"Template","common.page":"Page","common.polygon":"Polygon","common.ethereum":"Ethereum","common.mumbai":"Mumbai","common.goerli":"Goerli","common.of":"of","common.pagination_input_placeholder":"Enter the page number","common.pagination_input_placeholder_mobile":"Page number","common.nft_count":"{0} {{count}} NFTs|{1} {{count}} NFT|[2,*] {{count}} NFTs","common.nft_gallery":"NFT Gallery","common.unable_to_retrieve_image":"Unable to retrieve your NFT image at this time","common.optional":"Optional","common.selected":"Selected","common.select":"Select","common.preview":"Preview","common.image_size_error":"Image size must not exceed 2MB","common.image_dimensions_error":"Image dimensions must exceed 287px x 190px","common.write_to_confirm":"Write {{word}} to confirm","common.n_hours":"{0} {{count}} hour|{1} {{count}} hour|[2,*] {{count}} hours","common.n_minutes":"{0} {{count}} minute|{1} {{count}} minute|[2,*] {{count}} minutes","common.report":"Report","common.nfts":"NFTs","common.n_nfts":"{0}NFTs|{1}NFT|[2,*]NFTs","common.n_collections":"{0}collections|{1}collection|[2,*]collections","common.back":"Back","common.back_to":"Back to","common.name":"Name","common.type":"Type","common.from":"From","common.to":"To","common.sale_price":"Sale Price","common.recent_activity":"Recent Activity","common.time":"Time","common.datetime.few_seconds_ago":"A few seconds ago","common.datetime.minutes_ago":"{0} Less than a minute ago|{1} A minute ago|[2,*] {{count}} minutes ago","common.datetime.hours_ago":"{0} Less than an hour ago|{1} An hour ago|[2,*] {{count}} hours ago","common.datetime.days_ago":"{0} Less than a day ago|{1} A day ago|[2,*] {{count}} days ago","common.datetime.weeks_ago":"{0} Less than a week ago|{1} A week ago|[2,*] {{count}} weeks ago","common.datetime.months_ago":"{0} Less than a month ago|{1} A month ago|[2,*] {{count}} months ago","common.datetime.years_ago":"{0} Less than a year ago|{1} A year ago|[2,*] {{count}} years ago","common.no_traits_found":"No traits found.","common.empty_transactions":"You don't have any transactions yet. Once transactions have been made, they will show up here.","common.error":"Error","common.refresh":"Refresh","common.refresh_metadata":"Refresh Metadata","common.refreshing_metadata":"Refreshing Metadata... Please check back later.","common.refreshing_activity":"Refreshing Activity... Please check back later.","common.pending_confirmation":"Pending Confirmation","common.confirmed_transaction":"Confirmed Transaction","common.transaction_error":"Transaction Error","common.transaction_error_description_first_part":"Your transaction encountered an error. View this transaction on","common.transaction_error_description_second_part":"for more details.","common.home":"Home","common.contact":"Contact","common.menu":"Menu","common.website":"Website","common.twitter":"Twitter","common.discord":"Discord","common.facebook":"Facebook","common.reddit":"Reddit","common.x":"X","common.sort":"Sort","common.drafts":"Drafts","common.draft":"Draft","common.delete_draft":"Delete Draft","common.share_on":"Share on {{platform}}","common.top":"Top","common.all_chains":"All chains","common.votes":"Votes","common.vote":"Vote","common.vol":"Vol","common.collection_preview":"Collection Preview","common.24h":"24h","common.7d":"7d","common.30d":"30d","common.months.0":"January","common.months.1":"February","common.months.2":"March","common.months.3":"April","common.months.4":"May","common.months.5":"June","common.months.6":"July","common.months.7":"August","common.months.8":"September","common.months.9":"October","common.months.10":"November","common.months.11":"December","footer.copyright":"{{year}} © Dashbrd. All rights reserved.","footer.all_rights_reserved":"All rights reserved","footer.privacy_policy":"Privacy Policy","footer.terms_of_service":"Terms of Service","footer.powered_by":"Powered by","format.fiat":"{{ value, currency }}","format.number":"{{ value, number }}","metatags.home.title":"Dashbrd | Web3 Portfolio Management Made Simple","metatags.home.description":"Simplify your Web3 journey with Dashbrd. Manage your portfolio of tokens, NFTs, and other digital collectibles across the Ethereum and Polygon blockchains.","metatags.home.image":"/images/meta/home.png","metatags.error.title":"Error {{code}} | Dashbrd","metatags.wallet.title":"My Wallet | Dashbrd","metatags.galleries.title":"Top NFT Galleries | Dashbrd","metatags.galleries.image":"/images/meta/nft-galleries.png","metatags.galleries.description":"Explore user published NFT galleries to find custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.most_popular.title":"Most Popular Galleries | Dashbrd","metatags.galleries.most_popular.image":"/images/meta/most-popular-nft-galleries.png","metatags.galleries.most_popular.description":"Explore and discover Most Popular NFT Galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.newest.title":"Newest Galleries | Dashbrd","metatags.galleries.newest.image":"/images/meta/newest-nft-galleries.png","metatags.galleries.newest.description":"Explore and discover most recent NFT galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More","metatags.galleries.most_valuable.title":"Most Valuable Galleries | Dashbrd","metatags.galleries.most_valuable.image":"/images/meta/most-valuable-nft-galleries.png","metatags.galleries.most_valuable.description":"Explore and discover Most Valuable NFT Galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.view.title":"{{name}} | Dashbrd","metatags.galleries.view.description":"{{name}} | A Curated NFT Gallery at Dashbrd","metatags.galleries.view.image":"/images/meta/nft-gallery.png","metatags.my_galleries.title":"My Galleries | Dashbrd","metatags.my_galleries.title_draft":"My Draft Galleries | Dashbrd","metatags.my_galleries.create.title":"Create Gallery | Dashbrd","metatags.my_galleries.edit.title":"Edit {{name}} | Dashbrd","metatags.collections.title":"Collections | Dashbrd","metatags.collections.view.title":"{{name}} Collection | Dashbrd","metatags.collections.view.description":"Immerse yourself in the intricate details of {{name}} collection, featuring remarkable digital assets. Start your NFT journey today!","metatags.collections.view.image":"/images/meta/nft-collection.png","metatags.collections.of-the-month.title":"Collection of the Month {{month}} | Dashbrd","metatags.my-collections.title":"My Collections | Dashbrd","metatags.popular-collections.title":"Popular NFT Collections | Dashbrd","metatags.nfts.view.title":"{{nft}} NFT | Dashbrd","metatags.nfts.view.description":"Uncover the complete story of {{nft}} NFT from the {{collection}} collection, delving into its unique attributes and distinctive features.","metatags.nfts.view.image":"/images/meta/nft-details.png","metatags.settings.title":"Settings | Dashbrd","metatags.articles.title":"Articles | Dashbrd","metatags.articles.view.title":"{{title}} | Dashbrd","metatags.login.title":"Login | Dashbrd","metatags.privacy_policy.title":"Privacy Policy | Dashbrd","metatags.privacy_policy.description":"Dashbrd’s privacy policy outlines the information we collect and explains your choices surrounding how we use information about you.","metatags.terms_of_service.title":"Terms of Service | Dashbrd","metatags.terms_of_service.description":"These Terms of Service cover your use and access to services, products or websites of Dashbrd.","metatags.cookie_policy.title":"Cookie Policy | Dashbrd","metatags.cookie_policy.description":"Dashbrd uses cookies to make the website more user-friendly. Find out about the main types of cookies we use, and what we use them for.","metatags.welcome.title":"Welcome to Dashbrd | Web3 Simplified","pages.onboarding.title":"Get Started","pages.onboarding.heading":"Your monkeys were bored and ran off, we are trying to round them up.","pages.onboarding.message":"We are setting up your account. This process usually takes just a few minutes, but can take up to 15 minutes.","pages.error.heading":"Oops, something went wrong ...","pages.error.message":"Please try again or get in touch if the issue persists.","pages.maintenance.title":"Dashbrd is currently down for scheduled maintenance.","pages.maintenance.description":"We expect to be back soon. Thanks for your patience.","pages.dashboard.title":"My Wallet","pages.dashboard.breakdown.title":"Portfolio Breakdown","pages.dashboard.line_chart.data_error":"Could not load chart data","pages.articles.title":"Articles","pages.articles.featured_collections":"Featured Collections","pages.articles.placeholder_more_soon":"More Soon","pages.articles.no_articles":"No articles have been published yet. Please check back later!","pages.articles.header_title":"Explore our collection of","pages.articles.header_suffix_one":"published article","pages.articles.header_suffix_other":"published articles","pages.articles.audio_version":"Audio version","pages.articles.consists_of_collections":"{0} This article highlights {{count}} collections|{1} This article highlights {{count}} collection|[2,*] This article highlights {{count}} collections","pages.collections.title":"Collections","pages.collections.collections":"Collections","pages.collections.popular_collections":"Popular Collections","pages.collections.collection_value":"Collection Value","pages.collections.nfts_owned":"NFTs Owned","pages.collections.header_title":"You own <0>{{nftsCount}} {{nfts}} across <0>{{collectionsCount}} {{collections}}, worth about <0><1>{{worth}}","pages.collections.search_placeholder":"Search by Collection","pages.collections.properties":"Properties","pages.collections.collections_network":"Collections Network","pages.collections.property_search_placeholder":"Feature Search","pages.collections.floor_price":"Floor Price","pages.collections.value":"Value","pages.collections.rarity":"Rarity","pages.collections.report":"Report","pages.collections.search_by_name":"Search by Collection Name","pages.collections.hide_collection":"Hide Collection","pages.collections.unhide_collection":"Unhide Collection","pages.collections.no_collections":"You do not own any NFTs yet. Once you do they will be shown here.","pages.collections.all_collections_hidden":"You have hidden all your collections. Unhide and they will appear here.","pages.collections.about_collection":"About Collection","pages.collections.show_hidden":"Show Hidden","pages.collections.show_my_collection":"Show My Collection","pages.collections.owned":"Owned","pages.collections.activities.loading_activities":"We're fetching Activity for this NFT, please hang tight, this can take a while.","pages.collections.activities.loading_activities_collection":"We're fetching Activity for this collection, please hang tight, this can take a while.","pages.collections.activities.ignores_activities":"We don't support activity history for this collection yet.","pages.collections.activities.no_activity":"This collection does not have any activity yet.","pages.collections.activities.types.LABEL_MINT":"Mint","pages.collections.activities.types.LABEL_TRANSFER":"Transfer","pages.collections.activities.types.LABEL_SALE":"Sale","pages.collections.activities.types.LABEL_BURN":"Burn","pages.collections.collection_of_the_month.title":"Collection of the Month {{month}}","pages.collections.collection_of_the_month.winners_month":"Winners: {{month}}","pages.collections.collection_of_the_month.vote_for_next_months_winners":"Vote now for next month's winners","pages.collections.collection_of_the_month.view_previous_winners":"View Previous Winners","pages.collections.collection_of_the_month.previous_winners":"Previous Winners","pages.collections.collection_of_the_month.vote_received_modal.title":"Vote Received","pages.collections.collection_of_the_month.vote_received_modal.description":"Your vote has been recorded. Share your vote on X and let everyone know!","pages.collections.collection_of_the_month.vote_received_modal.share_vote":"Share Vote","pages.collections.collection_of_the_month.vote_received_modal.img_alt":"I voted for Dashbrd Project of the Month","pages.collections.collection_of_the_month.vote_received_modal.x_text":"I voted for {{collection}} for collection of the month @dashbrdapp! Go show your support!","pages.collections.collection_of_the_month.vote_success":"Your vote has been successfully submitted","pages.collections.collection_of_the_month.vote_failed":"You already cast your vote","pages.collections.collection_of_the_month.content_to_be_added.title":"Content to be added","pages.collections.collection_of_the_month.content_to_be_added.description":"There will be a list of previous month winners here soon!","pages.collections.collection_of_the_month.has_won_already":"This collection has already
    won Collection of the Month.","pages.collections.articles.heading":"Latest NFT News & Features","pages.collections.articles.no_articles":"No articles have been linked to this collection as of now.","pages.collections.articles.no_articles_with_filters":"We could not find any articles matching your search criteria, please try again!","pages.collections.articles.search_placeholder":"Search in Articles","pages.collections.articles.sort_latest":"Latest","pages.collections.articles.sort_popularity":"Most Popular","pages.collections.search.loading_results":"Loading results...","pages.collections.search.no_results":"We could not find anything matching your search criteria, please try again!","pages.collections.search.no_results_with_filters":"We could not find anything matching your filters, please try again!","pages.collections.search.no_results_ownership":"You do not own any NFTs in this collection","pages.collections.search.error":"Could not load search results. Please try again later.","pages.collections.vote.vote_for_top_collection":"Vote for Top Collection of the Month","pages.collections.vote.vote":"Vote","pages.collections.vote.time_left":"Time Left","pages.collections.vote.or_nominate_collection":"Or nominate a collection","pages.collections.vote.nominate_collection":"Nominate a collection","pages.collections.vote.vote_to_reveal":"Vote to reveal data","pages.collections.vote.already_voted":"You’ve already nominated. Come back next month!","pages.collections.vote.select_collection":"Please, select a collection to nominate","pages.collections.sorting.token_number":"Token Number","pages.collections.sorting.recently_received":"Recently Received","pages.collections.sorting.recently_created":"Recently Created","pages.collections.sorting.oldest_collection":"Oldest Collection","pages.collections.traits.description":"List of NFT traits by % of occurrence in the collection","pages.collections.traits.no_traits":"No Properties can be found for this NFT","pages.collections.menu.collection":"Collection","pages.collections.menu.articles":"Articles","pages.collections.menu.activity":"Activity","pages.collections.hidden_modal.collection_hidden":"Collection Hidden","pages.collections.hidden_modal.description":"This collection is currently set to Hidden. Are you sure you want to unhide this collection? You can\n reset the collection to hidden from the collection menu.","pages.collections.hidden_modal.unhide":"Unhide","pages.collections.hidden_modal.error":"Something went wrong. Please try again.","pages.collections.external_modal.you_wish_continue":"You are about to leave Dashbrd to an external website. Dashbrd has no control over the content of\n this site. Are you sure you wish to continue?","pages.collections.external_modal.not_show":"Do not show this message again.","pages.collections.refresh.title":"Refresh your collection","pages.collections.refresh.notice":"You can refresh data every 15 minutes.","pages.collections.refresh.notice_wait":"Please wait. You can refresh data every 15 minutes.","pages.collections.refresh.toast":"We're updating information for your collection.","pages.collections.featured.title":"Featured Collections","pages.collections.featured.button":"Explore Collection","pages.collections.footer.heading_broken.0":"Connect with MetaMask","pages.collections.footer.heading_broken.1":"& Manage Your Collection","pages.collections.footer.subtitle":"Explore, Filter, & Share your favorite NFTs with Dashbrd.","pages.collections.footer.button":"Manage Collections","pages.nfts.nft":"nft","pages.nfts.about_nft":"About NFT","pages.nfts.owned_by":"Owned by","pages.nfts.collection_image":"collection image","pages.nfts.menu.properties":"Properties","pages.nfts.menu.activity":"Activity","pages.nfts.erc1155_support.title":"No ERC1155 Support","pages.nfts.erc1155_support.description":"We noticed you own some ERC1155 NFTs. Unfortunately, we don't support them yet.","pages.reports.title":"Submit a Report","pages.reports.description":"Thanks for looking out by reporting things that break the rules. Let us know what's happening and we'll receive the report.","pages.reports.success":"Thank you for your report. We'll review it and see if it breaks our ToS.","pages.reports.failed":"Something went wrong. Please try again.","pages.reports.throttle":"You have made too many requests. Please wait {{time}} before reporting again.","pages.reports.reported":"You have already reported this {{model}}.","pages.reports.reasons.spam":"Spam","pages.reports.reasons.violence":"Promoting Violence","pages.reports.reasons.hate":"Hate","pages.reports.reasons.inappropriate_content":"Inappropriate Content","pages.reports.reasons.impersonation":"Impersonation","pages.reports.reasons.trademark":"Trademark or Copyright","pages.reports.reasons.selfharm":"Self-Harm","pages.reports.reasons.harassment":"Harassment","pages.galleries.title":"Galleries","pages.galleries.empty_title":"No galleries have been published yet. Once they do they will appear here.","pages.galleries.search.loading_results":"Loading results...","pages.galleries.search.no_results":"We could not find anything matching your search criteria, please try again!","pages.galleries.search.placeholder":"Search by name or curator address","pages.galleries.search.placeholder_nfts":"Search by NFTs","pages.galleries.search.error":"Could not load search results. Please try again later.","pages.galleries.my_galleries.title":"My Galleries","pages.galleries.my_galleries.subtitle":"Manage your galleries","pages.galleries.my_galleries.new_gallery":"New Gallery","pages.galleries.my_galleries.no_galleries":"You have not created any galleries yet. To create a gallery, click on the \"Create Gallery\" button.","pages.galleries.my_galleries.no_available_collections":"You have hidden all your collections. If you want to create a gallery, make sure you have at least 1 collection available.","pages.galleries.my_galleries.no_draft_galleries":"You have no draft galleries yet. To create a gallery, click on the \"Create Gallery\" button.","pages.galleries.my_galleries.succesfully_deleted":"Gallery has been successfully removed","pages.galleries.my_galleries.draft_succesfully_deleted":"Draft has been successfully removed","pages.galleries.my_galleries.successfully_created":"Gallery has been successfully created","pages.galleries.my_galleries.successfully_updated":"Gallery has been successfully updated","pages.galleries.my_galleries.new_gallery_no_nfts":"Creating a Gallery requires you to own an NFT.","pages.galleries.my_galleries.new_gallery_all_collections_hidden":"Creating a Gallery requires you to have at least 1 collection available.","pages.galleries.my_galleries.delete_modal.title":"Delete Draft","pages.galleries.my_galleries.delete_modal.text":"Are you sure you want to delete the draft? Everything you've done will be deleted and you won't be able to get it back.","pages.galleries.my_galleries.nfts_no_longer_owned":"NFTs no longer owned by this wallet have been removed from the draft”","pages.galleries.copy_gallery_link":"Copy Gallery Link","pages.galleries.my_nfts":"My NFTs","pages.galleries.show_hidden_collections":"Show hidden collections","pages.galleries.value":"Value","pages.galleries.floor_price":"Floor Price","pages.galleries.nfts":"NFTs","pages.galleries.collections":"Collections","pages.galleries.galleries_count_simple":"{0} galleries|{1} gallery|[2,*] galleries","pages.galleries.galleries_count":"{0} {{count}} Galleries|{1} {{count}} Gallery|[2,*] {{count}} Galleries","pages.galleries.collections_count_simple":"{0} collections|{1} collection|[2,*] collections","pages.galleries.collections_count":"{0} {{count}} Collections|{1} {{count}} Collection|[2,*] {{count}} Collections","pages.galleries.nfts_count_simple":"{0} NFTs|{1} NFT|[2,*] NFTs","pages.galleries.nfts_count":"{0} {{count}} NFTs|{1} {{count}} NFT|[2,*] {{count}} NFTs","pages.galleries.users_count_simple":"{0} users|{1} user|[2,*] users","pages.galleries.users_count":"{0} {{count}} Users|{1} {{count}} User|[2,*] {{count}} Users","pages.galleries.featuring":"Featuring","pages.galleries.curated_by":"Curated by","pages.galleries.worth_about":"Worth About","pages.galleries.valued_at":"valued at","pages.galleries.from":"From","pages.galleries.most_popular_galleries":"Most Popular Galleries","pages.galleries.newest_galleries":"Newest Galleries","pages.galleries.most_valuable_galleries":"Most Valuable Galleries","pages.galleries.most_popular":"Most Popular","pages.galleries.newest":"Newest","pages.galleries.most_valuable":"Most Valuable","pages.galleries.create.search_by_nfts":"Search by NFTs","pages.galleries.create.input_placeholder":"Enter gallery name","pages.galleries.create.title_too_long":"Gallery name must not exceed {{max}} characters.","pages.galleries.create.already_selected_nft":"NFT already exists in this gallery","pages.galleries.create.nft_missing_image":"Only NFTs with images can be added to galleries","pages.galleries.create.nft_gallery_limit":"You can only add 16 NFTs per gallery","pages.galleries.create.gallery_cover":"Gallery Cover","pages.galleries.create.gallery_cover_description":"The cover is used for the card on the gallery list page. While the cover is not a requirement it will allow you to add personality and stand out from the crowd.","pages.galleries.create.gallery_cover_information":"Image dimensions must be at least 287px x 190px, with a max size of 2 MB (JPG, PNG or GIF)","pages.galleries.create.no_results":"We could not find anything matching your search criteria, please try again!","pages.galleries.create.templates.cover":"Cover","pages.galleries.create.templates.template":"Template","pages.galleries.create.templates.select":"Select Gallery Template","pages.galleries.create.templates.basic":"Basic Gallery","pages.galleries.create.templates.coming_soon":"More Coming Soon","pages.galleries.create.load_more_collections_one":"Load {{count}} More Collection","pages.galleries.create.load_more_collections_other":"Load {{count}} More Collections","pages.galleries.create.load_more_nfts":"Load More NFTs","pages.galleries.create.can_purchase":"You can purchase NFTs with these top NFT Marketplaces:","pages.galleries.create.must_own_one_nft":"You must own at least one (1) NFT in order to create a gallery.","pages.galleries.create.back_to_galleries":"Back to Galleries","pages.galleries.create.draft_saved":"Draft Saved","pages.galleries.create.saving_to_draft":"Saving to draft","pages.galleries.create.drafts_limit_modal_title":"Draft Gallery Limit","pages.galleries.create.drafts_limit_modal_message":"You’ve hit your limit for draft galleries. While you can still make new galleries and publish them, they won’t be saved as drafts. To Free up space, you can either delete existing drafts or publish them.","pages.galleries.create.drafts_limit_modal_cancel":"Go to Drafts","pages.galleries.delete_modal.title":"Delete Gallery","pages.galleries.delete_modal.confirmation_text":"Are you sure you want to delete the gallery? Deleting a Gallery is permanent, all associated views and likes will be lost.","pages.galleries.consists_of_collections":"{0} This gallery consists of {{count}} collections|{1} This gallery consists of {{count}} collection|[2,*] This gallery consists of {{count}} collections","pages.galleries.guest_banner.title":"Craft the ultimate","pages.galleries.guest_banner.subtitle":"Pick your favorites, curate your gallery, & share it with the world.","pages.profile.title":"Profile","pages.token_panel.balance_tooltip":"Total percentage of the portfolio held in this token","pages.token_panel.insufficient_funds":"Insufficient Balance","pages.token_panel.error":"Dashbrd has failed to load token information. Please try again later.","pages.token_panel.failed_to_retrieve_transactions":"We were unable to fetch your transactions.","pages.token_panel.tabs.transaction_history":"Transaction History","pages.token_panel.tabs.history":"History","pages.token_panel.tabs.market_data":"Market Data","pages.token_panel.details.current_price":"Current Price","pages.token_panel.details.title":"Token Details","pages.token_panel.details.market_cap":"Market Cap","pages.token_panel.details.volume":"Daily Volume","pages.token_panel.details.supply":"Minted Supply","pages.token_panel.details.ath":"All-Time High","pages.token_panel.details.atl":"All-Time Low","pages.token_panel.chart.failed":"Dashbrd has failed to load chart information. Please try again later.","pages.transaction_details_panel.title":"Transaction Details","pages.transaction_details_panel.details.blockchain":"Blockchain","pages.transaction_details_panel.details.timestamp":"Timestamp","pages.transaction_details_panel.details.transaction_hash":"Transaction Hash","pages.transaction_details_panel.details.transaction_fee":"Transaction Fee","pages.transaction_details_panel.details.gas_price":"Gas Price","pages.transaction_details_panel.details.gas_used":"Gas Used","pages.transaction_details_panel.details.nonce":"Nonce","pages.send_receive_panel.send.labels.token_and_amount":"Token and Amount","pages.send_receive_panel.send.labels.destination_address":"Destination Address","pages.send_receive_panel.send.labels.projected_fee":"Projected Fee","pages.send_receive_panel.send.placeholders.enter_amount":"Enter Amount","pages.send_receive_panel.send.placeholders.insert_recipient_address":"Insert Recipient Address","pages.send_receive_panel.send.placeholders.projected_fee":"Projected Fee","pages.send_receive_panel.send.errors.amount":"Insufficient Funds: You do not have enough to cover the amount + fee.","pages.send_receive_panel.send.errors.destination":"Destination address is not correct. Check and input again.","pages.send_receive_panel.send.hints.token_price":"Token Price","pages.send_receive_panel.send.fees.Fast":"Fast","pages.send_receive_panel.send.fees.Avg":"Avg","pages.send_receive_panel.send.fees.Slow":"Slow","pages.send_receive_panel.send.search_dropdown.placeholder":"Search token","pages.send_receive_panel.send.search_dropdown.no_results":"No Results","pages.send_receive_panel.send.search_dropdown.error":"Error occurred while searching tokens.","pages.send_receive_panel.send.transaction_time":"Transaction Time: ~{{ time }} minutes","pages.send_receive_panel.send.from":"From","pages.send_receive_panel.send.to":"To","pages.send_receive_panel.send.amount":"Amount","pages.send_receive_panel.send.fee":"Fee","pages.send_receive_panel.send.total_amount":"Total Amount","pages.send_receive_panel.send.waiting_message":"Review and verify the information on your MetaMask. Sign to send the transaction.","pages.send_receive_panel.send.waiting_spinner_text":"Waiting for confirmation...","pages.send_receive_panel.send.failed_message":"It looks like something went wrong while sending your transaction. Press 'Retry' to make another attempt.","pages.send_receive_panel.receive.alert":"Send only Polygon or Ethereum Network compatible tokens to this address or you could permanently lose your funds!","pages.settings.title":"Settings","pages.settings.sidebar.general":"General","pages.settings.sidebar.notifications":"Notifications","pages.settings.sidebar.session_history":"Sessions History","pages.settings.general.title":"Settings","pages.settings.general.subtitle":"Customize your App Experience","pages.settings.general.currency":"Currency","pages.settings.general.currency_subtitle":"Select your default currency which will be used throughout the app.","pages.settings.general.time_date":"Time & Date","pages.settings.general.time_date_subtitle":"Select how you want time and date be shown inside app.","pages.settings.general.date_format":"Date Format","pages.settings.general.time_format":"Time Format","pages.settings.general.timezone":"Timezone","pages.settings.general.set_defaults":"Set Defaults","pages.settings.general.set_defaults_content":"Reverting to the default settings will remove any customizations previously made. Are you sure?","pages.settings.general.save":"Save Settings","pages.settings.general.saved":"Your settings have been successfully saved","pages.wallet.title":"Wallet","pages.privacy_policy.title":"Privacy Policy","pages.terms_of_service.title":"Terms of Service","pages.popular_collections.title":"Popular NFT Collections","pages.popular_collections.header_title":"<0>{{nftsCount}} {{nfts}} from <0>{{collectionsCount}} {{collections}}, worth about <0><1>{{worth}}","pagination.previous":"« Previous","pagination.next":"Next »","passwords.reset":"Your password has been reset!","passwords.sent":"We have emailed your password reset link!","passwords.throttled":"Please wait before retrying.","passwords.token":"This password reset token is invalid.","passwords.user":"We can't find a user with that email address.","urls.landing":"https://dashbrd.com","urls.cookie_policy":"https://dashbrd.com/cookie-policy","urls.privacy_policy":"https://dashbrd.com/privacy-policy","urls.terms_of_service":"https://dashbrd.com/terms-of-service","urls.twitter":"https://x.com/DashbrdApp","urls.discord":"https://discord.gg/MJyWKkCJ5k","urls.github":"https://github.com/ArdentHQ/dashbrd","urls.coingecko":"https://www.coingecko.com","urls.etherscan":"https://etherscan.io","urls.polygonscan":"https://polygonscan.com","urls.alchemy":"https://www.alchemy.com","urls.moralis":"https://moralis.io","urls.mnemonic":"https://www.mnemonichq.com","urls.opensea":"https://opensea.io/","urls.explorers.etherscan.token_transactions":"https://etherscan.io/token/{{token}}?a={{address}}","urls.explorers.etherscan.addresses":"https://etherscan.io/address/{{address}}","urls.explorers.etherscan.transactions":"https://etherscan.io/tx/{{id}}","urls.explorers.etherscan.nft":"https://etherscan.io/nft/{{address}}/{{nftId}}","urls.explorers.polygonscan.token_transactions":"https://polygonscan.com/token/{{token}}?a={{address}}","urls.explorers.polygonscan.addresses":"https://polygonscan.com/address/{{address}}","urls.explorers.polygonscan.transactions":"https://polygonscan.com/tx/{{id}}","urls.explorers.polygonscan.nft":"https://polygonscan.com/nft/{{address}}/{{nftId}}","urls.explorers.mumbai.token_transactions":"https://mumbai.polygonscan.com/token/{{token}}?a={{address}}","urls.explorers.mumbai.addresses":"https://mumbai.polygonscan.com/address/{{address}}","urls.explorers.mumbai.transactions":"https://mumbai.polygonscan.com/tx/{{id}}","urls.explorers.mumbai.nft":"https://mumbai.polygonscan.com/nft/{{address}}/{{nftId}}","urls.explorers.goerli.token_transactions":"https://goerli.etherscan.io/token/{{token}}?a={{address}}","urls.explorers.goerli.addresses":"https://goerli.etherscan.io/address/{{address}}","urls.explorers.goerli.transactions":"https://goerli.etherscan.io/tx/{{id}}","urls.explorers.goerli.nft":"https://goerli.etherscan.io/nft/{{address}}/{{nftId}}","urls.marketplaces.opensea.collection":"https://opensea.io/assets/{{network}}/{{address}}","urls.marketplaces.opensea.nft":"https://opensea.io/assets/{{network}}/{{address}}/{{nftId}}","urls.marketplaces.rarible.collection":"https://rarible.com/collection/{{address}}/items","urls.marketplaces.rarible.nft":"https://rarible.com/token/{{address}}:{{nftId}}","urls.marketplaces.blur.collection":"https://blur.io/collection/{{address}}","urls.marketplaces.blur.nft":"https://blur.io/asset/{{address}}/{{nftId}}","urls.marketplaces.looksrare.collection":"https://looksrare.org/collections/{{address}}","urls.marketplaces.looksrare.nft":"https://looksrare.org/collections/{{address}}/{{nftId}}","validation.accepted":"The {{attribute}} must be accepted.","validation.accepted_if":"The {{attribute}} must be accepted when {{other}} is {{value}}.","validation.active_url":"The {{attribute}} is not a valid URL.","validation.after":"The {{attribute}} must be a date after {{date}}.","validation.after_or_equal":"The {{attribute}} must be a date after or equal to {{date}}.","validation.alpha":"The {{attribute}} must only contain letters.","validation.alpha_dash":"The {{attribute}} must only contain letters, numbers, dashes and underscores.","validation.alpha_num":"The {{attribute}} must only contain letters and numbers.","validation.array":"The {{attribute}} must be an array.","validation.ascii":"The {{attribute}} must only contain single-byte alphanumeric characters and symbols.","validation.before":"The {{attribute}} must be a date before {{date}}.","validation.before_or_equal":"The {{attribute}} must be a date before or equal to {{date}}.","validation.between.array":"The {{attribute}} must have between {{min}} and {{max}} items.","validation.between.file":"The {{attribute}} must be between {{min}} and {{max}} kilobytes.","validation.between.numeric":"The {{attribute}} must be between {{min}} and {{max}}.","validation.between.string":"The {{attribute}} must be between {{min}} and {{max}} characters.","validation.boolean":"The {{attribute}} field must be true or false.","validation.confirmed":"The {{attribute}} confirmation does not match.","validation.current_password":"The password is incorrect.","validation.date":"The {{attribute}} is not a valid date.","validation.date_equals":"The {{attribute}} must be a date equal to {{date}}.","validation.date_format":"The {{attribute}} does not match the format {{format}}.","validation.decimal":"The {{attribute}} must have {{decimal}} decimal places.","validation.declined":"The {{attribute}} must be declined.","validation.declined_if":"The {{attribute}} must be declined when {{other}} is {{value}}.","validation.different":"The {{attribute}} and {{other}} must be different.","validation.digits":"The {{attribute}} must be {{digits}} digits.","validation.digits_between":"The {{attribute}} must be between {{min}} and {{max}} digits.","validation.dimensions":"The {{attribute}} has invalid image dimensions.","validation.distinct":"The {{attribute}} field has a duplicate value.","validation.doesnt_end_with":"The {{attribute}} may not end with one of the following: {{values}}.","validation.doesnt_start_with":"The {{attribute}} may not start with one of the following: {{values}}.","validation.email":"The {{attribute}} must be a valid email address.","validation.ends_with":"The {{attribute}} must end with one of the following: {{values}}.","validation.enum":"The selected {{attribute}} is invalid.","validation.exists":"The selected {{attribute}} is invalid.","validation.file":"The {{attribute}} must be a file.","validation.filled":"The {{attribute}} field must have a value.","validation.gt.array":"The {{attribute}} must have more than {{value}} items.","validation.gt.file":"The {{attribute}} must be greater than {{value}} kilobytes.","validation.gt.numeric":"The {{attribute}} must be greater than {{value}}.","validation.gt.string":"The {{attribute}} must be greater than {{value}} characters.","validation.gte.array":"The {{attribute}} must have {{value}} items or more.","validation.gte.file":"The {{attribute}} must be greater than or equal to {{value}} kilobytes.","validation.gte.numeric":"The {{attribute}} must be greater than or equal to {{value}}.","validation.gte.string":"The {{attribute}} must be greater than or equal to {{value}} characters.","validation.image":"The {{attribute}} must be an image.","validation.in":"The selected {{attribute}} is invalid.","validation.in_array":"The {{attribute}} field does not exist in {{other}}.","validation.integer":"The {{attribute}} must be an integer.","validation.ip":"The {{attribute}} must be a valid IP address.","validation.ipv4":"The {{attribute}} must be a valid IPv4 address.","validation.ipv6":"The {{attribute}} must be a valid IPv6 address.","validation.json":"The {{attribute}} must be a valid JSON string.","validation.lowercase":"The {{attribute}} must be lowercase.","validation.lt.array":"The {{attribute}} must have less than {{value}} items.","validation.lt.file":"The {{attribute}} must be less than {{value}} kilobytes.","validation.lt.numeric":"The {{attribute}} must be less than {{value}}.","validation.lt.string":"The {{attribute}} must be less than {{value}} characters.","validation.lte.array":"The {{attribute}} must not have more than {{value}} items.","validation.lte.file":"The {{attribute}} must be less than or equal to {{value}} kilobytes.","validation.lte.numeric":"The {{attribute}} must be less than or equal to {{value}}.","validation.lte.string":"The {{attribute}} must be less than or equal to {{value}} characters.","validation.mac_address":"The {{attribute}} must be a valid MAC address.","validation.max.array":"The {{attribute}} must not have more than {{max}} items.","validation.max.file":"The {{attribute}} must not be greater than {{max}} kilobytes.","validation.max.numeric":"The {{attribute}} must not be greater than {{max}}.","validation.max.string":"The {{attribute}} must not be greater than {{max}} characters.","validation.max_digits":"The {{attribute}} must not have more than {{max}} digits.","validation.mimes":"The {{attribute}} must be a file of type: {{values}}.","validation.mimetypes":"The {{attribute}} must be a file of type: {{values}}.","validation.min.array":"The {{attribute}} must have at least {{min}} items.","validation.min.file":"The {{attribute}} must be at least {{min}} kilobytes.","validation.min.numeric":"The {{attribute}} must be at least {{min}}.","validation.min.string":"The {{attribute}} must be at least {{min}} characters.","validation.min_digits":"The {{attribute}} must have at least {{min}} digits.","validation.missing":"The {{attribute}} field must be missing.","validation.missing_if":"The {{attribute}} field must be missing when {{other}} is {{value}}.","validation.missing_unless":"The {{attribute}} field must be missing unless {{other}} is {{value}}.","validation.missing_with":"The {{attribute}} field must be missing when {{values}} is present.","validation.missing_with_all":"The {{attribute}} field must be missing when {{values}} are present.","validation.multiple_of":"The {{attribute}} must be a multiple of {{value}}.","validation.not_in":"The selected {{attribute}} is invalid.","validation.not_regex":"The {{attribute}} format is invalid.","validation.numeric":"The {{attribute}} must be a number.","validation.password.letters":"The {{attribute}} must contain at least one letter.","validation.password.mixed":"The {{attribute}} must contain at least one uppercase and one lowercase letter.","validation.password.numbers":"The {{attribute}} must contain at least one number.","validation.password.symbols":"The {{attribute}} must contain at least one symbol.","validation.password.uncompromised":"The given {{attribute}} has appeared in a data leak. Please choose a different {{attribute}}.","validation.present":"The {{attribute}} field must be present.","validation.prohibited":"The {{attribute}} field is prohibited.","validation.prohibited_if":"The {{attribute}} field is prohibited when {{other}} is {{value}}.","validation.prohibited_unless":"The {{attribute}} field is prohibited unless {{other}} is in {{values}}.","validation.prohibits":"The {{attribute}} field prohibits {{other}} from being present.","validation.regex":"The {{attribute}} format is invalid.","validation.required":"The {{attribute}} field is required.","validation.required_array_keys":"The {{attribute}} field must contain entries for: {{values}}.","validation.required_if":"The {{attribute}} field is required when {{other}} is {{value}}.","validation.required_if_accepted":"The {{attribute}} field is required when {{other}} is accepted.","validation.required_unless":"The {{attribute}} field is required unless {{other}} is in {{values}}.","validation.required_with":"The {{attribute}} field is required when {{values}} is present.","validation.required_with_all":"The {{attribute}} field is required when {{values}} are present.","validation.required_without":"The {{attribute}} field is required when {{values}} is not present.","validation.required_without_all":"The {{attribute}} field is required when none of {{values}} are present.","validation.same":"The {{attribute}} and {{other}} must match.","validation.size.array":"The {{attribute}} must contain {{size}} items.","validation.size.file":"The {{attribute}} must be {{size}} kilobytes.","validation.size.numeric":"The {{attribute}} must be {{size}}.","validation.size.string":"The {{attribute}} must be {{size}} characters.","validation.starts_with":"The {{attribute}} must start with one of the following: {{values}}.","validation.string":"The {{attribute}} must be a string.","validation.timezone":"The {{attribute}} must be a valid timezone.","validation.unique":"The {{attribute}} has already been taken.","validation.uploaded":"The {{attribute}} failed to upload.","validation.uppercase":"The {{attribute}} must be uppercase.","validation.url":"The {{attribute}} must be a valid URL.","validation.ulid":"The {{attribute}} must be a valid ULID.","validation.uuid":"The {{attribute}} must be a valid UUID.","validation.custom.attribute-name.rule-name":"custom-message","validation.unsupported_currency_code":"The currency code you provided is invalid or not supported.","validation.unsupported_period":"The period you provided is invalid or not supported.","validation.unsupported_token_symbol":"The token symbol you provided is invalid or not supported.","validation.gallery_title_required":"Gallery name is required.","validation.gallery_title_max_characters":"The gallery name should not exceed 50 characters.","validation.gallery_title_invalid":"The gallery name is invalid.","validation.nfts_required":"Please add at least one NFT.","validation.nfts_max_size":"Galleries can contain no more than {{limit}} NFTs","validation.invalid_nfts":"The NFT in position {{position}} is invalid, please select another one.","validation.invalid_cover":"You have selected an invalid cover image, please try another one."} \ No newline at end of file +{"auth.welcome":"Welcome to Dashbrd","auth.logged_in":"You're logged in!","auth.log_out":"Log out","auth.failed":"These credentials do not match our records.","auth.session_timeout":"Your session has timed out. Please refresh the page and try connecting your account again.","auth.session_timeout_modal":"Seems like your session has timed out. Please connnect your wallet again.","auth.password":"The provided password is incorrect.","auth.throttle":"Too many login attempts. Please try again in {{seconds}} seconds.","auth.wallet.connecting":"Connecting …","auth.wallet.waiting_for_signature":"Waiting for Signature …","auth.wallet.switching_wallet":"Switching Wallet …","auth.wallet.connect":"Connect Wallet","auth.wallet.connect_long":"Connect Your Wallet to Get Started","auth.wallet.sign_subtitle":"Connect Your Wallet to Continue","auth.wallet.disconnect":"Disconnect Wallet","auth.wallet.install":"Install MetaMask","auth.wallet.install_long":"Install MetaMask to Get Started","auth.wallet.sign":"Sign Message","auth.wallet.sign_message":"Welcome to Dashbrd. In order to login, sign this message with your wallet. It doesn't cost you anything!\n\nSigning ID (you can ignore this): {{nonce}}","auth.wallet.connect_subtitle":"Click on the MetaMask icon in your browser to confirm the action and connect your wallet.","auth.wallet.requires_signature":"In order to prevent impersonation, we require a signature to perform this action. This signature is only a signed message and does not give any access to your wallet.","auth.errors.metamask.no_account":"No account found. Please connect your wallet and try again.","auth.errors.metamask.generic":"Connection attempt error. Please retry and follow the steps to connect your wallet.","auth.errors.metamask.invalid_network":"Please switch to Polygon or Ethereum Mainnet in your MetaMask plugin to connect to Dashbrd.","auth.errors.metamask.provider_missing":"You don't have MetaMask installed in your browser. Please install and try again.","auth.errors.metamask.user_rejected":"It looks like you cancelled signing of the authentication message. Please try again.","auth.errors.metamask.provider_not_set":"Ethereum provider is not set","auth.validation.wallet_login_failed":"There was a problem trying to verify your signature. Please try again.","auth.validation.invalid_address":"Your wallet address is invalid. Please try again.","auth.validation.invalid_signature":"Signature is invalid. Please try again.","auth.validation.invalid_network":"Please switch to Polygon or Ethereum Mainnet in your MetaMask plugin to connect to Dashbrd.","common.author":"Author","common.add":"Add","common.amount":"Amount","common.balance":"Balance","common.cancel":"Cancel","common.delete":"Delete","common.edit":"Edit","common.confirm":"Confirm","common.connect":"Connect","common.continue":"Continue","common.done":"Done","common.filter":"Filter","common.items":"Items","common.receive":"Receive","common.received":"Received","common.retry":"Retry","common.records":"Records","common.save":"Save","common.send":"Send","common.sent":"Sent","common.show":"Show","common.searching":"Searching...","common.other":"Other","common.owned":"Owned","common.token":"Token","common.tokens":"Tokens","common.wallet":"Wallet","common.pending":"Pending","common.publish":"Publish","common.published":"Published","common.empty":"Empty","common.your_address":"Your Address","common.warning":"Warning","common.my_address":"My Address","common.my_wallet":"My Wallet","common.my_collections":"My Collections","common.my_balance":"My Balance","common.na":"N/A","common.simple_plural_without_data":"One comment|Many comments","common.simple_plural_with_data":"{{count}} comment|{{count}} comments","common.advanced_plural_without_data":"{0} no comments yet|{1} 1 comment|[2,*] Many comments","common.advanced_plural_with_data":"{0} no comments yet|{1} 1 comment|[2,*] {{count}} comments","common.copy_clipboard":"Copy to Clipboard","common.copy":"Copy","common.download":"Download","common.zoom":"Zoom","common.my_collection":"My Collection","common.max":"Max","common.chain":"Chain","common.search":"Search","common.copied":"Copied!","common.coming_soon":"Coming Soon","common.more_details":"More Details","common.close":"Close","common.close_toast":"Close toast","common.loading":"Loading","common.price":"Price","common.articles":"Articles","common.most_popular":"Most Popular","common.market_cap":"Market Cap","common.volume":"Volume","common.volume_frequency":"Volume {{frequency}}","common.value":"Value","common.last_n_days":"Last {{count}} Days","common.details":"Details","common.view_all":"View All","common.view_more_on_polygonscan":"View More on Polygonscan","common.view_more_on_etherscan":"View More on Etherscan","common.view_nft_on_etherscan":"View NFT on Etherscan","common.view_nft_on_polygonscan":"View NFT on Polygonscan","common.view_nft_on_goerli_tesnet":"View NFT on Goerli Testnet Explorer","common.view_nft_on_mumbai_tesnet":"View NFT on Mumbai Testnet Explorer","common.polygonscan":"Polygonscan","common.etherscan":"Etherscan","common.featured":"Featured","common.floor_price":"Floor Price","common.floor":"Floor","common.supply":"Supply","common.owners":"Owners","common.created":"Created","common.nft":"NFT","common.collection":"Collection","common.collections":"Collections","common.gallery":"Gallery","common.basic_gallery":"Basic Gallery","common.gallery_name":"Gallery Name","common.create_gallery":"Create Gallery","common.external_link":"External Link","common.follow_link":"Follow Link","common.cover":"Cover","common.template":"Template","common.page":"Page","common.polygon":"Polygon","common.ethereum":"Ethereum","common.mumbai":"Mumbai","common.goerli":"Goerli","common.of":"of","common.pagination_input_placeholder":"Enter the page number","common.pagination_input_placeholder_mobile":"Page number","common.nft_count":"{0} {{count}} NFTs|{1} {{count}} NFT|[2,*] {{count}} NFTs","common.nft_gallery":"NFT Gallery","common.unable_to_retrieve_image":"Unable to retrieve your NFT image at this time","common.optional":"Optional","common.selected":"Selected","common.select":"Select","common.preview":"Preview","common.image_size_error":"Image size must not exceed 2MB","common.image_dimensions_error":"Image dimensions must exceed 287px x 190px","common.write_to_confirm":"Write {{word}} to confirm","common.n_hours":"{0} {{count}} hour|{1} {{count}} hour|[2,*] {{count}} hours","common.n_minutes":"{0} {{count}} minute|{1} {{count}} minute|[2,*] {{count}} minutes","common.report":"Report","common.nfts":"NFTs","common.n_nfts":"{0}NFTs|{1}NFT|[2,*]NFTs","common.n_collections":"{0}collections|{1}collection|[2,*]collections","common.back":"Back","common.back_to":"Back to","common.name":"Name","common.type":"Type","common.from":"From","common.to":"To","common.sale_price":"Sale Price","common.recent_activity":"Recent Activity","common.time":"Time","common.datetime.few_seconds_ago":"A few seconds ago","common.datetime.minutes_ago":"{0} Less than a minute ago|{1} A minute ago|[2,*] {{count}} minutes ago","common.datetime.hours_ago":"{0} Less than an hour ago|{1} An hour ago|[2,*] {{count}} hours ago","common.datetime.days_ago":"{0} Less than a day ago|{1} A day ago|[2,*] {{count}} days ago","common.datetime.weeks_ago":"{0} Less than a week ago|{1} A week ago|[2,*] {{count}} weeks ago","common.datetime.months_ago":"{0} Less than a month ago|{1} A month ago|[2,*] {{count}} months ago","common.datetime.years_ago":"{0} Less than a year ago|{1} A year ago|[2,*] {{count}} years ago","common.no_traits_found":"No traits found.","common.empty_transactions":"You don't have any transactions yet. Once transactions have been made, they will show up here.","common.error":"Error","common.refresh":"Refresh","common.refresh_metadata":"Refresh Metadata","common.refreshing_metadata":"Refreshing Metadata... Please check back later.","common.refreshing_activity":"Refreshing Activity... Please check back later.","common.pending_confirmation":"Pending Confirmation","common.confirmed_transaction":"Confirmed Transaction","common.transaction_error":"Transaction Error","common.transaction_error_description_first_part":"Your transaction encountered an error. View this transaction on","common.transaction_error_description_second_part":"for more details.","common.home":"Home","common.contact":"Contact","common.menu":"Menu","common.website":"Website","common.twitter":"Twitter","common.discord":"Discord","common.facebook":"Facebook","common.reddit":"Reddit","common.x":"X","common.sort":"Sort","common.drafts":"Drafts","common.draft":"Draft","common.delete_draft":"Delete Draft","common.share_on":"Share on {{platform}}","common.top":"Top","common.all_chains":"All chains","common.votes":"Votes","common.vote":"Vote","common.vol":"Vol","common.collection_preview":"Collection Preview","common.24h":"24h","common.7d":"7d","common.30d":"30d","common.months.0":"January","common.months.1":"February","common.months.2":"March","common.months.3":"April","common.months.4":"May","common.months.5":"June","common.months.6":"July","common.months.7":"August","common.months.8":"September","common.months.9":"October","common.months.10":"November","common.months.11":"December","footer.copyright":"{{year}} © Dashbrd. All rights reserved.","footer.all_rights_reserved":"All rights reserved","footer.privacy_policy":"Privacy Policy","footer.terms_of_service":"Terms of Service","footer.powered_by":"Powered by","format.fiat":"{{ value, currency }}","format.number":"{{ value, number }}","metatags.home.title":"Dashbrd | Web3 Portfolio Management Made Simple","metatags.home.description":"Simplify your Web3 journey with Dashbrd. Manage your portfolio of tokens, NFTs, and other digital collectibles across the Ethereum and Polygon blockchains.","metatags.home.image":"/images/meta/home.png","metatags.error.title":"Error {{code}} | Dashbrd","metatags.wallet.title":"My Wallet | Dashbrd","metatags.galleries.title":"Top NFT Galleries | Dashbrd","metatags.galleries.image":"/images/meta/nft-galleries.png","metatags.galleries.description":"Explore user published NFT galleries to find custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.most_popular.title":"Most Popular Galleries | Dashbrd","metatags.galleries.most_popular.image":"/images/meta/most-popular-nft-galleries.png","metatags.galleries.most_popular.description":"Explore and discover Most Popular NFT Galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.newest.title":"Newest Galleries | Dashbrd","metatags.galleries.newest.image":"/images/meta/newest-nft-galleries.png","metatags.galleries.newest.description":"Explore and discover most recent NFT galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More","metatags.galleries.most_valuable.title":"Most Valuable Galleries | Dashbrd","metatags.galleries.most_valuable.image":"/images/meta/most-valuable-nft-galleries.png","metatags.galleries.most_valuable.description":"Explore and discover Most Valuable NFT Galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.view.title":"{{name}} | Dashbrd","metatags.galleries.view.description":"{{name}} | A Curated NFT Gallery at Dashbrd","metatags.galleries.view.image":"/images/meta/nft-gallery.png","metatags.my_galleries.title":"My Galleries | Dashbrd","metatags.my_galleries.title_draft":"My Draft Galleries | Dashbrd","metatags.my_galleries.create.title":"Create Gallery | Dashbrd","metatags.my_galleries.edit.title":"Edit {{name}} | Dashbrd","metatags.collections.title":"Collections | Dashbrd","metatags.collections.view.title":"{{name}} Collection | Dashbrd","metatags.collections.view.description":"Immerse yourself in the intricate details of {{name}} collection, featuring remarkable digital assets. Start your NFT journey today!","metatags.collections.view.image":"/images/meta/nft-collection.png","metatags.collections.of-the-month.title":"Collection of the Month {{month}} | Dashbrd","metatags.my-collections.title":"My Collections | Dashbrd","metatags.popular-collections.title":"Popular NFT Collections | Dashbrd","metatags.nfts.view.title":"{{nft}} NFT | Dashbrd","metatags.nfts.view.description":"Uncover the complete story of {{nft}} NFT from the {{collection}} collection, delving into its unique attributes and distinctive features.","metatags.nfts.view.image":"/images/meta/nft-details.png","metatags.settings.title":"Settings | Dashbrd","metatags.articles.title":"Articles | Dashbrd","metatags.articles.view.title":"{{title}} | Dashbrd","metatags.login.title":"Login | Dashbrd","metatags.privacy_policy.title":"Privacy Policy | Dashbrd","metatags.privacy_policy.description":"Dashbrd’s privacy policy outlines the information we collect and explains your choices surrounding how we use information about you.","metatags.terms_of_service.title":"Terms of Service | Dashbrd","metatags.terms_of_service.description":"These Terms of Service cover your use and access to services, products or websites of Dashbrd.","metatags.cookie_policy.title":"Cookie Policy | Dashbrd","metatags.cookie_policy.description":"Dashbrd uses cookies to make the website more user-friendly. Find out about the main types of cookies we use, and what we use them for.","metatags.welcome.title":"Welcome to Dashbrd | Web3 Simplified","pages.onboarding.title":"Get Started","pages.onboarding.heading":"Your monkeys were bored and ran off, we are trying to round them up.","pages.onboarding.message":"We are setting up your account. This process usually takes just a few minutes, but can take up to 15 minutes.","pages.error.heading":"Oops, something went wrong ...","pages.error.message":"Please try again or get in touch if the issue persists.","pages.maintenance.title":"Dashbrd is currently down for scheduled maintenance.","pages.maintenance.description":"We expect to be back soon. Thanks for your patience.","pages.dashboard.title":"My Wallet","pages.dashboard.breakdown.title":"Portfolio Breakdown","pages.dashboard.line_chart.data_error":"Could not load chart data","pages.articles.title":"Articles","pages.articles.featured_collections":"Featured Collections","pages.articles.placeholder_more_soon":"More Soon","pages.articles.no_articles":"No articles have been published yet. Please check back later!","pages.articles.header_title":"Explore our collection of","pages.articles.header_suffix_one":"published article","pages.articles.header_suffix_other":"published articles","pages.articles.audio_version":"Audio version","pages.articles.consists_of_collections":"{0} This article highlights {{count}} collections|{1} This article highlights {{count}} collection|[2,*] This article highlights {{count}} collections","pages.collections.title":"Collections","pages.collections.collections":"Collections","pages.collections.popular_collections":"Popular Collections","pages.collections.collection_value":"Collection Value","pages.collections.nfts_owned":"NFTs Owned","pages.collections.header_title":"You own <0>{{nftsCount}} {{nfts}} across <0>{{collectionsCount}} {{collections}}, worth about <0><1>{{worth}}","pages.collections.search_placeholder":"Search by Collection","pages.collections.properties":"Properties","pages.collections.collections_network":"Collections Network","pages.collections.property_search_placeholder":"Feature Search","pages.collections.floor_price":"Floor Price","pages.collections.value":"Value","pages.collections.rarity":"Rarity","pages.collections.report":"Report","pages.collections.search_by_name":"Search by Collection Name","pages.collections.hide_collection":"Hide Collection","pages.collections.unhide_collection":"Unhide Collection","pages.collections.no_collections":"You do not own any NFTs yet. Once you do they will be shown here.","pages.collections.all_collections_hidden":"You have hidden all your collections. Unhide and they will appear here.","pages.collections.about_collection":"About Collection","pages.collections.show_hidden":"Show Hidden","pages.collections.show_my_collection":"Show My Collection","pages.collections.owned":"Owned","pages.collections.activities.loading_activities":"We're fetching Activity for this NFT, please hang tight, this can take a while.","pages.collections.activities.loading_activities_collection":"We're fetching Activity for this collection, please hang tight, this can take a while.","pages.collections.activities.ignores_activities":"We don't support activity history for this collection yet.","pages.collections.activities.no_activity":"This collection does not have any activity yet.","pages.collections.activities.types.LABEL_MINT":"Mint","pages.collections.activities.types.LABEL_TRANSFER":"Transfer","pages.collections.activities.types.LABEL_SALE":"Sale","pages.collections.activities.types.LABEL_BURN":"Burn","pages.collections.collection_of_the_month.title":"Collection of the Month {{month}}","pages.collections.collection_of_the_month.winners_month":"Winners: {{month}}","pages.collections.collection_of_the_month.vote_for_next_months_winners":"Vote now for next month's winners","pages.collections.collection_of_the_month.view_previous_winners":"View Previous Winners","pages.collections.collection_of_the_month.previous_winners":"Previous Winners","pages.collections.collection_of_the_month.vote_received_modal.title":"Vote Received","pages.collections.collection_of_the_month.vote_received_modal.description":"Your vote has been recorded. Share your vote on X and let everyone know!","pages.collections.collection_of_the_month.vote_received_modal.share_vote":"Share Vote","pages.collections.collection_of_the_month.vote_received_modal.img_alt":"I voted for Dashbrd Project of the Month","pages.collections.collection_of_the_month.vote_received_modal.x_text":"I voted for {{collection}} for collection of the month @dashbrdapp! Go show your support!","pages.collections.collection_of_the_month.vote_success":"Your vote has been successfully submitted","pages.collections.collection_of_the_month.vote_failed":"You already cast your vote","pages.collections.collection_of_the_month.already_won":"This collecction has already won Collection of the Month.","pages.collections.collection_of_the_month.content_to_be_added.title":"Content to be added","pages.collections.collection_of_the_month.content_to_be_added.description":"There will be a list of previous month winners here soon!","pages.collections.collection_of_the_month.has_won_already":"This collection has already
    won Collection of the Month.","pages.collections.articles.heading":"Latest NFT News & Features","pages.collections.articles.no_articles":"No articles have been linked to this collection as of now.","pages.collections.articles.no_articles_with_filters":"We could not find any articles matching your search criteria, please try again!","pages.collections.articles.search_placeholder":"Search in Articles","pages.collections.articles.sort_latest":"Latest","pages.collections.articles.sort_popularity":"Most Popular","pages.collections.search.loading_results":"Loading results...","pages.collections.search.no_results":"We could not find anything matching your search criteria, please try again!","pages.collections.search.no_results_with_filters":"We could not find anything matching your filters, please try again!","pages.collections.search.no_results_ownership":"You do not own any NFTs in this collection","pages.collections.search.error":"Could not load search results. Please try again later.","pages.collections.vote.vote_for_top_collection":"Vote for Top Collection of the Month","pages.collections.vote.vote":"Vote","pages.collections.vote.time_left":"Time Left","pages.collections.vote.or_nominate_collection":"Or nominate a collection","pages.collections.vote.nominate_collection":"Nominate a collection","pages.collections.vote.vote_to_reveal":"Vote to reveal data","pages.collections.vote.already_voted":"You’ve already nominated. Come back next month!","pages.collections.vote.select_collection":"Please, select a collection to nominate","pages.collections.sorting.token_number":"Token Number","pages.collections.sorting.recently_received":"Recently Received","pages.collections.sorting.recently_created":"Recently Created","pages.collections.sorting.oldest_collection":"Oldest Collection","pages.collections.traits.description":"List of NFT traits by % of occurrence in the collection","pages.collections.traits.no_traits":"No Properties can be found for this NFT","pages.collections.menu.collection":"Collection","pages.collections.menu.articles":"Articles","pages.collections.menu.activity":"Activity","pages.collections.hidden_modal.collection_hidden":"Collection Hidden","pages.collections.hidden_modal.description":"This collection is currently set to Hidden. Are you sure you want to unhide this collection? You can\n reset the collection to hidden from the collection menu.","pages.collections.hidden_modal.unhide":"Unhide","pages.collections.hidden_modal.error":"Something went wrong. Please try again.","pages.collections.external_modal.you_wish_continue":"You are about to leave Dashbrd to an external website. Dashbrd has no control over the content of\n this site. Are you sure you wish to continue?","pages.collections.external_modal.not_show":"Do not show this message again.","pages.collections.refresh.title":"Refresh your collection","pages.collections.refresh.notice":"You can refresh data every 15 minutes.","pages.collections.refresh.notice_wait":"Please wait. You can refresh data every 15 minutes.","pages.collections.refresh.toast":"We're updating information for your collection.","pages.collections.featured.title":"Featured Collections","pages.collections.featured.button":"Explore Collection","pages.collections.footer.heading_broken.0":"Connect with MetaMask","pages.collections.footer.heading_broken.1":"& Manage Your Collection","pages.collections.footer.subtitle":"Explore, Filter, & Share your favorite NFTs with Dashbrd.","pages.collections.footer.button":"Manage Collections","pages.nfts.nft":"nft","pages.nfts.about_nft":"About NFT","pages.nfts.owned_by":"Owned by","pages.nfts.collection_image":"collection image","pages.nfts.menu.properties":"Properties","pages.nfts.menu.activity":"Activity","pages.nfts.erc1155_support.title":"No ERC1155 Support","pages.nfts.erc1155_support.description":"We noticed you own some ERC1155 NFTs. Unfortunately, we don't support them yet.","pages.reports.title":"Submit a Report","pages.reports.description":"Thanks for looking out by reporting things that break the rules. Let us know what's happening and we'll receive the report.","pages.reports.success":"Thank you for your report. We'll review it and see if it breaks our ToS.","pages.reports.failed":"Something went wrong. Please try again.","pages.reports.throttle":"You have made too many requests. Please wait {{time}} before reporting again.","pages.reports.reported":"You have already reported this {{model}}.","pages.reports.reasons.spam":"Spam","pages.reports.reasons.violence":"Promoting Violence","pages.reports.reasons.hate":"Hate","pages.reports.reasons.inappropriate_content":"Inappropriate Content","pages.reports.reasons.impersonation":"Impersonation","pages.reports.reasons.trademark":"Trademark or Copyright","pages.reports.reasons.selfharm":"Self-Harm","pages.reports.reasons.harassment":"Harassment","pages.galleries.title":"Galleries","pages.galleries.empty_title":"No galleries have been published yet. Once they do they will appear here.","pages.galleries.search.loading_results":"Loading results...","pages.galleries.search.no_results":"We could not find anything matching your search criteria, please try again!","pages.galleries.search.placeholder":"Search by name or curator address","pages.galleries.search.placeholder_nfts":"Search by NFTs","pages.galleries.search.error":"Could not load search results. Please try again later.","pages.galleries.my_galleries.title":"My Galleries","pages.galleries.my_galleries.subtitle":"Manage your galleries","pages.galleries.my_galleries.new_gallery":"New Gallery","pages.galleries.my_galleries.no_galleries":"You have not created any galleries yet. To create a gallery, click on the \"Create Gallery\" button.","pages.galleries.my_galleries.no_available_collections":"You have hidden all your collections. If you want to create a gallery, make sure you have at least 1 collection available.","pages.galleries.my_galleries.no_draft_galleries":"You have no draft galleries yet. To create a gallery, click on the \"Create Gallery\" button.","pages.galleries.my_galleries.succesfully_deleted":"Gallery has been successfully removed","pages.galleries.my_galleries.draft_succesfully_deleted":"Draft has been successfully removed","pages.galleries.my_galleries.successfully_created":"Gallery has been successfully created","pages.galleries.my_galleries.successfully_updated":"Gallery has been successfully updated","pages.galleries.my_galleries.new_gallery_no_nfts":"Creating a Gallery requires you to own an NFT.","pages.galleries.my_galleries.new_gallery_all_collections_hidden":"Creating a Gallery requires you to have at least 1 collection available.","pages.galleries.my_galleries.delete_modal.title":"Delete Draft","pages.galleries.my_galleries.delete_modal.text":"Are you sure you want to delete the draft? Everything you've done will be deleted and you won't be able to get it back.","pages.galleries.my_galleries.nfts_no_longer_owned":"NFTs no longer owned by this wallet have been removed from the draft”","pages.galleries.copy_gallery_link":"Copy Gallery Link","pages.galleries.my_nfts":"My NFTs","pages.galleries.show_hidden_collections":"Show hidden collections","pages.galleries.value":"Value","pages.galleries.floor_price":"Floor Price","pages.galleries.nfts":"NFTs","pages.galleries.collections":"Collections","pages.galleries.galleries_count_simple":"{0} galleries|{1} gallery|[2,*] galleries","pages.galleries.galleries_count":"{0} {{count}} Galleries|{1} {{count}} Gallery|[2,*] {{count}} Galleries","pages.galleries.collections_count_simple":"{0} collections|{1} collection|[2,*] collections","pages.galleries.collections_count":"{0} {{count}} Collections|{1} {{count}} Collection|[2,*] {{count}} Collections","pages.galleries.nfts_count_simple":"{0} NFTs|{1} NFT|[2,*] NFTs","pages.galleries.nfts_count":"{0} {{count}} NFTs|{1} {{count}} NFT|[2,*] {{count}} NFTs","pages.galleries.users_count_simple":"{0} users|{1} user|[2,*] users","pages.galleries.users_count":"{0} {{count}} Users|{1} {{count}} User|[2,*] {{count}} Users","pages.galleries.featuring":"Featuring","pages.galleries.curated_by":"Curated by","pages.galleries.worth_about":"Worth About","pages.galleries.valued_at":"valued at","pages.galleries.from":"From","pages.galleries.most_popular_galleries":"Most Popular Galleries","pages.galleries.newest_galleries":"Newest Galleries","pages.galleries.most_valuable_galleries":"Most Valuable Galleries","pages.galleries.most_popular":"Most Popular","pages.galleries.newest":"Newest","pages.galleries.most_valuable":"Most Valuable","pages.galleries.create.search_by_nfts":"Search by NFTs","pages.galleries.create.input_placeholder":"Enter gallery name","pages.galleries.create.title_too_long":"Gallery name must not exceed {{max}} characters.","pages.galleries.create.already_selected_nft":"NFT already exists in this gallery","pages.galleries.create.nft_missing_image":"Only NFTs with images can be added to galleries","pages.galleries.create.nft_gallery_limit":"You can only add 16 NFTs per gallery","pages.galleries.create.gallery_cover":"Gallery Cover","pages.galleries.create.gallery_cover_description":"The cover is used for the card on the gallery list page. While the cover is not a requirement it will allow you to add personality and stand out from the crowd.","pages.galleries.create.gallery_cover_information":"Image dimensions must be at least 287px x 190px, with a max size of 2 MB (JPG, PNG or GIF)","pages.galleries.create.no_results":"We could not find anything matching your search criteria, please try again!","pages.galleries.create.templates.cover":"Cover","pages.galleries.create.templates.template":"Template","pages.galleries.create.templates.select":"Select Gallery Template","pages.galleries.create.templates.basic":"Basic Gallery","pages.galleries.create.templates.coming_soon":"More Coming Soon","pages.galleries.create.load_more_collections_one":"Load {{count}} More Collection","pages.galleries.create.load_more_collections_other":"Load {{count}} More Collections","pages.galleries.create.load_more_nfts":"Load More NFTs","pages.galleries.create.can_purchase":"You can purchase NFTs with these top NFT Marketplaces:","pages.galleries.create.must_own_one_nft":"You must own at least one (1) NFT in order to create a gallery.","pages.galleries.create.back_to_galleries":"Back to Galleries","pages.galleries.create.draft_saved":"Draft Saved","pages.galleries.create.saving_to_draft":"Saving to draft","pages.galleries.create.drafts_limit_modal_title":"Draft Gallery Limit","pages.galleries.create.drafts_limit_modal_message":"You’ve hit your limit for draft galleries. While you can still make new galleries and publish them, they won’t be saved as drafts. To Free up space, you can either delete existing drafts or publish them.","pages.galleries.create.drafts_limit_modal_cancel":"Go to Drafts","pages.galleries.delete_modal.title":"Delete Gallery","pages.galleries.delete_modal.confirmation_text":"Are you sure you want to delete the gallery? Deleting a Gallery is permanent, all associated views and likes will be lost.","pages.galleries.consists_of_collections":"{0} This gallery consists of {{count}} collections|{1} This gallery consists of {{count}} collection|[2,*] This gallery consists of {{count}} collections","pages.galleries.guest_banner.title":"Craft the ultimate","pages.galleries.guest_banner.subtitle":"Pick your favorites, curate your gallery, & share it with the world.","pages.profile.title":"Profile","pages.token_panel.balance_tooltip":"Total percentage of the portfolio held in this token","pages.token_panel.insufficient_funds":"Insufficient Balance","pages.token_panel.error":"Dashbrd has failed to load token information. Please try again later.","pages.token_panel.failed_to_retrieve_transactions":"We were unable to fetch your transactions.","pages.token_panel.tabs.transaction_history":"Transaction History","pages.token_panel.tabs.history":"History","pages.token_panel.tabs.market_data":"Market Data","pages.token_panel.details.current_price":"Current Price","pages.token_panel.details.title":"Token Details","pages.token_panel.details.market_cap":"Market Cap","pages.token_panel.details.volume":"Daily Volume","pages.token_panel.details.supply":"Minted Supply","pages.token_panel.details.ath":"All-Time High","pages.token_panel.details.atl":"All-Time Low","pages.token_panel.chart.failed":"Dashbrd has failed to load chart information. Please try again later.","pages.transaction_details_panel.title":"Transaction Details","pages.transaction_details_panel.details.blockchain":"Blockchain","pages.transaction_details_panel.details.timestamp":"Timestamp","pages.transaction_details_panel.details.transaction_hash":"Transaction Hash","pages.transaction_details_panel.details.transaction_fee":"Transaction Fee","pages.transaction_details_panel.details.gas_price":"Gas Price","pages.transaction_details_panel.details.gas_used":"Gas Used","pages.transaction_details_panel.details.nonce":"Nonce","pages.send_receive_panel.send.labels.token_and_amount":"Token and Amount","pages.send_receive_panel.send.labels.destination_address":"Destination Address","pages.send_receive_panel.send.labels.projected_fee":"Projected Fee","pages.send_receive_panel.send.placeholders.enter_amount":"Enter Amount","pages.send_receive_panel.send.placeholders.insert_recipient_address":"Insert Recipient Address","pages.send_receive_panel.send.placeholders.projected_fee":"Projected Fee","pages.send_receive_panel.send.errors.amount":"Insufficient Funds: You do not have enough to cover the amount + fee.","pages.send_receive_panel.send.errors.destination":"Destination address is not correct. Check and input again.","pages.send_receive_panel.send.hints.token_price":"Token Price","pages.send_receive_panel.send.fees.Fast":"Fast","pages.send_receive_panel.send.fees.Avg":"Avg","pages.send_receive_panel.send.fees.Slow":"Slow","pages.send_receive_panel.send.search_dropdown.placeholder":"Search token","pages.send_receive_panel.send.search_dropdown.no_results":"No Results","pages.send_receive_panel.send.search_dropdown.error":"Error occurred while searching tokens.","pages.send_receive_panel.send.transaction_time":"Transaction Time: ~{{ time }} minutes","pages.send_receive_panel.send.from":"From","pages.send_receive_panel.send.to":"To","pages.send_receive_panel.send.amount":"Amount","pages.send_receive_panel.send.fee":"Fee","pages.send_receive_panel.send.total_amount":"Total Amount","pages.send_receive_panel.send.waiting_message":"Review and verify the information on your MetaMask. Sign to send the transaction.","pages.send_receive_panel.send.waiting_spinner_text":"Waiting for confirmation...","pages.send_receive_panel.send.failed_message":"It looks like something went wrong while sending your transaction. Press 'Retry' to make another attempt.","pages.send_receive_panel.receive.alert":"Send only Polygon or Ethereum Network compatible tokens to this address or you could permanently lose your funds!","pages.settings.title":"Settings","pages.settings.sidebar.general":"General","pages.settings.sidebar.notifications":"Notifications","pages.settings.sidebar.session_history":"Sessions History","pages.settings.general.title":"Settings","pages.settings.general.subtitle":"Customize your App Experience","pages.settings.general.currency":"Currency","pages.settings.general.currency_subtitle":"Select your default currency which will be used throughout the app.","pages.settings.general.time_date":"Time & Date","pages.settings.general.time_date_subtitle":"Select how you want time and date be shown inside app.","pages.settings.general.date_format":"Date Format","pages.settings.general.time_format":"Time Format","pages.settings.general.timezone":"Timezone","pages.settings.general.set_defaults":"Set Defaults","pages.settings.general.set_defaults_content":"Reverting to the default settings will remove any customizations previously made. Are you sure?","pages.settings.general.save":"Save Settings","pages.settings.general.saved":"Your settings have been successfully saved","pages.wallet.title":"Wallet","pages.privacy_policy.title":"Privacy Policy","pages.terms_of_service.title":"Terms of Service","pages.popular_collections.title":"Popular NFT Collections","pages.popular_collections.header_title":"<0>{{nftsCount}} {{nfts}} from <0>{{collectionsCount}} {{collections}}, worth about <0><1>{{worth}}","pagination.previous":"« Previous","pagination.next":"Next »","passwords.reset":"Your password has been reset!","passwords.sent":"We have emailed your password reset link!","passwords.throttled":"Please wait before retrying.","passwords.token":"This password reset token is invalid.","passwords.user":"We can't find a user with that email address.","urls.landing":"https://dashbrd.com","urls.cookie_policy":"https://dashbrd.com/cookie-policy","urls.privacy_policy":"https://dashbrd.com/privacy-policy","urls.terms_of_service":"https://dashbrd.com/terms-of-service","urls.twitter":"https://x.com/DashbrdApp","urls.discord":"https://discord.gg/MJyWKkCJ5k","urls.github":"https://github.com/ArdentHQ/dashbrd","urls.coingecko":"https://www.coingecko.com","urls.etherscan":"https://etherscan.io","urls.polygonscan":"https://polygonscan.com","urls.alchemy":"https://www.alchemy.com","urls.moralis":"https://moralis.io","urls.mnemonic":"https://www.mnemonichq.com","urls.opensea":"https://opensea.io/","urls.explorers.etherscan.token_transactions":"https://etherscan.io/token/{{token}}?a={{address}}","urls.explorers.etherscan.addresses":"https://etherscan.io/address/{{address}}","urls.explorers.etherscan.transactions":"https://etherscan.io/tx/{{id}}","urls.explorers.etherscan.nft":"https://etherscan.io/nft/{{address}}/{{nftId}}","urls.explorers.polygonscan.token_transactions":"https://polygonscan.com/token/{{token}}?a={{address}}","urls.explorers.polygonscan.addresses":"https://polygonscan.com/address/{{address}}","urls.explorers.polygonscan.transactions":"https://polygonscan.com/tx/{{id}}","urls.explorers.polygonscan.nft":"https://polygonscan.com/nft/{{address}}/{{nftId}}","urls.explorers.mumbai.token_transactions":"https://mumbai.polygonscan.com/token/{{token}}?a={{address}}","urls.explorers.mumbai.addresses":"https://mumbai.polygonscan.com/address/{{address}}","urls.explorers.mumbai.transactions":"https://mumbai.polygonscan.com/tx/{{id}}","urls.explorers.mumbai.nft":"https://mumbai.polygonscan.com/nft/{{address}}/{{nftId}}","urls.explorers.goerli.token_transactions":"https://goerli.etherscan.io/token/{{token}}?a={{address}}","urls.explorers.goerli.addresses":"https://goerli.etherscan.io/address/{{address}}","urls.explorers.goerli.transactions":"https://goerli.etherscan.io/tx/{{id}}","urls.explorers.goerli.nft":"https://goerli.etherscan.io/nft/{{address}}/{{nftId}}","urls.marketplaces.opensea.collection":"https://opensea.io/assets/{{network}}/{{address}}","urls.marketplaces.opensea.nft":"https://opensea.io/assets/{{network}}/{{address}}/{{nftId}}","urls.marketplaces.rarible.collection":"https://rarible.com/collection/{{address}}/items","urls.marketplaces.rarible.nft":"https://rarible.com/token/{{address}}:{{nftId}}","urls.marketplaces.blur.collection":"https://blur.io/collection/{{address}}","urls.marketplaces.blur.nft":"https://blur.io/asset/{{address}}/{{nftId}}","urls.marketplaces.looksrare.collection":"https://looksrare.org/collections/{{address}}","urls.marketplaces.looksrare.nft":"https://looksrare.org/collections/{{address}}/{{nftId}}","validation.accepted":"The {{attribute}} must be accepted.","validation.accepted_if":"The {{attribute}} must be accepted when {{other}} is {{value}}.","validation.active_url":"The {{attribute}} is not a valid URL.","validation.after":"The {{attribute}} must be a date after {{date}}.","validation.after_or_equal":"The {{attribute}} must be a date after or equal to {{date}}.","validation.alpha":"The {{attribute}} must only contain letters.","validation.alpha_dash":"The {{attribute}} must only contain letters, numbers, dashes and underscores.","validation.alpha_num":"The {{attribute}} must only contain letters and numbers.","validation.array":"The {{attribute}} must be an array.","validation.ascii":"The {{attribute}} must only contain single-byte alphanumeric characters and symbols.","validation.before":"The {{attribute}} must be a date before {{date}}.","validation.before_or_equal":"The {{attribute}} must be a date before or equal to {{date}}.","validation.between.array":"The {{attribute}} must have between {{min}} and {{max}} items.","validation.between.file":"The {{attribute}} must be between {{min}} and {{max}} kilobytes.","validation.between.numeric":"The {{attribute}} must be between {{min}} and {{max}}.","validation.between.string":"The {{attribute}} must be between {{min}} and {{max}} characters.","validation.boolean":"The {{attribute}} field must be true or false.","validation.confirmed":"The {{attribute}} confirmation does not match.","validation.current_password":"The password is incorrect.","validation.date":"The {{attribute}} is not a valid date.","validation.date_equals":"The {{attribute}} must be a date equal to {{date}}.","validation.date_format":"The {{attribute}} does not match the format {{format}}.","validation.decimal":"The {{attribute}} must have {{decimal}} decimal places.","validation.declined":"The {{attribute}} must be declined.","validation.declined_if":"The {{attribute}} must be declined when {{other}} is {{value}}.","validation.different":"The {{attribute}} and {{other}} must be different.","validation.digits":"The {{attribute}} must be {{digits}} digits.","validation.digits_between":"The {{attribute}} must be between {{min}} and {{max}} digits.","validation.dimensions":"The {{attribute}} has invalid image dimensions.","validation.distinct":"The {{attribute}} field has a duplicate value.","validation.doesnt_end_with":"The {{attribute}} may not end with one of the following: {{values}}.","validation.doesnt_start_with":"The {{attribute}} may not start with one of the following: {{values}}.","validation.email":"The {{attribute}} must be a valid email address.","validation.ends_with":"The {{attribute}} must end with one of the following: {{values}}.","validation.enum":"The selected {{attribute}} is invalid.","validation.exists":"The selected {{attribute}} is invalid.","validation.file":"The {{attribute}} must be a file.","validation.filled":"The {{attribute}} field must have a value.","validation.gt.array":"The {{attribute}} must have more than {{value}} items.","validation.gt.file":"The {{attribute}} must be greater than {{value}} kilobytes.","validation.gt.numeric":"The {{attribute}} must be greater than {{value}}.","validation.gt.string":"The {{attribute}} must be greater than {{value}} characters.","validation.gte.array":"The {{attribute}} must have {{value}} items or more.","validation.gte.file":"The {{attribute}} must be greater than or equal to {{value}} kilobytes.","validation.gte.numeric":"The {{attribute}} must be greater than or equal to {{value}}.","validation.gte.string":"The {{attribute}} must be greater than or equal to {{value}} characters.","validation.image":"The {{attribute}} must be an image.","validation.in":"The selected {{attribute}} is invalid.","validation.in_array":"The {{attribute}} field does not exist in {{other}}.","validation.integer":"The {{attribute}} must be an integer.","validation.ip":"The {{attribute}} must be a valid IP address.","validation.ipv4":"The {{attribute}} must be a valid IPv4 address.","validation.ipv6":"The {{attribute}} must be a valid IPv6 address.","validation.json":"The {{attribute}} must be a valid JSON string.","validation.lowercase":"The {{attribute}} must be lowercase.","validation.lt.array":"The {{attribute}} must have less than {{value}} items.","validation.lt.file":"The {{attribute}} must be less than {{value}} kilobytes.","validation.lt.numeric":"The {{attribute}} must be less than {{value}}.","validation.lt.string":"The {{attribute}} must be less than {{value}} characters.","validation.lte.array":"The {{attribute}} must not have more than {{value}} items.","validation.lte.file":"The {{attribute}} must be less than or equal to {{value}} kilobytes.","validation.lte.numeric":"The {{attribute}} must be less than or equal to {{value}}.","validation.lte.string":"The {{attribute}} must be less than or equal to {{value}} characters.","validation.mac_address":"The {{attribute}} must be a valid MAC address.","validation.max.array":"The {{attribute}} must not have more than {{max}} items.","validation.max.file":"The {{attribute}} must not be greater than {{max}} kilobytes.","validation.max.numeric":"The {{attribute}} must not be greater than {{max}}.","validation.max.string":"The {{attribute}} must not be greater than {{max}} characters.","validation.max_digits":"The {{attribute}} must not have more than {{max}} digits.","validation.mimes":"The {{attribute}} must be a file of type: {{values}}.","validation.mimetypes":"The {{attribute}} must be a file of type: {{values}}.","validation.min.array":"The {{attribute}} must have at least {{min}} items.","validation.min.file":"The {{attribute}} must be at least {{min}} kilobytes.","validation.min.numeric":"The {{attribute}} must be at least {{min}}.","validation.min.string":"The {{attribute}} must be at least {{min}} characters.","validation.min_digits":"The {{attribute}} must have at least {{min}} digits.","validation.missing":"The {{attribute}} field must be missing.","validation.missing_if":"The {{attribute}} field must be missing when {{other}} is {{value}}.","validation.missing_unless":"The {{attribute}} field must be missing unless {{other}} is {{value}}.","validation.missing_with":"The {{attribute}} field must be missing when {{values}} is present.","validation.missing_with_all":"The {{attribute}} field must be missing when {{values}} are present.","validation.multiple_of":"The {{attribute}} must be a multiple of {{value}}.","validation.not_in":"The selected {{attribute}} is invalid.","validation.not_regex":"The {{attribute}} format is invalid.","validation.numeric":"The {{attribute}} must be a number.","validation.password.letters":"The {{attribute}} must contain at least one letter.","validation.password.mixed":"The {{attribute}} must contain at least one uppercase and one lowercase letter.","validation.password.numbers":"The {{attribute}} must contain at least one number.","validation.password.symbols":"The {{attribute}} must contain at least one symbol.","validation.password.uncompromised":"The given {{attribute}} has appeared in a data leak. Please choose a different {{attribute}}.","validation.present":"The {{attribute}} field must be present.","validation.prohibited":"The {{attribute}} field is prohibited.","validation.prohibited_if":"The {{attribute}} field is prohibited when {{other}} is {{value}}.","validation.prohibited_unless":"The {{attribute}} field is prohibited unless {{other}} is in {{values}}.","validation.prohibits":"The {{attribute}} field prohibits {{other}} from being present.","validation.regex":"The {{attribute}} format is invalid.","validation.required":"The {{attribute}} field is required.","validation.required_array_keys":"The {{attribute}} field must contain entries for: {{values}}.","validation.required_if":"The {{attribute}} field is required when {{other}} is {{value}}.","validation.required_if_accepted":"The {{attribute}} field is required when {{other}} is accepted.","validation.required_unless":"The {{attribute}} field is required unless {{other}} is in {{values}}.","validation.required_with":"The {{attribute}} field is required when {{values}} is present.","validation.required_with_all":"The {{attribute}} field is required when {{values}} are present.","validation.required_without":"The {{attribute}} field is required when {{values}} is not present.","validation.required_without_all":"The {{attribute}} field is required when none of {{values}} are present.","validation.same":"The {{attribute}} and {{other}} must match.","validation.size.array":"The {{attribute}} must contain {{size}} items.","validation.size.file":"The {{attribute}} must be {{size}} kilobytes.","validation.size.numeric":"The {{attribute}} must be {{size}}.","validation.size.string":"The {{attribute}} must be {{size}} characters.","validation.starts_with":"The {{attribute}} must start with one of the following: {{values}}.","validation.string":"The {{attribute}} must be a string.","validation.timezone":"The {{attribute}} must be a valid timezone.","validation.unique":"The {{attribute}} has already been taken.","validation.uploaded":"The {{attribute}} failed to upload.","validation.uppercase":"The {{attribute}} must be uppercase.","validation.url":"The {{attribute}} must be a valid URL.","validation.ulid":"The {{attribute}} must be a valid ULID.","validation.uuid":"The {{attribute}} must be a valid UUID.","validation.custom.attribute-name.rule-name":"custom-message","validation.unsupported_currency_code":"The currency code you provided is invalid or not supported.","validation.unsupported_period":"The period you provided is invalid or not supported.","validation.unsupported_token_symbol":"The token symbol you provided is invalid or not supported.","validation.gallery_title_required":"Gallery name is required.","validation.gallery_title_max_characters":"The gallery name should not exceed 50 characters.","validation.gallery_title_invalid":"The gallery name is invalid.","validation.nfts_required":"Please add at least one NFT.","validation.nfts_max_size":"Galleries can contain no more than {{limit}} NFTs","validation.invalid_nfts":"The NFT in position {{position}} is invalid, please select another one.","validation.invalid_cover":"You have selected an invalid cover image, please try another one."} \ No newline at end of file diff --git a/resources/js/Pages/Collections/Components/CollectionVoting/NomineeCollection.tsx b/resources/js/Pages/Collections/Components/CollectionVoting/NomineeCollection.tsx index 24915480c..55941d91d 100644 --- a/resources/js/Pages/Collections/Components/CollectionVoting/NomineeCollection.tsx +++ b/resources/js/Pages/Collections/Components/CollectionVoting/NomineeCollection.tsx @@ -1,5 +1,5 @@ import cn from "classnames"; -import React, { useRef } from "react"; +import React, { useMemo, useRef } from "react"; import { Trans } from "react-i18next"; import { NominateCollectionName } from "@/Components/Collections/CollectionName"; import { @@ -25,8 +25,7 @@ export const NomineeCollection = ({ }): JSX.Element => { const reference = useRef(null); - // @TODO hook up with real data - const isDisabled = collection.id === 9; + const isDisabled = useMemo(() => collection.alreadyWon, [collection]); const selectHandler = isDisabled ? undefined diff --git a/resources/js/Pages/Collections/Components/CollectionVoting/VoteCollections.tsx b/resources/js/Pages/Collections/Components/CollectionVoting/VoteCollections.tsx index e5af64ea2..3b773df20 100644 --- a/resources/js/Pages/Collections/Components/CollectionVoting/VoteCollections.tsx +++ b/resources/js/Pages/Collections/Components/CollectionVoting/VoteCollections.tsx @@ -65,23 +65,25 @@ export const VoteCollections = ({ }; const collectionsWithVote = useMemo(() => { + const eligibleCollections = collections.filter((c) => !c.alreadyWon); + const shouldMergeUserVote = votedCollection !== null && - !collections.slice(0, 8).some((collection) => collection.id === votedCollection.id); + !eligibleCollections.slice(0, 8).some((collection) => collection.id === votedCollection.id); if (shouldMergeUserVote) { if (isSmAndAbove) { - return [...collections.slice(0, 7), votedCollection]; + return [...eligibleCollections.slice(0, 7), votedCollection]; } else { - return [...collections.slice(0, 3), votedCollection]; + return [...eligibleCollections.slice(0, 3), votedCollection]; } } if (isSmAndAbove) { - return collections.slice(0, 8); + return eligibleCollections.slice(0, 8); } - return collections.slice(0, 4); + return eligibleCollections.slice(0, 4); }, [isSmAndAbove, collections, votedCollection]); const nominatableCollections = useMemo(() => { diff --git a/resources/js/Tests/Factories/Collections/VotableCollectionDataFactory.ts b/resources/js/Tests/Factories/Collections/VotableCollectionDataFactory.ts index 9932ffe2c..78ec82e85 100644 --- a/resources/js/Tests/Factories/Collections/VotableCollectionDataFactory.ts +++ b/resources/js/Tests/Factories/Collections/VotableCollectionDataFactory.ts @@ -21,6 +21,7 @@ export default class VotableCollectionDataFactory extends ModelFactoryvotes()->count())->toBe(2); }); + + it('disallows votes for collection that have already previously won', function () { + $user = createUser(); + $collection = Collection::factory()->create(); + + CollectionWinner::factory()->for($collection)->create(); + + expect($collection->votes()->count())->toBe(0); + + $this->actingAs($user) + ->post(route('collection-votes.create', $collection)) + ->assertStatus(302); + + expect($collection->votes()->count())->toBe(0); + }); }); From deb1bdb833b31323281e53c18dc44744c5b83afb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josip=20Crnkovi=C4=87?= Date: Tue, 16 Jan 2024 10:15:01 +0100 Subject: [PATCH 089/145] fix: increase name column width on the popular collection table (#601) --- .../Collections/CollectionsFullTable/CollectionName.tsx | 2 +- .../CollectionsFullTable/CollectionsFullTableItem.tsx | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/resources/js/Components/Collections/CollectionsFullTable/CollectionName.tsx b/resources/js/Components/Collections/CollectionsFullTable/CollectionName.tsx index bfbaab6e2..bcf1cd7f7 100644 --- a/resources/js/Components/Collections/CollectionsFullTable/CollectionName.tsx +++ b/resources/js/Components/Collections/CollectionsFullTable/CollectionName.tsx @@ -15,7 +15,7 @@ export const CollectionName = ({ collection }: { collection: App.Data.Collection data-testid="CollectionName" className="group relative h-11 w-full cursor-pointer md:h-20" > -
    +
    From 8a3d92e599cbfbcdc1130f1d6bd60a8d8aae7657 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josip=20Crnkovi=C4=87?= Date: Wed, 17 Jan 2024 10:23:49 +0100 Subject: [PATCH 090/145] refactor: inline the query to update collection monthly ranking (#598) --- app/Console/Kernel.php | 4 ++-- app/Http/Controllers/CollectionVoteController.php | 3 ++- app/Jobs/FetchCollectionVolume.php | 2 +- ...hlyVotesAndRank.php => ResetCollectionRanking.php} | 11 ++++++++--- app/Models/Collection.php | 7 ------- ...1_152434_add_monthly_rank_to_collections_table.php | 4 ++-- ...AndRankTest.php => ResetCollectionRankingTest.php} | 10 ++++++++-- tests/App/Models/CollectionTest.php | 7 ++++--- 8 files changed, 27 insertions(+), 21 deletions(-) rename app/Jobs/{ResetCollectionMonthlyVotesAndRank.php => ResetCollectionRanking.php} (63%) rename tests/App/Jobs/{ResetCollectionMonthlyVotesAndRankTest.php => ResetCollectionRankingTest.php} (85%) diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php index 5700f9fa1..03c6d78a2 100644 --- a/app/Console/Kernel.php +++ b/app/Console/Kernel.php @@ -30,7 +30,7 @@ use App\Console\Commands\UpdateTwitterFollowers; use App\Enums\Features; use App\Jobs\AggregateCollectionWinners; -use App\Jobs\ResetCollectionMonthlyVotesAndRank; +use App\Jobs\ResetCollectionRanking; use Illuminate\Console\Scheduling\Schedule; use Illuminate\Foundation\Console\Kernel as ConsoleKernel; use Laravel\Pennant\Feature; @@ -178,7 +178,7 @@ private function scheduleJobsForCollections(Schedule $schedule): void $schedule->job(AggregateCollectionWinners::class) ->monthly(); - $schedule->job(ResetCollectionMonthlyVotesAndRank::class) + $schedule->job(ResetCollectionRanking::class) ->monthlyOn(dayOfMonth: 1, time: '0:0'); $schedule diff --git a/app/Http/Controllers/CollectionVoteController.php b/app/Http/Controllers/CollectionVoteController.php index 976d053c4..daaf0727e 100644 --- a/app/Http/Controllers/CollectionVoteController.php +++ b/app/Http/Controllers/CollectionVoteController.php @@ -4,6 +4,7 @@ namespace App\Http\Controllers; +use App\Jobs\ResetCollectionRanking; use App\Models\Collection; use App\Models\CollectionWinner; use Illuminate\Http\RedirectResponse; @@ -23,7 +24,7 @@ public function store(Request $request, Collection $collection): RedirectRespons $collection->addVote($request->wallet()); - Collection::updateMonthlyRankAndVotes(); + ResetCollectionRanking::dispatch(); return back()->toast(trans('pages.collections.collection_of_the_month.vote_success'), type: 'success'); } diff --git a/app/Jobs/FetchCollectionVolume.php b/app/Jobs/FetchCollectionVolume.php index 1dbd8cb24..051df418d 100644 --- a/app/Jobs/FetchCollectionVolume.php +++ b/app/Jobs/FetchCollectionVolume.php @@ -48,7 +48,7 @@ public function handle(): void 'volume' => $volume, ]); - Collection::updateMonthlyRankAndVotes(); + ResetCollectionRanking::dispatch(); Log::info('FetchCollectionVolume Job: Handled', [ 'collection' => $this->collection->address, diff --git a/app/Jobs/ResetCollectionMonthlyVotesAndRank.php b/app/Jobs/ResetCollectionRanking.php similarity index 63% rename from app/Jobs/ResetCollectionMonthlyVotesAndRank.php rename to app/Jobs/ResetCollectionRanking.php index 8d727be97..6d3b8eee2 100644 --- a/app/Jobs/ResetCollectionMonthlyVotesAndRank.php +++ b/app/Jobs/ResetCollectionRanking.php @@ -4,15 +4,15 @@ namespace App\Jobs; -use App\Models\Collection; use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldBeUnique; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Foundation\Bus\Dispatchable; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Queue\SerializesModels; +use Illuminate\Support\Facades\DB; -class ResetCollectionMonthlyVotesAndRank implements ShouldBeUnique, ShouldQueue +class ResetCollectionRanking implements ShouldBeUnique, ShouldQueue { use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; @@ -21,6 +21,11 @@ class ResetCollectionMonthlyVotesAndRank implements ShouldBeUnique, ShouldQueue */ public function handle(): void { - Collection::updateMonthlyRankAndVotes(); + DB::update(get_query('collections.calculate_monthly_rank_and_votes_value')); + } + + public function uniqueId(): string + { + return static::class; } } diff --git a/app/Models/Collection.php b/app/Models/Collection.php index 512db231a..1ba56e451 100644 --- a/app/Models/Collection.php +++ b/app/Models/Collection.php @@ -476,13 +476,6 @@ public static function updateFiatValue(array $collectionIds = []): void ->update(['fiat_value' => DB::raw($calculateFiatValueQuery)]); } - public static function updateMonthlyRankAndVotes(): void - { - $calculateRankQUery = get_query('collections.calculate_monthly_rank_and_votes_value'); - - DB::update($calculateRankQUery); - } - /** * @return HasMany */ diff --git a/database/migrations/2023_12_21_152434_add_monthly_rank_to_collections_table.php b/database/migrations/2023_12_21_152434_add_monthly_rank_to_collections_table.php index 467ce2bc8..b612fff46 100644 --- a/database/migrations/2023_12_21_152434_add_monthly_rank_to_collections_table.php +++ b/database/migrations/2023_12_21_152434_add_monthly_rank_to_collections_table.php @@ -2,7 +2,7 @@ declare(strict_types=1); -use App\Models\Collection; +use App\Jobs\ResetCollectionRanking; use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; @@ -16,6 +16,6 @@ public function up(): void $table->unsignedInteger('monthly_votes')->nullable(); }); - Collection::updateMonthlyRankAndVotes(); + ResetCollectionRanking::dispatchSync(); } }; diff --git a/tests/App/Jobs/ResetCollectionMonthlyVotesAndRankTest.php b/tests/App/Jobs/ResetCollectionRankingTest.php similarity index 85% rename from tests/App/Jobs/ResetCollectionMonthlyVotesAndRankTest.php rename to tests/App/Jobs/ResetCollectionRankingTest.php index 2592436b3..74bcac7c4 100644 --- a/tests/App/Jobs/ResetCollectionMonthlyVotesAndRankTest.php +++ b/tests/App/Jobs/ResetCollectionRankingTest.php @@ -2,7 +2,7 @@ declare(strict_types=1); -use App\Jobs\ResetCollectionMonthlyVotesAndRank; +use App\Jobs\ResetCollectionRanking; use App\Models\Collection; use App\Models\CollectionVote; use Carbon\Carbon; @@ -26,7 +26,7 @@ expect(Collection::pluck('monthly_votes')->toArray())->toEqual([null, null, null]); expect(Collection::pluck('monthly_rank')->toArray())->toEqual([null, null, null]); - ResetCollectionMonthlyVotesAndRank::dispatch(); + ResetCollectionRanking::dispatch(); $collection->refresh(); $collection2->refresh(); @@ -41,3 +41,9 @@ expect($collection3->monthly_votes)->toBe(3); expect($collection3->monthly_rank)->toBe(1); }); + +it('has unique ID', function () { + $job = new ResetCollectionRanking; + + expect($job->uniqueId())->toBeString(); +}); diff --git a/tests/App/Models/CollectionTest.php b/tests/App/Models/CollectionTest.php index 933d734bc..fd9310c55 100644 --- a/tests/App/Models/CollectionTest.php +++ b/tests/App/Models/CollectionTest.php @@ -4,6 +4,7 @@ use App\Enums\CurrencyCode; use App\Enums\NftTransferType; +use App\Jobs\ResetCollectionRanking; use App\Models\Article; use App\Models\Collection; use App\Models\CollectionTrait; @@ -1249,7 +1250,7 @@ 'voted_at' => Carbon::now(), ]); - Collection::updateMonthlyRankAndVotes(); + (new ResetCollectionRanking)->handle(); $collectionsIds = Collection::votable(CurrencyCode::USD)->get()->pluck('id')->toArray(); @@ -1287,7 +1288,7 @@ 'voted_at' => Carbon::now(), ]); - Collection::updateMonthlyRankAndVotes(); + (new ResetCollectionRanking)->handle(); $collectionsIds = Collection::votable(CurrencyCode::USD)->get()->pluck('id')->toArray(); @@ -1320,7 +1321,7 @@ ]); CollectionVote::factory()->count(3)->create(['collection_id' => $lowVolume->id, 'voted_at' => Carbon::now()->subMonths(2)]); - Collection::updateMonthlyRankAndVotes(); + (new ResetCollectionRanking)->handle(); $collectionsIds = Collection::votable(CurrencyCode::USD)->get()->pluck('id')->toArray(); From 416c4404dcea03c26e34799ded3c4f112323ace4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josip=20Crnkovi=C4=87?= Date: Wed, 17 Jan 2024 10:25:51 +0100 Subject: [PATCH 091/145] refactor: global helper functions (#606) --- app/Console/Commands/LiveDumpNfts.php | 33 ++++-- .../Client/Alchemy/AlchemyPendingRequest.php | 6 +- .../Controllers/LandingPageDataController.php | 10 +- app/Providers/AppServiceProvider.php | 5 + app/helpers.php | 53 --------- tests/App/helpersTest.php | 103 ------------------ 6 files changed, 38 insertions(+), 172 deletions(-) diff --git a/app/Console/Commands/LiveDumpNfts.php b/app/Console/Commands/LiveDumpNfts.php index 513fb45d3..c2f5f2173 100644 --- a/app/Console/Commands/LiveDumpNfts.php +++ b/app/Console/Commands/LiveDumpNfts.php @@ -196,7 +196,7 @@ private function removeEncodedAttributes(array $nft): array foreach ($potentiallyEncodedAttributes as $attribute) { $value = Arr::get($nft, $attribute); - if ($value !== null && isBase64EncodedImage($value)) { + if ($value !== null && Str::isEncodedImage($value)) { Arr::set($nft, $attribute, null); } } @@ -204,15 +204,6 @@ private function removeEncodedAttributes(array $nft): array return $nft; } - /** - * @param array $nft - * @return array - */ - private function filterNftAttributes(array $nft): array - { - return $this->removeEncodedAttributes(filterAttributes($nft, $this->requiredAttributes)); - } - private function getCollectionNftsAndPersist( NftCollection $collection, Chain $chain, @@ -234,7 +225,9 @@ private function getCollectionNftsAndPersist( $data = Alchemy::collectionNftsRaw($collection, $cursor); - $data['nfts'] = array_map(fn ($nft) => $this->filterNftAttributes($nft), $data['nfts']); + $data['nfts'] = array_map(fn ($nft) => $this->removeEncodedAttributes( + $this->filteredAttributes($nft, $this->requiredAttributes) + ), $data['nfts']); $fileName = $path.$chunk.'.json'; @@ -310,4 +303,22 @@ private function getCollectionTraitsAndPersist(Chain $chain, string $address): v $this->info('Fetched collection traits, file: '.$fileName); } + + /** + * @param array $data + * @param array $attributes + * @return array + */ + private function filteredAttributes(array $data, array $attributes): array + { + foreach ($data as $key => $value) { + if (is_array($value) && isset($attributes[$key]) && is_array($attributes[$key])) { + $data[$key] = $this->filteredAttributes($data[$key], $attributes[$key]); + } elseif (! in_array($key, $attributes)) { + unset($data[$key]); + } + } + + return $data; + } } diff --git a/app/Http/Client/Alchemy/AlchemyPendingRequest.php b/app/Http/Client/Alchemy/AlchemyPendingRequest.php index 4a1951016..02562cadb 100644 --- a/app/Http/Client/Alchemy/AlchemyPendingRequest.php +++ b/app/Http/Client/Alchemy/AlchemyPendingRequest.php @@ -600,8 +600,8 @@ private function tryExtractAssetUrls(array $nft): array $original = Arr::get($nft, 'image.cachedUrl'); return [ - 'originalRaw' => empty($originalRaw) || isBase64EncodedImage($originalRaw) ? null : $originalRaw, - 'original' => empty($original) || isBase64EncodedImage($original) ? null : $original, + 'originalRaw' => empty($originalRaw) || Str::isEncodedImage($originalRaw) ? null : $originalRaw, + 'original' => empty($original) || Str::isEncodedImage($original) ? null : $original, ]; } @@ -620,7 +620,7 @@ private function tryExtractImage(array $nft): ?string foreach ($imageKeys as $imageKey) { $imageUrl = Arr::get($nft, $imageKey); - if (! empty($imageUrl) && ! isBase64EncodedImage($imageUrl)) { + if (! empty($imageUrl) && ! Str::isEncodedImage($imageUrl)) { return $imageUrl; } } diff --git a/app/Http/Controllers/LandingPageDataController.php b/app/Http/Controllers/LandingPageDataController.php index aadc5b34e..4fec42f6e 100644 --- a/app/Http/Controllers/LandingPageDataController.php +++ b/app/Http/Controllers/LandingPageDataController.php @@ -8,6 +8,7 @@ use Illuminate\Http\JsonResponse; use Illuminate\Support\Facades\Artisan; use Illuminate\Support\Facades\Cache; +use Illuminate\Support\Number; class LandingPageDataController extends Controller { @@ -22,9 +23,14 @@ public function __invoke(): JsonResponse } return response()->json([ - 'xFollowersFormatted' => format_amount_for_display((int) Cache::get('twitter_followers', 0)), - 'discordMembersFormatted' => format_amount_for_display((int) Cache::get('discord_members', 0)), + 'xFollowersFormatted' => $this->format((int) Cache::get('twitter_followers', 0)), + 'discordMembersFormatted' => $this->format((int) Cache::get('discord_members', 0)), 'wallets' => Cache::remember('landing:wallets', now()->addMinutes(5), static fn () => number_format(Wallet::count())), ]); } + + private function format(int $amount): string + { + return strtolower(Number::abbreviate($amount, maxPrecision: 1)); + } } diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index 866bef907..362c63163 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -19,6 +19,7 @@ use Illuminate\Http\Request; use Illuminate\Support\Facades\RateLimiter; use Illuminate\Support\ServiceProvider; +use Illuminate\Support\Str; class AppServiceProvider extends ServiceProvider { @@ -54,6 +55,10 @@ public function register(): void */ public function boot(): void { + Str::macro('isEncodedImage', function (string $value) { + return Str::startsWith($value, 'data:image'); + }); + // `$type` needs to be an instance of ToastType. However, adding that makes PHPStan fail with Internal Error... // Make sure to check this from time to time if this has been fixed... We'd much more prefer to have an enum instead of string.. RedirectResponse::macro('toast', function (string $message, string $type = 'info', bool $expanded = false, bool $loading = false) { diff --git a/app/helpers.php b/app/helpers.php index 99ff69b39..e0a6762ca 100644 --- a/app/helpers.php +++ b/app/helpers.php @@ -28,56 +28,3 @@ function get_query(string $name, array $params = []): string return Blade::render($contents, $params); } } - -// @codeCoverageIgnoreStart -if (! function_exists('isBase64EncodedImage')) { - // @codeCoverageIgnoreEnd - - function isBase64EncodedImage(string $string): bool - { - return str_starts_with($string, 'data:image'); - } -} - -// @codeCoverageIgnoreStart -if (! function_exists('filterAttributes')) { - // @codeCoverageIgnoreEnd - - /** - * @param array $data - * @param array $attributes - * @return array - */ - function filterAttributes($data, $attributes): array - { - foreach ($data as $key => $value) { - if (is_array($value) && isset($attributes[$key])) { - if (is_array($attributes[$key])) { - $data[$key] = filterAttributes($data[$key], $attributes[$key]); - } - } elseif (! in_array($key, $attributes)) { - unset($data[$key]); - } - } - - return $data; - } -} - -// @codeCoverageIgnoreStart -if (! function_exists('format_amount_for_display')) { - // @codeCoverageIgnoreEnd - - function format_amount_for_display(int $number): string - { - if ($number >= 1000000) { - return number_format($number / 1000000, 1).'m'; - } - - if ($number >= 1000) { - return number_format($number / 1000, 1).'k'; - } - - return (string) $number; - } -} diff --git a/tests/App/helpersTest.php b/tests/App/helpersTest.php index 4f9abe328..2f84f8f94 100644 --- a/tests/App/helpersTest.php +++ b/tests/App/helpersTest.php @@ -19,106 +19,3 @@ expect($contents)->toBe("select * from users where id = 'test'".PHP_EOL); }); - -it('should detect if the given string is base64 encoded', function () { - expect(isBase64EncodedImage('data:image/png;base64,iVBhEUgAAAREDACTED'))->toBeTrue() - ->and(isBase64EncodedImage('https://cats.com/'))->toBeFalse(); -}); - -it('format_amount_for_display', function ($amount, $expected) { - expect(format_amount_for_display($amount))->toEqual($expected); -})->with([ - [6_543, '6.5k'], - [12_320_000, '12.3m'], - [1, '1'], - [2, '2'], - [124, '124'], - [1232, '1.2k'], - [2_540_123, '2.5m'], -]); - -it('should filter attributes', function () { - $requiredAttributes = [ - 'description', - 'contract' => [ - 'address', - ], - 'contractMetadata' => [ - 'symbol', - 'name', - 'totalSupply', - 'openSea' => ['twitterUsername', 'discordUrl', 'floorPrice', 'collectionName', 'imageUrl', 'externalUrl', 'description'], - 'deployedBlockNumber', - ], - ]; - - $data = [ - 'contract' => [ - 'address' => '0x4e1f41613c9084fdb9e34e11fae9412427480e56', - ], - 'id' => [ - 'tokenId' => '0x0000000000000000000000000000000000000000000000000000000000000001', - 'tokenMetadata' => [ - 'tokenType' => 'ERC721', - ], - ], - 'title' => 'Level 13 at {9, 5}', - 'description' => 'Terraforms by Mathcastles. Onchain land art from a dynamically generated, onchain 3D world.', - 'tokenUri' => [ - 'gateway' => '', - 'raw' => 'data:', - ], - 'media' => [ - [ - 'gateway' => 'https://nft-cdn.alchemy.com/eth-mainnet/b5a0b09ef853edc679205cf0062b331f', - 'thumbnail' => 'https://res.cloudinary.com/alchemyapi/image/upload/thumbnailv2/eth-mainnet/b5a0b09ef853edc679205cf0062b331f', - 'raw' => 'data:', - 'format' => 'svg+xml', - 'bytes' => 44846, - ], - ], - 'timeLastUpdated' => '2023-08-13T15:31:14.203Z', - 'contractMetadata' => [ - 'name' => 'Terraforms', - 'symbol' => 'TERRAFORMS', - 'totalSupply' => '9910', - 'tokenType' => 'ERC721', - 'contractDeployer' => '0x9f400619b85eaca2f1f76f4f7e44ab7e5ee12cfa', - 'deployedBlockNumber' => 13823015, - 'openSea' => [ - 'floorPrice' => 1.618999, - 'collectionName' => 'Terraforms by Mathcastles', - 'collectionSlug' => 'terraforms', - 'safelistRequestStatus' => 'approved', - 'imageUrl' => 'https://i.seadn.io/gcs/files/8987b795655076fdf8183a7daee3754a.gif?w=500&auto=format', - 'description' => 'Onchain land art from a dynamically generated onchain 3D world.', - 'externalUrl' => 'http://mathcastles.xyz', - 'twitterUsername' => 'mathcastles', - 'discordUrl' => 'https://discord.gg/mathcastles', - 'lastIngestedAt' => '2023-08-15T10:54:18.000Z', - ], - ], - ]; - - expect(filterAttributes($data, $requiredAttributes))->toEqual($array = [ - 'contract' => [ - 'address' => '0x4e1f41613c9084fdb9e34e11fae9412427480e56', - ], - 'description' => 'Terraforms by Mathcastles. Onchain land art from a dynamically generated, onchain 3D world.', - 'contractMetadata' => [ - 'name' => 'Terraforms', - 'symbol' => 'TERRAFORMS', - 'totalSupply' => '9910', - 'deployedBlockNumber' => 13823015, - 'openSea' => [ - 'floorPrice' => 1.618999, - 'collectionName' => 'Terraforms by Mathcastles', - 'imageUrl' => 'https://i.seadn.io/gcs/files/8987b795655076fdf8183a7daee3754a.gif?w=500&auto=format', - 'description' => 'Onchain land art from a dynamically generated onchain 3D world.', - 'externalUrl' => 'http://mathcastles.xyz', - 'twitterUsername' => 'mathcastles', - 'discordUrl' => 'https://discord.gg/mathcastles', - ], - ], - ]); -}); From 830048f9825e58eb26ab749000e2cd8c9568878e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josip=20Crnkovi=C4=87?= Date: Wed, 17 Jan 2024 10:36:30 +0100 Subject: [PATCH 092/145] refactor: use Headless UI's `Dialog` component for auth overlay (#602) --- resources/css/app.css | 13 ---- .../AuthOverlay/AuthOverlay.contracts.ts | 2 +- .../Layout/AuthOverlay/AuthOverlay.tsx | 9 ++- .../Layout/NoNftsOverlay/NoNftsOverlay.tsx | 7 +- .../Layout/Overlay/Overlay.contracts.ts | 2 +- .../js/Components/Layout/Overlay/Overlay.tsx | 67 +++++++------------ 6 files changed, 36 insertions(+), 64 deletions(-) diff --git a/resources/css/app.css b/resources/css/app.css index 085beb42e..a2c8c3734 100644 --- a/resources/css/app.css +++ b/resources/css/app.css @@ -33,23 +33,10 @@ } } -.auth-overlay-shadow { - box-shadow: - 0 13px 28px 0 rgba(33, 42, 131, 0.04), - 0 52px 52px 0 rgba(33, 42, 131, 0.03), - 0 116px 70px 0 rgba(33, 42, 131, 0.02), - 0 207px 83px 0 rgba(33, 42, 131, 0.01), - 0 323px 90px 0 rgba(33, 42, 131, 0); -} - .latest-articles-carousel .swiper-pagination-bullets { @apply bottom-0 flex justify-center; } -.dark .auth-overlay-shadow { - box-shadow: 0px 15px 35px 0px rgba(18, 18, 19, 0.4); -} - .featured-collections-overlay { background-image: linear-gradient(180deg, rgb(var(--theme-color-primary-50)) 47.38%, transparent 216.53%); } diff --git a/resources/js/Components/Layout/AuthOverlay/AuthOverlay.contracts.ts b/resources/js/Components/Layout/AuthOverlay/AuthOverlay.contracts.ts index 279db2778..a8487f468 100644 --- a/resources/js/Components/Layout/AuthOverlay/AuthOverlay.contracts.ts +++ b/resources/js/Components/Layout/AuthOverlay/AuthOverlay.contracts.ts @@ -1,6 +1,6 @@ import { type OverlayProperties } from "@/Components/Layout/Overlay/Overlay.contracts"; -export interface AuthOverlayProperties extends Omit { +export interface AuthOverlayProperties extends Omit { show: boolean; closeOverlay: () => void; mustBeSigned?: boolean; diff --git a/resources/js/Components/Layout/AuthOverlay/AuthOverlay.tsx b/resources/js/Components/Layout/AuthOverlay/AuthOverlay.tsx index f9468713d..b4cec3559 100644 --- a/resources/js/Components/Layout/AuthOverlay/AuthOverlay.tsx +++ b/resources/js/Components/Layout/AuthOverlay/AuthOverlay.tsx @@ -50,12 +50,14 @@ export const AuthOverlay = ({ return ( -
    +
    + {needsMetaMask && <>{isDark ? : }} {!needsMetaMask && ( <> diff --git a/resources/js/Components/Layout/NoNftsOverlay/NoNftsOverlay.tsx b/resources/js/Components/Layout/NoNftsOverlay/NoNftsOverlay.tsx index f6963e6de..89ce88433 100644 --- a/resources/js/Components/Layout/NoNftsOverlay/NoNftsOverlay.tsx +++ b/resources/js/Components/Layout/NoNftsOverlay/NoNftsOverlay.tsx @@ -28,10 +28,13 @@ export const NoNftsOverlay = ({ show }: { show: boolean }): JSX.Element => { return ( +
    {t("pages.galleries.create.can_purchase")}
    diff --git a/resources/js/Components/Layout/Overlay/Overlay.contracts.ts b/resources/js/Components/Layout/Overlay/Overlay.contracts.ts index 28f06a9bb..f9299da71 100644 --- a/resources/js/Components/Layout/Overlay/Overlay.contracts.ts +++ b/resources/js/Components/Layout/Overlay/Overlay.contracts.ts @@ -1,5 +1,5 @@ export interface OverlayProperties extends React.HTMLAttributes { - showOverlay: boolean; + isOpen: boolean; showCloseButton: boolean; belowContent?: React.ReactNode; } diff --git a/resources/js/Components/Layout/Overlay/Overlay.tsx b/resources/js/Components/Layout/Overlay/Overlay.tsx index 2fac99e52..c83c3f631 100644 --- a/resources/js/Components/Layout/Overlay/Overlay.tsx +++ b/resources/js/Components/Layout/Overlay/Overlay.tsx @@ -1,58 +1,37 @@ -import { clearAllBodyScrollLocks, disableBodyScroll } from "body-scroll-lock"; +import { Dialog } from "@headlessui/react"; import cn from "classnames"; -import { useEffect, useRef } from "react"; import { type OverlayProperties } from "./Overlay.contracts"; -import { useDarkModeContext } from "@/Contexts/DarkModeContext"; + +const NOOP = /* istanbul ignore next */ (): null => null; export const Overlay = ({ className, - showOverlay, + isOpen, showCloseButton, children, belowContent, - ...properties -}: OverlayProperties): JSX.Element => { - const reference = useRef(null); - const { isDark } = useDarkModeContext(); - - useEffect(() => { - if (!showOverlay || reference.current === null) { - clearAllBodyScrollLocks(); - - document.querySelector("#layout")?.classList.remove("blur"); - } else { - disableBodyScroll(reference.current); - - if (!isDark) { - document.querySelector("#layout")?.classList.add("blur"); - } - } - - return () => { - clearAllBodyScrollLocks(); - }; - }, [showOverlay, reference]); - - if (!showOverlay) return <>; - - return ( +}: OverlayProperties): JSX.Element => ( +
    -
    -
    {children}
    + aria-hidden="true" + /> + +
    +
    +
    + {children} +
    + + {belowContent}
    - {belowContent}
    - ); -}; +
    +); From e439a1af34bdc5edfd9c6592d4d56b590ee6443b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josip=20Crnkovi=C4=87?= Date: Wed, 17 Jan 2024 10:37:17 +0100 Subject: [PATCH 093/145] refactor: rename `getNftCollection*` methods to `getCollection*` (#604) --- app/Console/Commands/LiveDumpNfts.php | 2 +- app/Console/Commands/LiveDumpWallets.php | 4 ++-- app/Contracts/Web3DataProvider.php | 2 +- .../Client/Alchemy/AlchemyPendingRequest.php | 2 +- .../Mnemonic/MnemonicPendingRequest.php | 10 ++++----- .../Client/Moralis/MoralisPendingRequest.php | 2 +- .../Client/Opensea/OpenseaPendingRequest.php | 2 +- app/Jobs/FetchCollectionBanner.php | 2 +- app/Jobs/FetchCollectionFloorPrice.php | 2 +- app/Jobs/FetchCollectionOwners.php | 2 +- app/Jobs/FetchCollectionTraits.php | 2 +- app/Jobs/FetchCollectionVolume.php | 2 +- .../Web3/Alchemy/AlchemyWeb3DataProvider.php | 4 ++-- .../Web3/Fake/FakeWeb3DataProvider.php | 4 ++-- .../Mnemonic/MnemonicWeb3DataProvider.php | 4 ++-- .../Web3/Moralis/MoralisWeb3DataProvider.php | 4 ++-- .../Web3/Opensea/OpenseaWeb3DataProvider.php | 4 ++-- app/Support/Facades/Alchemy.php | 2 +- app/Support/Facades/Mnemonic.php | 10 ++++----- app/Support/Facades/Moralis.php | 2 +- app/Support/Facades/Opensea.php | 2 +- config/dashbrd.php | 8 +++---- .../Mnemonic/MnemonicPendingRequestTest.php | 22 +++++++++---------- .../Moralis/MoralisPendingRequestTest.php | 4 ++-- .../Opensea/OpenseaPendingRequestTest.php | 8 +++---- .../Alchemy/AlchemyWeb3DataProviderTest.php | 8 +++---- .../Mnemonic/MnemonicWeb3DataProviderTest.php | 6 ++--- .../Moralis/MoralisWeb3DataProviderTest.php | 4 ++-- .../Opensea/OpenseaWeb3DataProviderTest.php | 8 +++---- tests/App/Support/Facades/MnemonicTest.php | 2 +- 30 files changed, 70 insertions(+), 70 deletions(-) diff --git a/app/Console/Commands/LiveDumpNfts.php b/app/Console/Commands/LiveDumpNfts.php index c2f5f2173..54884286b 100644 --- a/app/Console/Commands/LiveDumpNfts.php +++ b/app/Console/Commands/LiveDumpNfts.php @@ -293,7 +293,7 @@ private function getCollectionTraitsAndPersist(Chain $chain, string $address): v $fs = Storage::disk(self::diskName); - $traits = Mnemonic::getNftCollectionTraits($chain, $address); + $traits = Mnemonic::getCollectionTraits($chain, $address); $path = $this->prepareCollectionPath($chain, $address); diff --git a/app/Console/Commands/LiveDumpWallets.php b/app/Console/Commands/LiveDumpWallets.php index 072f20c0f..d5253cb45 100644 --- a/app/Console/Commands/LiveDumpWallets.php +++ b/app/Console/Commands/LiveDumpWallets.php @@ -84,7 +84,7 @@ public function handle(): int $collectionFloorPrices = $collectionAddresses ->mapWithKeys(fn (string $collectionAddress - ) => [$collectionAddress => Mnemonic::getNftCollectionFloorPrice($chain, $collectionAddress)]); + ) => [$collectionAddress => Mnemonic::getCollectionFloorPrice($chain, $collectionAddress)]); // modify `network` and `retrievedAt` to make output stable between reruns as these change independent // of the API response. @@ -114,7 +114,7 @@ public function handle(): int // Download traits for each collection $allTraits = $nftCollections->mapWithKeys(function ($collectionAddresses, $chainId) { $traits = $collectionAddresses->unique() - ->mapWithKeys(fn ($collectionAddress) => [$collectionAddress => Mnemonic::getNftCollectionTraits(Chain::from($chainId), $collectionAddress)]); + ->mapWithKeys(fn ($collectionAddress) => [$collectionAddress => Mnemonic::getCollectionTraits(Chain::from($chainId), $collectionAddress)]); return [$chainId => $traits]; }); diff --git a/app/Contracts/Web3DataProvider.php b/app/Contracts/Web3DataProvider.php index 43447d370..bc8c096e1 100644 --- a/app/Contracts/Web3DataProvider.php +++ b/app/Contracts/Web3DataProvider.php @@ -38,5 +38,5 @@ public function getBlockTimestamp(Network $network, int $blockNumber): Carbon; */ public function getMiddleware(): array; - public function getNftCollectionFloorPrice(Chain $chain, string $contractAddress): ?Web3NftCollectionFloorPrice; + public function getCollectionFloorPrice(Chain $chain, string $contractAddress): ?Web3NftCollectionFloorPrice; } diff --git a/app/Http/Client/Alchemy/AlchemyPendingRequest.php b/app/Http/Client/Alchemy/AlchemyPendingRequest.php index 02562cadb..c8b15f0ee 100644 --- a/app/Http/Client/Alchemy/AlchemyPendingRequest.php +++ b/app/Http/Client/Alchemy/AlchemyPendingRequest.php @@ -484,7 +484,7 @@ private function tokenMetadata(string $tokenAddress): ?array } // https://docs.alchemy.com/reference/getfloorprice - public function getNftCollectionFloorPrice(Chain $chain, string $contractAddress): ?Web3NftCollectionFloorPrice + public function getCollectionFloorPrice(Chain $chain, string $contractAddress): ?Web3NftCollectionFloorPrice { // Only ETH is supported at the moment since this API is still considered in beta: diff --git a/app/Http/Client/Mnemonic/MnemonicPendingRequest.php b/app/Http/Client/Mnemonic/MnemonicPendingRequest.php index b99f003ba..c1b428bae 100644 --- a/app/Http/Client/Mnemonic/MnemonicPendingRequest.php +++ b/app/Http/Client/Mnemonic/MnemonicPendingRequest.php @@ -99,7 +99,7 @@ public function send(string $method, string $path, array $options = []): Respons } // https://docs.mnemonichq.com/reference/marketplacesservice_getfloorprice - public function getNftCollectionFloorPrice(Chain $chain, string $contractAddress): ?Web3NftCollectionFloorPrice + public function getCollectionFloorPrice(Chain $chain, string $contractAddress): ?Web3NftCollectionFloorPrice { $this->chain = MnemonicChain::fromChain($chain); @@ -180,7 +180,7 @@ public function getNftCollectionFloorPrice(Chain $chain, string $contractAddress } // https://docs.mnemonichq.com/reference/collectionsservice_getmetadata - public function getNftCollectionBanner(Chain $chain, string $contractAddress): ?string + public function getCollectionBanner(Chain $chain, string $contractAddress): ?string { $this->chain = MnemonicChain::fromChain($chain); @@ -215,7 +215,7 @@ public function getNftCollectionBanner(Chain $chain, string $contractAddress): ? } // https://docs.mnemonichq.com/reference/collectionsservice_getownerscount - public function getNftCollectionOwners(Chain $chain, string $contractAddress): ?int + public function getCollectionOwners(Chain $chain, string $contractAddress): ?int { $this->chain = MnemonicChain::fromChain($chain); @@ -232,7 +232,7 @@ public function getNftCollectionOwners(Chain $chain, string $contractAddress): ? } // https://docs.mnemonichq.com/reference/collectionsservice_getsalesvolume - public function getNftCollectionVolume(Chain $chain, string $contractAddress): ?string + public function getCollectionVolume(Chain $chain, string $contractAddress): ?string { $this->chain = MnemonicChain::fromChain($chain); @@ -258,7 +258,7 @@ public function getNftCollectionVolume(Chain $chain, string $contractAddress): ? /** * @return Collection */ - public function getNftCollectionTraits(Chain $chain, string $contractAddress): Collection + public function getCollectionTraits(Chain $chain, string $contractAddress): Collection { // { // "name": "string", diff --git a/app/Http/Client/Moralis/MoralisPendingRequest.php b/app/Http/Client/Moralis/MoralisPendingRequest.php index 1a0e8fced..e1f7365aa 100644 --- a/app/Http/Client/Moralis/MoralisPendingRequest.php +++ b/app/Http/Client/Moralis/MoralisPendingRequest.php @@ -242,7 +242,7 @@ public function getNativeBalances(array $walletAddresses, Network $network): Col * @see https://docs.moralis.io/web3-data-api/evm/reference/get-nft-lowest-price * Get the lowest executed price for an NFT contract for the last x days (only trades paid in ETH). */ - public function getNftCollectionFloorPrice(Chain $chain, string $contractAddress): ?Web3NftCollectionFloorPrice + public function getCollectionFloorPrice(Chain $chain, string $contractAddress): ?Web3NftCollectionFloorPrice { try { $data = self::get(sprintf('nft/%s/lowestprice', $contractAddress), [ diff --git a/app/Http/Client/Opensea/OpenseaPendingRequest.php b/app/Http/Client/Opensea/OpenseaPendingRequest.php index e76a03814..894e338a8 100644 --- a/app/Http/Client/Opensea/OpenseaPendingRequest.php +++ b/app/Http/Client/Opensea/OpenseaPendingRequest.php @@ -96,7 +96,7 @@ public function nft(Chain $chain, string $address, string $identifier): ?Opensea /** * @see https://docs.opensea.io/v1.0/reference/retrieving-collection-stats */ - public function getNftCollectionFloorPrice(string $collectionSlug): ?Web3NftCollectionFloorPrice + public function getCollectionFloorPrice(string $collectionSlug): ?Web3NftCollectionFloorPrice { try { $response = $this->makeCollectionStatsRequest($collectionSlug); diff --git a/app/Jobs/FetchCollectionBanner.php b/app/Jobs/FetchCollectionBanner.php index a89e1201d..27d86b0f5 100644 --- a/app/Jobs/FetchCollectionBanner.php +++ b/app/Jobs/FetchCollectionBanner.php @@ -40,7 +40,7 @@ public function handle(): void 'collection' => $this->collection->address, ]); - $banner = Mnemonic::getNftCollectionBanner( + $banner = Mnemonic::getCollectionBanner( chain: $this->collection->network->chain(), contractAddress: $this->collection->address ); diff --git a/app/Jobs/FetchCollectionFloorPrice.php b/app/Jobs/FetchCollectionFloorPrice.php index 14dde68de..51ebc7462 100644 --- a/app/Jobs/FetchCollectionFloorPrice.php +++ b/app/Jobs/FetchCollectionFloorPrice.php @@ -53,7 +53,7 @@ public function handle(): void $collection->save(); $web3DataProvider = $this->getWeb3DataProvider(); - $floorPrice = $web3DataProvider->getNftCollectionFloorPrice( + $floorPrice = $web3DataProvider->getCollectionFloorPrice( Chain::from($this->chainId), $this->address ); diff --git a/app/Jobs/FetchCollectionOwners.php b/app/Jobs/FetchCollectionOwners.php index b8dc999cd..75f10f6bf 100644 --- a/app/Jobs/FetchCollectionOwners.php +++ b/app/Jobs/FetchCollectionOwners.php @@ -39,7 +39,7 @@ public function handle(): void 'collection' => $this->collection->address, ]); - $owners = Mnemonic::getNftCollectionOwners( + $owners = Mnemonic::getCollectionOwners( chain: $this->collection->network->chain(), contractAddress: $this->collection->address ); diff --git a/app/Jobs/FetchCollectionTraits.php b/app/Jobs/FetchCollectionTraits.php index f866b4589..ed0632c97 100644 --- a/app/Jobs/FetchCollectionTraits.php +++ b/app/Jobs/FetchCollectionTraits.php @@ -41,7 +41,7 @@ public function handle(): void 'collection' => $this->collection->address, ]); - $traits = Mnemonic::getNftCollectionTraits( + $traits = Mnemonic::getCollectionTraits( chain: $this->collection->network->chain(), contractAddress: $this->collection->address ); diff --git a/app/Jobs/FetchCollectionVolume.php b/app/Jobs/FetchCollectionVolume.php index 051df418d..5d9a0bb88 100644 --- a/app/Jobs/FetchCollectionVolume.php +++ b/app/Jobs/FetchCollectionVolume.php @@ -39,7 +39,7 @@ public function handle(): void 'collection' => $this->collection->address, ]); - $volume = Mnemonic::getNftCollectionVolume( + $volume = Mnemonic::getCollectionVolume( chain: $this->collection->network->chain(), contractAddress: $this->collection->address ); diff --git a/app/Services/Web3/Alchemy/AlchemyWeb3DataProvider.php b/app/Services/Web3/Alchemy/AlchemyWeb3DataProvider.php index d9c905df2..441616f65 100644 --- a/app/Services/Web3/Alchemy/AlchemyWeb3DataProvider.php +++ b/app/Services/Web3/Alchemy/AlchemyWeb3DataProvider.php @@ -82,10 +82,10 @@ public function getMiddleware(): array return []; } - public function getNftCollectionFloorPrice(Chain $chain, string $contractAddress): ?Web3NftCollectionFloorPrice + public function getCollectionFloorPrice(Chain $chain, string $contractAddress): ?Web3NftCollectionFloorPrice { return $this->fromCache( - static fn () => Alchemy::getNftCollectionFloorPrice($chain, $contractAddress), + static fn () => Alchemy::getCollectionFloorPrice($chain, $contractAddress), [$chain->name, $contractAddress] ); } diff --git a/app/Services/Web3/Fake/FakeWeb3DataProvider.php b/app/Services/Web3/Fake/FakeWeb3DataProvider.php index 321e80228..c1c31f92e 100644 --- a/app/Services/Web3/Fake/FakeWeb3DataProvider.php +++ b/app/Services/Web3/Fake/FakeWeb3DataProvider.php @@ -82,7 +82,7 @@ public function getWalletNfts(Wallet $wallet, Network $network, ?string $cursor name: $nft->name, description: null, extraAttributes: $nft['extra_attributes']->toArray(), - floorPrice: $this->getNftCollectionFloorPrice(Chain::ETH, $wallet->address), + floorPrice: $this->getCollectionFloorPrice(Chain::ETH, $wallet->address), traits: [], mintedBlock: random_int(1, 10000), mintedAt: now(), @@ -114,7 +114,7 @@ public function getBlockTimestamp(Network $network, int $blockNumber): Carbon return now(); } - public function getNftCollectionFloorPrice(Chain $chain, string $contractAddress): ?Web3NftCollectionFloorPrice + public function getCollectionFloorPrice(Chain $chain, string $contractAddress): ?Web3NftCollectionFloorPrice { return new Web3NftCollectionFloorPrice((string) (random_int(50, 1000) * 1e18), 'eth', Carbon::now()); } diff --git a/app/Services/Web3/Mnemonic/MnemonicWeb3DataProvider.php b/app/Services/Web3/Mnemonic/MnemonicWeb3DataProvider.php index c530efbaa..fe1c27472 100644 --- a/app/Services/Web3/Mnemonic/MnemonicWeb3DataProvider.php +++ b/app/Services/Web3/Mnemonic/MnemonicWeb3DataProvider.php @@ -49,10 +49,10 @@ public function getCollectionsNfts(CollectionModel $collection, ?string $startTo throw new NotImplementedException(); } - public function getNftCollectionFloorPrice(Chain $chain, string $contractAddress): ?Web3NftCollectionFloorPrice + public function getCollectionFloorPrice(Chain $chain, string $contractAddress): ?Web3NftCollectionFloorPrice { return $this->fromCache( - static fn () => Mnemonic::getNftCollectionFloorPrice($chain, $contractAddress), + static fn () => Mnemonic::getCollectionFloorPrice($chain, $contractAddress), [$chain->name, $contractAddress] ); } diff --git a/app/Services/Web3/Moralis/MoralisWeb3DataProvider.php b/app/Services/Web3/Moralis/MoralisWeb3DataProvider.php index f577258d2..f715dc31a 100644 --- a/app/Services/Web3/Moralis/MoralisWeb3DataProvider.php +++ b/app/Services/Web3/Moralis/MoralisWeb3DataProvider.php @@ -76,10 +76,10 @@ public function getMiddleware(): array return [new RateLimited(Service::Moralis)]; } - public function getNftCollectionFloorPrice(Chain $chain, string $contractAddress): ?Web3NftCollectionFloorPrice + public function getCollectionFloorPrice(Chain $chain, string $contractAddress): ?Web3NftCollectionFloorPrice { return $this->fromCache( - static fn () => Moralis::getNftCollectionFloorPrice($chain, $contractAddress), + static fn () => Moralis::getCollectionFloorPrice($chain, $contractAddress), [$chain->name, $contractAddress] ); } diff --git a/app/Services/Web3/Opensea/OpenseaWeb3DataProvider.php b/app/Services/Web3/Opensea/OpenseaWeb3DataProvider.php index 6755e3f4e..eb9369113 100644 --- a/app/Services/Web3/Opensea/OpenseaWeb3DataProvider.php +++ b/app/Services/Web3/Opensea/OpenseaWeb3DataProvider.php @@ -50,7 +50,7 @@ public function getCollectionsNfts(CollectionModel $collection, ?string $startTo throw new NotImplementedException(); } - public function getNftCollectionFloorPrice(Chain $chain, string $contractAddress): ?Web3NftCollectionFloorPrice + public function getCollectionFloorPrice(Chain $chain, string $contractAddress): ?Web3NftCollectionFloorPrice { return $this->fromCache( function () use ($contractAddress, $chain) { @@ -64,7 +64,7 @@ function () use ($contractAddress, $chain) { return null; } - return Opensea::getNftCollectionFloorPrice($openseaSlug); + return Opensea::getCollectionFloorPrice($openseaSlug); }, [$chain->name, $contractAddress] ); diff --git a/app/Support/Facades/Alchemy.php b/app/Support/Facades/Alchemy.php index b8189a267..cab3cc57b 100644 --- a/app/Support/Facades/Alchemy.php +++ b/app/Support/Facades/Alchemy.php @@ -29,7 +29,7 @@ * @method static Web3NftData parseNft(array $nft, int $networkId) * @method static string getNativeBalance(Wallet $wallet, Network $network) * @method static Carbon getBlockTimestamp(Network $network, int $blockNumber) - * @method static Web3NftCollectionFloorPrice | null getNftCollectionFloorPrice(Chain $chain, string $contractAddress) + * @method static Web3NftCollectionFloorPrice | null getCollectionFloorPrice(Chain $chain, string $contractAddress) * * @see App\Http\Client\Alchemy\AlchemyPendingRequest */ diff --git a/app/Support/Facades/Mnemonic.php b/app/Support/Facades/Mnemonic.php index 19bf036d0..8a6dc8061 100644 --- a/app/Support/Facades/Mnemonic.php +++ b/app/Support/Facades/Mnemonic.php @@ -17,11 +17,11 @@ /** * @method static string getNativeBalance(Wallet $wallet, Network $network) - * @method static Web3NftCollectionFloorPrice | null getNftCollectionFloorPrice(Chain $chain, string $contractAddress) - * @method static string | null getNftCollectionBanner(Chain $chain, string $contractAddress) - * @method static int | null getNftCollectionOwners(Chain $chain, string $contractAddress) - * @method static string | null getNftCollectionVolume(Chain $chain, string $contractAddress) - * @method static Collection getNftCollectionTraits(Chain $chain, string $contractAddress) + * @method static Web3NftCollectionFloorPrice | null getCollectionFloorPrice(Chain $chain, string $contractAddress) + * @method static string | null getCollectionBanner(Chain $chain, string $contractAddress) + * @method static int | null getCollectionOwners(Chain $chain, string $contractAddress) + * @method static string | null getCollectionVolume(Chain $chain, string $contractAddress) + * @method static Collection getCollectionTraits(Chain $chain, string $contractAddress) * @method static Collection getCollectionActivity(Chain $chain, string $contractAddress, int $limit, ?Carbon $from = null) * @method static Collection getBurnActivity(Chain $chain, string $contractAddress, int $limit, ?Carbon $from = null) * diff --git a/app/Support/Facades/Moralis.php b/app/Support/Facades/Moralis.php index b4b203f9b..48cd17c6c 100644 --- a/app/Support/Facades/Moralis.php +++ b/app/Support/Facades/Moralis.php @@ -23,7 +23,7 @@ * @method static string getNativeBalance(Wallet $wallet, Network $network) * @method static Collection getNativeBalances(array $walletAddresses, Network $network) * @method static Carbon getBlockTimestamp(Network $network, int $blockNumber) - * @method static Web3NftCollectionFloorPrice | null getNftCollectionFloorPrice(Chain $chain, string $contractAddress) + * @method static Web3NftCollectionFloorPrice | null getCollectionFloorPrice(Chain $chain, string $contractAddress) * * @see App\Http\Client\Moralis\MoralisPendingRequest */ diff --git a/app/Support/Facades/Opensea.php b/app/Support/Facades/Opensea.php index 30d59c2ff..268ea0ca6 100644 --- a/app/Support/Facades/Opensea.php +++ b/app/Support/Facades/Opensea.php @@ -13,7 +13,7 @@ /** * @method static string getCollectionTotalVolume(Collection $collection) - * @method static Web3NftCollectionFloorPrice | null getNftCollectionFloorPrice(string $collectionSlug) + * @method static Web3NftCollectionFloorPrice | null getCollectionFloorPrice(string $collectionSlug) * @method static OpenseaNftDetails | null nft(Chain $chain, string $address, string $identifier) * * @see App\Http\Client\Opensea\OpenseaPendingRequest diff --git a/config/dashbrd.php b/config/dashbrd.php index 6a78ed51d..b458ce8d3 100644 --- a/config/dashbrd.php +++ b/config/dashbrd.php @@ -81,19 +81,19 @@ 'cache_ttl' => [ 'alchemy' => [ 'getBlockTimestamp' => 60 * 60 * 24 * 10, // 10 days... Creation date for blocks will never change, so we can safely cache in a distant future... - 'getNftCollectionFloorPrice' => 60, // 1 minute + 'getCollectionFloorPrice' => 60, // 1 minute ], 'moralis' => [ 'getEnsDomain' => 60, // 1 minute 'getBlockTimestamp' => 60 * 60 * 24 * 10, // 10 days... Creation date for blocks will never change, so we can safely cache in a distant future... - 'getNftCollectionFloorPrice' => 60, // 1 minute + 'getCollectionFloorPrice' => 60, // 1 minute ], 'mnemonic' => [ 'getBlockTimestamp' => 60 * 60 * 24 * 10, // 10 days... Creation date for blocks will never change, so we can safely cache in a distant future... - 'getNftCollectionFloorPrice' => 60, // 1 minute + 'getCollectionFloorPrice' => 60, // 1 minute ], 'opensea' => [ - 'getNftCollectionFloorPrice' => 60, // 1 minute + 'getCollectionFloorPrice' => 60, // 1 minute ], 'coingecko' => [ 'getPriceHistory' => [ diff --git a/tests/App/Http/Client/Mnemonic/MnemonicPendingRequestTest.php b/tests/App/Http/Client/Mnemonic/MnemonicPendingRequestTest.php index 975fbb1f9..bdb9c93a6 100644 --- a/tests/App/Http/Client/Mnemonic/MnemonicPendingRequestTest.php +++ b/tests/App/Http/Client/Mnemonic/MnemonicPendingRequestTest.php @@ -36,7 +36,7 @@ 'network_id' => $network->id, ]); - Mnemonic::getNftCollectionFloorPrice(Chain::Polygon, $collection->address); + Mnemonic::getCollectionFloorPrice(Chain::Polygon, $collection->address); })->throws(ConnectionException::class); it('should throw on 401', function () { @@ -50,7 +50,7 @@ 'network_id' => $network->id, ]); - Mnemonic::getNftCollectionFloorPrice(Chain::Polygon, $collection->address); + Mnemonic::getCollectionFloorPrice(Chain::Polygon, $collection->address); })->throws(Exception::class); it('should throw a custom exception on rate limits', function () { @@ -66,7 +66,7 @@ 'network_id' => $network->id, ]); - Mnemonic::getNftCollectionFloorPrice(Chain::Polygon, $collection->address); + Mnemonic::getCollectionFloorPrice(Chain::Polygon, $collection->address); })->throws(RateLimitException::class); it('should not retry request on 400', function () { @@ -100,7 +100,7 @@ 'network_id' => $network->id, ]); - $data = Mnemonic::getNftCollectionOwners(Chain::Polygon, $collection->address); + $data = Mnemonic::getCollectionOwners(Chain::Polygon, $collection->address); expect($data)->toBe(789); }); @@ -121,7 +121,7 @@ 'network_id' => $network->id, ]); - $data = Mnemonic::getNftCollectionVolume(Chain::Polygon, $collection->address); + $data = Mnemonic::getCollectionVolume(Chain::Polygon, $collection->address); expect($data)->toBe('12300000000000000000'); }); @@ -138,7 +138,7 @@ 'network_id' => $network->id, ]); - $data = Mnemonic::getNftCollectionVolume(Chain::Polygon, $collection->address); + $data = Mnemonic::getCollectionVolume(Chain::Polygon, $collection->address); expect($data)->toBe(null); })->with([ @@ -171,7 +171,7 @@ 'network_id' => $network->id, ]); - $data = Mnemonic::getNftCollectionTraits(Chain::Polygon, $collection->address); + $data = Mnemonic::getCollectionTraits(Chain::Polygon, $collection->address); expect($data)->toHaveCount(25); }); @@ -198,7 +198,7 @@ 'network_id' => $network->id, ]); - $data = Mnemonic::getNftCollectionTraits(Chain::Polygon, $collection->address); + $data = Mnemonic::getCollectionTraits(Chain::Polygon, $collection->address); expect($data)->toHaveCount(500 + 500 + 0 + 0); }); @@ -219,7 +219,7 @@ 'network_id' => $network->id, ]); - $data = Mnemonic::getNftCollectionTraits(Chain::Polygon, $collection->address); + $data = Mnemonic::getCollectionTraits(Chain::Polygon, $collection->address); expect($data)->toHaveCount(1); }); @@ -240,7 +240,7 @@ 'network_id' => $network->id, ]); - $data = Mnemonic::getNftCollectionTraits(Chain::Polygon, $collection->address); + $data = Mnemonic::getCollectionTraits(Chain::Polygon, $collection->address); expect($data)->toHaveCount(1); }); @@ -472,5 +472,5 @@ 'network_id' => $network->id, ]); - expect(Mnemonic::getNftCollectionFloorPrice(Chain::ETH, $collection->address))->toBeNull(); + expect(Mnemonic::getCollectionFloorPrice(Chain::ETH, $collection->address))->toBeNull(); }); diff --git a/tests/App/Http/Client/Moralis/MoralisPendingRequestTest.php b/tests/App/Http/Client/Moralis/MoralisPendingRequestTest.php index af990e26b..99a19343c 100644 --- a/tests/App/Http/Client/Moralis/MoralisPendingRequestTest.php +++ b/tests/App/Http/Client/Moralis/MoralisPendingRequestTest.php @@ -67,7 +67,7 @@ 'https://deep-index.moralis.io/api/v2/nft/*/lowestprice?*' => Http::response(null, 404), ]); - expect(Moralis::getNftCollectionFloorPrice(Chain::ETH, '1'))->toBeNull(); + expect(Moralis::getCollectionFloorPrice(Chain::ETH, '1'))->toBeNull(); }); it('should throw any non-404 error when getting nft floor price', function () { @@ -75,5 +75,5 @@ 'https://deep-index.moralis.io/api/v2/nft/*/lowestprice?*' => Http::response(null, 400), ]); - expect(fn () => Moralis::getNftCollectionFloorPrice(Chain::ETH, '1'))->toThrow('400 Bad Request'); + expect(fn () => Moralis::getCollectionFloorPrice(Chain::ETH, '1'))->toThrow('400 Bad Request'); }); diff --git a/tests/App/Http/Client/Opensea/OpenseaPendingRequestTest.php b/tests/App/Http/Client/Opensea/OpenseaPendingRequestTest.php index a237d632d..46a09f5ac 100644 --- a/tests/App/Http/Client/Opensea/OpenseaPendingRequestTest.php +++ b/tests/App/Http/Client/Opensea/OpenseaPendingRequestTest.php @@ -18,7 +18,7 @@ $collectionSlug = 'doodles-official'; - Opensea::getNftCollectionFloorPrice($collectionSlug); + Opensea::getCollectionFloorPrice($collectionSlug); })->throws(ConnectionException::class); it('should throw a custom exception when rate limited', function () { @@ -28,7 +28,7 @@ $collectionSlug = 'doodles-official'; - Opensea::getNftCollectionFloorPrice($collectionSlug); + Opensea::getCollectionFloorPrice($collectionSlug); })->throws(RateLimitException::class); it('should throw a custom exception on client error', function () { @@ -38,7 +38,7 @@ $collectionSlug = 'doodles-official'; - Opensea::getNftCollectionFloorPrice($collectionSlug); + Opensea::getCollectionFloorPrice($collectionSlug); })->throws(ClientException::class); it('can get floor price for the collection', function () { @@ -48,7 +48,7 @@ $collectionSlug = 'doodles-official'; - $data = Opensea::getNftCollectionFloorPrice($collectionSlug); + $data = Opensea::getCollectionFloorPrice($collectionSlug); expect($data)->toBeInstanceOf(Web3NftCollectionFloorPrice::class); }); diff --git a/tests/App/Services/Web3/Alchemy/AlchemyWeb3DataProviderTest.php b/tests/App/Services/Web3/Alchemy/AlchemyWeb3DataProviderTest.php index d16e156eb..a3de80ea4 100644 --- a/tests/App/Services/Web3/Alchemy/AlchemyWeb3DataProviderTest.php +++ b/tests/App/Services/Web3/Alchemy/AlchemyWeb3DataProviderTest.php @@ -246,7 +246,7 @@ ]); $provider = new AlchemyWeb3DataProvider(); - expect($provider->getNftCollectionFloorPrice(Chain::ETH, 'asdf'))->toEqual(new Web3NftCollectionFloorPrice( + expect($provider->getCollectionFloorPrice(Chain::ETH, 'asdf'))->toEqual(new Web3NftCollectionFloorPrice( '1235000000000000000', 'eth', Carbon::parse('2023-03-30T04:08:09.791Z'), @@ -259,7 +259,7 @@ ]); $provider = new AlchemyWeb3DataProvider(); - expect($provider->getNftCollectionFloorPrice(Chain::ETH, 'asdf'))->toEqual(new Web3NftCollectionFloorPrice( + expect($provider->getCollectionFloorPrice(Chain::ETH, 'asdf'))->toEqual(new Web3NftCollectionFloorPrice( '1247200000000000000', 'eth', Carbon::parse('2023-03-30T03:59:09.707Z'), @@ -275,7 +275,7 @@ ]); $provider = new AlchemyWeb3DataProvider(); - expect($provider->getNftCollectionFloorPrice(Chain::ETH, 'asdf'))->toBeNull(); + expect($provider->getCollectionFloorPrice(Chain::ETH, 'asdf'))->toBeNull(); }); it('returns null for unsupported network when calling nft floor price', function () { @@ -290,7 +290,7 @@ collect(Chain::cases()) ->filter(fn ($case) => $case !== Chain::ETH) ->each( - fn ($case) => expect($provider->getNftCollectionFloorPrice($case, 'asdf')) + fn ($case) => expect($provider->getCollectionFloorPrice($case, 'asdf')) ->toBeNull() ); }); diff --git a/tests/App/Services/Web3/Mnemonic/MnemonicWeb3DataProviderTest.php b/tests/App/Services/Web3/Mnemonic/MnemonicWeb3DataProviderTest.php index 20b713e56..9d55b900d 100644 --- a/tests/App/Services/Web3/Mnemonic/MnemonicWeb3DataProviderTest.php +++ b/tests/App/Services/Web3/Mnemonic/MnemonicWeb3DataProviderTest.php @@ -21,7 +21,7 @@ $collection = Collection::factory()->create(); $provider = new MnemonicWeb3DataProvider(); - $floorPrice = $provider->getNftCollectionFloorPrice(Chain::Polygon, $collection->address); + $floorPrice = $provider->getCollectionFloorPrice(Chain::Polygon, $collection->address); expect($floorPrice->price)->toBe('10267792581881993') ->and($floorPrice->currency)->toBe('matic'); }); @@ -45,7 +45,7 @@ ]); $provider = new MnemonicWeb3DataProvider(); - $floorPrice = $provider->getNftCollectionFloorPrice(Chain::Polygon, $collection->address); + $floorPrice = $provider->getCollectionFloorPrice(Chain::Polygon, $collection->address); expect($floorPrice->price)->toBe('6000000000000') ->and($floorPrice->currency)->toBe('weth'); }); @@ -62,7 +62,7 @@ ]); $provider = new MnemonicWeb3DataProvider(); - expect($provider->getNftCollectionFloorPrice(Chain::Polygon, $collection->address)) + expect($provider->getCollectionFloorPrice(Chain::Polygon, $collection->address)) ->toBeNull(); }); diff --git a/tests/App/Services/Web3/Moralis/MoralisWeb3DataProviderTest.php b/tests/App/Services/Web3/Moralis/MoralisWeb3DataProviderTest.php index 7538a658d..1c9930210 100644 --- a/tests/App/Services/Web3/Moralis/MoralisWeb3DataProviderTest.php +++ b/tests/App/Services/Web3/Moralis/MoralisWeb3DataProviderTest.php @@ -61,7 +61,7 @@ $provider = new MoralisWeb3DataProvider(); - expect($provider->getNftCollectionFloorPrice(Chain::ETH, ''))->toEqual(new Web3NftCollectionFloorPrice( + expect($provider->getCollectionFloorPrice(Chain::ETH, ''))->toEqual(new Web3NftCollectionFloorPrice( '1000000000000000', 'eth', Carbon::parse('2021-06-04T16:00:15'), @@ -74,7 +74,7 @@ ]); $provider = new MoralisWeb3DataProvider(); - expect($provider->getNftCollectionFloorPrice(Chain::ETH, 'asdf'))->toBeNull(); + expect($provider->getCollectionFloorPrice(Chain::ETH, 'asdf'))->toBeNull(); }); it('can get native balance for a wallet', function () { diff --git a/tests/App/Services/Web3/Opensea/OpenseaWeb3DataProviderTest.php b/tests/App/Services/Web3/Opensea/OpenseaWeb3DataProviderTest.php index 3c547a580..c5f1ec5e8 100644 --- a/tests/App/Services/Web3/Opensea/OpenseaWeb3DataProviderTest.php +++ b/tests/App/Services/Web3/Opensea/OpenseaWeb3DataProviderTest.php @@ -12,7 +12,7 @@ use App\Services\Web3\Opensea\OpenseaWeb3DataProvider; use App\Support\Facades\Opensea; -it('should getNftCollectionFloorPrice if no open sea slug', function () { +it('should getCollectionFloorPrice if no open sea slug', function () { Collection::factory()->create([ 'address' => '0x23581767a106ae21c074b2276D25e5C3e136a68b', 'network_id' => Network::where('chain_id', Chain::ETH->value)->first()->id, @@ -22,12 +22,12 @@ $provider = new OpenseaWeb3DataProvider(); - $data = $provider->getNftCollectionFloorPrice(Chain::ETH, $contractAddress); + $data = $provider->getCollectionFloorPrice(Chain::ETH, $contractAddress); expect($data)->toBeNull(); }); -it('should getNftCollectionFloorPrice ', function () { +it('should getCollectionFloorPrice ', function () { Collection::factory()->create([ 'address' => '0x23581767a106ae21c074b2276D25e5C3e136a68b', 'network_id' => Network::where('chain_id', Chain::ETH->value)->first()->id, @@ -42,7 +42,7 @@ $provider = new OpenseaWeb3DataProvider(); - $data = $provider->getNftCollectionFloorPrice(Chain::ETH, $contractAddress); + $data = $provider->getCollectionFloorPrice(Chain::ETH, $contractAddress); expect($data)->toBeInstanceOf(Web3NftCollectionFloorPrice::class); }); diff --git a/tests/App/Support/Facades/MnemonicTest.php b/tests/App/Support/Facades/MnemonicTest.php index eba6af19a..cf4d223b1 100644 --- a/tests/App/Support/Facades/MnemonicTest.php +++ b/tests/App/Support/Facades/MnemonicTest.php @@ -20,7 +20,7 @@ $collection = Collection::factory()->create([ 'network_id' => $network->id, ]); - $data = Mnemonic::getNftCollectionFloorPrice(Chain::Polygon, $collection->address); + $data = Mnemonic::getCollectionFloorPrice(Chain::Polygon, $collection->address); expect($data)->toBeInstanceOf(Web3NftCollectionFloorPrice::class); }); From 321f98c7d57bb11e9300dbb075317b81875c98a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josip=20Crnkovi=C4=87?= Date: Thu, 18 Jan 2024 10:55:25 +0100 Subject: [PATCH 094/145] refactor: move authentication overlay to the nomination modal (#603) --- .../js/Components/Layout/Overlay/Overlay.tsx | 2 +- .../CollectionVoting/NominationDialog.tsx | 33 +++++++++++-------- .../CollectionVoting/VoteCollections.tsx | 4 +-- 3 files changed, 21 insertions(+), 18 deletions(-) diff --git a/resources/js/Components/Layout/Overlay/Overlay.tsx b/resources/js/Components/Layout/Overlay/Overlay.tsx index c83c3f631..f1edbe753 100644 --- a/resources/js/Components/Layout/Overlay/Overlay.tsx +++ b/resources/js/Components/Layout/Overlay/Overlay.tsx @@ -17,7 +17,7 @@ export const Overlay = ({ >
    => { @@ -130,22 +133,24 @@ export const NominationDialog = ({ ); const vote = (): void => { - setLoading(true); - - router.post( - route("collection-votes.create", collection), - {}, - { - preserveState: true, - preserveScroll: true, - onFinish: () => { - setLoading(false); - setIsOpen(false); + void signedAction((): void => { + setLoading(true); + + router.post( + route("collection-votes.create", collection), + {}, + { + preserveState: true, + preserveScroll: true, + onFinish: () => { + setLoading(false); + setIsOpen(false); - setShowConfirmationDialog(true); + setShowConfirmationDialog(true); + }, }, - }, - ); + ); + }); }; return ( diff --git a/resources/js/Pages/Collections/Components/CollectionVoting/VoteCollections.tsx b/resources/js/Pages/Collections/Components/CollectionVoting/VoteCollections.tsx index 3b773df20..d38f322bc 100644 --- a/resources/js/Pages/Collections/Components/CollectionVoting/VoteCollections.tsx +++ b/resources/js/Pages/Collections/Components/CollectionVoting/VoteCollections.tsx @@ -149,9 +149,7 @@ export const VoteCollections = ({ {votedCollection === null && ( { - void signedAction(() => { - setIsDialogOpen(true); - }); + setIsDialogOpen(true); }} variant="link" className="font-medium leading-6 dark:hover:decoration-theme-primary-400" From 55aec99aa2321ad87041cdbe68f4cb025a969ad4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josip=20Crnkovi=C4=87?= Date: Thu, 18 Jan 2024 12:58:27 +0100 Subject: [PATCH 095/145] refactor: prevent collections with no NFTs from being set as featured (#608) --- app/Filament/Resources/CollectionResource.php | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/app/Filament/Resources/CollectionResource.php b/app/Filament/Resources/CollectionResource.php index 99d07443b..2cd5869be 100644 --- a/app/Filament/Resources/CollectionResource.php +++ b/app/Filament/Resources/CollectionResource.php @@ -89,11 +89,16 @@ public static function table(Table $table): Table ActionGroup::make([ Action::make('updateIsFeatured') ->action(function (Collection $collection) { - if (! $collection->is_featured && Collection::featured()->count() >= 4) { + if ($collection->nfts()->count() === 0 && ! $collection->is_featured) { Notification::make() - ->title('There are already 4 collections marked as featured. Please remove one before selecting a new one.') - ->warning() - ->send(); + ->title('Collections with no NFTs cannot be marked as featured.') + ->danger() + ->send(); + } elseif (! $collection->is_featured && Collection::featured()->count() >= 4) { + Notification::make() + ->title('There are already 4 collections marked as featured. Please remove one before selecting a new one.') + ->warning() + ->send(); } else { $collection->update([ 'is_featured' => ! $collection->is_featured, From dd7ebab84edd3e604822a227190185e7a9599f7b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josip=20Crnkovi=C4=87?= Date: Thu, 18 Jan 2024 13:18:55 +0100 Subject: [PATCH 096/145] refactor: store collection volume changes (#576) --- .../Commands/FetchAverageCollectionVolume.php | 70 ++++++++++++++ app/Console/Kernel.php | 8 +- .../Mnemonic/MnemonicPendingRequest.php | 37 +++++++- app/Jobs/FetchAverageCollectionVolume.php | 72 ++++++++++++++ app/Jobs/FetchCollectionVolume.php | 37 +++++--- app/Jobs/RefreshWalletCollections.php | 1 - app/Jobs/SyncCollection.php | 1 - app/Models/Collection.php | 17 ++++ app/Models/TradingVolume.php | 24 +++++ app/Support/Facades/Mnemonic.php | 2 + app/Support/Web3NftHandler.php | 23 +++-- database/factories/TradingVolumeFactory.php | 27 ++++++ ...19_122041_create_trading_volumes_table.php | 24 +++++ ...me_change_columns_to_collections_table.php | 22 +++++ .../FetchAverageCollectionVolumeTest.php | 77 +++++++++++++++ .../Mnemonic/MnemonicPendingRequestTest.php | 43 +++++++++ .../Jobs/FetchAverageCollectionVolumeTest.php | 41 ++++++++ tests/App/Jobs/FetchCollectionVolumeTest.php | 93 +++++++++++++++++-- .../App/Jobs/RefreshWalletCollectionsTest.php | 2 +- tests/App/Models/TradingVolumeTest.php | 16 ++++ tests/App/Support/Web3NftHandlerTest.php | 93 +++++++++++++++++++ 21 files changed, 691 insertions(+), 39 deletions(-) create mode 100644 app/Console/Commands/FetchAverageCollectionVolume.php create mode 100644 app/Jobs/FetchAverageCollectionVolume.php create mode 100644 app/Models/TradingVolume.php create mode 100644 database/factories/TradingVolumeFactory.php create mode 100644 database/migrations/2023_12_19_122041_create_trading_volumes_table.php create mode 100644 database/migrations/2023_12_19_181634_add_volume_change_columns_to_collections_table.php create mode 100644 tests/App/Console/Commands/FetchAverageCollectionVolumeTest.php create mode 100644 tests/App/Jobs/FetchAverageCollectionVolumeTest.php create mode 100644 tests/App/Models/TradingVolumeTest.php diff --git a/app/Console/Commands/FetchAverageCollectionVolume.php b/app/Console/Commands/FetchAverageCollectionVolume.php new file mode 100644 index 000000000..89f3b7cfc --- /dev/null +++ b/app/Console/Commands/FetchAverageCollectionVolume.php @@ -0,0 +1,70 @@ +option('period'); + + if ($period !== null && ! in_array($period, ['1d', '7d', '30d'])) { + $this->error('Invalid period value. Supported: 1d, 7d, 30d'); + + return Command::FAILURE; + } + + $this->forEachCollection(function ($collection) { + collect($this->periods())->each(fn ($period) => FetchAverageCollectionVolumeJob::dispatch($collection, $period)); + }); + + return Command::SUCCESS; + } + + /** + * @return Period[] + */ + private function periods(): array + { + if ($this->option('period') === null) { + return [ + Period::DAY, + Period::WEEK, + Period::MONTH, + ]; + } + + return [match ($this->option('period')) { + '1d' => Period::DAY, + '7d' => Period::WEEK, + '30d' => Period::MONTH, + default => throw new Exception('Unsupported period value'), + }]; + } +} diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php index 03c6d78a2..9970c64c8 100644 --- a/app/Console/Kernel.php +++ b/app/Console/Kernel.php @@ -12,6 +12,7 @@ use App\Console\Commands\FetchCollectionNfts; use App\Console\Commands\FetchCollectionOpenseaSlug; use App\Console\Commands\FetchCollectionTotalVolume; +use App\Console\Commands\FetchCollectionVolume; use App\Console\Commands\FetchEnsDetails; use App\Console\Commands\FetchNativeBalances; use App\Console\Commands\FetchTokens; @@ -123,12 +124,15 @@ private function scheduleJobsForCollectionsOrGalleries(Schedule $schedule): void ->hourly(); $schedule - // Command only fetches collections that don't have a slug yet - // so in most cases it will not run any request ->command(FetchCollectionTotalVolume::class) ->withoutOverlapping() ->daily(); + $schedule + ->command(FetchCollectionVolume::class) + ->withoutOverlapping() + ->daily(); + $schedule ->command(FetchCollectionActivity::class) ->withoutOverlapping() diff --git a/app/Http/Client/Mnemonic/MnemonicPendingRequest.php b/app/Http/Client/Mnemonic/MnemonicPendingRequest.php index c1b428bae..26a06a295 100644 --- a/app/Http/Client/Mnemonic/MnemonicPendingRequest.php +++ b/app/Http/Client/Mnemonic/MnemonicPendingRequest.php @@ -13,6 +13,7 @@ use App\Enums\ImageSize; use App\Enums\MnemonicChain; use App\Enums\NftTransferType; +use App\Enums\Period; use App\Enums\TraitDisplayType; use App\Exceptions\ConnectionException; use App\Exceptions\RateLimitException; @@ -22,6 +23,7 @@ use App\Support\NftImageUrl; use App\Support\Web3NftHandler; use Carbon\Carbon; +use Exception; use GuzzleHttp\Exception\ClientException; use GuzzleHttp\Exception\ServerException; use Illuminate\Http\Client\ConnectionException as LaravelConnectionException; @@ -231,18 +233,45 @@ public function getCollectionOwners(Chain $chain, string $contractAddress): ?int return intval($data['ownersCount']); } + /** + * @see https://docs.mnemonichq.com/reference/collectionsservice_getsalesvolume + */ + public function getAverageCollectionVolume(Chain $chain, string $contractAddress, Period $period): ?string + { + $this->chain = MnemonicChain::fromChain($chain); + + $duration = match ($period) { + Period::DAY => 'DURATION_1_DAY', + Period::WEEK => 'DURATION_7_DAYS', + Period::MONTH => 'DURATION_30_DAYS', + default => throw new Exception('Unsupported period value'), + }; + + $volume = self::get(sprintf( + '/collections/v1beta2/%s/sales_volume/'.$duration.'/GROUP_BY_PERIOD_1_DAY', + $contractAddress, + ), [])->json('dataPoints.0.volume'); + + if (empty($volume)) { + return null; + } + + $currency = $chain->nativeCurrency(); + $decimals = CryptoCurrencyDecimals::forCurrency($currency); + + return CryptoUtils::convertToWei($volume, $decimals); + } + // https://docs.mnemonichq.com/reference/collectionsservice_getsalesvolume public function getCollectionVolume(Chain $chain, string $contractAddress): ?string { $this->chain = MnemonicChain::fromChain($chain); - /** @var array $data */ - $data = self::get(sprintf( + $volume = self::get(sprintf( '/collections/v1beta2/%s/sales_volume/DURATION_1_DAY/GROUP_BY_PERIOD_1_DAY', $contractAddress, - ), [])->json(); + ), [])->json('dataPoints.0.volume'); - $volume = Arr::get($data, 'dataPoints.0.volume'); if (empty($volume)) { return null; } diff --git a/app/Jobs/FetchAverageCollectionVolume.php b/app/Jobs/FetchAverageCollectionVolume.php new file mode 100644 index 000000000..b2e3abe63 --- /dev/null +++ b/app/Jobs/FetchAverageCollectionVolume.php @@ -0,0 +1,72 @@ +onQueue(Queues::SCHEDULED_COLLECTIONS); + } + + /** + * Execute the job. + */ + public function handle(): void + { + $volume = Mnemonic::getAverageCollectionVolume( + chain: $this->collection->network->chain(), + contractAddress: $this->collection->address, + period: $this->period, + ); + + $this->collection->update([ + $this->field() => $volume ?? 0, + ]); + + ResetCollectionRanking::dispatch(); + } + + private function field(): string + { + return match ($this->period) { + Period::DAY => 'avg_volume_1d', + Period::WEEK => 'avg_volume_7d', + Period::MONTH => 'avg_volume_30d', + default => throw new Exception('Unsupported period value'), + }; + } + + public function uniqueId(): string + { + return static::class.':'.$this->collection->id; + } + + public function retryUntil(): DateTime + { + return now()->addMinutes(10); + } +} diff --git a/app/Jobs/FetchCollectionVolume.php b/app/Jobs/FetchCollectionVolume.php index 5d9a0bb88..2d3eb0590 100644 --- a/app/Jobs/FetchCollectionVolume.php +++ b/app/Jobs/FetchCollectionVolume.php @@ -15,7 +15,7 @@ use Illuminate\Foundation\Bus\Dispatchable; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Queue\SerializesModels; -use Illuminate\Support\Facades\Log; +use Illuminate\Support\Facades\DB; class FetchCollectionVolume implements ShouldQueue { @@ -35,25 +35,36 @@ public function __construct( */ public function handle(): void { - Log::info('FetchCollectionVolume Job: Processing', [ - 'collection' => $this->collection->address, - ]); - $volume = Mnemonic::getCollectionVolume( chain: $this->collection->network->chain(), contractAddress: $this->collection->address ); - $this->collection->update([ - 'volume' => $volume, - ]); + DB::transaction(function () use ($volume) { + $this->collection->volumes()->create([ + 'volume' => $volume ?? '0', + ]); - ResetCollectionRanking::dispatch(); + $this->collection->volume = $volume; + + // We only want to update average volumes in the given period if we have enough data for that period... + + if ($this->collection->volumes()->where('created_at', '<', now()->subDays(1))->exists()) { + $this->collection->avg_volume_1d = $this->collection->averageVolumeSince(now()->subDays(1)); + } - Log::info('FetchCollectionVolume Job: Handled', [ - 'collection' => $this->collection->address, - 'volume' => $volume, - ]); + if ($this->collection->volumes()->where('created_at', '<', now()->subDays(7))->exists()) { + $this->collection->avg_volume_7d = $this->collection->averageVolumeSince(now()->subDays(7)); + } + + if ($this->collection->volumes()->where('created_at', '<', now()->subDays(30))->exists()) { + $this->collection->avg_volume_30d = $this->collection->averageVolumeSince(now()->subDays(30)); + } + + $this->collection->save(); + }); + + ResetCollectionRanking::dispatch(); } public function uniqueId(): string diff --git a/app/Jobs/RefreshWalletCollections.php b/app/Jobs/RefreshWalletCollections.php index aaef8d845..cd358e01d 100644 --- a/app/Jobs/RefreshWalletCollections.php +++ b/app/Jobs/RefreshWalletCollections.php @@ -44,7 +44,6 @@ public function handle(): void new FetchCollectionFloorPrice($collection->network->chain_id, $collection->address), new FetchCollectionTraits($collection), new FetchCollectionOwners($collection), - new FetchCollectionVolume($collection), new FetchCollectionTotalVolume($collection), ]))->finally(function () use ($wallet) { $wallet->update([ diff --git a/app/Jobs/SyncCollection.php b/app/Jobs/SyncCollection.php index 7d3093b34..370cedb07 100644 --- a/app/Jobs/SyncCollection.php +++ b/app/Jobs/SyncCollection.php @@ -33,7 +33,6 @@ public function handle(): void Bus::batch([ new FetchCollectionTraits($this->collection), new FetchCollectionOwners($this->collection), - new FetchCollectionVolume($this->collection), ])->name('Syncing Collection #'.$this->collection->id)->dispatch(); } diff --git a/app/Models/Collection.php b/app/Models/Collection.php index 1ba56e451..11aacedca 100644 --- a/app/Models/Collection.php +++ b/app/Models/Collection.php @@ -13,6 +13,7 @@ use App\Models\Traits\Reportable; use App\Notifications\CollectionReport; use App\Support\BlacklistedCollections; +use Carbon\Carbon; use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; @@ -714,4 +715,20 @@ public static function getFiatValueSum(): array GROUP BY key;' ); } + + /** + * @return HasMany + */ + public function volumes(): HasMany + { + return $this->hasMany(TradingVolume::class); + } + + public function averageVolumeSince(Carbon $date): string + { + return $this->volumes() + ->selectRaw('avg(volume::numeric) as aggregate') + ->where('created_at', '>', $date) + ->value('aggregate'); + } } diff --git a/app/Models/TradingVolume.php b/app/Models/TradingVolume.php new file mode 100644 index 000000000..fcf579168 --- /dev/null +++ b/app/Models/TradingVolume.php @@ -0,0 +1,24 @@ + + */ + public function collection(): BelongsTo + { + return $this->belongsTo(Collection::class); + } +} diff --git a/app/Support/Facades/Mnemonic.php b/app/Support/Facades/Mnemonic.php index 8a6dc8061..376c4017f 100644 --- a/app/Support/Facades/Mnemonic.php +++ b/app/Support/Facades/Mnemonic.php @@ -8,6 +8,7 @@ use App\Data\Web3\Web3NftCollectionFloorPrice; use App\Data\Web3\Web3NftCollectionTrait; use App\Enums\Chain; +use App\Enums\Period; use App\Http\Client\Mnemonic\MnemonicFactory; use App\Models\Network; use App\Models\Wallet; @@ -21,6 +22,7 @@ * @method static string | null getCollectionBanner(Chain $chain, string $contractAddress) * @method static int | null getCollectionOwners(Chain $chain, string $contractAddress) * @method static string | null getCollectionVolume(Chain $chain, string $contractAddress) + * @method static string | null getAverageCollectionVolume(Chain $chain, string $contractAddress, Period $period) * @method static Collection getCollectionTraits(Chain $chain, string $contractAddress) * @method static Collection getCollectionActivity(Chain $chain, string $contractAddress, int $limit, ?Carbon $from = null) * @method static Collection getBurnActivity(Chain $chain, string $contractAddress, int $limit, ?Carbon $from = null) diff --git a/app/Support/Web3NftHandler.php b/app/Support/Web3NftHandler.php index e71528fb2..0779ae488 100644 --- a/app/Support/Web3NftHandler.php +++ b/app/Support/Web3NftHandler.php @@ -6,8 +6,10 @@ use App\Data\Web3\Web3NftData; use App\Enums\Features; +use App\Enums\Period; use App\Enums\TokenType; use App\Jobs\DetermineCollectionMintingDate; +use App\Jobs\FetchAverageCollectionVolume; use App\Jobs\FetchCollectionActivity; use App\Jobs\FetchCollectionFloorPrice; use App\Models\Collection as CollectionModel; @@ -195,13 +197,20 @@ public function store(Collection $nfts, bool $dispatchJobs = false): void }); // Index activity only for newly created collections... - CollectionModel::query() - ->where('is_fetching_activity', false) - ->whereNull('activity_updated_at') - ->whereIn('id', $ids) - ->chunkById(100, function ($collections) { - $collections->each(fn ($collection) => FetchCollectionActivity::dispatch($collection)->onQueue(Queues::NFTS)); - }); + CollectionModel::whereIn('id', $ids)->chunkById(100, function ($collections) { + $collections->each(function ($collection) { + if (! $collection->is_fetching_activity && $collection->activity_updated_at === null) { + FetchCollectionActivity::dispatch($collection)->onQueue(Queues::NFTS); + } + + // If the collection has just been created, then prefill average volumes until we have enough data... + if ($collection->created_at->gte(now()->subMinutes(3))) { + FetchAverageCollectionVolume::dispatch($collection, Period::DAY); + FetchAverageCollectionVolume::dispatch($collection, Period::WEEK); + FetchAverageCollectionVolume::dispatch($collection, Period::MONTH); + } + }); + }); } // Passing an empty array means we update all collections which is undesired here. diff --git a/database/factories/TradingVolumeFactory.php b/database/factories/TradingVolumeFactory.php new file mode 100644 index 000000000..33b1c8c5a --- /dev/null +++ b/database/factories/TradingVolumeFactory.php @@ -0,0 +1,27 @@ + + */ +class TradingVolumeFactory extends Factory +{ + /** + * Define the model's default state. + * + * @return array + */ + public function definition(): array + { + return [ + 'collection_id' => Collection::factory(), + 'volume' => random_int(1, 1000000), + ]; + } +} diff --git a/database/migrations/2023_12_19_122041_create_trading_volumes_table.php b/database/migrations/2023_12_19_122041_create_trading_volumes_table.php new file mode 100644 index 000000000..b6c104211 --- /dev/null +++ b/database/migrations/2023_12_19_122041_create_trading_volumes_table.php @@ -0,0 +1,24 @@ +id(); + $table->foreignIdFor(Collection::class)->constrained()->cascadeOnDelete(); + $table->string('volume'); + $table->timestamps(); + }); + } +}; diff --git a/database/migrations/2023_12_19_181634_add_volume_change_columns_to_collections_table.php b/database/migrations/2023_12_19_181634_add_volume_change_columns_to_collections_table.php new file mode 100644 index 000000000..3086859bc --- /dev/null +++ b/database/migrations/2023_12_19_181634_add_volume_change_columns_to_collections_table.php @@ -0,0 +1,22 @@ +string('avg_volume_1d')->nullable(); + $table->string('avg_volume_7d')->nullable(); + $table->string('avg_volume_30d')->nullable(); + }); + } +}; diff --git a/tests/App/Console/Commands/FetchAverageCollectionVolumeTest.php b/tests/App/Console/Commands/FetchAverageCollectionVolumeTest.php new file mode 100644 index 000000000..ca29d1e60 --- /dev/null +++ b/tests/App/Console/Commands/FetchAverageCollectionVolumeTest.php @@ -0,0 +1,77 @@ +count(3)->create(); + + Bus::assertDispatchedTimes(FetchAverageCollectionVolume::class, 0); + + $this->artisan('collections:fetch-average-volumes'); + + Bus::assertDispatchedTimes(FetchAverageCollectionVolume::class, 9); +}); + +it('dispatches job for all supported periods for a specific collection', function () { + Bus::fake(); + + $collection = Collection::factory()->create(); + + Bus::assertDispatchedTimes(FetchAverageCollectionVolume::class, 0); + + $this->artisan('collections:fetch-average-volumes', [ + '--collection-id' => $collection->id, + ]); + + Bus::assertDispatchedTimes(FetchAverageCollectionVolume::class, 3); +}); + +it('dispatches job for specific period for all collections', function () { + Bus::fake(); + + Collection::factory()->count(3)->create(); + + Bus::assertDispatchedTimes(FetchAverageCollectionVolume::class, 0); + + $this->artisan('collections:fetch-average-volumes', [ + '--period' => '7d', + ]); + + Bus::assertDispatchedTimes(FetchAverageCollectionVolume::class, 3); +}); + +it('dispatches job for specific period for a specific collection', function () { + Bus::fake(); + + $collection = Collection::factory()->create(); + + Bus::assertDispatchedTimes(FetchAverageCollectionVolume::class, 0); + + $this->artisan('collections:fetch-average-volumes', [ + '--collection-id' => $collection->id, + '--period' => '7d', + ]); + + Bus::assertDispatchedTimes(FetchAverageCollectionVolume::class, 1); +}); + +it('handles unsupported period values', function () { + Bus::fake(); + + $collection = Collection::factory()->create(); + + Bus::assertDispatchedTimes(FetchAverageCollectionVolume::class, 0); + + $this->artisan('collections:fetch-average-volumes', [ + '--collection-id' => $collection->id, + '--period' => '1m', + ]); + + Bus::assertDispatchedTimes(FetchAverageCollectionVolume::class, 0); +}); diff --git a/tests/App/Http/Client/Mnemonic/MnemonicPendingRequestTest.php b/tests/App/Http/Client/Mnemonic/MnemonicPendingRequestTest.php index bdb9c93a6..55d72737d 100644 --- a/tests/App/Http/Client/Mnemonic/MnemonicPendingRequestTest.php +++ b/tests/App/Http/Client/Mnemonic/MnemonicPendingRequestTest.php @@ -4,6 +4,7 @@ use App\Enums\Chain; use App\Enums\NftTransferType; +use App\Enums\Period; use App\Exceptions\ConnectionException; use App\Exceptions\RateLimitException; use App\Models\Collection; @@ -126,6 +127,48 @@ expect($data)->toBe('12300000000000000000'); }); +it('should get average volume', function () { + Mnemonic::fake([ + 'https://polygon-rest.api.mnemonichq.com/collections/v1beta2/*/sales_volume/DURATION_7_DAYS/GROUP_BY_PERIOD_1_DAY' => Http::sequence() + ->push([ + 'dataPoints' => [ + ['volume' => '12.3'], + ], + ], 200), + ]); + + $network = Network::polygon(); + + $collection = Collection::factory()->create([ + 'network_id' => $network->id, + ]); + + $data = Mnemonic::getAverageCollectionVolume(Chain::Polygon, $collection->address, Period::WEEK); + + expect($data)->toBe('12300000000000000000'); +}); + +it('should get no average volume', function () { + Mnemonic::fake([ + 'https://polygon-rest.api.mnemonichq.com/collections/v1beta2/*/sales_volume/DURATION_7_DAYS/GROUP_BY_PERIOD_1_DAY' => Http::sequence() + ->push([ + 'dataPoints' => [ + ['volume' => null], + ], + ], 200), + ]); + + $network = Network::polygon(); + + $collection = Collection::factory()->create([ + 'network_id' => $network->id, + ]); + + $data = Mnemonic::getAverageCollectionVolume(Chain::Polygon, $collection->address, Period::WEEK); + + expect($data)->toBeNull(); +}); + it('should handle no volume', function ($request) { Mnemonic::fake([ 'https://polygon-rest.api.mnemonichq.com/collections/v1beta2/*/sales_volume/DURATION_1_DAY/GROUP_BY_PERIOD_1_DAY' => Http::sequence() diff --git a/tests/App/Jobs/FetchAverageCollectionVolumeTest.php b/tests/App/Jobs/FetchAverageCollectionVolumeTest.php new file mode 100644 index 000000000..00ba942d1 --- /dev/null +++ b/tests/App/Jobs/FetchAverageCollectionVolumeTest.php @@ -0,0 +1,41 @@ +andReturn(753); + + $network = Network::polygon(); + + $collection = Collection::factory()->for($network)->create([ + 'avg_volume_1d' => '1', + 'avg_volume_7d' => '2', + 'avg_volume_30d' => '3', + ]); + + (new FetchAverageCollectionVolume($collection, Period::WEEK))->handle(); + + $collection->refresh(); + + expect($collection->avg_volume_1d)->toBe('1'); + expect($collection->avg_volume_7d)->toBe('753'); + expect($collection->avg_volume_30d)->toBe('3'); +}); + +it('has a unique ID', function () { + $collection = Collection::factory()->create(); + + expect((new FetchAverageCollectionVolume($collection, Period::WEEK))->uniqueId())->toBeString(); +}); + +it('has a retry limit', function () { + $collection = Collection::factory()->create(); + + expect((new FetchAverageCollectionVolume($collection, Period::WEEK))->retryUntil())->toBeInstanceOf(DateTime::class); +}); diff --git a/tests/App/Jobs/FetchCollectionVolumeTest.php b/tests/App/Jobs/FetchCollectionVolumeTest.php index 4bb2c8414..a6f67c579 100644 --- a/tests/App/Jobs/FetchCollectionVolumeTest.php +++ b/tests/App/Jobs/FetchCollectionVolumeTest.php @@ -5,34 +5,107 @@ use App\Jobs\FetchCollectionVolume; use App\Models\Collection; use App\Models\Network; +use App\Models\TradingVolume; use App\Support\Facades\Mnemonic; use Illuminate\Support\Facades\Http; it('should fetch nft collection volume', function () { + Mnemonic::shouldReceive('getCollectionVolume')->andReturn('10'); + + $collection = Collection::factory()->for(Network::polygon())->create([ + 'volume' => null, + ]); + + expect($collection->volume)->toBeNull(); + + (new FetchCollectionVolume($collection))->handle(); + + expect($collection->fresh()->volume)->toBe('10'); +}); + +it('logs volume changes', function () { Mnemonic::fake([ - 'https://polygon-rest.api.mnemonichq.com/collections/v1beta2/*/sales_volume/DURATION_1_DAY/GROUP_BY_PERIOD_1_DAY' => Http::response([ - 'dataPoints' => [ - ['volume' => '12.3'], - ], + '*' => Http::response([ + 'dataPoints' => [[ + 'volume' => '12.3', + ]], ], 200), ]); $network = Network::polygon(); - $collection = Collection::factory()->create([ - 'network_id' => $network->id, - 'volume' => null, + $collection = Collection::factory()->for($network)->create([ + 'volume' => '11000000000000000000', ]); - $this->assertDatabaseCount('collections', 1); + TradingVolume::factory()->for($collection)->create([ + 'volume' => '11000000000000000000', + 'created_at' => now()->subHours(10), + ]); - expect($collection->volume)->toBeNull(); + (new FetchCollectionVolume($collection))->handle(); + + $collection->refresh(); + + expect($collection->volumes()->count())->toBe(2); + expect($collection->volumes()->oldest('id')->pluck('volume')->toArray())->toBe(['11000000000000000000', '12300000000000000000']); +}); + +it('calculates average volume when there is enough historical data', function () { + Mnemonic::fake([ + '*' => Http::response([ + 'dataPoints' => [[ + 'volume' => '12.3', + ]], + ], 200), + ]); + + $network = Network::polygon(); + + $collection = Collection::factory()->for($network)->create([ + 'volume' => '11000000000000000000', + ]); + + TradingVolume::factory()->for($collection)->create([ + 'volume' => '10000000000000000000', + 'created_at' => now()->subDays(2), + ]); + + TradingVolume::factory()->for($collection)->create([ + 'volume' => '11000000000000000000', + 'created_at' => now()->subDays(8), + ]); + + TradingVolume::factory()->for($collection)->create([ + 'volume' => '12000000000000000000', + 'created_at' => now()->subDays(31), + ]); + + (new FetchCollectionVolume($collection))->handle(); + + $collection->refresh(); + + expect($collection->volumes()->count())->toBe(4); + expect($collection->volumes()->oldest('id')->pluck('volume')->toArray())->toBe(['10000000000000000000', '11000000000000000000', '12000000000000000000', '12300000000000000000']); + + expect($collection->avg_volume_1d)->toBe('12300000000000000000'); + expect($collection->avg_volume_7d)->toBe('11150000000000000000'); + expect($collection->avg_volume_30d)->toBe('11100000000000000000'); +}); + +it('does not log volume changes if there is no volume', function () { + Mnemonic::shouldReceive('getCollectionVolume')->andReturn(null); + + $collection = Collection::factory()->for(Network::polygon())->create([ + 'volume' => '10', + ]); (new FetchCollectionVolume($collection))->handle(); $collection->refresh(); - expect($collection->volume)->toBe('12300000000000000000'); + expect(TradingVolume::count())->toBe(1); + expect(TradingVolume::first()->volume)->toBe('0'); }); it('has a retry limit', function () { diff --git a/tests/App/Jobs/RefreshWalletCollectionsTest.php b/tests/App/Jobs/RefreshWalletCollectionsTest.php index 0272b45c4..b9fbc4a48 100644 --- a/tests/App/Jobs/RefreshWalletCollectionsTest.php +++ b/tests/App/Jobs/RefreshWalletCollectionsTest.php @@ -24,7 +24,7 @@ $job->handle(); Bus::assertBatched(function (PendingBatch $batch) { - return $batch->jobs->count() === 10; + return $batch->jobs->count() === 8; }); $user->wallet->refresh(); diff --git a/tests/App/Models/TradingVolumeTest.php b/tests/App/Models/TradingVolumeTest.php new file mode 100644 index 000000000..ece0bad67 --- /dev/null +++ b/tests/App/Models/TradingVolumeTest.php @@ -0,0 +1,16 @@ +create(); + + $volume = TradingVolume::factory()->create([ + 'collection_id' => $collection->id, + ]); + + expect($volume->collection->is($collection))->toBeTrue(); +}); diff --git a/tests/App/Support/Web3NftHandlerTest.php b/tests/App/Support/Web3NftHandlerTest.php index c5992c1ac..6611bd290 100644 --- a/tests/App/Support/Web3NftHandlerTest.php +++ b/tests/App/Support/Web3NftHandlerTest.php @@ -6,6 +6,7 @@ use App\Enums\NftInfo; use App\Enums\TokenType; use App\Enums\TraitDisplayType; +use App\Jobs\FetchAverageCollectionVolume; use App\Models\Collection; use App\Models\Network; use App\Models\NftTrait; @@ -801,3 +802,95 @@ traits: [], expect(Collection::count())->toBe(1); expect($collection->nfts->first()->info)->toBe(null); }); + +it('should dispatch jobs to fetch average collection volume when collection is first added', function () { + Bus::fake(); + + $network = Network::polygon(); + + $token = Token::factory()->create([ + 'network_id' => $network->id, + ]); + + $wallet = Wallet::factory()->create(); + + $handler = new Web3NftHandler( + network: $network, + wallet: $wallet, + ); + + Collection::factory()->for($network)->create([ + 'address' => '0x999', + 'created_at' => now()->subHour(), + ]); + + $oldData = new Web3NftData( + tokenAddress: '0x999', + tokenNumber: '123', + networkId: $token->network_id, + collectionName: 'Collection Name', + collectionSymbol: 'AME', + collectionImage: null, + collectionWebsite: null, + collectionDescription: null, + collectionSocials: null, + collectionSupply: 3000, + collectionBannerImageUrl: null, + collectionBannerUpdatedAt: now(), + collectionOpenSeaSlug: null, + name: null, + description: null, + extraAttributes: [ + 'image' => null, + 'website' => null, + 'banner' => null, + 'banner_updated_at' => now(), + 'opensea_slug' => null, + ], + floorPrice: null, + traits: [], + mintedBlock: 1000, + mintedAt: null, + hasError: true, + info: null, + type: TokenType::Erc721, + ); + + $data = new Web3NftData( + tokenAddress: '0x1234', + tokenNumber: '123', + networkId: $token->network_id, + collectionName: 'Collection Name', + collectionSymbol: 'AME', + collectionImage: null, + collectionWebsite: null, + collectionDescription: null, + collectionSocials: null, + collectionSupply: 3000, + collectionBannerImageUrl: null, + collectionBannerUpdatedAt: now(), + collectionOpenSeaSlug: null, + name: null, + description: null, + extraAttributes: [ + 'image' => null, + 'website' => null, + 'banner' => null, + 'banner_updated_at' => now(), + 'opensea_slug' => null, + ], + floorPrice: null, + traits: [], + mintedBlock: 1000, + mintedAt: null, + hasError: true, + info: null, + type: TokenType::Erc721, + ); + + $handler->store(collect([$data, $oldData]), dispatchJobs: true); + + expect(Collection::count())->toBe(2); + + Bus::assertDispatchedTimes(FetchAverageCollectionVolume::class, 3); +}); From 4243dddd8c1908515ba5194d90e8343935c6bb41 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josip=20Crnkovi=C4=87?= Date: Thu, 18 Jan 2024 15:13:10 +0100 Subject: [PATCH 097/145] fix: collection already won typo (#609) --- lang/en/pages.php | 2 +- resources/js/I18n/Locales/en.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lang/en/pages.php b/lang/en/pages.php index 49336b854..51b66b7c4 100644 --- a/lang/en/pages.php +++ b/lang/en/pages.php @@ -92,7 +92,7 @@ ], 'vote_success' => 'Your vote has been successfully submitted', 'vote_failed' => 'You already cast your vote', - 'already_won' => 'This collecction has already won Collection of the Month.', + 'already_won' => 'This collection has already won Collection of the Month.', 'content_to_be_added' => [ 'title' => 'Content to be added', 'description' => 'There will be a list of previous month winners here soon!', diff --git a/resources/js/I18n/Locales/en.json b/resources/js/I18n/Locales/en.json index 52da78b3d..0b5dd148d 100644 --- a/resources/js/I18n/Locales/en.json +++ b/resources/js/I18n/Locales/en.json @@ -1 +1 @@ -{"auth.welcome":"Welcome to Dashbrd","auth.logged_in":"You're logged in!","auth.log_out":"Log out","auth.failed":"These credentials do not match our records.","auth.session_timeout":"Your session has timed out. Please refresh the page and try connecting your account again.","auth.session_timeout_modal":"Seems like your session has timed out. Please connnect your wallet again.","auth.password":"The provided password is incorrect.","auth.throttle":"Too many login attempts. Please try again in {{seconds}} seconds.","auth.wallet.connecting":"Connecting …","auth.wallet.waiting_for_signature":"Waiting for Signature …","auth.wallet.switching_wallet":"Switching Wallet …","auth.wallet.connect":"Connect Wallet","auth.wallet.connect_long":"Connect Your Wallet to Get Started","auth.wallet.sign_subtitle":"Connect Your Wallet to Continue","auth.wallet.disconnect":"Disconnect Wallet","auth.wallet.install":"Install MetaMask","auth.wallet.install_long":"Install MetaMask to Get Started","auth.wallet.sign":"Sign Message","auth.wallet.sign_message":"Welcome to Dashbrd. In order to login, sign this message with your wallet. It doesn't cost you anything!\n\nSigning ID (you can ignore this): {{nonce}}","auth.wallet.connect_subtitle":"Click on the MetaMask icon in your browser to confirm the action and connect your wallet.","auth.wallet.requires_signature":"In order to prevent impersonation, we require a signature to perform this action. This signature is only a signed message and does not give any access to your wallet.","auth.errors.metamask.no_account":"No account found. Please connect your wallet and try again.","auth.errors.metamask.generic":"Connection attempt error. Please retry and follow the steps to connect your wallet.","auth.errors.metamask.invalid_network":"Please switch to Polygon or Ethereum Mainnet in your MetaMask plugin to connect to Dashbrd.","auth.errors.metamask.provider_missing":"You don't have MetaMask installed in your browser. Please install and try again.","auth.errors.metamask.user_rejected":"It looks like you cancelled signing of the authentication message. Please try again.","auth.errors.metamask.provider_not_set":"Ethereum provider is not set","auth.validation.wallet_login_failed":"There was a problem trying to verify your signature. Please try again.","auth.validation.invalid_address":"Your wallet address is invalid. Please try again.","auth.validation.invalid_signature":"Signature is invalid. Please try again.","auth.validation.invalid_network":"Please switch to Polygon or Ethereum Mainnet in your MetaMask plugin to connect to Dashbrd.","common.author":"Author","common.add":"Add","common.amount":"Amount","common.balance":"Balance","common.cancel":"Cancel","common.delete":"Delete","common.edit":"Edit","common.confirm":"Confirm","common.connect":"Connect","common.continue":"Continue","common.done":"Done","common.filter":"Filter","common.items":"Items","common.receive":"Receive","common.received":"Received","common.retry":"Retry","common.records":"Records","common.save":"Save","common.send":"Send","common.sent":"Sent","common.show":"Show","common.searching":"Searching...","common.other":"Other","common.owned":"Owned","common.token":"Token","common.tokens":"Tokens","common.wallet":"Wallet","common.pending":"Pending","common.publish":"Publish","common.published":"Published","common.empty":"Empty","common.your_address":"Your Address","common.warning":"Warning","common.my_address":"My Address","common.my_wallet":"My Wallet","common.my_collections":"My Collections","common.my_balance":"My Balance","common.na":"N/A","common.simple_plural_without_data":"One comment|Many comments","common.simple_plural_with_data":"{{count}} comment|{{count}} comments","common.advanced_plural_without_data":"{0} no comments yet|{1} 1 comment|[2,*] Many comments","common.advanced_plural_with_data":"{0} no comments yet|{1} 1 comment|[2,*] {{count}} comments","common.copy_clipboard":"Copy to Clipboard","common.copy":"Copy","common.download":"Download","common.zoom":"Zoom","common.my_collection":"My Collection","common.max":"Max","common.chain":"Chain","common.search":"Search","common.copied":"Copied!","common.coming_soon":"Coming Soon","common.more_details":"More Details","common.close":"Close","common.close_toast":"Close toast","common.loading":"Loading","common.price":"Price","common.articles":"Articles","common.most_popular":"Most Popular","common.market_cap":"Market Cap","common.volume":"Volume","common.volume_frequency":"Volume {{frequency}}","common.value":"Value","common.last_n_days":"Last {{count}} Days","common.details":"Details","common.view_all":"View All","common.view_more_on_polygonscan":"View More on Polygonscan","common.view_more_on_etherscan":"View More on Etherscan","common.view_nft_on_etherscan":"View NFT on Etherscan","common.view_nft_on_polygonscan":"View NFT on Polygonscan","common.view_nft_on_goerli_tesnet":"View NFT on Goerli Testnet Explorer","common.view_nft_on_mumbai_tesnet":"View NFT on Mumbai Testnet Explorer","common.polygonscan":"Polygonscan","common.etherscan":"Etherscan","common.featured":"Featured","common.floor_price":"Floor Price","common.floor":"Floor","common.supply":"Supply","common.owners":"Owners","common.created":"Created","common.nft":"NFT","common.collection":"Collection","common.collections":"Collections","common.gallery":"Gallery","common.basic_gallery":"Basic Gallery","common.gallery_name":"Gallery Name","common.create_gallery":"Create Gallery","common.external_link":"External Link","common.follow_link":"Follow Link","common.cover":"Cover","common.template":"Template","common.page":"Page","common.polygon":"Polygon","common.ethereum":"Ethereum","common.mumbai":"Mumbai","common.goerli":"Goerli","common.of":"of","common.pagination_input_placeholder":"Enter the page number","common.pagination_input_placeholder_mobile":"Page number","common.nft_count":"{0} {{count}} NFTs|{1} {{count}} NFT|[2,*] {{count}} NFTs","common.nft_gallery":"NFT Gallery","common.unable_to_retrieve_image":"Unable to retrieve your NFT image at this time","common.optional":"Optional","common.selected":"Selected","common.select":"Select","common.preview":"Preview","common.image_size_error":"Image size must not exceed 2MB","common.image_dimensions_error":"Image dimensions must exceed 287px x 190px","common.write_to_confirm":"Write {{word}} to confirm","common.n_hours":"{0} {{count}} hour|{1} {{count}} hour|[2,*] {{count}} hours","common.n_minutes":"{0} {{count}} minute|{1} {{count}} minute|[2,*] {{count}} minutes","common.report":"Report","common.nfts":"NFTs","common.n_nfts":"{0}NFTs|{1}NFT|[2,*]NFTs","common.n_collections":"{0}collections|{1}collection|[2,*]collections","common.back":"Back","common.back_to":"Back to","common.name":"Name","common.type":"Type","common.from":"From","common.to":"To","common.sale_price":"Sale Price","common.recent_activity":"Recent Activity","common.time":"Time","common.datetime.few_seconds_ago":"A few seconds ago","common.datetime.minutes_ago":"{0} Less than a minute ago|{1} A minute ago|[2,*] {{count}} minutes ago","common.datetime.hours_ago":"{0} Less than an hour ago|{1} An hour ago|[2,*] {{count}} hours ago","common.datetime.days_ago":"{0} Less than a day ago|{1} A day ago|[2,*] {{count}} days ago","common.datetime.weeks_ago":"{0} Less than a week ago|{1} A week ago|[2,*] {{count}} weeks ago","common.datetime.months_ago":"{0} Less than a month ago|{1} A month ago|[2,*] {{count}} months ago","common.datetime.years_ago":"{0} Less than a year ago|{1} A year ago|[2,*] {{count}} years ago","common.no_traits_found":"No traits found.","common.empty_transactions":"You don't have any transactions yet. Once transactions have been made, they will show up here.","common.error":"Error","common.refresh":"Refresh","common.refresh_metadata":"Refresh Metadata","common.refreshing_metadata":"Refreshing Metadata... Please check back later.","common.refreshing_activity":"Refreshing Activity... Please check back later.","common.pending_confirmation":"Pending Confirmation","common.confirmed_transaction":"Confirmed Transaction","common.transaction_error":"Transaction Error","common.transaction_error_description_first_part":"Your transaction encountered an error. View this transaction on","common.transaction_error_description_second_part":"for more details.","common.home":"Home","common.contact":"Contact","common.menu":"Menu","common.website":"Website","common.twitter":"Twitter","common.discord":"Discord","common.facebook":"Facebook","common.reddit":"Reddit","common.x":"X","common.sort":"Sort","common.drafts":"Drafts","common.draft":"Draft","common.delete_draft":"Delete Draft","common.share_on":"Share on {{platform}}","common.top":"Top","common.all_chains":"All chains","common.votes":"Votes","common.vote":"Vote","common.vol":"Vol","common.collection_preview":"Collection Preview","common.24h":"24h","common.7d":"7d","common.30d":"30d","common.months.0":"January","common.months.1":"February","common.months.2":"March","common.months.3":"April","common.months.4":"May","common.months.5":"June","common.months.6":"July","common.months.7":"August","common.months.8":"September","common.months.9":"October","common.months.10":"November","common.months.11":"December","footer.copyright":"{{year}} © Dashbrd. All rights reserved.","footer.all_rights_reserved":"All rights reserved","footer.privacy_policy":"Privacy Policy","footer.terms_of_service":"Terms of Service","footer.powered_by":"Powered by","format.fiat":"{{ value, currency }}","format.number":"{{ value, number }}","metatags.home.title":"Dashbrd | Web3 Portfolio Management Made Simple","metatags.home.description":"Simplify your Web3 journey with Dashbrd. Manage your portfolio of tokens, NFTs, and other digital collectibles across the Ethereum and Polygon blockchains.","metatags.home.image":"/images/meta/home.png","metatags.error.title":"Error {{code}} | Dashbrd","metatags.wallet.title":"My Wallet | Dashbrd","metatags.galleries.title":"Top NFT Galleries | Dashbrd","metatags.galleries.image":"/images/meta/nft-galleries.png","metatags.galleries.description":"Explore user published NFT galleries to find custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.most_popular.title":"Most Popular Galleries | Dashbrd","metatags.galleries.most_popular.image":"/images/meta/most-popular-nft-galleries.png","metatags.galleries.most_popular.description":"Explore and discover Most Popular NFT Galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.newest.title":"Newest Galleries | Dashbrd","metatags.galleries.newest.image":"/images/meta/newest-nft-galleries.png","metatags.galleries.newest.description":"Explore and discover most recent NFT galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More","metatags.galleries.most_valuable.title":"Most Valuable Galleries | Dashbrd","metatags.galleries.most_valuable.image":"/images/meta/most-valuable-nft-galleries.png","metatags.galleries.most_valuable.description":"Explore and discover Most Valuable NFT Galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.view.title":"{{name}} | Dashbrd","metatags.galleries.view.description":"{{name}} | A Curated NFT Gallery at Dashbrd","metatags.galleries.view.image":"/images/meta/nft-gallery.png","metatags.my_galleries.title":"My Galleries | Dashbrd","metatags.my_galleries.title_draft":"My Draft Galleries | Dashbrd","metatags.my_galleries.create.title":"Create Gallery | Dashbrd","metatags.my_galleries.edit.title":"Edit {{name}} | Dashbrd","metatags.collections.title":"Collections | Dashbrd","metatags.collections.view.title":"{{name}} Collection | Dashbrd","metatags.collections.view.description":"Immerse yourself in the intricate details of {{name}} collection, featuring remarkable digital assets. Start your NFT journey today!","metatags.collections.view.image":"/images/meta/nft-collection.png","metatags.collections.of-the-month.title":"Collection of the Month {{month}} | Dashbrd","metatags.my-collections.title":"My Collections | Dashbrd","metatags.popular-collections.title":"Popular NFT Collections | Dashbrd","metatags.nfts.view.title":"{{nft}} NFT | Dashbrd","metatags.nfts.view.description":"Uncover the complete story of {{nft}} NFT from the {{collection}} collection, delving into its unique attributes and distinctive features.","metatags.nfts.view.image":"/images/meta/nft-details.png","metatags.settings.title":"Settings | Dashbrd","metatags.articles.title":"Articles | Dashbrd","metatags.articles.view.title":"{{title}} | Dashbrd","metatags.login.title":"Login | Dashbrd","metatags.privacy_policy.title":"Privacy Policy | Dashbrd","metatags.privacy_policy.description":"Dashbrd’s privacy policy outlines the information we collect and explains your choices surrounding how we use information about you.","metatags.terms_of_service.title":"Terms of Service | Dashbrd","metatags.terms_of_service.description":"These Terms of Service cover your use and access to services, products or websites of Dashbrd.","metatags.cookie_policy.title":"Cookie Policy | Dashbrd","metatags.cookie_policy.description":"Dashbrd uses cookies to make the website more user-friendly. Find out about the main types of cookies we use, and what we use them for.","metatags.welcome.title":"Welcome to Dashbrd | Web3 Simplified","pages.onboarding.title":"Get Started","pages.onboarding.heading":"Your monkeys were bored and ran off, we are trying to round them up.","pages.onboarding.message":"We are setting up your account. This process usually takes just a few minutes, but can take up to 15 minutes.","pages.error.heading":"Oops, something went wrong ...","pages.error.message":"Please try again or get in touch if the issue persists.","pages.maintenance.title":"Dashbrd is currently down for scheduled maintenance.","pages.maintenance.description":"We expect to be back soon. Thanks for your patience.","pages.dashboard.title":"My Wallet","pages.dashboard.breakdown.title":"Portfolio Breakdown","pages.dashboard.line_chart.data_error":"Could not load chart data","pages.articles.title":"Articles","pages.articles.featured_collections":"Featured Collections","pages.articles.placeholder_more_soon":"More Soon","pages.articles.no_articles":"No articles have been published yet. Please check back later!","pages.articles.header_title":"Explore our collection of","pages.articles.header_suffix_one":"published article","pages.articles.header_suffix_other":"published articles","pages.articles.audio_version":"Audio version","pages.articles.consists_of_collections":"{0} This article highlights {{count}} collections|{1} This article highlights {{count}} collection|[2,*] This article highlights {{count}} collections","pages.collections.title":"Collections","pages.collections.collections":"Collections","pages.collections.popular_collections":"Popular Collections","pages.collections.collection_value":"Collection Value","pages.collections.nfts_owned":"NFTs Owned","pages.collections.header_title":"You own <0>{{nftsCount}} {{nfts}} across <0>{{collectionsCount}} {{collections}}, worth about <0><1>{{worth}}","pages.collections.search_placeholder":"Search by Collection","pages.collections.properties":"Properties","pages.collections.collections_network":"Collections Network","pages.collections.property_search_placeholder":"Feature Search","pages.collections.floor_price":"Floor Price","pages.collections.value":"Value","pages.collections.rarity":"Rarity","pages.collections.report":"Report","pages.collections.search_by_name":"Search by Collection Name","pages.collections.hide_collection":"Hide Collection","pages.collections.unhide_collection":"Unhide Collection","pages.collections.no_collections":"You do not own any NFTs yet. Once you do they will be shown here.","pages.collections.all_collections_hidden":"You have hidden all your collections. Unhide and they will appear here.","pages.collections.about_collection":"About Collection","pages.collections.show_hidden":"Show Hidden","pages.collections.show_my_collection":"Show My Collection","pages.collections.owned":"Owned","pages.collections.activities.loading_activities":"We're fetching Activity for this NFT, please hang tight, this can take a while.","pages.collections.activities.loading_activities_collection":"We're fetching Activity for this collection, please hang tight, this can take a while.","pages.collections.activities.ignores_activities":"We don't support activity history for this collection yet.","pages.collections.activities.no_activity":"This collection does not have any activity yet.","pages.collections.activities.types.LABEL_MINT":"Mint","pages.collections.activities.types.LABEL_TRANSFER":"Transfer","pages.collections.activities.types.LABEL_SALE":"Sale","pages.collections.activities.types.LABEL_BURN":"Burn","pages.collections.collection_of_the_month.title":"Collection of the Month {{month}}","pages.collections.collection_of_the_month.winners_month":"Winners: {{month}}","pages.collections.collection_of_the_month.vote_for_next_months_winners":"Vote now for next month's winners","pages.collections.collection_of_the_month.view_previous_winners":"View Previous Winners","pages.collections.collection_of_the_month.previous_winners":"Previous Winners","pages.collections.collection_of_the_month.vote_received_modal.title":"Vote Received","pages.collections.collection_of_the_month.vote_received_modal.description":"Your vote has been recorded. Share your vote on X and let everyone know!","pages.collections.collection_of_the_month.vote_received_modal.share_vote":"Share Vote","pages.collections.collection_of_the_month.vote_received_modal.img_alt":"I voted for Dashbrd Project of the Month","pages.collections.collection_of_the_month.vote_received_modal.x_text":"I voted for {{collection}} for collection of the month @dashbrdapp! Go show your support!","pages.collections.collection_of_the_month.vote_success":"Your vote has been successfully submitted","pages.collections.collection_of_the_month.vote_failed":"You already cast your vote","pages.collections.collection_of_the_month.already_won":"This collecction has already won Collection of the Month.","pages.collections.collection_of_the_month.content_to_be_added.title":"Content to be added","pages.collections.collection_of_the_month.content_to_be_added.description":"There will be a list of previous month winners here soon!","pages.collections.collection_of_the_month.has_won_already":"This collection has already
    won Collection of the Month.","pages.collections.articles.heading":"Latest NFT News & Features","pages.collections.articles.no_articles":"No articles have been linked to this collection as of now.","pages.collections.articles.no_articles_with_filters":"We could not find any articles matching your search criteria, please try again!","pages.collections.articles.search_placeholder":"Search in Articles","pages.collections.articles.sort_latest":"Latest","pages.collections.articles.sort_popularity":"Most Popular","pages.collections.search.loading_results":"Loading results...","pages.collections.search.no_results":"We could not find anything matching your search criteria, please try again!","pages.collections.search.no_results_with_filters":"We could not find anything matching your filters, please try again!","pages.collections.search.no_results_ownership":"You do not own any NFTs in this collection","pages.collections.search.error":"Could not load search results. Please try again later.","pages.collections.vote.vote_for_top_collection":"Vote for Top Collection of the Month","pages.collections.vote.vote":"Vote","pages.collections.vote.time_left":"Time Left","pages.collections.vote.or_nominate_collection":"Or nominate a collection","pages.collections.vote.nominate_collection":"Nominate a collection","pages.collections.vote.vote_to_reveal":"Vote to reveal data","pages.collections.vote.already_voted":"You’ve already nominated. Come back next month!","pages.collections.vote.select_collection":"Please, select a collection to nominate","pages.collections.sorting.token_number":"Token Number","pages.collections.sorting.recently_received":"Recently Received","pages.collections.sorting.recently_created":"Recently Created","pages.collections.sorting.oldest_collection":"Oldest Collection","pages.collections.traits.description":"List of NFT traits by % of occurrence in the collection","pages.collections.traits.no_traits":"No Properties can be found for this NFT","pages.collections.menu.collection":"Collection","pages.collections.menu.articles":"Articles","pages.collections.menu.activity":"Activity","pages.collections.hidden_modal.collection_hidden":"Collection Hidden","pages.collections.hidden_modal.description":"This collection is currently set to Hidden. Are you sure you want to unhide this collection? You can\n reset the collection to hidden from the collection menu.","pages.collections.hidden_modal.unhide":"Unhide","pages.collections.hidden_modal.error":"Something went wrong. Please try again.","pages.collections.external_modal.you_wish_continue":"You are about to leave Dashbrd to an external website. Dashbrd has no control over the content of\n this site. Are you sure you wish to continue?","pages.collections.external_modal.not_show":"Do not show this message again.","pages.collections.refresh.title":"Refresh your collection","pages.collections.refresh.notice":"You can refresh data every 15 minutes.","pages.collections.refresh.notice_wait":"Please wait. You can refresh data every 15 minutes.","pages.collections.refresh.toast":"We're updating information for your collection.","pages.collections.featured.title":"Featured Collections","pages.collections.featured.button":"Explore Collection","pages.collections.footer.heading_broken.0":"Connect with MetaMask","pages.collections.footer.heading_broken.1":"& Manage Your Collection","pages.collections.footer.subtitle":"Explore, Filter, & Share your favorite NFTs with Dashbrd.","pages.collections.footer.button":"Manage Collections","pages.nfts.nft":"nft","pages.nfts.about_nft":"About NFT","pages.nfts.owned_by":"Owned by","pages.nfts.collection_image":"collection image","pages.nfts.menu.properties":"Properties","pages.nfts.menu.activity":"Activity","pages.nfts.erc1155_support.title":"No ERC1155 Support","pages.nfts.erc1155_support.description":"We noticed you own some ERC1155 NFTs. Unfortunately, we don't support them yet.","pages.reports.title":"Submit a Report","pages.reports.description":"Thanks for looking out by reporting things that break the rules. Let us know what's happening and we'll receive the report.","pages.reports.success":"Thank you for your report. We'll review it and see if it breaks our ToS.","pages.reports.failed":"Something went wrong. Please try again.","pages.reports.throttle":"You have made too many requests. Please wait {{time}} before reporting again.","pages.reports.reported":"You have already reported this {{model}}.","pages.reports.reasons.spam":"Spam","pages.reports.reasons.violence":"Promoting Violence","pages.reports.reasons.hate":"Hate","pages.reports.reasons.inappropriate_content":"Inappropriate Content","pages.reports.reasons.impersonation":"Impersonation","pages.reports.reasons.trademark":"Trademark or Copyright","pages.reports.reasons.selfharm":"Self-Harm","pages.reports.reasons.harassment":"Harassment","pages.galleries.title":"Galleries","pages.galleries.empty_title":"No galleries have been published yet. Once they do they will appear here.","pages.galleries.search.loading_results":"Loading results...","pages.galleries.search.no_results":"We could not find anything matching your search criteria, please try again!","pages.galleries.search.placeholder":"Search by name or curator address","pages.galleries.search.placeholder_nfts":"Search by NFTs","pages.galleries.search.error":"Could not load search results. Please try again later.","pages.galleries.my_galleries.title":"My Galleries","pages.galleries.my_galleries.subtitle":"Manage your galleries","pages.galleries.my_galleries.new_gallery":"New Gallery","pages.galleries.my_galleries.no_galleries":"You have not created any galleries yet. To create a gallery, click on the \"Create Gallery\" button.","pages.galleries.my_galleries.no_available_collections":"You have hidden all your collections. If you want to create a gallery, make sure you have at least 1 collection available.","pages.galleries.my_galleries.no_draft_galleries":"You have no draft galleries yet. To create a gallery, click on the \"Create Gallery\" button.","pages.galleries.my_galleries.succesfully_deleted":"Gallery has been successfully removed","pages.galleries.my_galleries.draft_succesfully_deleted":"Draft has been successfully removed","pages.galleries.my_galleries.successfully_created":"Gallery has been successfully created","pages.galleries.my_galleries.successfully_updated":"Gallery has been successfully updated","pages.galleries.my_galleries.new_gallery_no_nfts":"Creating a Gallery requires you to own an NFT.","pages.galleries.my_galleries.new_gallery_all_collections_hidden":"Creating a Gallery requires you to have at least 1 collection available.","pages.galleries.my_galleries.delete_modal.title":"Delete Draft","pages.galleries.my_galleries.delete_modal.text":"Are you sure you want to delete the draft? Everything you've done will be deleted and you won't be able to get it back.","pages.galleries.my_galleries.nfts_no_longer_owned":"NFTs no longer owned by this wallet have been removed from the draft”","pages.galleries.copy_gallery_link":"Copy Gallery Link","pages.galleries.my_nfts":"My NFTs","pages.galleries.show_hidden_collections":"Show hidden collections","pages.galleries.value":"Value","pages.galleries.floor_price":"Floor Price","pages.galleries.nfts":"NFTs","pages.galleries.collections":"Collections","pages.galleries.galleries_count_simple":"{0} galleries|{1} gallery|[2,*] galleries","pages.galleries.galleries_count":"{0} {{count}} Galleries|{1} {{count}} Gallery|[2,*] {{count}} Galleries","pages.galleries.collections_count_simple":"{0} collections|{1} collection|[2,*] collections","pages.galleries.collections_count":"{0} {{count}} Collections|{1} {{count}} Collection|[2,*] {{count}} Collections","pages.galleries.nfts_count_simple":"{0} NFTs|{1} NFT|[2,*] NFTs","pages.galleries.nfts_count":"{0} {{count}} NFTs|{1} {{count}} NFT|[2,*] {{count}} NFTs","pages.galleries.users_count_simple":"{0} users|{1} user|[2,*] users","pages.galleries.users_count":"{0} {{count}} Users|{1} {{count}} User|[2,*] {{count}} Users","pages.galleries.featuring":"Featuring","pages.galleries.curated_by":"Curated by","pages.galleries.worth_about":"Worth About","pages.galleries.valued_at":"valued at","pages.galleries.from":"From","pages.galleries.most_popular_galleries":"Most Popular Galleries","pages.galleries.newest_galleries":"Newest Galleries","pages.galleries.most_valuable_galleries":"Most Valuable Galleries","pages.galleries.most_popular":"Most Popular","pages.galleries.newest":"Newest","pages.galleries.most_valuable":"Most Valuable","pages.galleries.create.search_by_nfts":"Search by NFTs","pages.galleries.create.input_placeholder":"Enter gallery name","pages.galleries.create.title_too_long":"Gallery name must not exceed {{max}} characters.","pages.galleries.create.already_selected_nft":"NFT already exists in this gallery","pages.galleries.create.nft_missing_image":"Only NFTs with images can be added to galleries","pages.galleries.create.nft_gallery_limit":"You can only add 16 NFTs per gallery","pages.galleries.create.gallery_cover":"Gallery Cover","pages.galleries.create.gallery_cover_description":"The cover is used for the card on the gallery list page. While the cover is not a requirement it will allow you to add personality and stand out from the crowd.","pages.galleries.create.gallery_cover_information":"Image dimensions must be at least 287px x 190px, with a max size of 2 MB (JPG, PNG or GIF)","pages.galleries.create.no_results":"We could not find anything matching your search criteria, please try again!","pages.galleries.create.templates.cover":"Cover","pages.galleries.create.templates.template":"Template","pages.galleries.create.templates.select":"Select Gallery Template","pages.galleries.create.templates.basic":"Basic Gallery","pages.galleries.create.templates.coming_soon":"More Coming Soon","pages.galleries.create.load_more_collections_one":"Load {{count}} More Collection","pages.galleries.create.load_more_collections_other":"Load {{count}} More Collections","pages.galleries.create.load_more_nfts":"Load More NFTs","pages.galleries.create.can_purchase":"You can purchase NFTs with these top NFT Marketplaces:","pages.galleries.create.must_own_one_nft":"You must own at least one (1) NFT in order to create a gallery.","pages.galleries.create.back_to_galleries":"Back to Galleries","pages.galleries.create.draft_saved":"Draft Saved","pages.galleries.create.saving_to_draft":"Saving to draft","pages.galleries.create.drafts_limit_modal_title":"Draft Gallery Limit","pages.galleries.create.drafts_limit_modal_message":"You’ve hit your limit for draft galleries. While you can still make new galleries and publish them, they won’t be saved as drafts. To Free up space, you can either delete existing drafts or publish them.","pages.galleries.create.drafts_limit_modal_cancel":"Go to Drafts","pages.galleries.delete_modal.title":"Delete Gallery","pages.galleries.delete_modal.confirmation_text":"Are you sure you want to delete the gallery? Deleting a Gallery is permanent, all associated views and likes will be lost.","pages.galleries.consists_of_collections":"{0} This gallery consists of {{count}} collections|{1} This gallery consists of {{count}} collection|[2,*] This gallery consists of {{count}} collections","pages.galleries.guest_banner.title":"Craft the ultimate","pages.galleries.guest_banner.subtitle":"Pick your favorites, curate your gallery, & share it with the world.","pages.profile.title":"Profile","pages.token_panel.balance_tooltip":"Total percentage of the portfolio held in this token","pages.token_panel.insufficient_funds":"Insufficient Balance","pages.token_panel.error":"Dashbrd has failed to load token information. Please try again later.","pages.token_panel.failed_to_retrieve_transactions":"We were unable to fetch your transactions.","pages.token_panel.tabs.transaction_history":"Transaction History","pages.token_panel.tabs.history":"History","pages.token_panel.tabs.market_data":"Market Data","pages.token_panel.details.current_price":"Current Price","pages.token_panel.details.title":"Token Details","pages.token_panel.details.market_cap":"Market Cap","pages.token_panel.details.volume":"Daily Volume","pages.token_panel.details.supply":"Minted Supply","pages.token_panel.details.ath":"All-Time High","pages.token_panel.details.atl":"All-Time Low","pages.token_panel.chart.failed":"Dashbrd has failed to load chart information. Please try again later.","pages.transaction_details_panel.title":"Transaction Details","pages.transaction_details_panel.details.blockchain":"Blockchain","pages.transaction_details_panel.details.timestamp":"Timestamp","pages.transaction_details_panel.details.transaction_hash":"Transaction Hash","pages.transaction_details_panel.details.transaction_fee":"Transaction Fee","pages.transaction_details_panel.details.gas_price":"Gas Price","pages.transaction_details_panel.details.gas_used":"Gas Used","pages.transaction_details_panel.details.nonce":"Nonce","pages.send_receive_panel.send.labels.token_and_amount":"Token and Amount","pages.send_receive_panel.send.labels.destination_address":"Destination Address","pages.send_receive_panel.send.labels.projected_fee":"Projected Fee","pages.send_receive_panel.send.placeholders.enter_amount":"Enter Amount","pages.send_receive_panel.send.placeholders.insert_recipient_address":"Insert Recipient Address","pages.send_receive_panel.send.placeholders.projected_fee":"Projected Fee","pages.send_receive_panel.send.errors.amount":"Insufficient Funds: You do not have enough to cover the amount + fee.","pages.send_receive_panel.send.errors.destination":"Destination address is not correct. Check and input again.","pages.send_receive_panel.send.hints.token_price":"Token Price","pages.send_receive_panel.send.fees.Fast":"Fast","pages.send_receive_panel.send.fees.Avg":"Avg","pages.send_receive_panel.send.fees.Slow":"Slow","pages.send_receive_panel.send.search_dropdown.placeholder":"Search token","pages.send_receive_panel.send.search_dropdown.no_results":"No Results","pages.send_receive_panel.send.search_dropdown.error":"Error occurred while searching tokens.","pages.send_receive_panel.send.transaction_time":"Transaction Time: ~{{ time }} minutes","pages.send_receive_panel.send.from":"From","pages.send_receive_panel.send.to":"To","pages.send_receive_panel.send.amount":"Amount","pages.send_receive_panel.send.fee":"Fee","pages.send_receive_panel.send.total_amount":"Total Amount","pages.send_receive_panel.send.waiting_message":"Review and verify the information on your MetaMask. Sign to send the transaction.","pages.send_receive_panel.send.waiting_spinner_text":"Waiting for confirmation...","pages.send_receive_panel.send.failed_message":"It looks like something went wrong while sending your transaction. Press 'Retry' to make another attempt.","pages.send_receive_panel.receive.alert":"Send only Polygon or Ethereum Network compatible tokens to this address or you could permanently lose your funds!","pages.settings.title":"Settings","pages.settings.sidebar.general":"General","pages.settings.sidebar.notifications":"Notifications","pages.settings.sidebar.session_history":"Sessions History","pages.settings.general.title":"Settings","pages.settings.general.subtitle":"Customize your App Experience","pages.settings.general.currency":"Currency","pages.settings.general.currency_subtitle":"Select your default currency which will be used throughout the app.","pages.settings.general.time_date":"Time & Date","pages.settings.general.time_date_subtitle":"Select how you want time and date be shown inside app.","pages.settings.general.date_format":"Date Format","pages.settings.general.time_format":"Time Format","pages.settings.general.timezone":"Timezone","pages.settings.general.set_defaults":"Set Defaults","pages.settings.general.set_defaults_content":"Reverting to the default settings will remove any customizations previously made. Are you sure?","pages.settings.general.save":"Save Settings","pages.settings.general.saved":"Your settings have been successfully saved","pages.wallet.title":"Wallet","pages.privacy_policy.title":"Privacy Policy","pages.terms_of_service.title":"Terms of Service","pages.popular_collections.title":"Popular NFT Collections","pages.popular_collections.header_title":"<0>{{nftsCount}} {{nfts}} from <0>{{collectionsCount}} {{collections}}, worth about <0><1>{{worth}}","pagination.previous":"« Previous","pagination.next":"Next »","passwords.reset":"Your password has been reset!","passwords.sent":"We have emailed your password reset link!","passwords.throttled":"Please wait before retrying.","passwords.token":"This password reset token is invalid.","passwords.user":"We can't find a user with that email address.","urls.landing":"https://dashbrd.com","urls.cookie_policy":"https://dashbrd.com/cookie-policy","urls.privacy_policy":"https://dashbrd.com/privacy-policy","urls.terms_of_service":"https://dashbrd.com/terms-of-service","urls.twitter":"https://x.com/DashbrdApp","urls.discord":"https://discord.gg/MJyWKkCJ5k","urls.github":"https://github.com/ArdentHQ/dashbrd","urls.coingecko":"https://www.coingecko.com","urls.etherscan":"https://etherscan.io","urls.polygonscan":"https://polygonscan.com","urls.alchemy":"https://www.alchemy.com","urls.moralis":"https://moralis.io","urls.mnemonic":"https://www.mnemonichq.com","urls.opensea":"https://opensea.io/","urls.explorers.etherscan.token_transactions":"https://etherscan.io/token/{{token}}?a={{address}}","urls.explorers.etherscan.addresses":"https://etherscan.io/address/{{address}}","urls.explorers.etherscan.transactions":"https://etherscan.io/tx/{{id}}","urls.explorers.etherscan.nft":"https://etherscan.io/nft/{{address}}/{{nftId}}","urls.explorers.polygonscan.token_transactions":"https://polygonscan.com/token/{{token}}?a={{address}}","urls.explorers.polygonscan.addresses":"https://polygonscan.com/address/{{address}}","urls.explorers.polygonscan.transactions":"https://polygonscan.com/tx/{{id}}","urls.explorers.polygonscan.nft":"https://polygonscan.com/nft/{{address}}/{{nftId}}","urls.explorers.mumbai.token_transactions":"https://mumbai.polygonscan.com/token/{{token}}?a={{address}}","urls.explorers.mumbai.addresses":"https://mumbai.polygonscan.com/address/{{address}}","urls.explorers.mumbai.transactions":"https://mumbai.polygonscan.com/tx/{{id}}","urls.explorers.mumbai.nft":"https://mumbai.polygonscan.com/nft/{{address}}/{{nftId}}","urls.explorers.goerli.token_transactions":"https://goerli.etherscan.io/token/{{token}}?a={{address}}","urls.explorers.goerli.addresses":"https://goerli.etherscan.io/address/{{address}}","urls.explorers.goerli.transactions":"https://goerli.etherscan.io/tx/{{id}}","urls.explorers.goerli.nft":"https://goerli.etherscan.io/nft/{{address}}/{{nftId}}","urls.marketplaces.opensea.collection":"https://opensea.io/assets/{{network}}/{{address}}","urls.marketplaces.opensea.nft":"https://opensea.io/assets/{{network}}/{{address}}/{{nftId}}","urls.marketplaces.rarible.collection":"https://rarible.com/collection/{{address}}/items","urls.marketplaces.rarible.nft":"https://rarible.com/token/{{address}}:{{nftId}}","urls.marketplaces.blur.collection":"https://blur.io/collection/{{address}}","urls.marketplaces.blur.nft":"https://blur.io/asset/{{address}}/{{nftId}}","urls.marketplaces.looksrare.collection":"https://looksrare.org/collections/{{address}}","urls.marketplaces.looksrare.nft":"https://looksrare.org/collections/{{address}}/{{nftId}}","validation.accepted":"The {{attribute}} must be accepted.","validation.accepted_if":"The {{attribute}} must be accepted when {{other}} is {{value}}.","validation.active_url":"The {{attribute}} is not a valid URL.","validation.after":"The {{attribute}} must be a date after {{date}}.","validation.after_or_equal":"The {{attribute}} must be a date after or equal to {{date}}.","validation.alpha":"The {{attribute}} must only contain letters.","validation.alpha_dash":"The {{attribute}} must only contain letters, numbers, dashes and underscores.","validation.alpha_num":"The {{attribute}} must only contain letters and numbers.","validation.array":"The {{attribute}} must be an array.","validation.ascii":"The {{attribute}} must only contain single-byte alphanumeric characters and symbols.","validation.before":"The {{attribute}} must be a date before {{date}}.","validation.before_or_equal":"The {{attribute}} must be a date before or equal to {{date}}.","validation.between.array":"The {{attribute}} must have between {{min}} and {{max}} items.","validation.between.file":"The {{attribute}} must be between {{min}} and {{max}} kilobytes.","validation.between.numeric":"The {{attribute}} must be between {{min}} and {{max}}.","validation.between.string":"The {{attribute}} must be between {{min}} and {{max}} characters.","validation.boolean":"The {{attribute}} field must be true or false.","validation.confirmed":"The {{attribute}} confirmation does not match.","validation.current_password":"The password is incorrect.","validation.date":"The {{attribute}} is not a valid date.","validation.date_equals":"The {{attribute}} must be a date equal to {{date}}.","validation.date_format":"The {{attribute}} does not match the format {{format}}.","validation.decimal":"The {{attribute}} must have {{decimal}} decimal places.","validation.declined":"The {{attribute}} must be declined.","validation.declined_if":"The {{attribute}} must be declined when {{other}} is {{value}}.","validation.different":"The {{attribute}} and {{other}} must be different.","validation.digits":"The {{attribute}} must be {{digits}} digits.","validation.digits_between":"The {{attribute}} must be between {{min}} and {{max}} digits.","validation.dimensions":"The {{attribute}} has invalid image dimensions.","validation.distinct":"The {{attribute}} field has a duplicate value.","validation.doesnt_end_with":"The {{attribute}} may not end with one of the following: {{values}}.","validation.doesnt_start_with":"The {{attribute}} may not start with one of the following: {{values}}.","validation.email":"The {{attribute}} must be a valid email address.","validation.ends_with":"The {{attribute}} must end with one of the following: {{values}}.","validation.enum":"The selected {{attribute}} is invalid.","validation.exists":"The selected {{attribute}} is invalid.","validation.file":"The {{attribute}} must be a file.","validation.filled":"The {{attribute}} field must have a value.","validation.gt.array":"The {{attribute}} must have more than {{value}} items.","validation.gt.file":"The {{attribute}} must be greater than {{value}} kilobytes.","validation.gt.numeric":"The {{attribute}} must be greater than {{value}}.","validation.gt.string":"The {{attribute}} must be greater than {{value}} characters.","validation.gte.array":"The {{attribute}} must have {{value}} items or more.","validation.gte.file":"The {{attribute}} must be greater than or equal to {{value}} kilobytes.","validation.gte.numeric":"The {{attribute}} must be greater than or equal to {{value}}.","validation.gte.string":"The {{attribute}} must be greater than or equal to {{value}} characters.","validation.image":"The {{attribute}} must be an image.","validation.in":"The selected {{attribute}} is invalid.","validation.in_array":"The {{attribute}} field does not exist in {{other}}.","validation.integer":"The {{attribute}} must be an integer.","validation.ip":"The {{attribute}} must be a valid IP address.","validation.ipv4":"The {{attribute}} must be a valid IPv4 address.","validation.ipv6":"The {{attribute}} must be a valid IPv6 address.","validation.json":"The {{attribute}} must be a valid JSON string.","validation.lowercase":"The {{attribute}} must be lowercase.","validation.lt.array":"The {{attribute}} must have less than {{value}} items.","validation.lt.file":"The {{attribute}} must be less than {{value}} kilobytes.","validation.lt.numeric":"The {{attribute}} must be less than {{value}}.","validation.lt.string":"The {{attribute}} must be less than {{value}} characters.","validation.lte.array":"The {{attribute}} must not have more than {{value}} items.","validation.lte.file":"The {{attribute}} must be less than or equal to {{value}} kilobytes.","validation.lte.numeric":"The {{attribute}} must be less than or equal to {{value}}.","validation.lte.string":"The {{attribute}} must be less than or equal to {{value}} characters.","validation.mac_address":"The {{attribute}} must be a valid MAC address.","validation.max.array":"The {{attribute}} must not have more than {{max}} items.","validation.max.file":"The {{attribute}} must not be greater than {{max}} kilobytes.","validation.max.numeric":"The {{attribute}} must not be greater than {{max}}.","validation.max.string":"The {{attribute}} must not be greater than {{max}} characters.","validation.max_digits":"The {{attribute}} must not have more than {{max}} digits.","validation.mimes":"The {{attribute}} must be a file of type: {{values}}.","validation.mimetypes":"The {{attribute}} must be a file of type: {{values}}.","validation.min.array":"The {{attribute}} must have at least {{min}} items.","validation.min.file":"The {{attribute}} must be at least {{min}} kilobytes.","validation.min.numeric":"The {{attribute}} must be at least {{min}}.","validation.min.string":"The {{attribute}} must be at least {{min}} characters.","validation.min_digits":"The {{attribute}} must have at least {{min}} digits.","validation.missing":"The {{attribute}} field must be missing.","validation.missing_if":"The {{attribute}} field must be missing when {{other}} is {{value}}.","validation.missing_unless":"The {{attribute}} field must be missing unless {{other}} is {{value}}.","validation.missing_with":"The {{attribute}} field must be missing when {{values}} is present.","validation.missing_with_all":"The {{attribute}} field must be missing when {{values}} are present.","validation.multiple_of":"The {{attribute}} must be a multiple of {{value}}.","validation.not_in":"The selected {{attribute}} is invalid.","validation.not_regex":"The {{attribute}} format is invalid.","validation.numeric":"The {{attribute}} must be a number.","validation.password.letters":"The {{attribute}} must contain at least one letter.","validation.password.mixed":"The {{attribute}} must contain at least one uppercase and one lowercase letter.","validation.password.numbers":"The {{attribute}} must contain at least one number.","validation.password.symbols":"The {{attribute}} must contain at least one symbol.","validation.password.uncompromised":"The given {{attribute}} has appeared in a data leak. Please choose a different {{attribute}}.","validation.present":"The {{attribute}} field must be present.","validation.prohibited":"The {{attribute}} field is prohibited.","validation.prohibited_if":"The {{attribute}} field is prohibited when {{other}} is {{value}}.","validation.prohibited_unless":"The {{attribute}} field is prohibited unless {{other}} is in {{values}}.","validation.prohibits":"The {{attribute}} field prohibits {{other}} from being present.","validation.regex":"The {{attribute}} format is invalid.","validation.required":"The {{attribute}} field is required.","validation.required_array_keys":"The {{attribute}} field must contain entries for: {{values}}.","validation.required_if":"The {{attribute}} field is required when {{other}} is {{value}}.","validation.required_if_accepted":"The {{attribute}} field is required when {{other}} is accepted.","validation.required_unless":"The {{attribute}} field is required unless {{other}} is in {{values}}.","validation.required_with":"The {{attribute}} field is required when {{values}} is present.","validation.required_with_all":"The {{attribute}} field is required when {{values}} are present.","validation.required_without":"The {{attribute}} field is required when {{values}} is not present.","validation.required_without_all":"The {{attribute}} field is required when none of {{values}} are present.","validation.same":"The {{attribute}} and {{other}} must match.","validation.size.array":"The {{attribute}} must contain {{size}} items.","validation.size.file":"The {{attribute}} must be {{size}} kilobytes.","validation.size.numeric":"The {{attribute}} must be {{size}}.","validation.size.string":"The {{attribute}} must be {{size}} characters.","validation.starts_with":"The {{attribute}} must start with one of the following: {{values}}.","validation.string":"The {{attribute}} must be a string.","validation.timezone":"The {{attribute}} must be a valid timezone.","validation.unique":"The {{attribute}} has already been taken.","validation.uploaded":"The {{attribute}} failed to upload.","validation.uppercase":"The {{attribute}} must be uppercase.","validation.url":"The {{attribute}} must be a valid URL.","validation.ulid":"The {{attribute}} must be a valid ULID.","validation.uuid":"The {{attribute}} must be a valid UUID.","validation.custom.attribute-name.rule-name":"custom-message","validation.unsupported_currency_code":"The currency code you provided is invalid or not supported.","validation.unsupported_period":"The period you provided is invalid or not supported.","validation.unsupported_token_symbol":"The token symbol you provided is invalid or not supported.","validation.gallery_title_required":"Gallery name is required.","validation.gallery_title_max_characters":"The gallery name should not exceed 50 characters.","validation.gallery_title_invalid":"The gallery name is invalid.","validation.nfts_required":"Please add at least one NFT.","validation.nfts_max_size":"Galleries can contain no more than {{limit}} NFTs","validation.invalid_nfts":"The NFT in position {{position}} is invalid, please select another one.","validation.invalid_cover":"You have selected an invalid cover image, please try another one."} \ No newline at end of file +{"auth.welcome":"Welcome to Dashbrd","auth.logged_in":"You're logged in!","auth.log_out":"Log out","auth.failed":"These credentials do not match our records.","auth.session_timeout":"Your session has timed out. Please refresh the page and try connecting your account again.","auth.session_timeout_modal":"Seems like your session has timed out. Please connnect your wallet again.","auth.password":"The provided password is incorrect.","auth.throttle":"Too many login attempts. Please try again in {{seconds}} seconds.","auth.wallet.connecting":"Connecting …","auth.wallet.waiting_for_signature":"Waiting for Signature …","auth.wallet.switching_wallet":"Switching Wallet …","auth.wallet.connect":"Connect Wallet","auth.wallet.connect_long":"Connect Your Wallet to Get Started","auth.wallet.sign_subtitle":"Connect Your Wallet to Continue","auth.wallet.disconnect":"Disconnect Wallet","auth.wallet.install":"Install MetaMask","auth.wallet.install_long":"Install MetaMask to Get Started","auth.wallet.sign":"Sign Message","auth.wallet.sign_message":"Welcome to Dashbrd. In order to login, sign this message with your wallet. It doesn't cost you anything!\n\nSigning ID (you can ignore this): {{nonce}}","auth.wallet.connect_subtitle":"Click on the MetaMask icon in your browser to confirm the action and connect your wallet.","auth.wallet.requires_signature":"In order to prevent impersonation, we require a signature to perform this action. This signature is only a signed message and does not give any access to your wallet.","auth.errors.metamask.no_account":"No account found. Please connect your wallet and try again.","auth.errors.metamask.generic":"Connection attempt error. Please retry and follow the steps to connect your wallet.","auth.errors.metamask.invalid_network":"Please switch to Polygon or Ethereum Mainnet in your MetaMask plugin to connect to Dashbrd.","auth.errors.metamask.provider_missing":"You don't have MetaMask installed in your browser. Please install and try again.","auth.errors.metamask.user_rejected":"It looks like you cancelled signing of the authentication message. Please try again.","auth.errors.metamask.provider_not_set":"Ethereum provider is not set","auth.validation.wallet_login_failed":"There was a problem trying to verify your signature. Please try again.","auth.validation.invalid_address":"Your wallet address is invalid. Please try again.","auth.validation.invalid_signature":"Signature is invalid. Please try again.","auth.validation.invalid_network":"Please switch to Polygon or Ethereum Mainnet in your MetaMask plugin to connect to Dashbrd.","common.author":"Author","common.add":"Add","common.amount":"Amount","common.balance":"Balance","common.cancel":"Cancel","common.delete":"Delete","common.edit":"Edit","common.confirm":"Confirm","common.connect":"Connect","common.continue":"Continue","common.done":"Done","common.filter":"Filter","common.items":"Items","common.receive":"Receive","common.received":"Received","common.retry":"Retry","common.records":"Records","common.save":"Save","common.send":"Send","common.sent":"Sent","common.show":"Show","common.searching":"Searching...","common.other":"Other","common.owned":"Owned","common.token":"Token","common.tokens":"Tokens","common.wallet":"Wallet","common.pending":"Pending","common.publish":"Publish","common.published":"Published","common.empty":"Empty","common.your_address":"Your Address","common.warning":"Warning","common.my_address":"My Address","common.my_wallet":"My Wallet","common.my_collections":"My Collections","common.my_balance":"My Balance","common.na":"N/A","common.simple_plural_without_data":"One comment|Many comments","common.simple_plural_with_data":"{{count}} comment|{{count}} comments","common.advanced_plural_without_data":"{0} no comments yet|{1} 1 comment|[2,*] Many comments","common.advanced_plural_with_data":"{0} no comments yet|{1} 1 comment|[2,*] {{count}} comments","common.copy_clipboard":"Copy to Clipboard","common.copy":"Copy","common.download":"Download","common.zoom":"Zoom","common.my_collection":"My Collection","common.max":"Max","common.chain":"Chain","common.search":"Search","common.copied":"Copied!","common.coming_soon":"Coming Soon","common.more_details":"More Details","common.close":"Close","common.close_toast":"Close toast","common.loading":"Loading","common.price":"Price","common.articles":"Articles","common.most_popular":"Most Popular","common.market_cap":"Market Cap","common.volume":"Volume","common.volume_frequency":"Volume {{frequency}}","common.value":"Value","common.last_n_days":"Last {{count}} Days","common.details":"Details","common.view_all":"View All","common.view_more_on_polygonscan":"View More on Polygonscan","common.view_more_on_etherscan":"View More on Etherscan","common.view_nft_on_etherscan":"View NFT on Etherscan","common.view_nft_on_polygonscan":"View NFT on Polygonscan","common.view_nft_on_goerli_tesnet":"View NFT on Goerli Testnet Explorer","common.view_nft_on_mumbai_tesnet":"View NFT on Mumbai Testnet Explorer","common.polygonscan":"Polygonscan","common.etherscan":"Etherscan","common.featured":"Featured","common.floor_price":"Floor Price","common.floor":"Floor","common.supply":"Supply","common.owners":"Owners","common.created":"Created","common.nft":"NFT","common.collection":"Collection","common.collections":"Collections","common.gallery":"Gallery","common.basic_gallery":"Basic Gallery","common.gallery_name":"Gallery Name","common.create_gallery":"Create Gallery","common.external_link":"External Link","common.follow_link":"Follow Link","common.cover":"Cover","common.template":"Template","common.page":"Page","common.polygon":"Polygon","common.ethereum":"Ethereum","common.mumbai":"Mumbai","common.goerli":"Goerli","common.of":"of","common.pagination_input_placeholder":"Enter the page number","common.pagination_input_placeholder_mobile":"Page number","common.nft_count":"{0} {{count}} NFTs|{1} {{count}} NFT|[2,*] {{count}} NFTs","common.nft_gallery":"NFT Gallery","common.unable_to_retrieve_image":"Unable to retrieve your NFT image at this time","common.optional":"Optional","common.selected":"Selected","common.select":"Select","common.preview":"Preview","common.image_size_error":"Image size must not exceed 2MB","common.image_dimensions_error":"Image dimensions must exceed 287px x 190px","common.write_to_confirm":"Write {{word}} to confirm","common.n_hours":"{0} {{count}} hour|{1} {{count}} hour|[2,*] {{count}} hours","common.n_minutes":"{0} {{count}} minute|{1} {{count}} minute|[2,*] {{count}} minutes","common.report":"Report","common.nfts":"NFTs","common.n_nfts":"{0}NFTs|{1}NFT|[2,*]NFTs","common.n_collections":"{0}collections|{1}collection|[2,*]collections","common.back":"Back","common.back_to":"Back to","common.name":"Name","common.type":"Type","common.from":"From","common.to":"To","common.sale_price":"Sale Price","common.recent_activity":"Recent Activity","common.time":"Time","common.datetime.few_seconds_ago":"A few seconds ago","common.datetime.minutes_ago":"{0} Less than a minute ago|{1} A minute ago|[2,*] {{count}} minutes ago","common.datetime.hours_ago":"{0} Less than an hour ago|{1} An hour ago|[2,*] {{count}} hours ago","common.datetime.days_ago":"{0} Less than a day ago|{1} A day ago|[2,*] {{count}} days ago","common.datetime.weeks_ago":"{0} Less than a week ago|{1} A week ago|[2,*] {{count}} weeks ago","common.datetime.months_ago":"{0} Less than a month ago|{1} A month ago|[2,*] {{count}} months ago","common.datetime.years_ago":"{0} Less than a year ago|{1} A year ago|[2,*] {{count}} years ago","common.no_traits_found":"No traits found.","common.empty_transactions":"You don't have any transactions yet. Once transactions have been made, they will show up here.","common.error":"Error","common.refresh":"Refresh","common.refresh_metadata":"Refresh Metadata","common.refreshing_metadata":"Refreshing Metadata... Please check back later.","common.refreshing_activity":"Refreshing Activity... Please check back later.","common.pending_confirmation":"Pending Confirmation","common.confirmed_transaction":"Confirmed Transaction","common.transaction_error":"Transaction Error","common.transaction_error_description_first_part":"Your transaction encountered an error. View this transaction on","common.transaction_error_description_second_part":"for more details.","common.home":"Home","common.contact":"Contact","common.menu":"Menu","common.website":"Website","common.twitter":"Twitter","common.discord":"Discord","common.facebook":"Facebook","common.reddit":"Reddit","common.x":"X","common.sort":"Sort","common.drafts":"Drafts","common.draft":"Draft","common.delete_draft":"Delete Draft","common.share_on":"Share on {{platform}}","common.top":"Top","common.all_chains":"All chains","common.votes":"Votes","common.vote":"Vote","common.vol":"Vol","common.collection_preview":"Collection Preview","common.24h":"24h","common.7d":"7d","common.30d":"30d","common.months.0":"January","common.months.1":"February","common.months.2":"March","common.months.3":"April","common.months.4":"May","common.months.5":"June","common.months.6":"July","common.months.7":"August","common.months.8":"September","common.months.9":"October","common.months.10":"November","common.months.11":"December","footer.copyright":"{{year}} © Dashbrd. All rights reserved.","footer.all_rights_reserved":"All rights reserved","footer.privacy_policy":"Privacy Policy","footer.terms_of_service":"Terms of Service","footer.powered_by":"Powered by","format.fiat":"{{ value, currency }}","format.number":"{{ value, number }}","metatags.home.title":"Dashbrd | Web3 Portfolio Management Made Simple","metatags.home.description":"Simplify your Web3 journey with Dashbrd. Manage your portfolio of tokens, NFTs, and other digital collectibles across the Ethereum and Polygon blockchains.","metatags.home.image":"/images/meta/home.png","metatags.error.title":"Error {{code}} | Dashbrd","metatags.wallet.title":"My Wallet | Dashbrd","metatags.galleries.title":"Top NFT Galleries | Dashbrd","metatags.galleries.image":"/images/meta/nft-galleries.png","metatags.galleries.description":"Explore user published NFT galleries to find custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.most_popular.title":"Most Popular Galleries | Dashbrd","metatags.galleries.most_popular.image":"/images/meta/most-popular-nft-galleries.png","metatags.galleries.most_popular.description":"Explore and discover Most Popular NFT Galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.newest.title":"Newest Galleries | Dashbrd","metatags.galleries.newest.image":"/images/meta/newest-nft-galleries.png","metatags.galleries.newest.description":"Explore and discover most recent NFT galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More","metatags.galleries.most_valuable.title":"Most Valuable Galleries | Dashbrd","metatags.galleries.most_valuable.image":"/images/meta/most-valuable-nft-galleries.png","metatags.galleries.most_valuable.description":"Explore and discover Most Valuable NFT Galleries created by our users featuring custom curated PFPs, Digital Collectibles, & More.","metatags.galleries.view.title":"{{name}} | Dashbrd","metatags.galleries.view.description":"{{name}} | A Curated NFT Gallery at Dashbrd","metatags.galleries.view.image":"/images/meta/nft-gallery.png","metatags.my_galleries.title":"My Galleries | Dashbrd","metatags.my_galleries.title_draft":"My Draft Galleries | Dashbrd","metatags.my_galleries.create.title":"Create Gallery | Dashbrd","metatags.my_galleries.edit.title":"Edit {{name}} | Dashbrd","metatags.collections.title":"Collections | Dashbrd","metatags.collections.view.title":"{{name}} Collection | Dashbrd","metatags.collections.view.description":"Immerse yourself in the intricate details of {{name}} collection, featuring remarkable digital assets. Start your NFT journey today!","metatags.collections.view.image":"/images/meta/nft-collection.png","metatags.collections.of-the-month.title":"Collection of the Month {{month}} | Dashbrd","metatags.my-collections.title":"My Collections | Dashbrd","metatags.popular-collections.title":"Popular NFT Collections | Dashbrd","metatags.nfts.view.title":"{{nft}} NFT | Dashbrd","metatags.nfts.view.description":"Uncover the complete story of {{nft}} NFT from the {{collection}} collection, delving into its unique attributes and distinctive features.","metatags.nfts.view.image":"/images/meta/nft-details.png","metatags.settings.title":"Settings | Dashbrd","metatags.articles.title":"Articles | Dashbrd","metatags.articles.view.title":"{{title}} | Dashbrd","metatags.login.title":"Login | Dashbrd","metatags.privacy_policy.title":"Privacy Policy | Dashbrd","metatags.privacy_policy.description":"Dashbrd’s privacy policy outlines the information we collect and explains your choices surrounding how we use information about you.","metatags.terms_of_service.title":"Terms of Service | Dashbrd","metatags.terms_of_service.description":"These Terms of Service cover your use and access to services, products or websites of Dashbrd.","metatags.cookie_policy.title":"Cookie Policy | Dashbrd","metatags.cookie_policy.description":"Dashbrd uses cookies to make the website more user-friendly. Find out about the main types of cookies we use, and what we use them for.","metatags.welcome.title":"Welcome to Dashbrd | Web3 Simplified","pages.onboarding.title":"Get Started","pages.onboarding.heading":"Your monkeys were bored and ran off, we are trying to round them up.","pages.onboarding.message":"We are setting up your account. This process usually takes just a few minutes, but can take up to 15 minutes.","pages.error.heading":"Oops, something went wrong ...","pages.error.message":"Please try again or get in touch if the issue persists.","pages.maintenance.title":"Dashbrd is currently down for scheduled maintenance.","pages.maintenance.description":"We expect to be back soon. Thanks for your patience.","pages.dashboard.title":"My Wallet","pages.dashboard.breakdown.title":"Portfolio Breakdown","pages.dashboard.line_chart.data_error":"Could not load chart data","pages.articles.title":"Articles","pages.articles.featured_collections":"Featured Collections","pages.articles.placeholder_more_soon":"More Soon","pages.articles.no_articles":"No articles have been published yet. Please check back later!","pages.articles.header_title":"Explore our collection of","pages.articles.header_suffix_one":"published article","pages.articles.header_suffix_other":"published articles","pages.articles.audio_version":"Audio version","pages.articles.consists_of_collections":"{0} This article highlights {{count}} collections|{1} This article highlights {{count}} collection|[2,*] This article highlights {{count}} collections","pages.collections.title":"Collections","pages.collections.collections":"Collections","pages.collections.popular_collections":"Popular Collections","pages.collections.collection_value":"Collection Value","pages.collections.nfts_owned":"NFTs Owned","pages.collections.header_title":"You own <0>{{nftsCount}} {{nfts}} across <0>{{collectionsCount}} {{collections}}, worth about <0><1>{{worth}}","pages.collections.search_placeholder":"Search by Collection","pages.collections.properties":"Properties","pages.collections.collections_network":"Collections Network","pages.collections.property_search_placeholder":"Feature Search","pages.collections.floor_price":"Floor Price","pages.collections.value":"Value","pages.collections.rarity":"Rarity","pages.collections.report":"Report","pages.collections.search_by_name":"Search by Collection Name","pages.collections.hide_collection":"Hide Collection","pages.collections.unhide_collection":"Unhide Collection","pages.collections.no_collections":"You do not own any NFTs yet. Once you do they will be shown here.","pages.collections.all_collections_hidden":"You have hidden all your collections. Unhide and they will appear here.","pages.collections.about_collection":"About Collection","pages.collections.show_hidden":"Show Hidden","pages.collections.show_my_collection":"Show My Collection","pages.collections.owned":"Owned","pages.collections.activities.loading_activities":"We're fetching Activity for this NFT, please hang tight, this can take a while.","pages.collections.activities.loading_activities_collection":"We're fetching Activity for this collection, please hang tight, this can take a while.","pages.collections.activities.ignores_activities":"We don't support activity history for this collection yet.","pages.collections.activities.no_activity":"This collection does not have any activity yet.","pages.collections.activities.types.LABEL_MINT":"Mint","pages.collections.activities.types.LABEL_TRANSFER":"Transfer","pages.collections.activities.types.LABEL_SALE":"Sale","pages.collections.activities.types.LABEL_BURN":"Burn","pages.collections.collection_of_the_month.title":"Collection of the Month {{month}}","pages.collections.collection_of_the_month.winners_month":"Winners: {{month}}","pages.collections.collection_of_the_month.vote_for_next_months_winners":"Vote now for next month's winners","pages.collections.collection_of_the_month.view_previous_winners":"View Previous Winners","pages.collections.collection_of_the_month.previous_winners":"Previous Winners","pages.collections.collection_of_the_month.vote_received_modal.title":"Vote Received","pages.collections.collection_of_the_month.vote_received_modal.description":"Your vote has been recorded. Share your vote on X and let everyone know!","pages.collections.collection_of_the_month.vote_received_modal.share_vote":"Share Vote","pages.collections.collection_of_the_month.vote_received_modal.img_alt":"I voted for Dashbrd Project of the Month","pages.collections.collection_of_the_month.vote_received_modal.x_text":"I voted for {{collection}} for collection of the month @dashbrdapp! Go show your support!","pages.collections.collection_of_the_month.vote_success":"Your vote has been successfully submitted","pages.collections.collection_of_the_month.vote_failed":"You already cast your vote","pages.collections.collection_of_the_month.already_won":"This collection has already won Collection of the Month.","pages.collections.collection_of_the_month.content_to_be_added.title":"Content to be added","pages.collections.collection_of_the_month.content_to_be_added.description":"There will be a list of previous month winners here soon!","pages.collections.collection_of_the_month.has_won_already":"This collection has already
    won Collection of the Month.","pages.collections.articles.heading":"Latest NFT News & Features","pages.collections.articles.no_articles":"No articles have been linked to this collection as of now.","pages.collections.articles.no_articles_with_filters":"We could not find any articles matching your search criteria, please try again!","pages.collections.articles.search_placeholder":"Search in Articles","pages.collections.articles.sort_latest":"Latest","pages.collections.articles.sort_popularity":"Most Popular","pages.collections.search.loading_results":"Loading results...","pages.collections.search.no_results":"We could not find anything matching your search criteria, please try again!","pages.collections.search.no_results_with_filters":"We could not find anything matching your filters, please try again!","pages.collections.search.no_results_ownership":"You do not own any NFTs in this collection","pages.collections.search.error":"Could not load search results. Please try again later.","pages.collections.vote.vote_for_top_collection":"Vote for Top Collection of the Month","pages.collections.vote.vote":"Vote","pages.collections.vote.time_left":"Time Left","pages.collections.vote.or_nominate_collection":"Or nominate a collection","pages.collections.vote.nominate_collection":"Nominate a collection","pages.collections.vote.vote_to_reveal":"Vote to reveal data","pages.collections.vote.already_voted":"You’ve already nominated. Come back next month!","pages.collections.vote.select_collection":"Please, select a collection to nominate","pages.collections.sorting.token_number":"Token Number","pages.collections.sorting.recently_received":"Recently Received","pages.collections.sorting.recently_created":"Recently Created","pages.collections.sorting.oldest_collection":"Oldest Collection","pages.collections.traits.description":"List of NFT traits by % of occurrence in the collection","pages.collections.traits.no_traits":"No Properties can be found for this NFT","pages.collections.menu.collection":"Collection","pages.collections.menu.articles":"Articles","pages.collections.menu.activity":"Activity","pages.collections.hidden_modal.collection_hidden":"Collection Hidden","pages.collections.hidden_modal.description":"This collection is currently set to Hidden. Are you sure you want to unhide this collection? You can\n reset the collection to hidden from the collection menu.","pages.collections.hidden_modal.unhide":"Unhide","pages.collections.hidden_modal.error":"Something went wrong. Please try again.","pages.collections.external_modal.you_wish_continue":"You are about to leave Dashbrd to an external website. Dashbrd has no control over the content of\n this site. Are you sure you wish to continue?","pages.collections.external_modal.not_show":"Do not show this message again.","pages.collections.refresh.title":"Refresh your collection","pages.collections.refresh.notice":"You can refresh data every 15 minutes.","pages.collections.refresh.notice_wait":"Please wait. You can refresh data every 15 minutes.","pages.collections.refresh.toast":"We're updating information for your collection.","pages.collections.featured.title":"Featured Collections","pages.collections.featured.button":"Explore Collection","pages.collections.footer.heading_broken.0":"Connect with MetaMask","pages.collections.footer.heading_broken.1":"& Manage Your Collection","pages.collections.footer.subtitle":"Explore, Filter, & Share your favorite NFTs with Dashbrd.","pages.collections.footer.button":"Manage Collections","pages.nfts.nft":"nft","pages.nfts.about_nft":"About NFT","pages.nfts.owned_by":"Owned by","pages.nfts.collection_image":"collection image","pages.nfts.menu.properties":"Properties","pages.nfts.menu.activity":"Activity","pages.nfts.erc1155_support.title":"No ERC1155 Support","pages.nfts.erc1155_support.description":"We noticed you own some ERC1155 NFTs. Unfortunately, we don't support them yet.","pages.reports.title":"Submit a Report","pages.reports.description":"Thanks for looking out by reporting things that break the rules. Let us know what's happening and we'll receive the report.","pages.reports.success":"Thank you for your report. We'll review it and see if it breaks our ToS.","pages.reports.failed":"Something went wrong. Please try again.","pages.reports.throttle":"You have made too many requests. Please wait {{time}} before reporting again.","pages.reports.reported":"You have already reported this {{model}}.","pages.reports.reasons.spam":"Spam","pages.reports.reasons.violence":"Promoting Violence","pages.reports.reasons.hate":"Hate","pages.reports.reasons.inappropriate_content":"Inappropriate Content","pages.reports.reasons.impersonation":"Impersonation","pages.reports.reasons.trademark":"Trademark or Copyright","pages.reports.reasons.selfharm":"Self-Harm","pages.reports.reasons.harassment":"Harassment","pages.galleries.title":"Galleries","pages.galleries.empty_title":"No galleries have been published yet. Once they do they will appear here.","pages.galleries.search.loading_results":"Loading results...","pages.galleries.search.no_results":"We could not find anything matching your search criteria, please try again!","pages.galleries.search.placeholder":"Search by name or curator address","pages.galleries.search.placeholder_nfts":"Search by NFTs","pages.galleries.search.error":"Could not load search results. Please try again later.","pages.galleries.my_galleries.title":"My Galleries","pages.galleries.my_galleries.subtitle":"Manage your galleries","pages.galleries.my_galleries.new_gallery":"New Gallery","pages.galleries.my_galleries.no_galleries":"You have not created any galleries yet. To create a gallery, click on the \"Create Gallery\" button.","pages.galleries.my_galleries.no_available_collections":"You have hidden all your collections. If you want to create a gallery, make sure you have at least 1 collection available.","pages.galleries.my_galleries.no_draft_galleries":"You have no draft galleries yet. To create a gallery, click on the \"Create Gallery\" button.","pages.galleries.my_galleries.succesfully_deleted":"Gallery has been successfully removed","pages.galleries.my_galleries.draft_succesfully_deleted":"Draft has been successfully removed","pages.galleries.my_galleries.successfully_created":"Gallery has been successfully created","pages.galleries.my_galleries.successfully_updated":"Gallery has been successfully updated","pages.galleries.my_galleries.new_gallery_no_nfts":"Creating a Gallery requires you to own an NFT.","pages.galleries.my_galleries.new_gallery_all_collections_hidden":"Creating a Gallery requires you to have at least 1 collection available.","pages.galleries.my_galleries.delete_modal.title":"Delete Draft","pages.galleries.my_galleries.delete_modal.text":"Are you sure you want to delete the draft? Everything you've done will be deleted and you won't be able to get it back.","pages.galleries.my_galleries.nfts_no_longer_owned":"NFTs no longer owned by this wallet have been removed from the draft”","pages.galleries.copy_gallery_link":"Copy Gallery Link","pages.galleries.my_nfts":"My NFTs","pages.galleries.show_hidden_collections":"Show hidden collections","pages.galleries.value":"Value","pages.galleries.floor_price":"Floor Price","pages.galleries.nfts":"NFTs","pages.galleries.collections":"Collections","pages.galleries.galleries_count_simple":"{0} galleries|{1} gallery|[2,*] galleries","pages.galleries.galleries_count":"{0} {{count}} Galleries|{1} {{count}} Gallery|[2,*] {{count}} Galleries","pages.galleries.collections_count_simple":"{0} collections|{1} collection|[2,*] collections","pages.galleries.collections_count":"{0} {{count}} Collections|{1} {{count}} Collection|[2,*] {{count}} Collections","pages.galleries.nfts_count_simple":"{0} NFTs|{1} NFT|[2,*] NFTs","pages.galleries.nfts_count":"{0} {{count}} NFTs|{1} {{count}} NFT|[2,*] {{count}} NFTs","pages.galleries.users_count_simple":"{0} users|{1} user|[2,*] users","pages.galleries.users_count":"{0} {{count}} Users|{1} {{count}} User|[2,*] {{count}} Users","pages.galleries.featuring":"Featuring","pages.galleries.curated_by":"Curated by","pages.galleries.worth_about":"Worth About","pages.galleries.valued_at":"valued at","pages.galleries.from":"From","pages.galleries.most_popular_galleries":"Most Popular Galleries","pages.galleries.newest_galleries":"Newest Galleries","pages.galleries.most_valuable_galleries":"Most Valuable Galleries","pages.galleries.most_popular":"Most Popular","pages.galleries.newest":"Newest","pages.galleries.most_valuable":"Most Valuable","pages.galleries.create.search_by_nfts":"Search by NFTs","pages.galleries.create.input_placeholder":"Enter gallery name","pages.galleries.create.title_too_long":"Gallery name must not exceed {{max}} characters.","pages.galleries.create.already_selected_nft":"NFT already exists in this gallery","pages.galleries.create.nft_missing_image":"Only NFTs with images can be added to galleries","pages.galleries.create.nft_gallery_limit":"You can only add 16 NFTs per gallery","pages.galleries.create.gallery_cover":"Gallery Cover","pages.galleries.create.gallery_cover_description":"The cover is used for the card on the gallery list page. While the cover is not a requirement it will allow you to add personality and stand out from the crowd.","pages.galleries.create.gallery_cover_information":"Image dimensions must be at least 287px x 190px, with a max size of 2 MB (JPG, PNG or GIF)","pages.galleries.create.no_results":"We could not find anything matching your search criteria, please try again!","pages.galleries.create.templates.cover":"Cover","pages.galleries.create.templates.template":"Template","pages.galleries.create.templates.select":"Select Gallery Template","pages.galleries.create.templates.basic":"Basic Gallery","pages.galleries.create.templates.coming_soon":"More Coming Soon","pages.galleries.create.load_more_collections_one":"Load {{count}} More Collection","pages.galleries.create.load_more_collections_other":"Load {{count}} More Collections","pages.galleries.create.load_more_nfts":"Load More NFTs","pages.galleries.create.can_purchase":"You can purchase NFTs with these top NFT Marketplaces:","pages.galleries.create.must_own_one_nft":"You must own at least one (1) NFT in order to create a gallery.","pages.galleries.create.back_to_galleries":"Back to Galleries","pages.galleries.create.draft_saved":"Draft Saved","pages.galleries.create.saving_to_draft":"Saving to draft","pages.galleries.create.drafts_limit_modal_title":"Draft Gallery Limit","pages.galleries.create.drafts_limit_modal_message":"You’ve hit your limit for draft galleries. While you can still make new galleries and publish them, they won’t be saved as drafts. To Free up space, you can either delete existing drafts or publish them.","pages.galleries.create.drafts_limit_modal_cancel":"Go to Drafts","pages.galleries.delete_modal.title":"Delete Gallery","pages.galleries.delete_modal.confirmation_text":"Are you sure you want to delete the gallery? Deleting a Gallery is permanent, all associated views and likes will be lost.","pages.galleries.consists_of_collections":"{0} This gallery consists of {{count}} collections|{1} This gallery consists of {{count}} collection|[2,*] This gallery consists of {{count}} collections","pages.galleries.guest_banner.title":"Craft the ultimate","pages.galleries.guest_banner.subtitle":"Pick your favorites, curate your gallery, & share it with the world.","pages.profile.title":"Profile","pages.token_panel.balance_tooltip":"Total percentage of the portfolio held in this token","pages.token_panel.insufficient_funds":"Insufficient Balance","pages.token_panel.error":"Dashbrd has failed to load token information. Please try again later.","pages.token_panel.failed_to_retrieve_transactions":"We were unable to fetch your transactions.","pages.token_panel.tabs.transaction_history":"Transaction History","pages.token_panel.tabs.history":"History","pages.token_panel.tabs.market_data":"Market Data","pages.token_panel.details.current_price":"Current Price","pages.token_panel.details.title":"Token Details","pages.token_panel.details.market_cap":"Market Cap","pages.token_panel.details.volume":"Daily Volume","pages.token_panel.details.supply":"Minted Supply","pages.token_panel.details.ath":"All-Time High","pages.token_panel.details.atl":"All-Time Low","pages.token_panel.chart.failed":"Dashbrd has failed to load chart information. Please try again later.","pages.transaction_details_panel.title":"Transaction Details","pages.transaction_details_panel.details.blockchain":"Blockchain","pages.transaction_details_panel.details.timestamp":"Timestamp","pages.transaction_details_panel.details.transaction_hash":"Transaction Hash","pages.transaction_details_panel.details.transaction_fee":"Transaction Fee","pages.transaction_details_panel.details.gas_price":"Gas Price","pages.transaction_details_panel.details.gas_used":"Gas Used","pages.transaction_details_panel.details.nonce":"Nonce","pages.send_receive_panel.send.labels.token_and_amount":"Token and Amount","pages.send_receive_panel.send.labels.destination_address":"Destination Address","pages.send_receive_panel.send.labels.projected_fee":"Projected Fee","pages.send_receive_panel.send.placeholders.enter_amount":"Enter Amount","pages.send_receive_panel.send.placeholders.insert_recipient_address":"Insert Recipient Address","pages.send_receive_panel.send.placeholders.projected_fee":"Projected Fee","pages.send_receive_panel.send.errors.amount":"Insufficient Funds: You do not have enough to cover the amount + fee.","pages.send_receive_panel.send.errors.destination":"Destination address is not correct. Check and input again.","pages.send_receive_panel.send.hints.token_price":"Token Price","pages.send_receive_panel.send.fees.Fast":"Fast","pages.send_receive_panel.send.fees.Avg":"Avg","pages.send_receive_panel.send.fees.Slow":"Slow","pages.send_receive_panel.send.search_dropdown.placeholder":"Search token","pages.send_receive_panel.send.search_dropdown.no_results":"No Results","pages.send_receive_panel.send.search_dropdown.error":"Error occurred while searching tokens.","pages.send_receive_panel.send.transaction_time":"Transaction Time: ~{{ time }} minutes","pages.send_receive_panel.send.from":"From","pages.send_receive_panel.send.to":"To","pages.send_receive_panel.send.amount":"Amount","pages.send_receive_panel.send.fee":"Fee","pages.send_receive_panel.send.total_amount":"Total Amount","pages.send_receive_panel.send.waiting_message":"Review and verify the information on your MetaMask. Sign to send the transaction.","pages.send_receive_panel.send.waiting_spinner_text":"Waiting for confirmation...","pages.send_receive_panel.send.failed_message":"It looks like something went wrong while sending your transaction. Press 'Retry' to make another attempt.","pages.send_receive_panel.receive.alert":"Send only Polygon or Ethereum Network compatible tokens to this address or you could permanently lose your funds!","pages.settings.title":"Settings","pages.settings.sidebar.general":"General","pages.settings.sidebar.notifications":"Notifications","pages.settings.sidebar.session_history":"Sessions History","pages.settings.general.title":"Settings","pages.settings.general.subtitle":"Customize your App Experience","pages.settings.general.currency":"Currency","pages.settings.general.currency_subtitle":"Select your default currency which will be used throughout the app.","pages.settings.general.time_date":"Time & Date","pages.settings.general.time_date_subtitle":"Select how you want time and date be shown inside app.","pages.settings.general.date_format":"Date Format","pages.settings.general.time_format":"Time Format","pages.settings.general.timezone":"Timezone","pages.settings.general.set_defaults":"Set Defaults","pages.settings.general.set_defaults_content":"Reverting to the default settings will remove any customizations previously made. Are you sure?","pages.settings.general.save":"Save Settings","pages.settings.general.saved":"Your settings have been successfully saved","pages.wallet.title":"Wallet","pages.privacy_policy.title":"Privacy Policy","pages.terms_of_service.title":"Terms of Service","pages.popular_collections.title":"Popular NFT Collections","pages.popular_collections.header_title":"<0>{{nftsCount}} {{nfts}} from <0>{{collectionsCount}} {{collections}}, worth about <0><1>{{worth}}","pagination.previous":"« Previous","pagination.next":"Next »","passwords.reset":"Your password has been reset!","passwords.sent":"We have emailed your password reset link!","passwords.throttled":"Please wait before retrying.","passwords.token":"This password reset token is invalid.","passwords.user":"We can't find a user with that email address.","urls.landing":"https://dashbrd.com","urls.cookie_policy":"https://dashbrd.com/cookie-policy","urls.privacy_policy":"https://dashbrd.com/privacy-policy","urls.terms_of_service":"https://dashbrd.com/terms-of-service","urls.twitter":"https://x.com/DashbrdApp","urls.discord":"https://discord.gg/MJyWKkCJ5k","urls.github":"https://github.com/ArdentHQ/dashbrd","urls.coingecko":"https://www.coingecko.com","urls.etherscan":"https://etherscan.io","urls.polygonscan":"https://polygonscan.com","urls.alchemy":"https://www.alchemy.com","urls.moralis":"https://moralis.io","urls.mnemonic":"https://www.mnemonichq.com","urls.opensea":"https://opensea.io/","urls.explorers.etherscan.token_transactions":"https://etherscan.io/token/{{token}}?a={{address}}","urls.explorers.etherscan.addresses":"https://etherscan.io/address/{{address}}","urls.explorers.etherscan.transactions":"https://etherscan.io/tx/{{id}}","urls.explorers.etherscan.nft":"https://etherscan.io/nft/{{address}}/{{nftId}}","urls.explorers.polygonscan.token_transactions":"https://polygonscan.com/token/{{token}}?a={{address}}","urls.explorers.polygonscan.addresses":"https://polygonscan.com/address/{{address}}","urls.explorers.polygonscan.transactions":"https://polygonscan.com/tx/{{id}}","urls.explorers.polygonscan.nft":"https://polygonscan.com/nft/{{address}}/{{nftId}}","urls.explorers.mumbai.token_transactions":"https://mumbai.polygonscan.com/token/{{token}}?a={{address}}","urls.explorers.mumbai.addresses":"https://mumbai.polygonscan.com/address/{{address}}","urls.explorers.mumbai.transactions":"https://mumbai.polygonscan.com/tx/{{id}}","urls.explorers.mumbai.nft":"https://mumbai.polygonscan.com/nft/{{address}}/{{nftId}}","urls.explorers.goerli.token_transactions":"https://goerli.etherscan.io/token/{{token}}?a={{address}}","urls.explorers.goerli.addresses":"https://goerli.etherscan.io/address/{{address}}","urls.explorers.goerli.transactions":"https://goerli.etherscan.io/tx/{{id}}","urls.explorers.goerli.nft":"https://goerli.etherscan.io/nft/{{address}}/{{nftId}}","urls.marketplaces.opensea.collection":"https://opensea.io/assets/{{network}}/{{address}}","urls.marketplaces.opensea.nft":"https://opensea.io/assets/{{network}}/{{address}}/{{nftId}}","urls.marketplaces.rarible.collection":"https://rarible.com/collection/{{address}}/items","urls.marketplaces.rarible.nft":"https://rarible.com/token/{{address}}:{{nftId}}","urls.marketplaces.blur.collection":"https://blur.io/collection/{{address}}","urls.marketplaces.blur.nft":"https://blur.io/asset/{{address}}/{{nftId}}","urls.marketplaces.looksrare.collection":"https://looksrare.org/collections/{{address}}","urls.marketplaces.looksrare.nft":"https://looksrare.org/collections/{{address}}/{{nftId}}","validation.accepted":"The {{attribute}} must be accepted.","validation.accepted_if":"The {{attribute}} must be accepted when {{other}} is {{value}}.","validation.active_url":"The {{attribute}} is not a valid URL.","validation.after":"The {{attribute}} must be a date after {{date}}.","validation.after_or_equal":"The {{attribute}} must be a date after or equal to {{date}}.","validation.alpha":"The {{attribute}} must only contain letters.","validation.alpha_dash":"The {{attribute}} must only contain letters, numbers, dashes and underscores.","validation.alpha_num":"The {{attribute}} must only contain letters and numbers.","validation.array":"The {{attribute}} must be an array.","validation.ascii":"The {{attribute}} must only contain single-byte alphanumeric characters and symbols.","validation.before":"The {{attribute}} must be a date before {{date}}.","validation.before_or_equal":"The {{attribute}} must be a date before or equal to {{date}}.","validation.between.array":"The {{attribute}} must have between {{min}} and {{max}} items.","validation.between.file":"The {{attribute}} must be between {{min}} and {{max}} kilobytes.","validation.between.numeric":"The {{attribute}} must be between {{min}} and {{max}}.","validation.between.string":"The {{attribute}} must be between {{min}} and {{max}} characters.","validation.boolean":"The {{attribute}} field must be true or false.","validation.confirmed":"The {{attribute}} confirmation does not match.","validation.current_password":"The password is incorrect.","validation.date":"The {{attribute}} is not a valid date.","validation.date_equals":"The {{attribute}} must be a date equal to {{date}}.","validation.date_format":"The {{attribute}} does not match the format {{format}}.","validation.decimal":"The {{attribute}} must have {{decimal}} decimal places.","validation.declined":"The {{attribute}} must be declined.","validation.declined_if":"The {{attribute}} must be declined when {{other}} is {{value}}.","validation.different":"The {{attribute}} and {{other}} must be different.","validation.digits":"The {{attribute}} must be {{digits}} digits.","validation.digits_between":"The {{attribute}} must be between {{min}} and {{max}} digits.","validation.dimensions":"The {{attribute}} has invalid image dimensions.","validation.distinct":"The {{attribute}} field has a duplicate value.","validation.doesnt_end_with":"The {{attribute}} may not end with one of the following: {{values}}.","validation.doesnt_start_with":"The {{attribute}} may not start with one of the following: {{values}}.","validation.email":"The {{attribute}} must be a valid email address.","validation.ends_with":"The {{attribute}} must end with one of the following: {{values}}.","validation.enum":"The selected {{attribute}} is invalid.","validation.exists":"The selected {{attribute}} is invalid.","validation.file":"The {{attribute}} must be a file.","validation.filled":"The {{attribute}} field must have a value.","validation.gt.array":"The {{attribute}} must have more than {{value}} items.","validation.gt.file":"The {{attribute}} must be greater than {{value}} kilobytes.","validation.gt.numeric":"The {{attribute}} must be greater than {{value}}.","validation.gt.string":"The {{attribute}} must be greater than {{value}} characters.","validation.gte.array":"The {{attribute}} must have {{value}} items or more.","validation.gte.file":"The {{attribute}} must be greater than or equal to {{value}} kilobytes.","validation.gte.numeric":"The {{attribute}} must be greater than or equal to {{value}}.","validation.gte.string":"The {{attribute}} must be greater than or equal to {{value}} characters.","validation.image":"The {{attribute}} must be an image.","validation.in":"The selected {{attribute}} is invalid.","validation.in_array":"The {{attribute}} field does not exist in {{other}}.","validation.integer":"The {{attribute}} must be an integer.","validation.ip":"The {{attribute}} must be a valid IP address.","validation.ipv4":"The {{attribute}} must be a valid IPv4 address.","validation.ipv6":"The {{attribute}} must be a valid IPv6 address.","validation.json":"The {{attribute}} must be a valid JSON string.","validation.lowercase":"The {{attribute}} must be lowercase.","validation.lt.array":"The {{attribute}} must have less than {{value}} items.","validation.lt.file":"The {{attribute}} must be less than {{value}} kilobytes.","validation.lt.numeric":"The {{attribute}} must be less than {{value}}.","validation.lt.string":"The {{attribute}} must be less than {{value}} characters.","validation.lte.array":"The {{attribute}} must not have more than {{value}} items.","validation.lte.file":"The {{attribute}} must be less than or equal to {{value}} kilobytes.","validation.lte.numeric":"The {{attribute}} must be less than or equal to {{value}}.","validation.lte.string":"The {{attribute}} must be less than or equal to {{value}} characters.","validation.mac_address":"The {{attribute}} must be a valid MAC address.","validation.max.array":"The {{attribute}} must not have more than {{max}} items.","validation.max.file":"The {{attribute}} must not be greater than {{max}} kilobytes.","validation.max.numeric":"The {{attribute}} must not be greater than {{max}}.","validation.max.string":"The {{attribute}} must not be greater than {{max}} characters.","validation.max_digits":"The {{attribute}} must not have more than {{max}} digits.","validation.mimes":"The {{attribute}} must be a file of type: {{values}}.","validation.mimetypes":"The {{attribute}} must be a file of type: {{values}}.","validation.min.array":"The {{attribute}} must have at least {{min}} items.","validation.min.file":"The {{attribute}} must be at least {{min}} kilobytes.","validation.min.numeric":"The {{attribute}} must be at least {{min}}.","validation.min.string":"The {{attribute}} must be at least {{min}} characters.","validation.min_digits":"The {{attribute}} must have at least {{min}} digits.","validation.missing":"The {{attribute}} field must be missing.","validation.missing_if":"The {{attribute}} field must be missing when {{other}} is {{value}}.","validation.missing_unless":"The {{attribute}} field must be missing unless {{other}} is {{value}}.","validation.missing_with":"The {{attribute}} field must be missing when {{values}} is present.","validation.missing_with_all":"The {{attribute}} field must be missing when {{values}} are present.","validation.multiple_of":"The {{attribute}} must be a multiple of {{value}}.","validation.not_in":"The selected {{attribute}} is invalid.","validation.not_regex":"The {{attribute}} format is invalid.","validation.numeric":"The {{attribute}} must be a number.","validation.password.letters":"The {{attribute}} must contain at least one letter.","validation.password.mixed":"The {{attribute}} must contain at least one uppercase and one lowercase letter.","validation.password.numbers":"The {{attribute}} must contain at least one number.","validation.password.symbols":"The {{attribute}} must contain at least one symbol.","validation.password.uncompromised":"The given {{attribute}} has appeared in a data leak. Please choose a different {{attribute}}.","validation.present":"The {{attribute}} field must be present.","validation.prohibited":"The {{attribute}} field is prohibited.","validation.prohibited_if":"The {{attribute}} field is prohibited when {{other}} is {{value}}.","validation.prohibited_unless":"The {{attribute}} field is prohibited unless {{other}} is in {{values}}.","validation.prohibits":"The {{attribute}} field prohibits {{other}} from being present.","validation.regex":"The {{attribute}} format is invalid.","validation.required":"The {{attribute}} field is required.","validation.required_array_keys":"The {{attribute}} field must contain entries for: {{values}}.","validation.required_if":"The {{attribute}} field is required when {{other}} is {{value}}.","validation.required_if_accepted":"The {{attribute}} field is required when {{other}} is accepted.","validation.required_unless":"The {{attribute}} field is required unless {{other}} is in {{values}}.","validation.required_with":"The {{attribute}} field is required when {{values}} is present.","validation.required_with_all":"The {{attribute}} field is required when {{values}} are present.","validation.required_without":"The {{attribute}} field is required when {{values}} is not present.","validation.required_without_all":"The {{attribute}} field is required when none of {{values}} are present.","validation.same":"The {{attribute}} and {{other}} must match.","validation.size.array":"The {{attribute}} must contain {{size}} items.","validation.size.file":"The {{attribute}} must be {{size}} kilobytes.","validation.size.numeric":"The {{attribute}} must be {{size}}.","validation.size.string":"The {{attribute}} must be {{size}} characters.","validation.starts_with":"The {{attribute}} must start with one of the following: {{values}}.","validation.string":"The {{attribute}} must be a string.","validation.timezone":"The {{attribute}} must be a valid timezone.","validation.unique":"The {{attribute}} has already been taken.","validation.uploaded":"The {{attribute}} failed to upload.","validation.uppercase":"The {{attribute}} must be uppercase.","validation.url":"The {{attribute}} must be a valid URL.","validation.ulid":"The {{attribute}} must be a valid ULID.","validation.uuid":"The {{attribute}} must be a valid UUID.","validation.custom.attribute-name.rule-name":"custom-message","validation.unsupported_currency_code":"The currency code you provided is invalid or not supported.","validation.unsupported_period":"The period you provided is invalid or not supported.","validation.unsupported_token_symbol":"The token symbol you provided is invalid or not supported.","validation.gallery_title_required":"Gallery name is required.","validation.gallery_title_max_characters":"The gallery name should not exceed 50 characters.","validation.gallery_title_invalid":"The gallery name is invalid.","validation.nfts_required":"Please add at least one NFT.","validation.nfts_max_size":"Galleries can contain no more than {{limit}} NFTs","validation.invalid_nfts":"The NFT in position {{position}} is invalid, please select another one.","validation.invalid_cover":"You have selected an invalid cover image, please try another one."} \ No newline at end of file From d31fbceb741276acaa177285f15fcd5dcc133882 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josip=20Crnkovi=C4=87?= Date: Thu, 18 Jan 2024 15:13:28 +0100 Subject: [PATCH 098/145] refactor: use `button` element for collection row when voting (#610) --- .../CollectionVoting/VoteCollections.tsx | 81 ++++++++++--------- 1 file changed, 45 insertions(+), 36 deletions(-) diff --git a/resources/js/Pages/Collections/Components/CollectionVoting/VoteCollections.tsx b/resources/js/Pages/Collections/Components/CollectionVoting/VoteCollections.tsx index d38f322bc..26bd7e2b1 100644 --- a/resources/js/Pages/Collections/Components/CollectionVoting/VoteCollections.tsx +++ b/resources/js/Pages/Collections/Components/CollectionVoting/VoteCollections.tsx @@ -201,37 +201,43 @@ export const VoteCollection = ({ return (
    -
    { - if (!isTruthy(votedId)) { + if (!hasVoted) { setSelectedCollectionId(collection.id); } }} - tabIndex={0} - className={cn("relative overflow-hidden rounded-lg px-4 py-4 focus:outline-none md:py-3", { - "border-2 border-theme-primary-600 dark:border-theme-hint-400": - variant === "selected" || variant === "voted", - "pointer-events-none bg-theme-primary-50 dark:bg-theme-dark-800": variant === "voted", - "border border-theme-secondary-300 dark:border-theme-dark-700": variant === undefined, - "cursor-pointer": !hasVoted, - "hover:outline hover:outline-theme-hint-100 focus:ring focus:ring-theme-hint-100 dark:hover:outline-theme-dark-500 dark:focus:ring-theme-dark-500": - !hasVoted && variant === undefined, - })} + disabled={hasVoted} + className={cn( + "relative w-full overflow-hidden rounded-lg px-4 py-4 text-left focus:outline-none md:py-3", + { + "border-2 border-theme-primary-600 dark:border-theme-hint-400": + variant === "selected" || variant === "voted", + "bg-theme-primary-50 dark:bg-theme-dark-800": variant === "voted", + "border border-theme-secondary-300 dark:border-theme-dark-700": variant === undefined, + "cursor-pointer": !hasVoted, + "cursor-default": hasVoted, + "hover:outline hover:outline-theme-hint-100 focus:ring focus:ring-theme-hint-100 dark:hover:outline-theme-dark-500 dark:focus:ring-theme-dark-500": + !hasVoted && variant === undefined, + }, + )} data-testid="VoteCollectionTrigger" > {variant === "voted" && ( -
    + -
    + )} -
    -
    -
    -
    + + + {collection.rank ?? index} -
    -
    + + + -
    -
    + + -
    -

    + {collection.name} -

    -

    + + + {t("common.vol")}:{" "} -

    -
    + + + -
    -
    -
    + + + -
    + -
    -
    -
    + + +
    ); }; From 06b3702dda027facfdcee43390c3b7d04506736a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josip=20Crnkovi=C4=87?= Date: Fri, 19 Jan 2024 11:32:16 +0100 Subject: [PATCH 099/145] refactor: sorting by volume change in a specific period (#607) --- app/Http/Controllers/CollectionController.php | 8 +++- app/Models/Collection.php | 47 ++++++++++--------- 2 files changed, 32 insertions(+), 23 deletions(-) diff --git a/app/Http/Controllers/CollectionController.php b/app/Http/Controllers/CollectionController.php index 5b55f9bd7..04ae98259 100644 --- a/app/Http/Controllers/CollectionController.php +++ b/app/Http/Controllers/CollectionController.php @@ -149,9 +149,15 @@ private function getPopularCollections(Request $request): Paginator $currency = $user ? $user->currency() : CurrencyCode::USD; + $volumeColumn = match ($request->query('period')) { + '7d' => 'avg_volume_7d', + '30d' => 'avg_volume_30d', + default => 'avg_volume_1d', + }; + /** @var Paginator $collections */ $collections = Collection::query() - ->when($request->query('sort') !== 'floor-price', fn ($q) => $q->orderBy('volume', 'desc')) // TODO: order by top... + ->when($request->query('sort') !== 'floor-price', fn ($q) => $q->orderByWithNulls($volumeColumn.'::numeric', 'desc')) ->filterByChainId($chainId) ->orderByFloorPrice('desc', $currency) ->with([ diff --git a/app/Models/Collection.php b/app/Models/Collection.php index 11aacedca..1be14691e 100644 --- a/app/Models/Collection.php +++ b/app/Models/Collection.php @@ -235,8 +235,6 @@ public function scopeErc721(Builder $query): Builder */ public function scopeOrderByValue(Builder $query, ?Wallet $wallet, ?string $direction, ?CurrencyCode $currency = CurrencyCode::USD): Builder { - $nullsPosition = strtolower($direction) === 'asc' ? 'NULLS FIRST' : 'NULLS LAST'; - $walletFilter = $wallet ? "WHERE nfts.wallet_id = $wallet->id" : ''; return $query->selectRaw( @@ -251,7 +249,7 @@ public function scopeOrderByValue(Builder $query, ?Wallet $wallet, ?string $dire GROUP BY collection_id ) nc"), 'collections.id', '=', 'nc.collection_id') ->groupBy('collections.id') - ->orderByRaw("total_value {$direction} {$nullsPosition}") + ->orderByWithNulls('total_value', $direction) ->orderBy('collections.id', $direction); } @@ -262,11 +260,9 @@ public function scopeOrderByValue(Builder $query, ?Wallet $wallet, ?string $dire */ public function scopeOrderByFloorPrice(Builder $query, string $direction, CurrencyCode $currency = CurrencyCode::USD): Builder { - $nullsPosition = $direction === 'asc' ? 'NULLS FIRST' : 'NULLS LAST'; - return $query->selectRaw( sprintf('collections.*, CAST(collections.fiat_value->>\'%s\' AS float) as total_floor_price', $currency->value) - )->orderByRaw("total_floor_price {$direction} {$nullsPosition}"); + )->orderByWithNulls('total_floor_price', $direction); } /** @@ -276,9 +272,7 @@ public function scopeOrderByFloorPrice(Builder $query, string $direction, Curren */ public function scopeOrderByName(Builder $query, string $direction): Builder { - $nullsPosition = $direction === 'asc' ? 'NULLS FIRST' : 'NULLS LAST'; - - return $query->orderByRaw("lower(collections.name) {$direction} {$nullsPosition}"); + return $query->orderByWithNulls('lower(collections.name)', $direction); } /** @@ -288,11 +282,7 @@ public function scopeOrderByName(Builder $query, string $direction): Builder */ public function scopeOrderByMintDate(Builder $query, string $direction): Builder { - if ($direction === 'asc') { - return $query->orderByRaw('minted_at ASC NULLS FIRST'); - } - - return $query->orderByRaw('minted_at DESC NULLS LAST'); + return $query->orderByWithNulls('minted_at', $direction); } /** @@ -314,11 +304,7 @@ public function scopeOrderByReceivedDate(Builder $query, Wallet $wallet, string ->addSelect(DB::raw('MAX(nft_activity.timestamp) as received_at')) ->groupBy('collections.id'); - if ($direction === 'asc') { - return $query->orderByRaw('received_at ASC NULLS FIRST'); - } - - return $query->orderByRaw('received_at DESC NULLS LAST'); + return $query->orderByWithNulls('received_at', $direction); } /** @@ -581,7 +567,7 @@ public function isBlacklisted(): bool */ public function scopeOrderByOldestNftLastFetchedAt(Builder $query): Builder { - return $query->orderByRaw('extra_attributes->>\'nft_last_fetched_at\' ASC NULLS FIRST'); + return $query->orderByWithNulls('extra_attributes->>\'nft_last_fetched_at\'', 'asc'); } /** @@ -590,7 +576,7 @@ public function scopeOrderByOldestNftLastFetchedAt(Builder $query): Builder */ public function scopeOrderByFloorPriceLastFetchedAt(Builder $query): Builder { - return $query->orderByRaw('extra_attributes->>\'floor_price_last_fetched_at\' ASC NULLS FIRST'); + return $query->orderByWithNulls('extra_attributes->>\'floor_price_last_fetched_at\'', 'asc'); } /** @@ -599,7 +585,7 @@ public function scopeOrderByFloorPriceLastFetchedAt(Builder $query): Builder */ public function scopeOrderByOpenseaSlugLastFetchedAt(Builder $query): Builder { - return $query->orderByRaw('extra_attributes->>\'opensea_slug_last_fetched_at\' ASC NULLS FIRST'); + return $query->orderByWithNulls('extra_attributes->>\'opensea_slug_last_fetched_at\'', 'asc'); } public function isSpam(): bool @@ -731,4 +717,21 @@ public function averageVolumeSince(Carbon $date): string ->where('created_at', '>', $date) ->value('aggregate'); } + + /** + * Modify the query to apply ORDER BY, but with respect to NULL values. + * If direction is ascending, the query will order NULL values first, + * otherwise it will order NULL values last. + * + * @param Builder $query + * @return Builder + */ + public function scopeOrderByWithNulls(Builder $query, string $column, string $direction): Builder + { + $nullsPosition = strtolower($direction) === 'asc' + ? 'NULLS FIRST' + : 'NULLS LAST'; + + return $query->orderByRaw("{$column} {$direction} {$nullsPosition}"); + } } From 491e8c9b3752d1c26d5f8f9fd7f2e1bba0d9b702 Mon Sep 17 00:00:00 2001 From: ItsANameToo <35610748+ItsANameToo@users.noreply.github.com> Date: Mon, 22 Jan 2024 10:45:49 +0100 Subject: [PATCH 100/145] chore: update PHP dependencies (#614) --- app/Contracts/MarketDataProvider.php | 4 +- .../Controllers/LandingPageDataController.php | 5 +- .../WalletsLineChartController.php | 2 +- .../Providers/CoingeckoProvider.php | 2 +- app/Support/TokenSpam.php | 10 +- app/Support/Web3NftHandler.php | 2 +- composer.json | 14 +- composer.lock | 484 ++++++++++++------ public/css/filament/filament/app.css | 2 +- .../filament/forms/components/color-picker.js | 2 +- public/js/filament/support/support.js | 27 +- public/js/filament/tables/components/table.js | 2 +- public/vendor/horizon/app.js | 2 +- public/vendor/horizon/mix-manifest.json | 2 +- rector.php | 2 +- 15 files changed, 372 insertions(+), 190 deletions(-) diff --git a/app/Contracts/MarketDataProvider.php b/app/Contracts/MarketDataProvider.php index afda82e98..e3cc5d733 100644 --- a/app/Contracts/MarketDataProvider.php +++ b/app/Contracts/MarketDataProvider.php @@ -48,7 +48,7 @@ public function getJobMiddleware(): array; * IMPORTANT: When implementing this method, make sure to set the timestamp * for every PriceHistoryData object in the collection in Unix milliseconds * - * @param int|null $sampleCount The max number of samples to return. If null, all samples will be returned. + * @param int|null $sampleCount The max number of samples to return. If null, all samples will be returned. * @return DataCollection */ public function getPriceHistory(Token $token, CurrencyCode $currency, Period $period, ?int $sampleCount = null): DataCollection; @@ -58,7 +58,7 @@ public function getPriceHistory(Token $token, CurrencyCode $currency, Period $pe * for every PriceHistoryData object in the collection in Unix milliseconds * * @param Collection $tokens - * @param int|null $sampleCount The max number of samples to return. If null, all samples will be returned. + * @param int|null $sampleCount The max number of samples to return. If null, all samples will be returned. * @return Collection> */ public function getBatchPriceHistory(Collection $tokens, CurrencyCode $currency, Period $period, ?int $sampleCount = null): Collection; diff --git a/app/Http/Controllers/LandingPageDataController.php b/app/Http/Controllers/LandingPageDataController.php index 4fec42f6e..b71619f1f 100644 --- a/app/Http/Controllers/LandingPageDataController.php +++ b/app/Http/Controllers/LandingPageDataController.php @@ -31,6 +31,9 @@ public function __invoke(): JsonResponse private function format(int $amount): string { - return strtolower(Number::abbreviate($amount, maxPrecision: 1)); + /** @var string */ + $value = Number::abbreviate($amount, maxPrecision: 1); + + return strtolower($value); } } diff --git a/app/Http/Controllers/WalletsLineChartController.php b/app/Http/Controllers/WalletsLineChartController.php index c16e3c8d7..d3def5b47 100644 --- a/app/Http/Controllers/WalletsLineChartController.php +++ b/app/Http/Controllers/WalletsLineChartController.php @@ -16,7 +16,7 @@ class WalletsLineChartController extends Controller { /** - * @return Collection> + * @return Collection> */ public function __invoke(Request $request, MarketDataProvider $provider): Collection { diff --git a/app/Services/MarketData/Providers/CoingeckoProvider.php b/app/Services/MarketData/Providers/CoingeckoProvider.php index 800ff671d..fba1ea83d 100644 --- a/app/Services/MarketData/Providers/CoingeckoProvider.php +++ b/app/Services/MarketData/Providers/CoingeckoProvider.php @@ -295,7 +295,7 @@ private function lookupCoingeckoTokenId(Token $token): string } /** - * @param CoingeckoTokens $tokens The complete token list from Coingecko + * @param CoingeckoTokens $tokens The complete token list from Coingecko * @return array */ private function filterTokens(CoingeckoTokens $tokens): array diff --git a/app/Support/TokenSpam.php b/app/Support/TokenSpam.php index c95ca7832..835ed8761 100644 --- a/app/Support/TokenSpam.php +++ b/app/Support/TokenSpam.php @@ -74,9 +74,9 @@ private static function spam(string $reason): array } /** - * @param Token $token - the token we are checking - * @param mixed $addressByNetwork - json_decode of the platforms field from coingecko - * @param string $network - the network we are checking + * @param Token $token - the token we are checking + * @param mixed $addressByNetwork - json_decode of the platforms field from coingecko + * @param string $network - the network we are checking */ private static function matchesCoingeckoTokenAddress(Token $token, mixed $addressByNetwork, string $network): bool { @@ -88,8 +88,8 @@ private static function matchesCoingeckoTokenAddress(Token $token, mixed $addres } /** - * @param Token $token - the token we are checking - * @param CoingeckoToken $coingeckoToken - the coingecko token we are checking against + * @param Token $token - the token we are checking + * @param CoingeckoToken $coingeckoToken - the coingecko token we are checking against */ private static function validateAddressByNetwork(Token $token, CoingeckoToken $coingeckoToken): bool { diff --git a/app/Support/Web3NftHandler.php b/app/Support/Web3NftHandler.php index 0779ae488..30ac18efc 100644 --- a/app/Support/Web3NftHandler.php +++ b/app/Support/Web3NftHandler.php @@ -303,7 +303,7 @@ private function getChainId(): int /** * @param Collection $nfts * @param Collection $collectionLookup - * NOTE: The caller is responsible for ensuring atomicity. Make sure to always call this inside a `DB::Transaction`. + * NOTE: The caller is responsible for ensuring atomicity. Make sure to always call this inside a `DB::Transaction`. */ public function upsertTraits(Collection $nfts, Collection $collectionLookup, Carbon $now): void { diff --git a/composer.json b/composer.json index 4b9f975fd..517d79b0a 100644 --- a/composer.json +++ b/composer.json @@ -12,18 +12,18 @@ "atymic/twitter": "^3.2", "aws/aws-sdk-php": "^3.296", "cyrildewit/eloquent-viewable": "dev-master", - "filament/filament": "^3.1", - "filament/spatie-laravel-media-library-plugin": "^3.1", + "filament/filament": "^3.2", + "filament/spatie-laravel-media-library-plugin": "^3.2", "guzzlehttp/guzzle": "^7.8", "halaxa/json-machine": "^1.1", "inertiajs/inertia-laravel": "^0.6", "jeffgreco13/filament-breezy": "^2.2", "kornrunner/keccak": "^1.1", - "laravel/framework": "^10.40", - "laravel/horizon": "^5.21", - "laravel/pennant": "^1.5", + "laravel/framework": "^10.41", + "laravel/horizon": "^5.22", + "laravel/pennant": "^1.6", "laravel/sanctum": "^3.3", - "laravel/slack-notification-channel": "^2.1", + "laravel/slack-notification-channel": "^2.2", "laravel/telescope": "^4.17", "laravel/tinker": "^2.9", "monolog/monolog": "^3.5", @@ -50,7 +50,7 @@ "laravel/sail": "^1.27", "mockery/mockery": "^1.6", "nunomaduro/larastan": "^2.8", - "pestphp/pest": "^2.31", + "pestphp/pest": "^2.32", "rector/rector": "^0.19", "spatie/laravel-ignition": "^2.4" }, diff --git a/composer.lock b/composer.lock index a7ab7ae8f..fd57ed84a 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": "645a1e1961ce9310276a274aa5150070", + "content-hash": "d696de2572b44a99fa1b1b0b33ed9aec", "packages": [ { "name": "amphp/amp", @@ -864,6 +864,72 @@ ], "time": "2023-01-09T22:29:20+00:00" }, + { + "name": "anourvalar/eloquent-serialize", + "version": "1.2.17", + "source": { + "type": "git", + "url": "https://github.com/AnourValar/eloquent-serialize.git", + "reference": "1fcfdd5f41a0d2e7c8cf1d37e7227357bb827aef" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/AnourValar/eloquent-serialize/zipball/1fcfdd5f41a0d2e7c8cf1d37e7227357bb827aef", + "reference": "1fcfdd5f41a0d2e7c8cf1d37e7227357bb827aef", + "shasum": "" + }, + "require": { + "laravel/framework": "^6.0|^7.0|^8.0|^9.0|^10.0", + "php": "^7.1|^8.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.26", + "laravel/legacy-factories": "^1.1", + "orchestra/testbench": "~3.6.0|~3.7.0|~3.8.0|^4.0|^5.0|^6.0|^7.0|^8.0", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^9.5", + "psalm/plugin-laravel": "^2.8", + "squizlabs/php_codesniffer": "^3.7" + }, + "type": "library", + "extra": { + "laravel": { + "aliases": { + "EloquentSerialize": "AnourValar\\EloquentSerialize\\Facades\\EloquentSerializeFacade" + } + } + }, + "autoload": { + "psr-4": { + "AnourValar\\EloquentSerialize\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Laravel Query Builder (Eloquent) serialization", + "homepage": "https://github.com/AnourValar/eloquent-serialize", + "keywords": [ + "anourvalar", + "builder", + "copy", + "eloquent", + "job", + "laravel", + "query", + "querybuilder", + "queue", + "serializable", + "serialization", + "serialize" + ], + "support": { + "issues": "https://github.com/AnourValar/eloquent-serialize/issues", + "source": "https://github.com/AnourValar/eloquent-serialize/tree/1.2.17" + }, + "time": "2023-12-06T15:54:01+00:00" + }, { "name": "atymic/twitter", "version": "3.2.0", @@ -1007,16 +1073,16 @@ }, { "name": "aws/aws-sdk-php", - "version": "3.296.0", + "version": "3.296.6", "source": { "type": "git", "url": "https://github.com/aws/aws-sdk-php.git", - "reference": "7c61ea4f7df51e6e9f1e7fc1112e296bed8429f9" + "reference": "11d0a94f8b2539d587e2f6db7c2fa8e39fe78a67" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/7c61ea4f7df51e6e9f1e7fc1112e296bed8429f9", - "reference": "7c61ea4f7df51e6e9f1e7fc1112e296bed8429f9", + "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/11d0a94f8b2539d587e2f6db7c2fa8e39fe78a67", + "reference": "11d0a94f8b2539d587e2f6db7c2fa8e39fe78a67", "shasum": "" }, "require": { @@ -1096,9 +1162,9 @@ "support": { "forum": "https://forums.aws.amazon.com/forum.jspa?forumID=80", "issues": "https://github.com/aws/aws-sdk-php/issues", - "source": "https://github.com/aws/aws-sdk-php/tree/3.296.0" + "source": "https://github.com/aws/aws-sdk-php/tree/3.296.6" }, - "time": "2024-01-12T19:32:12+00:00" + "time": "2024-01-19T19:14:55+00:00" }, { "name": "bacon/bacon-qr-code", @@ -2193,16 +2259,16 @@ }, { "name": "doctrine/inflector", - "version": "2.0.8", + "version": "2.0.9", "source": { "type": "git", "url": "https://github.com/doctrine/inflector.git", - "reference": "f9301a5b2fb1216b2b08f02ba04dc45423db6bff" + "reference": "2930cd5ef353871c821d5c43ed030d39ac8cfe65" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/f9301a5b2fb1216b2b08f02ba04dc45423db6bff", - "reference": "f9301a5b2fb1216b2b08f02ba04dc45423db6bff", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/2930cd5ef353871c821d5c43ed030d39ac8cfe65", + "reference": "2930cd5ef353871c821d5c43ed030d39ac8cfe65", "shasum": "" }, "require": { @@ -2264,7 +2330,7 @@ ], "support": { "issues": "https://github.com/doctrine/inflector/issues", - "source": "https://github.com/doctrine/inflector/tree/2.0.8" + "source": "https://github.com/doctrine/inflector/tree/2.0.9" }, "funding": [ { @@ -2280,7 +2346,7 @@ "type": "tidelift" } ], - "time": "2023-06-16T13:40:37+00:00" + "time": "2024-01-15T18:05:13+00:00" }, { "name": "doctrine/lexer", @@ -2592,19 +2658,20 @@ }, { "name": "filament/actions", - "version": "v3.1.47", + "version": "v3.2.6", "source": { "type": "git", "url": "https://github.com/filamentphp/actions.git", - "reference": "70c85922297818e290710f23168740c319c378f5" + "reference": "6060641d19b841c5f29fd303330c13578fb211f9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/actions/zipball/70c85922297818e290710f23168740c319c378f5", - "reference": "70c85922297818e290710f23168740c319c378f5", + "url": "https://api.github.com/repos/filamentphp/actions/zipball/6060641d19b841c5f29fd303330c13578fb211f9", + "reference": "6060641d19b841c5f29fd303330c13578fb211f9", "shasum": "" }, "require": { + "anourvalar/eloquent-serialize": "^1.2", "filament/forms": "self.version", "filament/infolists": "self.version", "filament/notifications": "self.version", @@ -2613,6 +2680,7 @@ "illuminate/database": "^10.0", "illuminate/support": "^10.0", "league/csv": "9.11.0", + "openspout/openspout": "^4.23", "php": "^8.1", "spatie/laravel-package-tools": "^1.9" }, @@ -2639,20 +2707,20 @@ "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2024-01-12T12:31:49+00:00" + "time": "2024-01-19T14:01:23+00:00" }, { "name": "filament/filament", - "version": "v3.1.47", + "version": "v3.2.6", "source": { "type": "git", "url": "https://github.com/filamentphp/panels.git", - "reference": "075adb3ca819e730679744445e2d6508bb726e3d" + "reference": "ebef3fec0014891adc2466def38e4e7ec685b82a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/panels/zipball/075adb3ca819e730679744445e2d6508bb726e3d", - "reference": "075adb3ca819e730679744445e2d6508bb726e3d", + "url": "https://api.github.com/repos/filamentphp/panels/zipball/ebef3fec0014891adc2466def38e4e7ec685b82a", + "reference": "ebef3fec0014891adc2466def38e4e7ec685b82a", "shasum": "" }, "require": { @@ -2704,20 +2772,20 @@ "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2024-01-12T11:54:25+00:00" + "time": "2024-01-19T14:01:29+00:00" }, { "name": "filament/forms", - "version": "v3.1.47", + "version": "v3.2.6", "source": { "type": "git", "url": "https://github.com/filamentphp/forms.git", - "reference": "27e9a869c06253ce7b3cd1db252fdceb5621d0c6" + "reference": "ac0cb821bf61a34b280e31edeeb8bb134581eb7a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/forms/zipball/27e9a869c06253ce7b3cd1db252fdceb5621d0c6", - "reference": "27e9a869c06253ce7b3cd1db252fdceb5621d0c6", + "url": "https://api.github.com/repos/filamentphp/forms/zipball/ac0cb821bf61a34b280e31edeeb8bb134581eb7a", + "reference": "ac0cb821bf61a34b280e31edeeb8bb134581eb7a", "shasum": "" }, "require": { @@ -2760,20 +2828,20 @@ "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2024-01-12T11:54:20+00:00" + "time": "2024-01-19T14:01:23+00:00" }, { "name": "filament/infolists", - "version": "v3.1.47", + "version": "v3.2.6", "source": { "type": "git", "url": "https://github.com/filamentphp/infolists.git", - "reference": "bc0735e0a4efd73af6dd8e2d9f773bdafaf98ab6" + "reference": "3270453ce6301bba874fb205774a73da8ec51aa6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/infolists/zipball/bc0735e0a4efd73af6dd8e2d9f773bdafaf98ab6", - "reference": "bc0735e0a4efd73af6dd8e2d9f773bdafaf98ab6", + "url": "https://api.github.com/repos/filamentphp/infolists/zipball/3270453ce6301bba874fb205774a73da8ec51aa6", + "reference": "3270453ce6301bba874fb205774a73da8ec51aa6", "shasum": "" }, "require": { @@ -2811,20 +2879,20 @@ "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2024-01-12T11:54:23+00:00" + "time": "2024-01-19T14:01:24+00:00" }, { "name": "filament/notifications", - "version": "v3.1.47", + "version": "v3.2.6", "source": { "type": "git", "url": "https://github.com/filamentphp/notifications.git", - "reference": "4f5634f9df312050efa3a035c543add6cec0e3a2" + "reference": "c5f4f51d949fafc52643f2be654a4da92422836c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/notifications/zipball/4f5634f9df312050efa3a035c543add6cec0e3a2", - "reference": "4f5634f9df312050efa3a035c543add6cec0e3a2", + "url": "https://api.github.com/repos/filamentphp/notifications/zipball/c5f4f51d949fafc52643f2be654a4da92422836c", + "reference": "c5f4f51d949fafc52643f2be654a4da92422836c", "shasum": "" }, "require": { @@ -2863,20 +2931,20 @@ "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2023-12-28T15:54:27+00:00" + "time": "2024-01-19T14:01:21+00:00" }, { "name": "filament/spatie-laravel-media-library-plugin", - "version": "v3.1.47", + "version": "v3.2.6", "source": { "type": "git", "url": "https://github.com/filamentphp/spatie-laravel-media-library-plugin.git", - "reference": "025bcacceea9368742e3a53257ce222906ef7888" + "reference": "6624dd542ce9f5f15df6aa4edb4bbf2979a627a0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/spatie-laravel-media-library-plugin/zipball/025bcacceea9368742e3a53257ce222906ef7888", - "reference": "025bcacceea9368742e3a53257ce222906ef7888", + "url": "https://api.github.com/repos/filamentphp/spatie-laravel-media-library-plugin/zipball/6624dd542ce9f5f15df6aa4edb4bbf2979a627a0", + "reference": "6624dd542ce9f5f15df6aa4edb4bbf2979a627a0", "shasum": "" }, "require": { @@ -2900,20 +2968,20 @@ "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2024-01-08T12:59:14+00:00" + "time": "2024-01-18T11:11:50+00:00" }, { "name": "filament/support", - "version": "v3.1.47", + "version": "v3.2.6", "source": { "type": "git", "url": "https://github.com/filamentphp/support.git", - "reference": "7122e56e5831a6423d7e028c3a2d08255aba08e9" + "reference": "bba54ccc077198761c90ba1a498099d4130cb11c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/support/zipball/7122e56e5831a6423d7e028c3a2d08255aba08e9", - "reference": "7122e56e5831a6423d7e028c3a2d08255aba08e9", + "url": "https://api.github.com/repos/filamentphp/support/zipball/bba54ccc077198761c90ba1a498099d4130cb11c", + "reference": "bba54ccc077198761c90ba1a498099d4130cb11c", "shasum": "" }, "require": { @@ -2957,20 +3025,20 @@ "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2024-01-12T11:54:33+00:00" + "time": "2024-01-19T14:01:22+00:00" }, { "name": "filament/tables", - "version": "v3.1.47", + "version": "v3.2.6", "source": { "type": "git", "url": "https://github.com/filamentphp/tables.git", - "reference": "fa080ebb43ff17e14f8f483e7ad2b69feaadbb3a" + "reference": "11605d47690cdd04226e1770d07902cf84c38f6f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/tables/zipball/fa080ebb43ff17e14f8f483e7ad2b69feaadbb3a", - "reference": "fa080ebb43ff17e14f8f483e7ad2b69feaadbb3a", + "url": "https://api.github.com/repos/filamentphp/tables/zipball/11605d47690cdd04226e1770d07902cf84c38f6f", + "reference": "11605d47690cdd04226e1770d07902cf84c38f6f", "shasum": "" }, "require": { @@ -3010,20 +3078,20 @@ "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2024-01-11T12:33:25+00:00" + "time": "2024-01-19T14:01:23+00:00" }, { "name": "filament/widgets", - "version": "v3.1.47", + "version": "v3.2.6", "source": { "type": "git", "url": "https://github.com/filamentphp/widgets.git", - "reference": "d9baa132c89f58f537b41cdfb319cc90d8a21e34" + "reference": "9fae19f86f50b71b9d47c87305d742ee962af573" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filamentphp/widgets/zipball/d9baa132c89f58f537b41cdfb319cc90d8a21e34", - "reference": "d9baa132c89f58f537b41cdfb319cc90d8a21e34", + "url": "https://api.github.com/repos/filamentphp/widgets/zipball/9fae19f86f50b71b9d47c87305d742ee962af573", + "reference": "9fae19f86f50b71b9d47c87305d742ee962af573", "shasum": "" }, "require": { @@ -3054,7 +3122,7 @@ "issues": "https://github.com/filamentphp/filament/issues", "source": "https://github.com/filamentphp/filament" }, - "time": "2024-01-02T23:08:01+00:00" + "time": "2024-01-15T20:39:18+00:00" }, { "name": "fruitcake/php-cors", @@ -4045,32 +4113,38 @@ }, { "name": "jeffgreco13/filament-breezy", - "version": "v2.2.4", + "version": "v2.2.7", "source": { "type": "git", "url": "https://github.com/jeffgreco13/filament-breezy.git", - "reference": "31687bfad67369e44400ad35d1669a02517cfee4" + "reference": "9462b8aa97034892465878053cc81375451f7f1f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/jeffgreco13/filament-breezy/zipball/31687bfad67369e44400ad35d1669a02517cfee4", - "reference": "31687bfad67369e44400ad35d1669a02517cfee4", + "url": "https://api.github.com/repos/jeffgreco13/filament-breezy/zipball/9462b8aa97034892465878053cc81375451f7f1f", + "reference": "9462b8aa97034892465878053cc81375451f7f1f", "shasum": "" }, "require": { "bacon/bacon-qr-code": "^2.0", "filament/filament": "^3.0.9", + "illuminate/contracts": "^10.0", "php": "^8.1", "pragmarx/google2fa": "^7.0|^8.0", "spatie/laravel-package-tools": "^1.14.0" }, "require-dev": { + "larastan/larastan": "^2.0.1", "laravel/pint": "^1.0", "nunomaduro/collision": "^7.9", - "orchestra/testbench": "^8.0", - "pestphp/pest": "^2.0", + "orchestra/testbench": "^8.8", + "pestphp/pest": "^2.20", "pestphp/pest-plugin-arch": "^2.0", "pestphp/pest-plugin-laravel": "^2.0", + "pestphp/pest-plugin-livewire": "^2.1", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan-deprecation-rules": "^1.0", + "phpstan/phpstan-phpunit": "^1.0", "spatie/laravel-ray": "^1.26" }, "type": "library", @@ -4086,8 +4160,7 @@ }, "autoload": { "psr-4": { - "Jeffgreco13\\FilamentBreezy\\": "src/", - "Jeffgreco13\\FilamentBreezy\\Database\\Factories\\": "database/factories/" + "Jeffgreco13\\FilamentBreezy\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -4110,9 +4183,9 @@ ], "support": { "issues": "https://github.com/jeffgreco13/filament-breezy/issues", - "source": "https://github.com/jeffgreco13/filament-breezy/tree/v2.2.4" + "source": "https://github.com/jeffgreco13/filament-breezy/tree/v2.2.7" }, - "time": "2024-01-07T15:37:10+00:00" + "time": "2024-01-19T00:58:16+00:00" }, { "name": "kamermans/guzzle-oauth2-subscriber", @@ -4332,16 +4405,16 @@ }, { "name": "laravel/framework", - "version": "v10.40.0", + "version": "v10.41.0", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "7a9470071dac9579ebf29ad1b9d73e4b8eb586fc" + "reference": "da31969bd35e6ee0bbcd9e876f88952dc754b012" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/7a9470071dac9579ebf29ad1b9d73e4b8eb586fc", - "reference": "7a9470071dac9579ebf29ad1b9d73e4b8eb586fc", + "url": "https://api.github.com/repos/laravel/framework/zipball/da31969bd35e6ee0bbcd9e876f88952dc754b012", + "reference": "da31969bd35e6ee0bbcd9e876f88952dc754b012", "shasum": "" }, "require": { @@ -4533,40 +4606,40 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2024-01-09T11:46:47+00:00" + "time": "2024-01-16T15:23:58+00:00" }, { "name": "laravel/horizon", - "version": "v5.21.5", + "version": "v5.22.0", "source": { "type": "git", "url": "https://github.com/laravel/horizon.git", - "reference": "081422577fb49608ed68a3b284bcecd0c5860ce6" + "reference": "151f7fc544fd7711499512b736b30036dfaa5bc0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/horizon/zipball/081422577fb49608ed68a3b284bcecd0c5860ce6", - "reference": "081422577fb49608ed68a3b284bcecd0c5860ce6", + "url": "https://api.github.com/repos/laravel/horizon/zipball/151f7fc544fd7711499512b736b30036dfaa5bc0", + "reference": "151f7fc544fd7711499512b736b30036dfaa5bc0", "shasum": "" }, "require": { "ext-json": "*", "ext-pcntl": "*", "ext-posix": "*", - "illuminate/contracts": "^8.17|^9.0|^10.0", - "illuminate/queue": "^8.17|^9.0|^10.0", - "illuminate/support": "^8.17|^9.0|^10.0", + "illuminate/contracts": "^8.17|^9.0|^10.0|^11.0", + "illuminate/queue": "^8.17|^9.0|^10.0|^11.0", + "illuminate/support": "^8.17|^9.0|^10.0|^11.0", "nesbot/carbon": "^2.17", "php": "^7.3|^8.0", "ramsey/uuid": "^4.0", - "symfony/error-handler": "^5.0|^6.0", - "symfony/process": "^5.0|^6.0" + "symfony/error-handler": "^5.0|^6.0|^7.0", + "symfony/process": "^5.0|^6.0|^7.0" }, "require-dev": { "mockery/mockery": "^1.0", - "orchestra/testbench": "^6.0|^7.0|^8.0", + "orchestra/testbench": "^6.0|^7.0|^8.0|^9.0", "phpstan/phpstan": "^1.10", - "phpunit/phpunit": "^9.0", + "phpunit/phpunit": "^9.0|^10.4", "predis/predis": "^1.1|^2.0" }, "suggest": { @@ -4609,39 +4682,39 @@ ], "support": { "issues": "https://github.com/laravel/horizon/issues", - "source": "https://github.com/laravel/horizon/tree/v5.21.5" + "source": "https://github.com/laravel/horizon/tree/v5.22.0" }, - "time": "2023-12-29T22:22:23+00:00" + "time": "2024-01-16T15:06:40+00:00" }, { "name": "laravel/pennant", - "version": "v1.5.1", + "version": "v1.6.0", "source": { "type": "git", "url": "https://github.com/laravel/pennant.git", - "reference": "6464d2aeb6cd8d1ad493b6cb101cdea552451f67" + "reference": "c1c49cbac1a50efe31484f504b7dbfefc502830a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/pennant/zipball/6464d2aeb6cd8d1ad493b6cb101cdea552451f67", - "reference": "6464d2aeb6cd8d1ad493b6cb101cdea552451f67", + "url": "https://api.github.com/repos/laravel/pennant/zipball/c1c49cbac1a50efe31484f504b7dbfefc502830a", + "reference": "c1c49cbac1a50efe31484f504b7dbfefc502830a", "shasum": "" }, "require": { - "illuminate/console": "^10.0", - "illuminate/container": "^10.0", - "illuminate/contracts": "^10.0", - "illuminate/database": "^10.0", - "illuminate/queue": "^10.0", - "illuminate/support": "^10.0", + "illuminate/console": "^10.0|^11.0", + "illuminate/container": "^10.0|^11.0", + "illuminate/contracts": "^10.0|^11.0", + "illuminate/database": "^10.0|^11.0", + "illuminate/queue": "^10.0|^11.0", + "illuminate/support": "^10.0|^11.0", "php": "^8.1", - "symfony/finder": "^6.0" + "symfony/finder": "^6.0|^7.0" }, "require-dev": { - "laravel/octane": "^1.4", - "orchestra/testbench": "^8.0", + "laravel/octane": "^1.4|^2.0", + "orchestra/testbench": "^8.0|^9.0", "phpstan/phpstan": "^1.10", - "phpunit/phpunit": "^9.0" + "phpunit/phpunit": "^9.0|^10.4" }, "type": "library", "extra": { @@ -4687,7 +4760,7 @@ "issues": "https://github.com/laravel/pennant/issues", "source": "https://github.com/laravel/pennant" }, - "time": "2023-12-14T15:27:11+00:00" + "time": "2024-01-15T16:44:04+00:00" }, { "name": "laravel/prompts", @@ -6421,16 +6494,16 @@ }, { "name": "nette/utils", - "version": "v4.0.3", + "version": "v4.0.4", "source": { "type": "git", "url": "https://github.com/nette/utils.git", - "reference": "a9d127dd6a203ce6d255b2e2db49759f7506e015" + "reference": "d3ad0aa3b9f934602cb3e3902ebccf10be34d218" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/a9d127dd6a203ce6d255b2e2db49759f7506e015", - "reference": "a9d127dd6a203ce6d255b2e2db49759f7506e015", + "url": "https://api.github.com/repos/nette/utils/zipball/d3ad0aa3b9f934602cb3e3902ebccf10be34d218", + "reference": "d3ad0aa3b9f934602cb3e3902ebccf10be34d218", "shasum": "" }, "require": { @@ -6501,9 +6574,9 @@ ], "support": { "issues": "https://github.com/nette/utils/issues", - "source": "https://github.com/nette/utils/tree/v4.0.3" + "source": "https://github.com/nette/utils/tree/v4.0.4" }, - "time": "2023-10-29T21:02:13+00:00" + "time": "2024-01-17T16:50:36+00:00" }, { "name": "nikic/php-parser", @@ -6725,6 +6798,99 @@ ], "time": "2023-11-13T09:31:12+00:00" }, + { + "name": "openspout/openspout", + "version": "v4.23.0", + "source": { + "type": "git", + "url": "https://github.com/openspout/openspout.git", + "reference": "28f6a0e45acc3377f34c26cc3866e21f0447e0c8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/openspout/openspout/zipball/28f6a0e45acc3377f34c26cc3866e21f0447e0c8", + "reference": "28f6a0e45acc3377f34c26cc3866e21f0447e0c8", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-fileinfo": "*", + "ext-filter": "*", + "ext-libxml": "*", + "ext-xmlreader": "*", + "ext-zip": "*", + "php": "~8.1.0 || ~8.2.0 || ~8.3.0" + }, + "require-dev": { + "ext-zlib": "*", + "friendsofphp/php-cs-fixer": "^3.46.0", + "infection/infection": "^0.27.9", + "phpbench/phpbench": "^1.2.15", + "phpstan/phpstan": "^1.10.55", + "phpstan/phpstan-phpunit": "^1.3.15", + "phpstan/phpstan-strict-rules": "^1.5.2", + "phpunit/phpunit": "^10.5.5" + }, + "suggest": { + "ext-iconv": "To handle non UTF-8 CSV files (if \"php-mbstring\" is not already installed or is too limited)", + "ext-mbstring": "To handle non UTF-8 CSV files (if \"iconv\" is not already installed)" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.3.x-dev" + } + }, + "autoload": { + "psr-4": { + "OpenSpout\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Adrien Loison", + "email": "adrien@box.com" + } + ], + "description": "PHP Library to read and write spreadsheet files (CSV, XLSX and ODS), in a fast and scalable way", + "homepage": "https://github.com/openspout/openspout", + "keywords": [ + "OOXML", + "csv", + "excel", + "memory", + "odf", + "ods", + "office", + "open", + "php", + "read", + "scale", + "spreadsheet", + "stream", + "write", + "xlsx" + ], + "support": { + "issues": "https://github.com/openspout/openspout/issues", + "source": "https://github.com/openspout/openspout/tree/v4.23.0" + }, + "funding": [ + { + "url": "https://paypal.me/filippotessarotto", + "type": "custom" + }, + { + "url": "https://github.com/Slamdunk", + "type": "github" + } + ], + "time": "2024-01-09T09:30:37+00:00" + }, { "name": "paragonie/constant_time_encoding", "version": "v2.6.3", @@ -14423,16 +14589,16 @@ }, { "name": "laravel/breeze", - "version": "v1.28.0", + "version": "v1.28.1", "source": { "type": "git", "url": "https://github.com/laravel/breeze.git", - "reference": "6856cd4725b0f261b2d383b01a3875744051acf5" + "reference": "e853918e770822780efd160a73fd676992340aca" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/breeze/zipball/6856cd4725b0f261b2d383b01a3875744051acf5", - "reference": "6856cd4725b0f261b2d383b01a3875744051acf5", + "url": "https://api.github.com/repos/laravel/breeze/zipball/e853918e770822780efd160a73fd676992340aca", + "reference": "e853918e770822780efd160a73fd676992340aca", "shasum": "" }, "require": { @@ -14481,20 +14647,20 @@ "issues": "https://github.com/laravel/breeze/issues", "source": "https://github.com/laravel/breeze" }, - "time": "2024-01-06T17:23:00+00:00" + "time": "2024-01-15T16:14:10+00:00" }, { "name": "laravel/pint", - "version": "v1.13.8", + "version": "v1.13.9", "source": { "type": "git", "url": "https://github.com/laravel/pint.git", - "reference": "69def89df9e0babc0f0a8bea184804a7d8a9c5c0" + "reference": "e3e269cc5d874c8efd2dc7962b1c7ff2585fe525" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/pint/zipball/69def89df9e0babc0f0a8bea184804a7d8a9c5c0", - "reference": "69def89df9e0babc0f0a8bea184804a7d8a9c5c0", + "url": "https://api.github.com/repos/laravel/pint/zipball/e3e269cc5d874c8efd2dc7962b1c7ff2585fe525", + "reference": "e3e269cc5d874c8efd2dc7962b1c7ff2585fe525", "shasum": "" }, "require": { @@ -14505,13 +14671,13 @@ "php": "^8.1.0" }, "require-dev": { - "friendsofphp/php-cs-fixer": "^3.46.0", - "illuminate/view": "^10.39.0", + "friendsofphp/php-cs-fixer": "^3.47.0", + "illuminate/view": "^10.40.0", "larastan/larastan": "^2.8.1", "laravel-zero/framework": "^10.3.0", "mockery/mockery": "^1.6.7", "nunomaduro/termwind": "^1.15.1", - "pestphp/pest": "^2.30.0" + "pestphp/pest": "^2.31.0" }, "bin": [ "builds/pint" @@ -14547,20 +14713,20 @@ "issues": "https://github.com/laravel/pint/issues", "source": "https://github.com/laravel/pint" }, - "time": "2024-01-09T18:03:54+00:00" + "time": "2024-01-16T17:39:29+00:00" }, { "name": "laravel/sail", - "version": "v1.27.0", + "version": "v1.27.1", "source": { "type": "git", "url": "https://github.com/laravel/sail.git", - "reference": "65a7764af5daadbd122e3b0d67be371d158a9b9a" + "reference": "9dc648978e4276f2bfd37a076a52e3bd9394777f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/sail/zipball/65a7764af5daadbd122e3b0d67be371d158a9b9a", - "reference": "65a7764af5daadbd122e3b0d67be371d158a9b9a", + "url": "https://api.github.com/repos/laravel/sail/zipball/9dc648978e4276f2bfd37a076a52e3bd9394777f", + "reference": "9dc648978e4276f2bfd37a076a52e3bd9394777f", "shasum": "" }, "require": { @@ -14612,7 +14778,7 @@ "issues": "https://github.com/laravel/sail/issues", "source": "https://github.com/laravel/sail" }, - "time": "2024-01-03T14:07:34+00:00" + "time": "2024-01-13T18:46:48+00:00" }, { "name": "maximebf/debugbar", @@ -15022,29 +15188,29 @@ }, { "name": "pestphp/pest", - "version": "v2.31.0", + "version": "v2.32.0", "source": { "type": "git", "url": "https://github.com/pestphp/pest.git", - "reference": "3457841a9b124653edcfef1d5da24e6afe176f79" + "reference": "ac5d6c1f6754b4a6b4d16d825e5ebd4725a4f779" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pestphp/pest/zipball/3457841a9b124653edcfef1d5da24e6afe176f79", - "reference": "3457841a9b124653edcfef1d5da24e6afe176f79", + "url": "https://api.github.com/repos/pestphp/pest/zipball/ac5d6c1f6754b4a6b4d16d825e5ebd4725a4f779", + "reference": "ac5d6c1f6754b4a6b4d16d825e5ebd4725a4f779", "shasum": "" }, "require": { "brianium/paratest": "^7.3.1", - "nunomaduro/collision": "^7.10.0|^8.0.1", + "nunomaduro/collision": "^7.10.0|^8.1.0", "nunomaduro/termwind": "^1.15.1|^2.0.0", "pestphp/pest-plugin": "^2.1.1", "pestphp/pest-plugin-arch": "^2.6.1", "php": "^8.1.0", - "phpunit/phpunit": "^10.5.5" + "phpunit/phpunit": "^10.5.7" }, "conflict": { - "phpunit/phpunit": ">10.5.5", + "phpunit/phpunit": ">10.5.7", "sebastian/exporter": "<5.1.0", "webmozart/assert": "<1.11.0" }, @@ -15075,7 +15241,8 @@ "Pest\\Plugins\\Snapshot", "Pest\\Plugins\\Verbose", "Pest\\Plugins\\Version", - "Pest\\Plugins\\Parallel" + "Pest\\Plugins\\Parallel", + "Pest\\Plugins\\JUnit" ] }, "phpstan": { @@ -15114,7 +15281,7 @@ ], "support": { "issues": "https://github.com/pestphp/pest/issues", - "source": "https://github.com/pestphp/pest/tree/v2.31.0" + "source": "https://github.com/pestphp/pest/tree/v2.32.0" }, "funding": [ { @@ -15126,7 +15293,7 @@ "type": "github" } ], - "time": "2024-01-11T15:33:20+00:00" + "time": "2024-01-20T13:48:00+00:00" }, { "name": "pestphp/pest-plugin", @@ -15439,16 +15606,16 @@ }, { "name": "phpmyadmin/sql-parser", - "version": "5.8.2", + "version": "5.9.0", "source": { "type": "git", "url": "https://github.com/phpmyadmin/sql-parser.git", - "reference": "f1720ae19abe6294cb5599594a8a57bc3c8cc287" + "reference": "011fa18a4e55591fac6545a821921dd1d61c6984" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpmyadmin/sql-parser/zipball/f1720ae19abe6294cb5599594a8a57bc3c8cc287", - "reference": "f1720ae19abe6294cb5599594a8a57bc3c8cc287", + "url": "https://api.github.com/repos/phpmyadmin/sql-parser/zipball/011fa18a4e55591fac6545a821921dd1d61c6984", + "reference": "011fa18a4e55591fac6545a821921dd1d61c6984", "shasum": "" }, "require": { @@ -15479,6 +15646,7 @@ "bin": [ "bin/highlight-query", "bin/lint-query", + "bin/sql-parser", "bin/tokenize-query" ], "type": "library", @@ -15522,20 +15690,20 @@ "type": "other" } ], - "time": "2023-09-19T12:34:29+00:00" + "time": "2024-01-20T20:34:02+00:00" }, { "name": "phpstan/phpstan", - "version": "1.10.55", + "version": "1.10.56", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "9a88f9d18ddf4cf54c922fbeac16c4cb164c5949" + "reference": "27816a01aea996191ee14d010f325434c0ee76fa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/9a88f9d18ddf4cf54c922fbeac16c4cb164c5949", - "reference": "9a88f9d18ddf4cf54c922fbeac16c4cb164c5949", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/27816a01aea996191ee14d010f325434c0ee76fa", + "reference": "27816a01aea996191ee14d010f325434c0ee76fa", "shasum": "" }, "require": { @@ -15584,7 +15752,7 @@ "type": "tidelift" } ], - "time": "2024-01-08T12:32:40+00:00" + "time": "2024-01-15T10:43:00+00:00" }, { "name": "phpunit/php-code-coverage", @@ -15909,16 +16077,16 @@ }, { "name": "phpunit/phpunit", - "version": "10.5.5", + "version": "10.5.7", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "ed21115d505b4b4f7dc7b5651464e19a2c7f7856" + "reference": "e5c5b397a95cb0db013270a985726fcae93e61b8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/ed21115d505b4b4f7dc7b5651464e19a2c7f7856", - "reference": "ed21115d505b4b4f7dc7b5651464e19a2c7f7856", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/e5c5b397a95cb0db013270a985726fcae93e61b8", + "reference": "e5c5b397a95cb0db013270a985726fcae93e61b8", "shasum": "" }, "require": { @@ -15990,7 +16158,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.5" + "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.7" }, "funding": [ { @@ -16006,25 +16174,25 @@ "type": "tidelift" } ], - "time": "2023-12-27T15:13:52+00:00" + "time": "2024-01-14T16:40:30+00:00" }, { "name": "rector/rector", - "version": "0.19.0", + "version": "0.19.2", "source": { "type": "git", "url": "https://github.com/rectorphp/rector.git", - "reference": "503f4ead06b3892bd106f67f3c86d4e36c94423d" + "reference": "bc96a99895bf47c6bfe70ea1b799f0081ed5a903" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/rectorphp/rector/zipball/503f4ead06b3892bd106f67f3c86d4e36c94423d", - "reference": "503f4ead06b3892bd106f67f3c86d4e36c94423d", + "url": "https://api.github.com/repos/rectorphp/rector/zipball/bc96a99895bf47c6bfe70ea1b799f0081ed5a903", + "reference": "bc96a99895bf47c6bfe70ea1b799f0081ed5a903", "shasum": "" }, "require": { "php": "^7.2|^8.0", - "phpstan/phpstan": "^1.10.52" + "phpstan/phpstan": "^1.10.56" }, "conflict": { "rector/rector-doctrine": "*", @@ -16054,7 +16222,7 @@ ], "support": { "issues": "https://github.com/rectorphp/rector/issues", - "source": "https://github.com/rectorphp/rector/tree/0.19.0" + "source": "https://github.com/rectorphp/rector/tree/0.19.2" }, "funding": [ { @@ -16062,7 +16230,7 @@ "type": "github" } ], - "time": "2024-01-09T00:49:06+00:00" + "time": "2024-01-19T10:58:30+00:00" }, { "name": "sebastian/cli-parser", diff --git a/public/css/filament/filament/app.css b/public/css/filament/filament/app.css index bfa6c4b2d..5fa28f939 100644 --- a/public/css/filament/filament/app.css +++ b/public/css/filament/filament/app.css @@ -1 +1 @@ -/*! tailwindcss v3.4.1 | MIT License | https://tailwindcss.com*/*,:after,:before{border-color:rgba(var(--gray-200),1);border-style:solid;border-width:0;box-sizing:border-box}:after,:before{--tw-content:""}:host,html{-webkit-text-size-adjust:100%;font-feature-settings:normal;-webkit-tap-highlight-color:transparent;font-family:var(--font-family),ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-variation-settings:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-feature-settings:normal;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em;font-variation-settings:normal}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{font-feature-settings:inherit;color:inherit;font-family:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:rgba(var(--gray-400),1);opacity:1}input::placeholder,textarea::placeholder{color:rgba(var(--gray-400),1);opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]{display:none}[multiple],[type=date],[type=datetime-local],[type=email],[type=month],[type=number],[type=password],[type=search],[type=tel],[type=text],[type=time],[type=url],[type=week],input:where(:not([type])),select,textarea{--tw-shadow:0 0 #0000;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:rgba(var(--gray-500),var(--tw-border-opacity,1));border-radius:0;border-width:1px;font-size:1rem;line-height:1.5rem;padding:.5rem .75rem}[multiple]:focus,[type=date]:focus,[type=datetime-local]:focus,[type=email]:focus,[type=month]:focus,[type=number]:focus,[type=password]:focus,[type=search]:focus,[type=tel]:focus,[type=text]:focus,[type=time]:focus,[type=url]:focus,[type=week]:focus,input:where(:not([type])):focus,select:focus,textarea:focus{--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#2563eb;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);border-color:#2563eb;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);outline:2px solid transparent;outline-offset:2px}input::-moz-placeholder,textarea::-moz-placeholder{color:rgba(var(--gray-500),var(--tw-text-opacity,1));opacity:1}input::placeholder,textarea::placeholder{color:rgba(var(--gray-500),var(--tw-text-opacity,1));opacity:1}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-date-and-time-value{min-height:1.5em;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-meridiem-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-year-field{padding-bottom:0;padding-top:0}select{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3E%3Cpath stroke='rgba(var(--gray-500), var(--tw-stroke-opacity, 1))' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3E%3C/svg%3E");background-position:right .5rem center;background-repeat:no-repeat;background-size:1.5em 1.5em;padding-right:2.5rem;-webkit-print-color-adjust:exact;print-color-adjust:exact}[multiple],[size]:where(select:not([size="1"])){background-image:none;background-position:0 0;background-repeat:unset;background-size:initial;padding-right:.75rem;-webkit-print-color-adjust:unset;print-color-adjust:unset}[type=checkbox],[type=radio]{--tw-shadow:0 0 #0000;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;background-origin:border-box;border-color:rgba(var(--gray-500),var(--tw-border-opacity,1));border-width:1px;color:#2563eb;display:inline-block;flex-shrink:0;height:1rem;padding:0;-webkit-print-color-adjust:exact;print-color-adjust:exact;-webkit-user-select:none;-moz-user-select:none;user-select:none;vertical-align:middle;width:1rem}[type=checkbox]{border-radius:0}[type=radio]{border-radius:100%}[type=checkbox]:focus,[type=radio]:focus{--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:2px;--tw-ring-offset-color:#fff;--tw-ring-color:#2563eb;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);outline:2px solid transparent;outline-offset:2px}[type=checkbox]:checked,[type=radio]:checked{background-color:currentColor;background-position:50%;background-repeat:no-repeat;background-size:100% 100%;border-color:transparent}[type=checkbox]:checked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12.207 4.793a1 1 0 0 1 0 1.414l-5 5a1 1 0 0 1-1.414 0l-2-2a1 1 0 0 1 1.414-1.414L6.5 9.086l4.293-4.293a1 1 0 0 1 1.414 0z'/%3E%3C/svg%3E")}@media (forced-colors:active) {[type=checkbox]:checked{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=radio]:checked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='8' cy='8' r='3'/%3E%3C/svg%3E")}@media (forced-colors:active) {[type=radio]:checked{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=checkbox]:checked:focus,[type=checkbox]:checked:hover,[type=radio]:checked:focus,[type=radio]:checked:hover{background-color:currentColor;border-color:transparent}[type=checkbox]:indeterminate{background-color:currentColor;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3E%3Cpath stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8h8'/%3E%3C/svg%3E");background-position:50%;background-repeat:no-repeat;background-size:100% 100%;border-color:transparent}@media (forced-colors:active) {[type=checkbox]:indeterminate{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=checkbox]:indeterminate:focus,[type=checkbox]:indeterminate:hover{background-color:currentColor;border-color:transparent}[type=file]{background:unset;border-color:inherit;border-radius:0;border-width:0;font-size:unset;line-height:inherit;padding:0}[type=file]:focus{outline:1px solid ButtonText;outline:1px auto -webkit-focus-ring-color}:root.dark{color-scheme:dark}[data-field-wrapper]{scroll-margin-top:8rem}*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em;margin-top:1.25em}.prose :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-bottom:1.2em;margin-top:1.2em}.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);font-weight:500;text-decoration:underline}.prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal;margin-bottom:1.25em;margin-top:1.25em;padding-left:1.625em}.prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:disc;margin-bottom:1.25em;margin-top:1.25em;padding-left:1.625em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-counters);font-weight:400}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.25em}.prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-bottom:3em;margin-top:3em}.prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){border-left-color:var(--tw-prose-quote-borders);border-left-width:.25rem;color:var(--tw-prose-quotes);font-style:italic;font-weight:500;margin-bottom:1.6em;margin-top:1.6em;padding-left:1em;quotes:"\201C""\201D""\2018""\2019"}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-size:2.25em;font-weight:800;line-height:1.1111111;margin-bottom:.8888889em;margin-top:0}.prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:900}.prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-size:1.5em;font-weight:700;line-height:1.3333333;margin-bottom:1em;margin-top:2em}.prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:800}.prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-size:1.25em;font-weight:600;line-height:1.6;margin-bottom:.6em;margin-top:1.6em}.prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:700}.prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;line-height:1.5;margin-bottom:.5em;margin-top:1.5em}.prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:700}.prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){display:block;margin-bottom:2em;margin-top:2em}.prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.3125rem;box-shadow:0 0 0 1px rgb(var(--tw-prose-kbd-shadows)/10%),0 3px 0 rgb(var(--tw-prose-kbd-shadows)/10%);color:var(--tw-prose-kbd);font-family:inherit;font-size:.875em;font-weight:500;padding:.1875em .375em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code);font-size:.875em;font-weight:600}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:"`"}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:"`"}.prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:var(--tw-prose-pre-bg);border-radius:.375rem;color:var(--tw-prose-pre-code);font-size:.875em;font-weight:400;line-height:1.7142857;margin-bottom:1.7142857em;margin-top:1.7142857em;overflow-x:auto;padding:.8571429em 1.1428571em}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:transparent;border-radius:0;border-width:0;color:inherit;font-family:inherit;font-size:inherit;font-weight:inherit;line-height:inherit;padding:0}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:none}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em;line-height:1.7142857;margin-bottom:2em;margin-top:2em;table-layout:auto;text-align:left;width:100%}.prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-color:var(--tw-prose-th-borders);border-bottom-width:1px}.prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;padding-bottom:.5714286em;padding-left:.5714286em;padding-right:.5714286em;vertical-align:bottom}.prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-color:var(--tw-prose-td-borders);border-bottom-width:1px}.prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-color:var(--tw-prose-th-borders);border-top-width:1px}.prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose{--tw-prose-body:#374151;--tw-prose-headings:#111827;--tw-prose-lead:#4b5563;--tw-prose-links:#111827;--tw-prose-bold:#111827;--tw-prose-counters:#6b7280;--tw-prose-bullets:#d1d5db;--tw-prose-hr:#e5e7eb;--tw-prose-quotes:#111827;--tw-prose-quote-borders:#e5e7eb;--tw-prose-captions:#6b7280;--tw-prose-kbd:#111827;--tw-prose-kbd-shadows:17 24 39;--tw-prose-code:#111827;--tw-prose-pre-code:#e5e7eb;--tw-prose-pre-bg:#1f2937;--tw-prose-th-borders:#d1d5db;--tw-prose-td-borders:#e5e7eb;--tw-prose-invert-body:#d1d5db;--tw-prose-invert-headings:#fff;--tw-prose-invert-lead:#9ca3af;--tw-prose-invert-links:#fff;--tw-prose-invert-bold:#fff;--tw-prose-invert-counters:#9ca3af;--tw-prose-invert-bullets:#4b5563;--tw-prose-invert-hr:#374151;--tw-prose-invert-quotes:#f3f4f6;--tw-prose-invert-quote-borders:#374151;--tw-prose-invert-captions:#9ca3af;--tw-prose-invert-kbd:#fff;--tw-prose-invert-kbd-shadows:255 255 255;--tw-prose-invert-code:#fff;--tw-prose-invert-pre-code:#d1d5db;--tw-prose-invert-pre-bg:rgba(0,0,0,.5);--tw-prose-invert-th-borders:#4b5563;--tw-prose-invert-td-borders:#374151;font-size:1rem;line-height:1.75}.prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.5em;margin-top:.5em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.375em}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.75em;margin-top:.75em}.prose :where(.prose>ul>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.75em;margin-top:.75em}.prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em;margin-top:1.25em}.prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-left:1.625em}.prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding:.5714286em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.prose-sm{font-size:.875rem;line-height:1.7142857}.prose-sm :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em;margin-top:1.1428571em}.prose-sm :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.2857143em;line-height:1.5555556;margin-bottom:.8888889em;margin-top:.8888889em}.prose-sm :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em;margin-top:1.3333333em;padding-left:1.1111111em}.prose-sm :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:2.1428571em;line-height:1.2;margin-bottom:.8em;margin-top:0}.prose-sm :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.4285714em;line-height:1.4;margin-bottom:.8em;margin-top:1.6em}.prose-sm :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.2857143em;line-height:1.5555556;margin-bottom:.4444444em;margin-top:1.5555556em}.prose-sm :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){line-height:1.4285714;margin-bottom:.5714286em;margin-top:1.4285714em}.prose-sm :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7142857em;margin-top:1.7142857em}.prose-sm :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7142857em;margin-top:1.7142857em}.prose-sm :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose-sm :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7142857em;margin-top:1.7142857em}.prose-sm :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.3125rem;font-size:.8571429em;padding:.1428571em .3571429em}.prose-sm :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8571429em}.prose-sm :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.9em}.prose-sm :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8888889em}.prose-sm :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.25rem;font-size:.8571429em;line-height:1.6666667;margin-bottom:1.6666667em;margin-top:1.6666667em;padding:.6666667em 1em}.prose-sm :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em;margin-top:1.1428571em;padding-left:1.5714286em}.prose-sm :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em;margin-top:1.1428571em;padding-left:1.5714286em}.prose-sm :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.2857143em;margin-top:.2857143em}.prose-sm :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.4285714em}.prose-sm :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.4285714em}.prose-sm :where(.prose-sm>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.5714286em;margin-top:.5714286em}.prose-sm :where(.prose-sm>ul>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.1428571em}.prose-sm :where(.prose-sm>ul>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em}.prose-sm :where(.prose-sm>ol>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.1428571em}.prose-sm :where(.prose-sm>ol>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em}.prose-sm :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.5714286em;margin-top:.5714286em}.prose-sm :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em;margin-top:1.1428571em}.prose-sm :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.1428571em}.prose-sm :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.2857143em;padding-left:1.5714286em}.prose-sm :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2.8571429em;margin-top:2.8571429em}.prose-sm :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8571429em;line-height:1.5}.prose-sm :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){padding-bottom:.6666667em;padding-left:1em;padding-right:1em}.prose-sm :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose-sm :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose-sm :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding:.6666667em 1em}.prose-sm :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose-sm :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose-sm :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7142857em;margin-top:1.7142857em}.prose-sm :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose-sm :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8571429em;line-height:1.3333333;margin-top:.6666667em}.prose-sm :where(.prose-sm>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(.prose-sm>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.prose-base{font-size:1rem;line-height:1.75}.prose-base :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em;margin-top:1.25em}.prose-base :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.25em;line-height:1.6;margin-bottom:1.2em;margin-top:1.2em}.prose-base :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.6em;margin-top:1.6em;padding-left:1em}.prose-base :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:2.25em;line-height:1.1111111;margin-bottom:.8888889em;margin-top:0}.prose-base :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.5em;line-height:1.3333333;margin-bottom:1em;margin-top:2em}.prose-base :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.25em;line-height:1.6;margin-bottom:.6em;margin-top:1.6em}.prose-base :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){line-height:1.5;margin-bottom:.5em;margin-top:1.5em}.prose-base :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose-base :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose-base :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose-base :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose-base :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.3125rem;font-size:.875em;padding:.1875em .375em}.prose-base :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em}.prose-base :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em}.prose-base :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.9em}.prose-base :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.375rem;font-size:.875em;line-height:1.7142857;margin-bottom:1.7142857em;margin-top:1.7142857em;padding:.8571429em 1.1428571em}.prose-base :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em;margin-top:1.25em;padding-left:1.625em}.prose-base :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em;margin-top:1.25em;padding-left:1.625em}.prose-base :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.5em;margin-top:.5em}.prose-base :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.375em}.prose-base :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.375em}.prose-base :where(.prose-base>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.75em;margin-top:.75em}.prose-base :where(.prose-base>ul>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose-base :where(.prose-base>ul>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose-base :where(.prose-base>ol>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose-base :where(.prose-base>ol>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose-base :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.75em;margin-top:.75em}.prose-base :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em;margin-top:1.25em}.prose-base :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose-base :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-left:1.625em}.prose-base :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:3em;margin-top:3em}.prose-base :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-base :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-base :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-base :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-base :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em;line-height:1.7142857}.prose-base :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){padding-bottom:.5714286em;padding-left:.5714286em;padding-right:.5714286em}.prose-base :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose-base :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose-base :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding:.5714286em}.prose-base :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose-base :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose-base :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose-base :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose-base :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose-base :where(.prose-base>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-base :where(.prose-base>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.prose-lg{font-size:1.125rem;line-height:1.7777778}.prose-lg :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em;margin-top:1.3333333em}.prose-lg :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.2222222em;line-height:1.4545455;margin-bottom:1.0909091em;margin-top:1.0909091em}.prose-lg :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.6666667em;margin-top:1.6666667em;padding-left:1em}.prose-lg :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:2.6666667em;line-height:1;margin-bottom:.8333333em;margin-top:0}.prose-lg :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.6666667em;line-height:1.3333333;margin-bottom:1.0666667em;margin-top:1.8666667em}.prose-lg :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.3333333em;line-height:1.5;margin-bottom:.6666667em;margin-top:1.6666667em}.prose-lg :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){line-height:1.5555556;margin-bottom:.4444444em;margin-top:1.7777778em}.prose-lg :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7777778em;margin-top:1.7777778em}.prose-lg :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7777778em;margin-top:1.7777778em}.prose-lg :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose-lg :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7777778em;margin-top:1.7777778em}.prose-lg :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.3125rem;font-size:.8888889em;padding:.2222222em .4444444em}.prose-lg :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8888889em}.prose-lg :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8666667em}.prose-lg :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em}.prose-lg :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.375rem;font-size:.8888889em;line-height:1.75;margin-bottom:2em;margin-top:2em;padding:1em 1.5em}.prose-lg :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em;margin-top:1.3333333em;padding-left:1.5555556em}.prose-lg :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em;margin-top:1.3333333em;padding-left:1.5555556em}.prose-lg :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.6666667em;margin-top:.6666667em}.prose-lg :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.4444444em}.prose-lg :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.4444444em}.prose-lg :where(.prose-lg>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.8888889em;margin-top:.8888889em}.prose-lg :where(.prose-lg>ul>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.3333333em}.prose-lg :where(.prose-lg>ul>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em}.prose-lg :where(.prose-lg>ol>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.3333333em}.prose-lg :where(.prose-lg>ol>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em}.prose-lg :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.8888889em;margin-top:.8888889em}.prose-lg :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em;margin-top:1.3333333em}.prose-lg :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.3333333em}.prose-lg :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.6666667em;padding-left:1.5555556em}.prose-lg :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:3.1111111em;margin-top:3.1111111em}.prose-lg :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-lg :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-lg :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-lg :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-lg :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8888889em;line-height:1.5}.prose-lg :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){padding-bottom:.75em;padding-left:.75em;padding-right:.75em}.prose-lg :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose-lg :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose-lg :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding:.75em}.prose-lg :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose-lg :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose-lg :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7777778em;margin-top:1.7777778em}.prose-lg :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose-lg :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8888889em;line-height:1.5;margin-top:1em}.prose-lg :where(.prose-lg>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-lg :where(.prose-lg>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.sr-only{clip:rect(0,0,0,0);border-width:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.visible{visibility:visible}.invisible{visibility:hidden}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.inset-4{inset:1rem}.inset-x-0{left:0;right:0}.inset-x-4{left:1rem;right:1rem}.inset-y-0{bottom:0;top:0}.-bottom-1\/2{bottom:-50%}.-top-1{top:-.25rem}.-top-1\/2{top:-50%}.-top-2{top:-.5rem}.-top-3{top:-.75rem}.bottom-0{bottom:0}.bottom-1\/2{bottom:50%}.end-0{inset-inline-end:0}.end-4{inset-inline-end:1rem}.end-6{inset-inline-end:1.5rem}.left-3{left:.75rem}.start-0{inset-inline-start:0}.start-full{inset-inline-start:100%}.top-0{top:0}.top-1\/2{top:50%}.top-4{top:1rem}.top-6{top:1.5rem}.isolate{isolation:isolate}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.z-\[1\]{z-index:1}.col-\[--col-span-default\]{grid-column:var(--col-span-default)}.col-span-full{grid-column:1/-1}.col-start-2{grid-column-start:2}.col-start-3{grid-column-start:3}.col-start-\[--col-start-default\]{grid-column-start:var(--col-start-default)}.-m-0{margin:0}.-m-0\.5{margin:-.125rem}.-m-1{margin:-.25rem}.-m-1\.5{margin:-.375rem}.-m-2{margin:-.5rem}.-m-2\.5{margin:-.625rem}.-m-3{margin:-.75rem}.-m-3\.5{margin:-.875rem}.-mx-2{margin-left:-.5rem;margin-right:-.5rem}.-mx-4{margin-left:-1rem;margin-right:-1rem}.-mx-6{margin-left:-1.5rem;margin-right:-1.5rem}.-my-1{margin-bottom:-.25rem;margin-top:-.25rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-3{margin-left:.75rem;margin-right:.75rem}.mx-auto{margin-left:auto;margin-right:auto}.my-16{margin-bottom:4rem;margin-top:4rem}.my-2{margin-bottom:.5rem;margin-top:.5rem}.my-4{margin-bottom:1rem;margin-top:1rem}.my-auto{margin-bottom:auto;margin-top:auto}.\!mt-0{margin-top:0!important}.-mb-4{margin-bottom:-1rem}.-mb-6{margin-bottom:-1.5rem}.-me-2{margin-inline-end:-.5rem}.-ms-0{margin-inline-start:0}.-ms-0\.5{margin-inline-start:-.125rem}.-ms-1{margin-inline-start:-.25rem}.-ms-2{margin-inline-start:-.5rem}.-mt-4{margin-top:-1rem}.-mt-6{margin-top:-1.5rem}.mb-2{margin-bottom:.5rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.me-1{margin-inline-end:.25rem}.me-4{margin-inline-end:1rem}.me-6{margin-inline-end:1.5rem}.ml-auto{margin-left:auto}.ms-1{margin-inline-start:.25rem}.ms-auto{margin-inline-start:auto}.mt-0{margin-top:0}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-6{margin-top:1.5rem}.mt-auto{margin-top:auto}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.inline-grid{display:inline-grid}.hidden{display:none}.h-0{height:0}.h-1{height:.25rem}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-11{height:2.75rem}.h-16{height:4rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-32{height:8rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-96{height:24rem}.h-full{height:100%}.h-screen{height:100vh}.max-h-96{max-height:24rem}.min-h-\[theme\(spacing\.48\)\]{min-height:12rem}.min-h-full{min-height:100%}.min-h-screen{min-height:100vh}.w-1{width:.25rem}.w-1\.5{width:.375rem}.w-1\/2{width:50%}.w-10{width:2.5rem}.w-11{width:2.75rem}.w-16{width:4rem}.w-20{width:5rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-32{width:8rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-7{width:1.75rem}.w-72{width:18rem}.w-8{width:2rem}.w-9{width:2.25rem}.w-\[--sidebar-width\]{width:var(--sidebar-width)}.w-\[calc\(100\%\+2rem\)\]{width:calc(100% + 2rem)}.w-auto{width:auto}.w-full{width:100%}.w-max{width:-moz-max-content;width:max-content}.w-px{width:1px}.w-screen{width:100vw}.min-w-0{min-width:0}.min-w-\[theme\(spacing\.4\)\]{min-width:1rem}.min-w-\[theme\(spacing\.5\)\]{min-width:1.25rem}.min-w-\[theme\(spacing\.6\)\]{min-width:1.5rem}.min-w-\[theme\(spacing\.8\)\]{min-width:2rem}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.max-w-4xl{max-width:56rem}.max-w-5xl{max-width:64rem}.max-w-6xl{max-width:72rem}.max-w-7xl{max-width:80rem}.max-w-\[14rem\]{max-width:14rem}.max-w-fit{max-width:-moz-fit-content;max-width:fit-content}.max-w-full{max-width:100%}.max-w-lg{max-width:32rem}.max-w-max{max-width:-moz-max-content;max-width:max-content}.max-w-md{max-width:28rem}.max-w-min{max-width:-moz-min-content;max-width:min-content}.max-w-none{max-width:none}.max-w-prose{max-width:65ch}.max-w-screen-2xl{max-width:1536px}.max-w-screen-lg{max-width:1024px}.max-w-screen-md{max-width:768px}.max-w-screen-sm{max-width:640px}.max-w-screen-xl{max-width:1280px}.max-w-sm{max-width:24rem}.max-w-xl{max-width:36rem}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.shrink-0{flex-shrink:0}.flex-grow,.grow{flex-grow:1}.table-auto{table-layout:auto}.-translate-x-1\/2{--tw-translate-x:-50%}.-translate-x-12,.-translate-x-1\/2{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-x-12{--tw-translate-x:-3rem}.-translate-x-5{--tw-translate-x:-1.25rem}.-translate-x-5,.-translate-x-full{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-x-full{--tw-translate-x:-100%}.-translate-y-12{--tw-translate-y:-3rem}.-translate-y-12,.translate-x-0{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-0{--tw-translate-x:0px}.translate-x-12{--tw-translate-x:3rem}.translate-x-12,.translate-x-5{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-5{--tw-translate-x:1.25rem}.translate-x-full{--tw-translate-x:100%}.translate-x-full,.translate-y-12{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-12{--tw-translate-y:3rem}.-rotate-180{--tw-rotate:-180deg}.-rotate-180,.rotate-180{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180{--tw-rotate:180deg}.scale-100{--tw-scale-x:1;--tw-scale-y:1}.scale-100,.scale-95{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-95{--tw-scale-x:.95;--tw-scale-y:.95}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(1turn)}}.animate-spin{animation:spin 1s linear infinite}.cursor-default{cursor:default}.cursor-move{cursor:move}.cursor-pointer{cursor:pointer}.cursor-wait{cursor:wait}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize-none{resize:none}.scroll-mt-9{scroll-margin-top:2.25rem}.list-inside{list-style-position:inside}.list-disc{list-style-type:disc}.columns-\[--cols-default\]{-moz-columns:var(--cols-default);columns:var(--cols-default)}.break-inside-avoid{-moz-column-break-inside:avoid;break-inside:avoid}.auto-cols-fr{grid-auto-columns:minmax(0,1fr)}.grid-flow-col{grid-auto-flow:column}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.grid-cols-\[--cols-default\]{grid-template-columns:var(--cols-default)}.grid-cols-\[1fr_auto_1fr\]{grid-template-columns:1fr auto 1fr}.grid-cols-\[repeat\(7\2c minmax\(theme\(spacing\.7\)\2c 1fr\)\)\]{grid-template-columns:repeat(7,minmax(1.75rem,1fr))}.grid-cols-\[repeat\(auto-fit\2c minmax\(0\2c 1fr\)\)\]{grid-template-columns:repeat(auto-fit,minmax(0,1fr))}.flex-row-reverse{flex-direction:row-reverse}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.content-start{align-content:flex-start}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-items-start{justify-items:start}.justify-items-center{justify-items:center}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.gap-x-1{-moz-column-gap:.25rem;column-gap:.25rem}.gap-x-1\.5{-moz-column-gap:.375rem;column-gap:.375rem}.gap-x-2{-moz-column-gap:.5rem;column-gap:.5rem}.gap-x-2\.5{-moz-column-gap:.625rem;column-gap:.625rem}.gap-x-3{-moz-column-gap:.75rem;column-gap:.75rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-x-5{-moz-column-gap:1.25rem;column-gap:1.25rem}.gap-x-6{-moz-column-gap:1.5rem;column-gap:1.5rem}.gap-y-1{row-gap:.25rem}.gap-y-1\.5{row-gap:.375rem}.gap-y-2{row-gap:.5rem}.gap-y-3{row-gap:.75rem}.gap-y-4{row-gap:1rem}.gap-y-6{row-gap:1.5rem}.gap-y-7{row-gap:1.75rem}.gap-y-8{row-gap:2rem}.gap-y-px{row-gap:1px}.-space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-.25rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-.25rem*var(--tw-space-x-reverse))}.-space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-.5rem*var(--tw-space-x-reverse))}.-space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-.75rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-.75rem*var(--tw-space-x-reverse))}.-space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-1rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-1rem*var(--tw-space-x-reverse))}.-space-x-5>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-1.25rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-1.25rem*var(--tw-space-x-reverse))}.-space-x-6>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-1.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-1.5rem*var(--tw-space-x-reverse))}.-space-x-7>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-1.75rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-1.75rem*var(--tw-space-x-reverse))}.-space-x-8>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-2rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-2rem*var(--tw-space-x-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.25rem*var(--tw-space-y-reverse));margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.5rem*var(--tw-space-y-reverse));margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.75rem*var(--tw-space-y-reverse));margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1rem*var(--tw-space-y-reverse));margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1.5rem*var(--tw-space-y-reverse));margin-top:calc(1.5rem*(1 - var(--tw-space-y-reverse)))}.divide-x>:not([hidden])~:not([hidden]){--tw-divide-x-reverse:0;border-left-width:calc(1px*(1 - var(--tw-divide-x-reverse)));border-right-width:calc(1px*var(--tw-divide-x-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-bottom-width:calc(1px*var(--tw-divide-y-reverse));border-top-width:calc(1px*(1 - var(--tw-divide-y-reverse)))}.divide-gray-100>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgba(var(--gray-100),var(--tw-divide-opacity))}.divide-gray-200>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgba(var(--gray-200),var(--tw-divide-opacity))}.divide-gray-950\/10>:not([hidden])~:not([hidden]){border-color:rgba(var(--gray-950),.1)}.self-start{align-self:flex-start}.self-stretch{align-self:stretch}.justify-self-start{justify-self:start}.justify-self-end{justify-self:end}.justify-self-center{justify-self:center}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-hidden{overflow-y:hidden}.overflow-x-clip{overflow-x:clip}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-normal{white-space:normal}.whitespace-nowrap{white-space:nowrap}.break-words{overflow-wrap:break-word}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-xl{border-radius:.75rem}.rounded-b-xl{border-bottom-left-radius:.75rem;border-bottom-right-radius:.75rem}.rounded-t-xl{border-top-left-radius:.75rem;border-top-right-radius:.75rem}.border{border-width:1px}.border-2{border-width:2px}.border-x-\[0\.5px\]{border-left-width:.5px;border-right-width:.5px}.border-y{border-bottom-width:1px;border-top-width:1px}.\!border-t-0{border-top-width:0!important}.border-b{border-bottom-width:1px}.border-b-0{border-bottom-width:0}.border-e{border-inline-end-width:1px}.border-s{border-inline-start-width:1px}.border-t{border-top-width:1px}.\!border-none{border-style:none!important}.border-none{border-style:none}.border-gray-100{--tw-border-opacity:1;border-color:rgba(var(--gray-100),var(--tw-border-opacity))}.border-gray-200{--tw-border-opacity:1;border-color:rgba(var(--gray-200),var(--tw-border-opacity))}.border-gray-300{--tw-border-opacity:1;border-color:rgba(var(--gray-300),var(--tw-border-opacity))}.border-gray-600{--tw-border-opacity:1;border-color:rgba(var(--gray-600),var(--tw-border-opacity))}.border-primary-500{--tw-border-opacity:1;border-color:rgba(var(--primary-500),var(--tw-border-opacity))}.border-primary-600{--tw-border-opacity:1;border-color:rgba(var(--primary-600),var(--tw-border-opacity))}.border-transparent{border-color:transparent}.border-t-gray-200{--tw-border-opacity:1;border-top-color:rgba(var(--gray-200),var(--tw-border-opacity))}.\!bg-gray-50{--tw-bg-opacity:1!important;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))!important}.\!bg-gray-700{--tw-bg-opacity:1!important;background-color:rgba(var(--gray-700),var(--tw-bg-opacity))!important}.bg-black\/50{background-color:rgba(0,0,0,.5)}.bg-custom-100{--tw-bg-opacity:1;background-color:rgba(var(--c-100),var(--tw-bg-opacity))}.bg-custom-50{--tw-bg-opacity:1;background-color:rgba(var(--c-50),var(--tw-bg-opacity))}.bg-custom-600{--tw-bg-opacity:1;background-color:rgba(var(--c-600),var(--tw-bg-opacity))}.bg-gray-100{--tw-bg-opacity:1;background-color:rgba(var(--gray-100),var(--tw-bg-opacity))}.bg-gray-200{--tw-bg-opacity:1;background-color:rgba(var(--gray-200),var(--tw-bg-opacity))}.bg-gray-300{--tw-bg-opacity:1;background-color:rgba(var(--gray-300),var(--tw-bg-opacity))}.bg-gray-400{--tw-bg-opacity:1;background-color:rgba(var(--gray-400),var(--tw-bg-opacity))}.bg-gray-50{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.bg-gray-950\/50{background-color:rgba(var(--gray-950),.5)}.bg-primary-500{--tw-bg-opacity:1;background-color:rgba(var(--primary-500),var(--tw-bg-opacity))}.bg-primary-600{--tw-bg-opacity:1;background-color:rgba(var(--primary-600),var(--tw-bg-opacity))}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.bg-white\/0{background-color:hsla(0,0%,100%,0)}.bg-white\/5{background-color:hsla(0,0%,100%,.05)}.bg-cover{background-size:cover}.bg-center{background-position:50%}.object-cover{-o-object-fit:cover;object-fit:cover}.object-center{-o-object-position:center;object-position:center}.p-0{padding:0}.p-0\.5{padding:.125rem}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.px-0{padding-left:0;padding-right:0}.px-0\.5{padding-left:.125rem;padding-right:.125rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-3\.5{padding-left:.875rem;padding-right:.875rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-0{padding-bottom:0;padding-top:0}.py-0\.5{padding-bottom:.125rem;padding-top:.125rem}.py-1{padding-bottom:.25rem;padding-top:.25rem}.py-1\.5{padding-bottom:.375rem;padding-top:.375rem}.py-12{padding-bottom:3rem;padding-top:3rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.py-2\.5{padding-bottom:.625rem;padding-top:.625rem}.py-3{padding-bottom:.75rem;padding-top:.75rem}.py-3\.5{padding-bottom:.875rem;padding-top:.875rem}.py-4{padding-bottom:1rem;padding-top:1rem}.py-5{padding-bottom:1.25rem;padding-top:1.25rem}.py-6{padding-bottom:1.5rem;padding-top:1.5rem}.py-8{padding-bottom:2rem;padding-top:2rem}.pb-4{padding-bottom:1rem}.pb-6{padding-bottom:1.5rem}.pe-0{padding-inline-end:0}.pe-1{padding-inline-end:.25rem}.pe-2{padding-inline-end:.5rem}.pe-3{padding-inline-end:.75rem}.pe-4{padding-inline-end:1rem}.pe-6{padding-inline-end:1.5rem}.pe-8{padding-inline-end:2rem}.ps-0{padding-inline-start:0}.ps-1{padding-inline-start:.25rem}.ps-2{padding-inline-start:.5rem}.ps-3{padding-inline-start:.75rem}.ps-4{padding-inline-start:1rem}.ps-\[5\.25rem\]{padding-inline-start:5.25rem}.pt-0{padding-top:0}.pt-2{padding-top:.5rem}.pt-4{padding-top:1rem}.pt-6{padding-top:1.5rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-justify{text-align:justify}.text-start{text-align:start}.text-end{text-align:end}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.font-sans{font-family:var(--font-family),ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"}.font-serif{font-family:ui-serif,Georgia,Cambria,Times New Roman,Times,serif}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-black{font-weight:900}.font-bold{font-weight:700}.font-extrabold{font-weight:800}.font-extralight{font-weight:200}.font-light{font-weight:300}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.font-thin{font-weight:100}.capitalize{text-transform:capitalize}.italic{font-style:italic}.leading-5{line-height:1.25rem}.leading-6{line-height:1.5rem}.leading-loose{line-height:2}.tracking-tight{letter-spacing:-.025em}.tracking-tighter{letter-spacing:-.05em}.text-custom-400{--tw-text-opacity:1;color:rgba(var(--c-400),var(--tw-text-opacity))}.text-custom-50{--tw-text-opacity:1;color:rgba(var(--c-50),var(--tw-text-opacity))}.text-custom-500{--tw-text-opacity:1;color:rgba(var(--c-500),var(--tw-text-opacity))}.text-custom-600{--tw-text-opacity:1;color:rgba(var(--c-600),var(--tw-text-opacity))}.text-custom-700\/50{color:rgba(var(--c-700),.5)}.text-danger-600{--tw-text-opacity:1;color:rgba(var(--danger-600),var(--tw-text-opacity))}.text-gray-100{--tw-text-opacity:1;color:rgba(var(--gray-100),var(--tw-text-opacity))}.text-gray-200{--tw-text-opacity:1;color:rgba(var(--gray-200),var(--tw-text-opacity))}.text-gray-400{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity:1;color:rgba(var(--gray-600),var(--tw-text-opacity))}.text-gray-700{--tw-text-opacity:1;color:rgba(var(--gray-700),var(--tw-text-opacity))}.text-gray-700\/50{color:rgba(var(--gray-700),.5)}.text-gray-950{--tw-text-opacity:1;color:rgba(var(--gray-950),var(--tw-text-opacity))}.text-primary-400{--tw-text-opacity:1;color:rgba(var(--primary-400),var(--tw-text-opacity))}.text-primary-500{--tw-text-opacity:1;color:rgba(var(--primary-500),var(--tw-text-opacity))}.text-primary-600{--tw-text-opacity:1;color:rgba(var(--primary-600),var(--tw-text-opacity))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.underline{text-decoration-line:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-50{opacity:.5}.opacity-70{opacity:.7}.shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.shadow,.shadow-lg{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.shadow-sm,.shadow-xl{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color)}.outline-none{outline:2px solid transparent;outline-offset:2px}.ring{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring,.ring-0{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-0{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring-1{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring-1,.ring-2{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-2{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring-4{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-inset{--tw-ring-inset:inset}.ring-custom-600{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--c-600),var(--tw-ring-opacity))}.ring-custom-600\/10{--tw-ring-color:rgba(var(--c-600),0.1)}.ring-custom-600\/20{--tw-ring-color:rgba(var(--c-600),0.2)}.ring-danger-600{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--danger-600),var(--tw-ring-opacity))}.ring-gray-200{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--gray-200),var(--tw-ring-opacity))}.ring-gray-300{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--gray-300),var(--tw-ring-opacity))}.ring-gray-600\/10{--tw-ring-color:rgba(var(--gray-600),0.1)}.ring-gray-900\/10{--tw-ring-color:rgba(var(--gray-900),0.1)}.ring-gray-950\/10{--tw-ring-color:rgba(var(--gray-950),0.1)}.ring-gray-950\/5{--tw-ring-color:rgba(var(--gray-950),0.05)}.ring-white{--tw-ring-opacity:1;--tw-ring-color:rgb(255 255 255/var(--tw-ring-opacity))}.ring-white\/10{--tw-ring-color:hsla(0,0%,100%,.1)}.blur{--tw-blur:blur(8px)}.blur,.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-all{transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-colors{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-opacity{transition-duration:.15s;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}.delay-100{transition-delay:.1s}.duration-100{transition-duration:.1s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.duration-500{transition-duration:.5s}.duration-75{transition-duration:75ms}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.\[transform\:translateZ\(0\)\]{transform:translateZ(0)}:is(.dark .dark\:prose-invert){--tw-prose-body:var(--tw-prose-invert-body);--tw-prose-headings:var(--tw-prose-invert-headings);--tw-prose-lead:var(--tw-prose-invert-lead);--tw-prose-links:var(--tw-prose-invert-links);--tw-prose-bold:var(--tw-prose-invert-bold);--tw-prose-counters:var(--tw-prose-invert-counters);--tw-prose-bullets:var(--tw-prose-invert-bullets);--tw-prose-hr:var(--tw-prose-invert-hr);--tw-prose-quotes:var(--tw-prose-invert-quotes);--tw-prose-quote-borders:var(--tw-prose-invert-quote-borders);--tw-prose-captions:var(--tw-prose-invert-captions);--tw-prose-kbd:var(--tw-prose-invert-kbd);--tw-prose-kbd-shadows:var(--tw-prose-invert-kbd-shadows);--tw-prose-code:var(--tw-prose-invert-code);--tw-prose-pre-code:var(--tw-prose-invert-pre-code);--tw-prose-pre-bg:var(--tw-prose-invert-pre-bg);--tw-prose-th-borders:var(--tw-prose-invert-th-borders);--tw-prose-td-borders:var(--tw-prose-invert-td-borders)}.placeholder\:text-gray-400::-moz-placeholder{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.placeholder\:text-gray-400::placeholder{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.before\:absolute:before{content:var(--tw-content);position:absolute}.before\:inset-y-0:before{bottom:0;content:var(--tw-content);top:0}.before\:start-0:before{content:var(--tw-content);inset-inline-start:0}.before\:h-full:before{content:var(--tw-content);height:100%}.before\:w-0:before{content:var(--tw-content);width:0}.before\:w-0\.5:before{content:var(--tw-content);width:.125rem}.before\:bg-primary-600:before{--tw-bg-opacity:1;background-color:rgba(var(--primary-600),var(--tw-bg-opacity));content:var(--tw-content)}.first\:border-s-0:first-child{border-inline-start-width:0}.first\:border-t-0:first-child{border-top-width:0}.last\:border-e-0:last-child{border-inline-end-width:0}.first-of-type\:ps-1:first-of-type{padding-inline-start:.25rem}.last-of-type\:pe-1:last-of-type{padding-inline-end:.25rem}.checked\:ring-0:checked{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-within\:bg-gray-50:focus-within{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.focus-within\:ring-2:focus-within{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-within\:ring-danger-600:focus-within{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--danger-600),var(--tw-ring-opacity))}.focus-within\:ring-primary-600:focus-within{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-600),var(--tw-ring-opacity))}.hover\:bg-custom-400\/10:hover{background-color:rgba(var(--c-400),.1)}.hover\:bg-custom-50:hover{--tw-bg-opacity:1;background-color:rgba(var(--c-50),var(--tw-bg-opacity))}.hover\:bg-custom-500:hover{--tw-bg-opacity:1;background-color:rgba(var(--c-500),var(--tw-bg-opacity))}.hover\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgba(var(--gray-100),var(--tw-bg-opacity))}.hover\:bg-gray-400\/10:hover{background-color:rgba(var(--gray-400),.1)}.hover\:bg-gray-50:hover{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.hover\:text-custom-600:hover{--tw-text-opacity:1;color:rgba(var(--c-600),var(--tw-text-opacity))}.hover\:text-custom-700\/75:hover{color:rgba(var(--c-700),.75)}.hover\:text-gray-500:hover{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.hover\:text-gray-700:hover{--tw-text-opacity:1;color:rgba(var(--gray-700),var(--tw-text-opacity))}.hover\:text-gray-700\/75:hover{color:rgba(var(--gray-700),.75)}.hover\:opacity-100:hover{opacity:1}.focus\:ring-0:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\:ring-0:focus,.focus\:ring-2:focus{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\:ring-danger-600:focus{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--danger-600),var(--tw-ring-opacity))}.focus\:ring-primary-600:focus{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-600),var(--tw-ring-opacity))}.focus\:ring-offset-0:focus{--tw-ring-offset-width:0px}.checked\:focus\:ring-danger-500\/50:focus:checked{--tw-ring-color:rgba(var(--danger-500),0.5)}.checked\:focus\:ring-primary-500\/50:focus:checked{--tw-ring-color:rgba(var(--primary-500),0.5)}.focus-visible\:z-10:focus-visible{z-index:10}.focus-visible\:border-primary-500:focus-visible{--tw-border-opacity:1;border-color:rgba(var(--primary-500),var(--tw-border-opacity))}.focus-visible\:bg-custom-50:focus-visible{--tw-bg-opacity:1;background-color:rgba(var(--c-50),var(--tw-bg-opacity))}.focus-visible\:bg-gray-100:focus-visible{--tw-bg-opacity:1;background-color:rgba(var(--gray-100),var(--tw-bg-opacity))}.focus-visible\:bg-gray-50:focus-visible{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.focus-visible\:text-custom-700\/75:focus-visible{color:rgba(var(--c-700),.75)}.focus-visible\:text-gray-500:focus-visible{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.focus-visible\:text-gray-700\/75:focus-visible{color:rgba(var(--gray-700),.75)}.focus-visible\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\:ring-1:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\:ring-inset:focus-visible{--tw-ring-inset:inset}.focus-visible\:ring-custom-500\/50:focus-visible{--tw-ring-color:rgba(var(--c-500),0.5)}.focus-visible\:ring-custom-600:focus-visible{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--c-600),var(--tw-ring-opacity))}.focus-visible\:ring-gray-400\/40:focus-visible{--tw-ring-color:rgba(var(--gray-400),0.4)}.focus-visible\:ring-primary-500:focus-visible{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-500),var(--tw-ring-opacity))}.focus-visible\:ring-primary-600:focus-visible{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-600),var(--tw-ring-opacity))}.enabled\:cursor-wait:enabled{cursor:wait}.enabled\:opacity-70:enabled{opacity:.7}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:bg-gray-50:disabled{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.disabled\:text-gray-50:disabled{--tw-text-opacity:1;color:rgba(var(--gray-50),var(--tw-text-opacity))}.disabled\:text-gray-500:disabled{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.disabled\:opacity-70:disabled{opacity:.7}.disabled\:\[-webkit-text-fill-color\:theme\(colors\.gray\.500\)\]:disabled{-webkit-text-fill-color:rgba(var(--gray-500),1)}.disabled\:placeholder\:\[-webkit-text-fill-color\:theme\(colors\.gray\.400\)\]:disabled::-moz-placeholder{-webkit-text-fill-color:rgba(var(--gray-400),1)}.disabled\:placeholder\:\[-webkit-text-fill-color\:theme\(colors\.gray\.400\)\]:disabled::placeholder{-webkit-text-fill-color:rgba(var(--gray-400),1)}.disabled\:checked\:bg-current:checked:disabled{background-color:currentColor}.disabled\:checked\:text-gray-400:checked:disabled{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.group\/item:first-child .group-first\/item\:rounded-s-lg{border-end-start-radius:.5rem;border-start-start-radius:.5rem}.group\/item:last-child .group-last\/item\:rounded-e-lg{border-end-end-radius:.5rem;border-start-end-radius:.5rem}.group:hover .group-hover\:text-gray-500,.group\/button:hover .group-hover\/button\:text-gray-500{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.group:hover .group-hover\:text-gray-700{--tw-text-opacity:1;color:rgba(var(--gray-700),var(--tw-text-opacity))}.group\/item:hover .group-hover\/item\:underline,.group\/link:hover .group-hover\/link\:underline{text-decoration-line:underline}.group:focus-visible .group-focus-visible\:text-gray-500{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.group:focus-visible .group-focus-visible\:text-gray-700{--tw-text-opacity:1;color:rgba(var(--gray-700),var(--tw-text-opacity))}.group\/item:focus-visible .group-focus-visible\/item\:underline{text-decoration-line:underline}.group\/link:focus-visible .group-focus-visible\/link\:underline{text-decoration-line:underline}:is(.dark .dark\:inline-flex){display:inline-flex}:is(.dark .dark\:hidden){display:none}:is(.dark .dark\:divide-white\/10)>:not([hidden])~:not([hidden]){border-color:hsla(0,0%,100%,.1)}:is(.dark .dark\:divide-white\/20)>:not([hidden])~:not([hidden]){border-color:hsla(0,0%,100%,.2)}:is(.dark .dark\:divide-white\/5)>:not([hidden])~:not([hidden]){border-color:hsla(0,0%,100%,.05)}:is(.dark .dark\:border-gray-600){--tw-border-opacity:1;border-color:rgba(var(--gray-600),var(--tw-border-opacity))}:is(.dark .dark\:border-gray-700){--tw-border-opacity:1;border-color:rgba(var(--gray-700),var(--tw-border-opacity))}:is(.dark .dark\:border-primary-500){--tw-border-opacity:1;border-color:rgba(var(--primary-500),var(--tw-border-opacity))}:is(.dark .dark\:border-white\/10){border-color:hsla(0,0%,100%,.1)}:is(.dark .dark\:border-white\/5){border-color:hsla(0,0%,100%,.05)}:is(.dark .dark\:border-t-white\/10){border-top-color:hsla(0,0%,100%,.1)}:is(.dark .dark\:\!bg-gray-700){--tw-bg-opacity:1!important;background-color:rgba(var(--gray-700),var(--tw-bg-opacity))!important}:is(.dark .dark\:bg-custom-400\/10){background-color:rgba(var(--c-400),.1)}:is(.dark .dark\:bg-custom-500){--tw-bg-opacity:1;background-color:rgba(var(--c-500),var(--tw-bg-opacity))}:is(.dark .dark\:bg-custom-500\/20){background-color:rgba(var(--c-500),.2)}:is(.dark .dark\:bg-gray-400\/10){background-color:rgba(var(--gray-400),.1)}:is(.dark .dark\:bg-gray-500){--tw-bg-opacity:1;background-color:rgba(var(--gray-500),var(--tw-bg-opacity))}:is(.dark .dark\:bg-gray-500\/20){background-color:rgba(var(--gray-500),.2)}:is(.dark .dark\:bg-gray-600){--tw-bg-opacity:1;background-color:rgba(var(--gray-600),var(--tw-bg-opacity))}:is(.dark .dark\:bg-gray-700){--tw-bg-opacity:1;background-color:rgba(var(--gray-700),var(--tw-bg-opacity))}:is(.dark .dark\:bg-gray-800){--tw-bg-opacity:1;background-color:rgba(var(--gray-800),var(--tw-bg-opacity))}:is(.dark .dark\:bg-gray-900){--tw-bg-opacity:1;background-color:rgba(var(--gray-900),var(--tw-bg-opacity))}:is(.dark .dark\:bg-gray-900\/30){background-color:rgba(var(--gray-900),.3)}:is(.dark .dark\:bg-gray-950){--tw-bg-opacity:1;background-color:rgba(var(--gray-950),var(--tw-bg-opacity))}:is(.dark .dark\:bg-gray-950\/75){background-color:rgba(var(--gray-950),.75)}:is(.dark .dark\:bg-primary-400){--tw-bg-opacity:1;background-color:rgba(var(--primary-400),var(--tw-bg-opacity))}:is(.dark .dark\:bg-primary-500){--tw-bg-opacity:1;background-color:rgba(var(--primary-500),var(--tw-bg-opacity))}:is(.dark .dark\:bg-transparent){background-color:transparent}:is(.dark .dark\:bg-white\/10){background-color:hsla(0,0%,100%,.1)}:is(.dark .dark\:bg-white\/5){background-color:hsla(0,0%,100%,.05)}:is(.dark .dark\:fill-current){fill:currentColor}:is(.dark .dark\:text-custom-300\/50){color:rgba(var(--c-300),.5)}:is(.dark .dark\:text-custom-400){--tw-text-opacity:1;color:rgba(var(--c-400),var(--tw-text-opacity))}:is(.dark .dark\:text-custom-400\/10){color:rgba(var(--c-400),.1)}:is(.dark .dark\:text-danger-400){--tw-text-opacity:1;color:rgba(var(--danger-400),var(--tw-text-opacity))}:is(.dark .dark\:text-danger-500){--tw-text-opacity:1;color:rgba(var(--danger-500),var(--tw-text-opacity))}:is(.dark .dark\:text-gray-200){--tw-text-opacity:1;color:rgba(var(--gray-200),var(--tw-text-opacity))}:is(.dark .dark\:text-gray-300\/50){color:rgba(var(--gray-300),.5)}:is(.dark .dark\:text-gray-400){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}:is(.dark .dark\:text-gray-500){--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}:is(.dark .dark\:text-gray-700){--tw-text-opacity:1;color:rgba(var(--gray-700),var(--tw-text-opacity))}:is(.dark .dark\:text-gray-800){--tw-text-opacity:1;color:rgba(var(--gray-800),var(--tw-text-opacity))}:is(.dark .dark\:text-primary-400){--tw-text-opacity:1;color:rgba(var(--primary-400),var(--tw-text-opacity))}:is(.dark .dark\:text-primary-500){--tw-text-opacity:1;color:rgba(var(--primary-500),var(--tw-text-opacity))}:is(.dark .dark\:text-white){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}:is(.dark .dark\:text-white\/5){color:hsla(0,0%,100%,.05)}:is(.dark .dark\:ring-custom-400\/30){--tw-ring-color:rgba(var(--c-400),0.3)}:is(.dark .dark\:ring-custom-500){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--c-500),var(--tw-ring-opacity))}:is(.dark .dark\:ring-danger-500){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--danger-500),var(--tw-ring-opacity))}:is(.dark .dark\:ring-gray-400\/20){--tw-ring-color:rgba(var(--gray-400),0.2)}:is(.dark .dark\:ring-gray-50\/10){--tw-ring-color:rgba(var(--gray-50),0.1)}:is(.dark .dark\:ring-gray-700){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--gray-700),var(--tw-ring-opacity))}:is(.dark .dark\:ring-gray-900){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--gray-900),var(--tw-ring-opacity))}:is(.dark .dark\:ring-white\/10){--tw-ring-color:hsla(0,0%,100%,.1)}:is(.dark .dark\:ring-white\/20){--tw-ring-color:hsla(0,0%,100%,.2)}:is(.dark .dark\:placeholder\:text-gray-500)::-moz-placeholder{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}:is(.dark .dark\:placeholder\:text-gray-500)::placeholder{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}:is(.dark .dark\:before\:bg-primary-500):before{--tw-bg-opacity:1;background-color:rgba(var(--primary-500),var(--tw-bg-opacity));content:var(--tw-content)}:is(.dark .dark\:checked\:bg-danger-500:checked){--tw-bg-opacity:1;background-color:rgba(var(--danger-500),var(--tw-bg-opacity))}:is(.dark .dark\:checked\:bg-primary-500:checked){--tw-bg-opacity:1;background-color:rgba(var(--primary-500),var(--tw-bg-opacity))}:is(.dark .dark\:focus-within\:bg-white\/5:focus-within){background-color:hsla(0,0%,100%,.05)}:is(.dark .dark\:focus-within\:ring-danger-500:focus-within){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--danger-500),var(--tw-ring-opacity))}:is(.dark .dark\:focus-within\:ring-primary-500:focus-within){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-500),var(--tw-ring-opacity))}:is(.dark .dark\:hover\:bg-custom-400:hover){--tw-bg-opacity:1;background-color:rgba(var(--c-400),var(--tw-bg-opacity))}:is(.dark .dark\:hover\:bg-custom-400\/10:hover){background-color:rgba(var(--c-400),.1)}:is(.dark .dark\:hover\:bg-white\/10:hover){background-color:hsla(0,0%,100%,.1)}:is(.dark .dark\:hover\:bg-white\/5:hover){background-color:hsla(0,0%,100%,.05)}:is(.dark .dark\:hover\:text-custom-300:hover){--tw-text-opacity:1;color:rgba(var(--c-300),var(--tw-text-opacity))}:is(.dark .dark\:hover\:text-custom-300\/75:hover){color:rgba(var(--c-300),.75)}:is(.dark .dark\:hover\:text-gray-200:hover){--tw-text-opacity:1;color:rgba(var(--gray-200),var(--tw-text-opacity))}:is(.dark .dark\:hover\:text-gray-300\/75:hover){color:rgba(var(--gray-300),.75)}:is(.dark .dark\:hover\:text-gray-400:hover){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}:is(.dark .dark\:hover\:ring-white\/20:hover){--tw-ring-color:hsla(0,0%,100%,.2)}:is(.dark .dark\:focus\:ring-danger-500:focus){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--danger-500),var(--tw-ring-opacity))}:is(.dark .dark\:focus\:ring-primary-500:focus){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-500),var(--tw-ring-opacity))}:is(.dark .dark\:checked\:focus\:ring-danger-400\/50:focus:checked){--tw-ring-color:rgba(var(--danger-400),0.5)}:is(.dark .dark\:checked\:focus\:ring-primary-400\/50:focus:checked){--tw-ring-color:rgba(var(--primary-400),0.5)}:is(.dark .dark\:focus-visible\:border-primary-500:focus-visible){--tw-border-opacity:1;border-color:rgba(var(--primary-500),var(--tw-border-opacity))}:is(.dark .dark\:focus-visible\:bg-custom-400\/10:focus-visible){background-color:rgba(var(--c-400),.1)}:is(.dark .dark\:focus-visible\:bg-white\/5:focus-visible){background-color:hsla(0,0%,100%,.05)}:is(.dark .dark\:focus-visible\:text-custom-300\/75:focus-visible){color:rgba(var(--c-300),.75)}:is(.dark .dark\:focus-visible\:text-gray-300\/75:focus-visible){color:rgba(var(--gray-300),.75)}:is(.dark .dark\:focus-visible\:text-gray-400:focus-visible){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}:is(.dark .dark\:focus-visible\:ring-custom-400\/50:focus-visible){--tw-ring-color:rgba(var(--c-400),0.5)}:is(.dark .dark\:focus-visible\:ring-custom-500:focus-visible){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--c-500),var(--tw-ring-opacity))}:is(.dark .dark\:focus-visible\:ring-primary-500:focus-visible){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-500),var(--tw-ring-opacity))}:is(.dark .dark\:disabled\:bg-transparent:disabled){background-color:transparent}:is(.dark .dark\:disabled\:text-gray-400:disabled){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}:is(.dark .dark\:disabled\:ring-white\/10:disabled){--tw-ring-color:hsla(0,0%,100%,.1)}:is(.dark .dark\:disabled\:\[-webkit-text-fill-color\:theme\(colors\.gray\.400\)\]:disabled){-webkit-text-fill-color:rgba(var(--gray-400),1)}:is(.dark .dark\:disabled\:placeholder\:\[-webkit-text-fill-color\:theme\(colors\.gray\.500\)\]:disabled)::-moz-placeholder{-webkit-text-fill-color:rgba(var(--gray-500),1)}:is(.dark .dark\:disabled\:placeholder\:\[-webkit-text-fill-color\:theme\(colors\.gray\.500\)\]:disabled)::placeholder{-webkit-text-fill-color:rgba(var(--gray-500),1)}:is(.dark .dark\:disabled\:checked\:bg-gray-600:checked:disabled){--tw-bg-opacity:1;background-color:rgba(var(--gray-600),var(--tw-bg-opacity))}:is(.dark .group\/button:hover .dark\:group-hover\/button\:text-gray-400){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}:is(.dark .group:hover .dark\:group-hover\:text-gray-200){--tw-text-opacity:1;color:rgba(var(--gray-200),var(--tw-text-opacity))}:is(.dark .group:hover .dark\:group-hover\:text-gray-400){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}:is(.dark .group:focus-visible .dark\:group-focus-visible\:text-gray-200){--tw-text-opacity:1;color:rgba(var(--gray-200),var(--tw-text-opacity))}:is(.dark .group:focus-visible .dark\:group-focus-visible\:text-gray-400){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}@media (min-width:640px){.sm\:relative{position:relative}.sm\:inset-x-auto{left:auto;right:auto}.sm\:end-0{inset-inline-end:0}.sm\:col-\[--col-span-sm\]{grid-column:var(--col-span-sm)}.sm\:col-span-2{grid-column:span 2/span 2}.sm\:col-start-\[--col-start-sm\]{grid-column-start:var(--col-start-sm)}.sm\:-mx-6{margin-left:-1.5rem;margin-right:-1.5rem}.sm\:-my-2{margin-bottom:-.5rem;margin-top:-.5rem}.sm\:ms-auto{margin-inline-start:auto}.sm\:mt-7{margin-top:1.75rem}.sm\:block{display:block}.sm\:flex{display:flex}.sm\:table-cell{display:table-cell}.sm\:grid{display:grid}.sm\:inline-grid{display:inline-grid}.sm\:hidden{display:none}.sm\:w-\[calc\(100\%\+3rem\)\]{width:calc(100% + 3rem)}.sm\:w-screen{width:100vw}.sm\:max-w-2xl{max-width:42rem}.sm\:max-w-3xl{max-width:48rem}.sm\:max-w-4xl{max-width:56rem}.sm\:max-w-5xl{max-width:64rem}.sm\:max-w-6xl{max-width:72rem}.sm\:max-w-7xl{max-width:80rem}.sm\:max-w-lg{max-width:32rem}.sm\:max-w-md{max-width:28rem}.sm\:max-w-sm{max-width:24rem}.sm\:max-w-xl{max-width:36rem}.sm\:max-w-xs{max-width:20rem}.sm\:columns-\[--cols-sm\]{-moz-columns:var(--cols-sm);columns:var(--cols-sm)}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-\[--cols-sm\]{grid-template-columns:var(--cols-sm)}.sm\:grid-cols-\[repeat\(auto-fit\2c minmax\(0\2c 1fr\)\)\]{grid-template-columns:repeat(auto-fit,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:flex-nowrap{flex-wrap:nowrap}.sm\:items-start{align-items:flex-start}.sm\:items-end{align-items:flex-end}.sm\:items-center{align-items:center}.sm\:justify-between{justify-content:space-between}.sm\:gap-1{gap:.25rem}.sm\:gap-3{gap:.75rem}.sm\:gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.sm\:rounded-xl{border-radius:.75rem}.sm\:p-10{padding:2.5rem}.sm\:px-12{padding-left:3rem;padding-right:3rem}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:py-1{padding-bottom:.25rem;padding-top:.25rem}.sm\:py-1\.5{padding-bottom:.375rem;padding-top:.375rem}.sm\:pe-3{padding-inline-end:.75rem}.sm\:pe-6{padding-inline-end:1.5rem}.sm\:ps-3{padding-inline-start:.75rem}.sm\:ps-6{padding-inline-start:1.5rem}.sm\:pt-1{padding-top:.25rem}.sm\:pt-1\.5{padding-top:.375rem}.sm\:text-3xl{font-size:1.875rem;line-height:2.25rem}.sm\:text-sm{font-size:.875rem;line-height:1.25rem}.sm\:leading-6{line-height:1.5rem}.sm\:first-of-type\:ps-3:first-of-type{padding-inline-start:.75rem}.sm\:first-of-type\:ps-6:first-of-type{padding-inline-start:1.5rem}.sm\:last-of-type\:pe-3:last-of-type{padding-inline-end:.75rem}.sm\:last-of-type\:pe-6:last-of-type{padding-inline-end:1.5rem}}@media (min-width:768px){.md\:bottom-4{bottom:1rem}.md\:order-first{order:-9999}.md\:col-\[--col-span-md\]{grid-column:var(--col-span-md)}.md\:col-span-2{grid-column:span 2/span 2}.md\:col-start-\[--col-start-md\]{grid-column-start:var(--col-start-md)}.md\:block{display:block}.md\:flex{display:flex}.md\:table-cell{display:table-cell}.md\:inline-grid{display:inline-grid}.md\:hidden{display:none}.md\:columns-\[--cols-md\]{-moz-columns:var(--cols-md);columns:var(--cols-md)}.md\:grid-flow-col{grid-auto-flow:column}.md\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-\[--cols-md\]{grid-template-columns:var(--cols-md)}.md\:flex-row{flex-direction:row}.md\:items-start{align-items:flex-start}.md\:items-center{align-items:center}.md\:justify-end{justify-content:flex-end}.md\:gap-1{gap:.25rem}.md\:gap-3{gap:.75rem}.md\:divide-y-0>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-bottom-width:calc(0px*var(--tw-divide-y-reverse));border-top-width:calc(0px*(1 - var(--tw-divide-y-reverse)))}.md\:rounded-xl{border-radius:.75rem}.md\:p-20{padding:5rem}.md\:px-6{padding-left:1.5rem;padding-right:1.5rem}.md\:pe-3{padding-inline-end:.75rem}.md\:pe-6{padding-inline-end:1.5rem}.md\:ps-3{padding-inline-start:.75rem}}@media (min-width:1024px){.lg\:sticky{position:sticky}.lg\:z-0{z-index:0}.lg\:col-\[--col-span-lg\]{grid-column:var(--col-span-lg)}.lg\:col-start-\[--col-start-lg\]{grid-column-start:var(--col-start-lg)}.lg\:block{display:block}.lg\:flex{display:flex}.lg\:table-cell{display:table-cell}.lg\:inline-grid{display:inline-grid}.lg\:hidden{display:none}.lg\:h-full{height:100%}.lg\:max-w-xs{max-width:20rem}.lg\:-translate-x-full{--tw-translate-x:-100%}.lg\:-translate-x-full,.lg\:translate-x-0{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lg\:translate-x-0{--tw-translate-x:0px}.lg\:columns-\[--cols-lg\]{-moz-columns:var(--cols-lg);columns:var(--cols-lg)}.lg\:grid-cols-\[--cols-lg\]{grid-template-columns:var(--cols-lg)}.lg\:flex-row{flex-direction:row}.lg\:items-start{align-items:flex-start}.lg\:items-center{align-items:center}.lg\:gap-1{gap:.25rem}.lg\:gap-3{gap:.75rem}.lg\:bg-transparent{background-color:transparent}.lg\:px-8{padding-left:2rem;padding-right:2rem}.lg\:pe-8{padding-inline-end:2rem}.lg\:shadow-none{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000}.lg\:shadow-none,.lg\:shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.lg\:shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.lg\:ring-0{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.lg\:transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.lg\:transition-none{transition-property:none}.lg\:delay-100{transition-delay:.1s}:is(.dark .dark\:lg\:bg-transparent){background-color:transparent}}@media (min-width:1280px){.xl\:col-\[--col-span-xl\]{grid-column:var(--col-span-xl)}.xl\:col-start-\[--col-start-xl\]{grid-column-start:var(--col-start-xl)}.xl\:block{display:block}.xl\:table-cell{display:table-cell}.xl\:inline-grid{display:inline-grid}.xl\:hidden{display:none}.xl\:columns-\[--cols-xl\]{-moz-columns:var(--cols-xl);columns:var(--cols-xl)}.xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.xl\:grid-cols-\[--cols-xl\]{grid-template-columns:var(--cols-xl)}.xl\:flex-row{flex-direction:row}.xl\:items-start{align-items:flex-start}.xl\:items-center{align-items:center}.xl\:gap-1{gap:.25rem}.xl\:gap-3{gap:.75rem}}@media (min-width:1536px){.\32xl\:col-\[--col-span-2xl\]{grid-column:var(--col-span-2xl)}.\32xl\:col-start-\[--col-start-2xl\]{grid-column-start:var(--col-start-2xl)}.\32xl\:block{display:block}.\32xl\:table-cell{display:table-cell}.\32xl\:inline-grid{display:inline-grid}.\32xl\:hidden{display:none}.\32xl\:columns-\[--cols-2xl\]{-moz-columns:var(--cols-2xl);columns:var(--cols-2xl)}.\32xl\:grid-cols-\[--cols-2xl\]{grid-template-columns:var(--cols-2xl)}.\32xl\:flex-row{flex-direction:row}.\32xl\:items-start{align-items:flex-start}.\32xl\:items-center{align-items:center}.\32xl\:gap-1{gap:.25rem}.\32xl\:gap-3{gap:.75rem}}.ltr\:hidden:where([dir=ltr],[dir=ltr] *){display:none}.rtl\:hidden:where([dir=rtl],[dir=rtl] *){display:none}.rtl\:-translate-x-0:where([dir=rtl],[dir=rtl] *){--tw-translate-x:-0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rtl\:-translate-x-5:where([dir=rtl],[dir=rtl] *){--tw-translate-x:-1.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rtl\:-translate-x-full:where([dir=rtl],[dir=rtl] *){--tw-translate-x:-100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rtl\:translate-x-1\/2:where([dir=rtl],[dir=rtl] *){--tw-translate-x:50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rtl\:translate-x-full:where([dir=rtl],[dir=rtl] *){--tw-translate-x:100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rtl\:rotate-180:where([dir=rtl],[dir=rtl] *){--tw-rotate:180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rtl\:flex-row-reverse:where([dir=rtl],[dir=rtl] *){flex-direction:row-reverse}.rtl\:divide-x-reverse:where([dir=rtl],[dir=rtl] *)>:not([hidden])~:not([hidden]){--tw-divide-x-reverse:1}@media (min-width:1024px){.rtl\:lg\:-translate-x-0:where([dir=rtl],[dir=rtl] *){--tw-translate-x:-0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rtl\:lg\:translate-x-full:where([dir=rtl],[dir=rtl] *){--tw-translate-x:100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}}.\[\&\.trix-active\]\:bg-gray-50.trix-active{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.\[\&\.trix-active\]\:text-primary-600.trix-active{--tw-text-opacity:1;color:rgba(var(--primary-600),var(--tw-text-opacity))}:is(.dark .dark\:\[\&\.trix-active\]\:bg-white\/5.trix-active){background-color:hsla(0,0%,100%,.05)}:is(.dark .dark\:\[\&\.trix-active\]\:text-primary-400.trix-active){--tw-text-opacity:1;color:rgba(var(--primary-400),var(--tw-text-opacity))}.\[\&\>\*\:first-child\]\:relative>:first-child{position:relative}.\[\&\>\*\:first-child\]\:mt-0>:first-child{margin-top:0}.\[\&\>\*\:first-child\]\:before\:absolute>:first-child:before{content:var(--tw-content);position:absolute}.\[\&\>\*\:first-child\]\:before\:inset-y-0>:first-child:before{bottom:0;content:var(--tw-content);top:0}.\[\&\>\*\:first-child\]\:before\:start-0>:first-child:before{content:var(--tw-content);inset-inline-start:0}.\[\&\>\*\:first-child\]\:before\:w-0\.5>:first-child:before{content:var(--tw-content);width:.125rem}.\[\&\>\*\:first-child\]\:before\:bg-primary-600>:first-child:before{--tw-bg-opacity:1;background-color:rgba(var(--primary-600),var(--tw-bg-opacity));content:var(--tw-content)}:is(.dark .\[\&\>\*\:first-child\]\:dark\:before\:bg-primary-500)>:first-child:before{--tw-bg-opacity:1;background-color:rgba(var(--primary-500),var(--tw-bg-opacity));content:var(--tw-content)}.\[\&\>\*\:last-child\]\:mb-0>:last-child{margin-bottom:0}.\[\&_\.choices\\_\\_inner\]\:ps-0 .choices__inner{padding-inline-start:0}.\[\&_\.fi-badge-delete-button\]\:hidden .fi-badge-delete-button{display:none}.\[\&_\.filepond--root\]\:font-sans .filepond--root{font-family:var(--font-family),ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"}.\[\&_optgroup\]\:bg-white optgroup{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}:is(.dark .\[\&_optgroup\]\:dark\:bg-gray-900) optgroup{--tw-bg-opacity:1;background-color:rgba(var(--gray-900),var(--tw-bg-opacity))}.\[\&_option\]\:bg-white option{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}:is(.dark .\[\&_option\]\:dark\:bg-gray-900) option{--tw-bg-opacity:1;background-color:rgba(var(--gray-900),var(--tw-bg-opacity))}@media(hover:hover){.\[\@media\(hover\:hover\)\]\:transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.\[\@media\(hover\:hover\)\]\:duration-75{transition-duration:75ms}} \ No newline at end of file +/*! tailwindcss v3.4.1 | MIT License | https://tailwindcss.com*/*,:after,:before{border-color:rgba(var(--gray-200),1);border-style:solid;border-width:0;box-sizing:border-box}:after,:before{--tw-content:""}:host,html{-webkit-text-size-adjust:100%;font-feature-settings:normal;-webkit-tap-highlight-color:transparent;font-family:var(--font-family),ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-variation-settings:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-feature-settings:normal;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em;font-variation-settings:normal}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{font-feature-settings:inherit;color:inherit;font-family:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:rgba(var(--gray-400),1);opacity:1}input::placeholder,textarea::placeholder{color:rgba(var(--gray-400),1);opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]{display:none}[multiple],[type=date],[type=datetime-local],[type=email],[type=month],[type=number],[type=password],[type=search],[type=tel],[type=text],[type=time],[type=url],[type=week],input:where(:not([type])),select,textarea{--tw-shadow:0 0 #0000;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:rgba(var(--gray-500),var(--tw-border-opacity,1));border-radius:0;border-width:1px;font-size:1rem;line-height:1.5rem;padding:.5rem .75rem}[multiple]:focus,[type=date]:focus,[type=datetime-local]:focus,[type=email]:focus,[type=month]:focus,[type=number]:focus,[type=password]:focus,[type=search]:focus,[type=tel]:focus,[type=text]:focus,[type=time]:focus,[type=url]:focus,[type=week]:focus,input:where(:not([type])):focus,select:focus,textarea:focus{--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#2563eb;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);border-color:#2563eb;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);outline:2px solid transparent;outline-offset:2px}input::-moz-placeholder,textarea::-moz-placeholder{color:rgba(var(--gray-500),var(--tw-text-opacity,1));opacity:1}input::placeholder,textarea::placeholder{color:rgba(var(--gray-500),var(--tw-text-opacity,1));opacity:1}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-date-and-time-value{min-height:1.5em;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-meridiem-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-year-field{padding-bottom:0;padding-top:0}select{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3E%3Cpath stroke='rgba(var(--gray-500), var(--tw-stroke-opacity, 1))' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3E%3C/svg%3E");background-position:right .5rem center;background-repeat:no-repeat;background-size:1.5em 1.5em;padding-right:2.5rem;-webkit-print-color-adjust:exact;print-color-adjust:exact}[multiple],[size]:where(select:not([size="1"])){background-image:none;background-position:0 0;background-repeat:unset;background-size:initial;padding-right:.75rem;-webkit-print-color-adjust:unset;print-color-adjust:unset}[type=checkbox],[type=radio]{--tw-shadow:0 0 #0000;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;background-origin:border-box;border-color:rgba(var(--gray-500),var(--tw-border-opacity,1));border-width:1px;color:#2563eb;display:inline-block;flex-shrink:0;height:1rem;padding:0;-webkit-print-color-adjust:exact;print-color-adjust:exact;-webkit-user-select:none;-moz-user-select:none;user-select:none;vertical-align:middle;width:1rem}[type=checkbox]{border-radius:0}[type=radio]{border-radius:100%}[type=checkbox]:focus,[type=radio]:focus{--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:2px;--tw-ring-offset-color:#fff;--tw-ring-color:#2563eb;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);outline:2px solid transparent;outline-offset:2px}[type=checkbox]:checked,[type=radio]:checked{background-color:currentColor;background-position:50%;background-repeat:no-repeat;background-size:100% 100%;border-color:transparent}[type=checkbox]:checked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12.207 4.793a1 1 0 0 1 0 1.414l-5 5a1 1 0 0 1-1.414 0l-2-2a1 1 0 0 1 1.414-1.414L6.5 9.086l4.293-4.293a1 1 0 0 1 1.414 0z'/%3E%3C/svg%3E")}@media (forced-colors:active) {[type=checkbox]:checked{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=radio]:checked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='8' cy='8' r='3'/%3E%3C/svg%3E")}@media (forced-colors:active) {[type=radio]:checked{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=checkbox]:checked:focus,[type=checkbox]:checked:hover,[type=radio]:checked:focus,[type=radio]:checked:hover{background-color:currentColor;border-color:transparent}[type=checkbox]:indeterminate{background-color:currentColor;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3E%3Cpath stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8h8'/%3E%3C/svg%3E");background-position:50%;background-repeat:no-repeat;background-size:100% 100%;border-color:transparent}@media (forced-colors:active) {[type=checkbox]:indeterminate{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=checkbox]:indeterminate:focus,[type=checkbox]:indeterminate:hover{background-color:currentColor;border-color:transparent}[type=file]{background:unset;border-color:inherit;border-radius:0;border-width:0;font-size:unset;line-height:inherit;padding:0}[type=file]:focus{outline:1px solid ButtonText;outline:1px auto -webkit-focus-ring-color}:root.dark{color-scheme:dark}[data-field-wrapper]{scroll-margin-top:8rem}*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em;margin-top:1.25em}.prose :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-bottom:1.2em;margin-top:1.2em}.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);font-weight:500;text-decoration:underline}.prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal;margin-bottom:1.25em;margin-top:1.25em;padding-left:1.625em}.prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:disc;margin-bottom:1.25em;margin-top:1.25em;padding-left:1.625em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-counters);font-weight:400}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.25em}.prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-bottom:3em;margin-top:3em}.prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){border-left-color:var(--tw-prose-quote-borders);border-left-width:.25rem;color:var(--tw-prose-quotes);font-style:italic;font-weight:500;margin-bottom:1.6em;margin-top:1.6em;padding-left:1em;quotes:"\201C""\201D""\2018""\2019"}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-size:2.25em;font-weight:800;line-height:1.1111111;margin-bottom:.8888889em;margin-top:0}.prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:900}.prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-size:1.5em;font-weight:700;line-height:1.3333333;margin-bottom:1em;margin-top:2em}.prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:800}.prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-size:1.25em;font-weight:600;line-height:1.6;margin-bottom:.6em;margin-top:1.6em}.prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:700}.prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;line-height:1.5;margin-bottom:.5em;margin-top:1.5em}.prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:700}.prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){display:block;margin-bottom:2em;margin-top:2em}.prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.3125rem;box-shadow:0 0 0 1px rgb(var(--tw-prose-kbd-shadows)/10%),0 3px 0 rgb(var(--tw-prose-kbd-shadows)/10%);color:var(--tw-prose-kbd);font-family:inherit;font-size:.875em;font-weight:500;padding:.1875em .375em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code);font-size:.875em;font-weight:600}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:"`"}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:"`"}.prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:var(--tw-prose-pre-bg);border-radius:.375rem;color:var(--tw-prose-pre-code);font-size:.875em;font-weight:400;line-height:1.7142857;margin-bottom:1.7142857em;margin-top:1.7142857em;overflow-x:auto;padding:.8571429em 1.1428571em}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:transparent;border-radius:0;border-width:0;color:inherit;font-family:inherit;font-size:inherit;font-weight:inherit;line-height:inherit;padding:0}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:none}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em;line-height:1.7142857;margin-bottom:2em;margin-top:2em;table-layout:auto;text-align:left;width:100%}.prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-color:var(--tw-prose-th-borders);border-bottom-width:1px}.prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;padding-bottom:.5714286em;padding-left:.5714286em;padding-right:.5714286em;vertical-align:bottom}.prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-color:var(--tw-prose-td-borders);border-bottom-width:1px}.prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-color:var(--tw-prose-th-borders);border-top-width:1px}.prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose{--tw-prose-body:#374151;--tw-prose-headings:#111827;--tw-prose-lead:#4b5563;--tw-prose-links:#111827;--tw-prose-bold:#111827;--tw-prose-counters:#6b7280;--tw-prose-bullets:#d1d5db;--tw-prose-hr:#e5e7eb;--tw-prose-quotes:#111827;--tw-prose-quote-borders:#e5e7eb;--tw-prose-captions:#6b7280;--tw-prose-kbd:#111827;--tw-prose-kbd-shadows:17 24 39;--tw-prose-code:#111827;--tw-prose-pre-code:#e5e7eb;--tw-prose-pre-bg:#1f2937;--tw-prose-th-borders:#d1d5db;--tw-prose-td-borders:#e5e7eb;--tw-prose-invert-body:#d1d5db;--tw-prose-invert-headings:#fff;--tw-prose-invert-lead:#9ca3af;--tw-prose-invert-links:#fff;--tw-prose-invert-bold:#fff;--tw-prose-invert-counters:#9ca3af;--tw-prose-invert-bullets:#4b5563;--tw-prose-invert-hr:#374151;--tw-prose-invert-quotes:#f3f4f6;--tw-prose-invert-quote-borders:#374151;--tw-prose-invert-captions:#9ca3af;--tw-prose-invert-kbd:#fff;--tw-prose-invert-kbd-shadows:255 255 255;--tw-prose-invert-code:#fff;--tw-prose-invert-pre-code:#d1d5db;--tw-prose-invert-pre-bg:rgba(0,0,0,.5);--tw-prose-invert-th-borders:#4b5563;--tw-prose-invert-td-borders:#374151;font-size:1rem;line-height:1.75}.prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.5em;margin-top:.5em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.375em}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.75em;margin-top:.75em}.prose :where(.prose>ul>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.75em;margin-top:.75em}.prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em;margin-top:1.25em}.prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-left:1.625em}.prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding:.5714286em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.prose-sm{font-size:.875rem;line-height:1.7142857}.prose-sm :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em;margin-top:1.1428571em}.prose-sm :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.2857143em;line-height:1.5555556;margin-bottom:.8888889em;margin-top:.8888889em}.prose-sm :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em;margin-top:1.3333333em;padding-left:1.1111111em}.prose-sm :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:2.1428571em;line-height:1.2;margin-bottom:.8em;margin-top:0}.prose-sm :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.4285714em;line-height:1.4;margin-bottom:.8em;margin-top:1.6em}.prose-sm :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.2857143em;line-height:1.5555556;margin-bottom:.4444444em;margin-top:1.5555556em}.prose-sm :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){line-height:1.4285714;margin-bottom:.5714286em;margin-top:1.4285714em}.prose-sm :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7142857em;margin-top:1.7142857em}.prose-sm :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7142857em;margin-top:1.7142857em}.prose-sm :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose-sm :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7142857em;margin-top:1.7142857em}.prose-sm :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.3125rem;font-size:.8571429em;padding:.1428571em .3571429em}.prose-sm :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8571429em}.prose-sm :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.9em}.prose-sm :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8888889em}.prose-sm :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.25rem;font-size:.8571429em;line-height:1.6666667;margin-bottom:1.6666667em;margin-top:1.6666667em;padding:.6666667em 1em}.prose-sm :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em;margin-top:1.1428571em;padding-left:1.5714286em}.prose-sm :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em;margin-top:1.1428571em;padding-left:1.5714286em}.prose-sm :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.2857143em;margin-top:.2857143em}.prose-sm :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.4285714em}.prose-sm :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.4285714em}.prose-sm :where(.prose-sm>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.5714286em;margin-top:.5714286em}.prose-sm :where(.prose-sm>ul>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.1428571em}.prose-sm :where(.prose-sm>ul>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em}.prose-sm :where(.prose-sm>ol>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.1428571em}.prose-sm :where(.prose-sm>ol>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em}.prose-sm :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.5714286em;margin-top:.5714286em}.prose-sm :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em;margin-top:1.1428571em}.prose-sm :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.1428571em}.prose-sm :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.2857143em;padding-left:1.5714286em}.prose-sm :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2.8571429em;margin-top:2.8571429em}.prose-sm :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8571429em;line-height:1.5}.prose-sm :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){padding-bottom:.6666667em;padding-left:1em;padding-right:1em}.prose-sm :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose-sm :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose-sm :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding:.6666667em 1em}.prose-sm :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose-sm :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose-sm :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7142857em;margin-top:1.7142857em}.prose-sm :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose-sm :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8571429em;line-height:1.3333333;margin-top:.6666667em}.prose-sm :where(.prose-sm>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(.prose-sm>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.prose-base{font-size:1rem;line-height:1.75}.prose-base :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em;margin-top:1.25em}.prose-base :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.25em;line-height:1.6;margin-bottom:1.2em;margin-top:1.2em}.prose-base :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.6em;margin-top:1.6em;padding-left:1em}.prose-base :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:2.25em;line-height:1.1111111;margin-bottom:.8888889em;margin-top:0}.prose-base :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.5em;line-height:1.3333333;margin-bottom:1em;margin-top:2em}.prose-base :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.25em;line-height:1.6;margin-bottom:.6em;margin-top:1.6em}.prose-base :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){line-height:1.5;margin-bottom:.5em;margin-top:1.5em}.prose-base :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose-base :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose-base :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose-base :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose-base :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.3125rem;font-size:.875em;padding:.1875em .375em}.prose-base :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em}.prose-base :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em}.prose-base :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.9em}.prose-base :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.375rem;font-size:.875em;line-height:1.7142857;margin-bottom:1.7142857em;margin-top:1.7142857em;padding:.8571429em 1.1428571em}.prose-base :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em;margin-top:1.25em;padding-left:1.625em}.prose-base :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em;margin-top:1.25em;padding-left:1.625em}.prose-base :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.5em;margin-top:.5em}.prose-base :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.375em}.prose-base :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.375em}.prose-base :where(.prose-base>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.75em;margin-top:.75em}.prose-base :where(.prose-base>ul>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose-base :where(.prose-base>ul>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose-base :where(.prose-base>ol>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose-base :where(.prose-base>ol>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose-base :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.75em;margin-top:.75em}.prose-base :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em;margin-top:1.25em}.prose-base :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose-base :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-left:1.625em}.prose-base :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:3em;margin-top:3em}.prose-base :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-base :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-base :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-base :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-base :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em;line-height:1.7142857}.prose-base :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){padding-bottom:.5714286em;padding-left:.5714286em;padding-right:.5714286em}.prose-base :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose-base :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose-base :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding:.5714286em}.prose-base :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose-base :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose-base :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose-base :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose-base :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose-base :where(.prose-base>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-base :where(.prose-base>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.prose-lg{font-size:1.125rem;line-height:1.7777778}.prose-lg :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em;margin-top:1.3333333em}.prose-lg :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.2222222em;line-height:1.4545455;margin-bottom:1.0909091em;margin-top:1.0909091em}.prose-lg :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.6666667em;margin-top:1.6666667em;padding-left:1em}.prose-lg :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:2.6666667em;line-height:1;margin-bottom:.8333333em;margin-top:0}.prose-lg :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.6666667em;line-height:1.3333333;margin-bottom:1.0666667em;margin-top:1.8666667em}.prose-lg :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.3333333em;line-height:1.5;margin-bottom:.6666667em;margin-top:1.6666667em}.prose-lg :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){line-height:1.5555556;margin-bottom:.4444444em;margin-top:1.7777778em}.prose-lg :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7777778em;margin-top:1.7777778em}.prose-lg :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7777778em;margin-top:1.7777778em}.prose-lg :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose-lg :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7777778em;margin-top:1.7777778em}.prose-lg :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.3125rem;font-size:.8888889em;padding:.2222222em .4444444em}.prose-lg :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8888889em}.prose-lg :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8666667em}.prose-lg :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em}.prose-lg :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.375rem;font-size:.8888889em;line-height:1.75;margin-bottom:2em;margin-top:2em;padding:1em 1.5em}.prose-lg :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em;margin-top:1.3333333em;padding-left:1.5555556em}.prose-lg :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em;margin-top:1.3333333em;padding-left:1.5555556em}.prose-lg :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.6666667em;margin-top:.6666667em}.prose-lg :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.4444444em}.prose-lg :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.4444444em}.prose-lg :where(.prose-lg>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.8888889em;margin-top:.8888889em}.prose-lg :where(.prose-lg>ul>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.3333333em}.prose-lg :where(.prose-lg>ul>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em}.prose-lg :where(.prose-lg>ol>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.3333333em}.prose-lg :where(.prose-lg>ol>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em}.prose-lg :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.8888889em;margin-top:.8888889em}.prose-lg :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em;margin-top:1.3333333em}.prose-lg :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.3333333em}.prose-lg :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.6666667em;padding-left:1.5555556em}.prose-lg :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:3.1111111em;margin-top:3.1111111em}.prose-lg :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-lg :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-lg :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-lg :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-lg :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8888889em;line-height:1.5}.prose-lg :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){padding-bottom:.75em;padding-left:.75em;padding-right:.75em}.prose-lg :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose-lg :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose-lg :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding:.75em}.prose-lg :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose-lg :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose-lg :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7777778em;margin-top:1.7777778em}.prose-lg :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose-lg :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8888889em;line-height:1.5;margin-top:1em}.prose-lg :where(.prose-lg>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-lg :where(.prose-lg>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.sr-only{clip:rect(0,0,0,0);border-width:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.visible{visibility:visible}.invisible{visibility:hidden}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.inset-4{inset:1rem}.inset-x-0{left:0;right:0}.inset-x-4{left:1rem;right:1rem}.inset-y-0{bottom:0;top:0}.-bottom-1\/2{bottom:-50%}.-top-1{top:-.25rem}.-top-1\/2{top:-50%}.-top-2{top:-.5rem}.-top-3{top:-.75rem}.bottom-0{bottom:0}.bottom-1\/2{bottom:50%}.end-0{inset-inline-end:0}.end-4{inset-inline-end:1rem}.end-6{inset-inline-end:1.5rem}.left-3{left:.75rem}.start-0{inset-inline-start:0}.start-full{inset-inline-start:100%}.top-0{top:0}.top-1\/2{top:50%}.top-4{top:1rem}.top-6{top:1.5rem}.isolate{isolation:isolate}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.z-\[1\]{z-index:1}.col-\[--col-span-default\]{grid-column:var(--col-span-default)}.col-span-full{grid-column:1/-1}.col-start-2{grid-column-start:2}.col-start-3{grid-column-start:3}.col-start-\[--col-start-default\]{grid-column-start:var(--col-start-default)}.-m-0{margin:0}.-m-0\.5{margin:-.125rem}.-m-1{margin:-.25rem}.-m-1\.5{margin:-.375rem}.-m-2{margin:-.5rem}.-m-2\.5{margin:-.625rem}.-m-3{margin:-.75rem}.-m-3\.5{margin:-.875rem}.-mx-2{margin-left:-.5rem;margin-right:-.5rem}.-mx-4{margin-left:-1rem;margin-right:-1rem}.-mx-6{margin-left:-1.5rem;margin-right:-1.5rem}.-my-1{margin-bottom:-.25rem;margin-top:-.25rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-3{margin-left:.75rem;margin-right:.75rem}.mx-auto{margin-left:auto;margin-right:auto}.my-16{margin-bottom:4rem;margin-top:4rem}.my-2{margin-bottom:.5rem;margin-top:.5rem}.my-4{margin-bottom:1rem;margin-top:1rem}.my-auto{margin-bottom:auto;margin-top:auto}.\!mt-0{margin-top:0!important}.-mb-4{margin-bottom:-1rem}.-mb-6{margin-bottom:-1.5rem}.-me-2{margin-inline-end:-.5rem}.-ms-0{margin-inline-start:0}.-ms-0\.5{margin-inline-start:-.125rem}.-ms-1{margin-inline-start:-.25rem}.-ms-2{margin-inline-start:-.5rem}.-mt-3{margin-top:-.75rem}.-mt-4{margin-top:-1rem}.-mt-6{margin-top:-1.5rem}.-mt-7{margin-top:-1.75rem}.mb-2{margin-bottom:.5rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.me-1{margin-inline-end:.25rem}.me-4{margin-inline-end:1rem}.me-6{margin-inline-end:1.5rem}.ml-auto{margin-left:auto}.ms-1{margin-inline-start:.25rem}.ms-auto{margin-inline-start:auto}.mt-0{margin-top:0}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-6{margin-top:1.5rem}.mt-auto{margin-top:auto}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.inline-grid{display:inline-grid}.hidden{display:none}.h-0{height:0}.h-1{height:.25rem}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-11{height:2.75rem}.h-16{height:4rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-32{height:8rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-96{height:24rem}.h-full{height:100%}.h-screen{height:100vh}.max-h-96{max-height:24rem}.min-h-\[theme\(spacing\.48\)\]{min-height:12rem}.min-h-full{min-height:100%}.min-h-screen{min-height:100vh}.w-1{width:.25rem}.w-1\.5{width:.375rem}.w-1\/2{width:50%}.w-10{width:2.5rem}.w-11{width:2.75rem}.w-16{width:4rem}.w-20{width:5rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-32{width:8rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-7{width:1.75rem}.w-72{width:18rem}.w-8{width:2rem}.w-9{width:2.25rem}.w-\[--sidebar-width\]{width:var(--sidebar-width)}.w-\[calc\(100\%\+2rem\)\]{width:calc(100% + 2rem)}.w-auto{width:auto}.w-full{width:100%}.w-max{width:-moz-max-content;width:max-content}.w-px{width:1px}.w-screen{width:100vw}.min-w-0{min-width:0}.min-w-\[theme\(spacing\.4\)\]{min-width:1rem}.min-w-\[theme\(spacing\.5\)\]{min-width:1.25rem}.min-w-\[theme\(spacing\.6\)\]{min-width:1.5rem}.min-w-\[theme\(spacing\.8\)\]{min-width:2rem}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.max-w-4xl{max-width:56rem}.max-w-5xl{max-width:64rem}.max-w-6xl{max-width:72rem}.max-w-7xl{max-width:80rem}.max-w-\[14rem\]{max-width:14rem}.max-w-fit{max-width:-moz-fit-content;max-width:fit-content}.max-w-full{max-width:100%}.max-w-lg{max-width:32rem}.max-w-max{max-width:-moz-max-content;max-width:max-content}.max-w-md{max-width:28rem}.max-w-min{max-width:-moz-min-content;max-width:min-content}.max-w-none{max-width:none}.max-w-prose{max-width:65ch}.max-w-screen-2xl{max-width:1536px}.max-w-screen-lg{max-width:1024px}.max-w-screen-md{max-width:768px}.max-w-screen-sm{max-width:640px}.max-w-screen-xl{max-width:1280px}.max-w-sm{max-width:24rem}.max-w-xl{max-width:36rem}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.shrink-0{flex-shrink:0}.flex-grow,.grow{flex-grow:1}.table-auto{table-layout:auto}.-translate-x-1\/2{--tw-translate-x:-50%}.-translate-x-12,.-translate-x-1\/2{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-x-12{--tw-translate-x:-3rem}.-translate-x-5{--tw-translate-x:-1.25rem}.-translate-x-5,.-translate-x-full{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-x-full{--tw-translate-x:-100%}.-translate-y-12{--tw-translate-y:-3rem}.-translate-y-12,.translate-x-0{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-0{--tw-translate-x:0px}.translate-x-12{--tw-translate-x:3rem}.translate-x-12,.translate-x-5{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-5{--tw-translate-x:1.25rem}.translate-x-full{--tw-translate-x:100%}.translate-x-full,.translate-y-12{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-12{--tw-translate-y:3rem}.-rotate-180{--tw-rotate:-180deg}.-rotate-180,.rotate-180{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180{--tw-rotate:180deg}.scale-100{--tw-scale-x:1;--tw-scale-y:1}.scale-100,.scale-95{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-95{--tw-scale-x:.95;--tw-scale-y:.95}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(1turn)}}.animate-spin{animation:spin 1s linear infinite}.cursor-default{cursor:default}.cursor-move{cursor:move}.cursor-pointer{cursor:pointer}.cursor-wait{cursor:wait}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize-none{resize:none}.scroll-mt-9{scroll-margin-top:2.25rem}.list-inside{list-style-position:inside}.list-disc{list-style-type:disc}.columns-\[--cols-default\]{-moz-columns:var(--cols-default);columns:var(--cols-default)}.break-inside-avoid{-moz-column-break-inside:avoid;break-inside:avoid}.auto-cols-fr{grid-auto-columns:minmax(0,1fr)}.grid-flow-col{grid-auto-flow:column}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.grid-cols-\[--cols-default\]{grid-template-columns:var(--cols-default)}.grid-cols-\[1fr_auto_1fr\]{grid-template-columns:1fr auto 1fr}.grid-cols-\[repeat\(7\2c minmax\(theme\(spacing\.7\)\2c 1fr\)\)\]{grid-template-columns:repeat(7,minmax(1.75rem,1fr))}.grid-cols-\[repeat\(auto-fit\2c minmax\(0\2c 1fr\)\)\]{grid-template-columns:repeat(auto-fit,minmax(0,1fr))}.flex-row-reverse{flex-direction:row-reverse}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.content-start{align-content:flex-start}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-items-start{justify-items:start}.justify-items-center{justify-items:center}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.gap-x-1{-moz-column-gap:.25rem;column-gap:.25rem}.gap-x-1\.5{-moz-column-gap:.375rem;column-gap:.375rem}.gap-x-2{-moz-column-gap:.5rem;column-gap:.5rem}.gap-x-2\.5{-moz-column-gap:.625rem;column-gap:.625rem}.gap-x-3{-moz-column-gap:.75rem;column-gap:.75rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-x-5{-moz-column-gap:1.25rem;column-gap:1.25rem}.gap-x-6{-moz-column-gap:1.5rem;column-gap:1.5rem}.gap-y-1{row-gap:.25rem}.gap-y-1\.5{row-gap:.375rem}.gap-y-2{row-gap:.5rem}.gap-y-3{row-gap:.75rem}.gap-y-4{row-gap:1rem}.gap-y-6{row-gap:1.5rem}.gap-y-7{row-gap:1.75rem}.gap-y-8{row-gap:2rem}.gap-y-px{row-gap:1px}.-space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-.25rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-.25rem*var(--tw-space-x-reverse))}.-space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-.5rem*var(--tw-space-x-reverse))}.-space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-.75rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-.75rem*var(--tw-space-x-reverse))}.-space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-1rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-1rem*var(--tw-space-x-reverse))}.-space-x-5>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-1.25rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-1.25rem*var(--tw-space-x-reverse))}.-space-x-6>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-1.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-1.5rem*var(--tw-space-x-reverse))}.-space-x-7>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-1.75rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-1.75rem*var(--tw-space-x-reverse))}.-space-x-8>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-2rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-2rem*var(--tw-space-x-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.25rem*var(--tw-space-y-reverse));margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.5rem*var(--tw-space-y-reverse));margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.75rem*var(--tw-space-y-reverse));margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1rem*var(--tw-space-y-reverse));margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1.5rem*var(--tw-space-y-reverse));margin-top:calc(1.5rem*(1 - var(--tw-space-y-reverse)))}.divide-x>:not([hidden])~:not([hidden]){--tw-divide-x-reverse:0;border-left-width:calc(1px*(1 - var(--tw-divide-x-reverse)));border-right-width:calc(1px*var(--tw-divide-x-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-bottom-width:calc(1px*var(--tw-divide-y-reverse));border-top-width:calc(1px*(1 - var(--tw-divide-y-reverse)))}.divide-gray-100>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgba(var(--gray-100),var(--tw-divide-opacity))}.divide-gray-200>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgba(var(--gray-200),var(--tw-divide-opacity))}.self-start{align-self:flex-start}.self-stretch{align-self:stretch}.justify-self-start{justify-self:start}.justify-self-end{justify-self:end}.justify-self-center{justify-self:center}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-hidden{overflow-y:hidden}.overflow-x-clip{overflow-x:clip}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-normal{white-space:normal}.whitespace-nowrap{white-space:nowrap}.break-words{overflow-wrap:break-word}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-xl{border-radius:.75rem}.rounded-b-xl{border-bottom-left-radius:.75rem;border-bottom-right-radius:.75rem}.rounded-t-xl{border-top-left-radius:.75rem;border-top-right-radius:.75rem}.border{border-width:1px}.border-2{border-width:2px}.border-x-\[0\.5px\]{border-left-width:.5px;border-right-width:.5px}.border-y{border-bottom-width:1px;border-top-width:1px}.\!border-t-0{border-top-width:0!important}.border-b{border-bottom-width:1px}.border-b-0{border-bottom-width:0}.border-e{border-inline-end-width:1px}.border-s{border-inline-start-width:1px}.border-t{border-top-width:1px}.\!border-none{border-style:none!important}.border-none{border-style:none}.border-gray-100{--tw-border-opacity:1;border-color:rgba(var(--gray-100),var(--tw-border-opacity))}.border-gray-200{--tw-border-opacity:1;border-color:rgba(var(--gray-200),var(--tw-border-opacity))}.border-gray-300{--tw-border-opacity:1;border-color:rgba(var(--gray-300),var(--tw-border-opacity))}.border-gray-600{--tw-border-opacity:1;border-color:rgba(var(--gray-600),var(--tw-border-opacity))}.border-primary-500{--tw-border-opacity:1;border-color:rgba(var(--primary-500),var(--tw-border-opacity))}.border-primary-600{--tw-border-opacity:1;border-color:rgba(var(--primary-600),var(--tw-border-opacity))}.border-transparent{border-color:transparent}.border-t-gray-200{--tw-border-opacity:1;border-top-color:rgba(var(--gray-200),var(--tw-border-opacity))}.\!bg-gray-50{--tw-bg-opacity:1!important;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))!important}.\!bg-gray-700{--tw-bg-opacity:1!important;background-color:rgba(var(--gray-700),var(--tw-bg-opacity))!important}.bg-black\/50{background-color:rgba(0,0,0,.5)}.bg-custom-100{--tw-bg-opacity:1;background-color:rgba(var(--c-100),var(--tw-bg-opacity))}.bg-custom-50{--tw-bg-opacity:1;background-color:rgba(var(--c-50),var(--tw-bg-opacity))}.bg-custom-600{--tw-bg-opacity:1;background-color:rgba(var(--c-600),var(--tw-bg-opacity))}.bg-gray-100{--tw-bg-opacity:1;background-color:rgba(var(--gray-100),var(--tw-bg-opacity))}.bg-gray-200{--tw-bg-opacity:1;background-color:rgba(var(--gray-200),var(--tw-bg-opacity))}.bg-gray-300{--tw-bg-opacity:1;background-color:rgba(var(--gray-300),var(--tw-bg-opacity))}.bg-gray-400{--tw-bg-opacity:1;background-color:rgba(var(--gray-400),var(--tw-bg-opacity))}.bg-gray-50{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.bg-gray-950\/50{background-color:rgba(var(--gray-950),.5)}.bg-primary-500{--tw-bg-opacity:1;background-color:rgba(var(--primary-500),var(--tw-bg-opacity))}.bg-primary-600{--tw-bg-opacity:1;background-color:rgba(var(--primary-600),var(--tw-bg-opacity))}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.bg-white\/0{background-color:hsla(0,0%,100%,0)}.bg-white\/5{background-color:hsla(0,0%,100%,.05)}.bg-cover{background-size:cover}.bg-center{background-position:50%}.object-cover{-o-object-fit:cover;object-fit:cover}.object-center{-o-object-position:center;object-position:center}.p-0{padding:0}.p-0\.5{padding:.125rem}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.px-0{padding-left:0;padding-right:0}.px-0\.5{padding-left:.125rem;padding-right:.125rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-3\.5{padding-left:.875rem;padding-right:.875rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-0{padding-bottom:0;padding-top:0}.py-0\.5{padding-bottom:.125rem;padding-top:.125rem}.py-1{padding-bottom:.25rem;padding-top:.25rem}.py-1\.5{padding-bottom:.375rem;padding-top:.375rem}.py-12{padding-bottom:3rem;padding-top:3rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.py-2\.5{padding-bottom:.625rem;padding-top:.625rem}.py-3{padding-bottom:.75rem;padding-top:.75rem}.py-3\.5{padding-bottom:.875rem;padding-top:.875rem}.py-4{padding-bottom:1rem;padding-top:1rem}.py-5{padding-bottom:1.25rem;padding-top:1.25rem}.py-6{padding-bottom:1.5rem;padding-top:1.5rem}.py-8{padding-bottom:2rem;padding-top:2rem}.pb-4{padding-bottom:1rem}.pb-6{padding-bottom:1.5rem}.pe-0{padding-inline-end:0}.pe-1{padding-inline-end:.25rem}.pe-2{padding-inline-end:.5rem}.pe-3{padding-inline-end:.75rem}.pe-4{padding-inline-end:1rem}.pe-6{padding-inline-end:1.5rem}.pe-8{padding-inline-end:2rem}.ps-0{padding-inline-start:0}.ps-1{padding-inline-start:.25rem}.ps-2{padding-inline-start:.5rem}.ps-3{padding-inline-start:.75rem}.ps-4{padding-inline-start:1rem}.ps-\[5\.25rem\]{padding-inline-start:5.25rem}.pt-0{padding-top:0}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.pt-6{padding-top:1.5rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-justify{text-align:justify}.text-start{text-align:start}.text-end{text-align:end}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.font-sans{font-family:var(--font-family),ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"}.font-serif{font-family:ui-serif,Georgia,Cambria,Times New Roman,Times,serif}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-black{font-weight:900}.font-bold{font-weight:700}.font-extrabold{font-weight:800}.font-extralight{font-weight:200}.font-light{font-weight:300}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.font-thin{font-weight:100}.capitalize{text-transform:capitalize}.italic{font-style:italic}.leading-5{line-height:1.25rem}.leading-6{line-height:1.5rem}.leading-loose{line-height:2}.tracking-tight{letter-spacing:-.025em}.tracking-tighter{letter-spacing:-.05em}.text-custom-400{--tw-text-opacity:1;color:rgba(var(--c-400),var(--tw-text-opacity))}.text-custom-50{--tw-text-opacity:1;color:rgba(var(--c-50),var(--tw-text-opacity))}.text-custom-500{--tw-text-opacity:1;color:rgba(var(--c-500),var(--tw-text-opacity))}.text-custom-600{--tw-text-opacity:1;color:rgba(var(--c-600),var(--tw-text-opacity))}.text-custom-700\/50{color:rgba(var(--c-700),.5)}.text-danger-600{--tw-text-opacity:1;color:rgba(var(--danger-600),var(--tw-text-opacity))}.text-gray-100{--tw-text-opacity:1;color:rgba(var(--gray-100),var(--tw-text-opacity))}.text-gray-200{--tw-text-opacity:1;color:rgba(var(--gray-200),var(--tw-text-opacity))}.text-gray-400{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity:1;color:rgba(var(--gray-600),var(--tw-text-opacity))}.text-gray-700{--tw-text-opacity:1;color:rgba(var(--gray-700),var(--tw-text-opacity))}.text-gray-700\/50{color:rgba(var(--gray-700),.5)}.text-gray-950{--tw-text-opacity:1;color:rgba(var(--gray-950),var(--tw-text-opacity))}.text-primary-400{--tw-text-opacity:1;color:rgba(var(--primary-400),var(--tw-text-opacity))}.text-primary-500{--tw-text-opacity:1;color:rgba(var(--primary-500),var(--tw-text-opacity))}.text-primary-600{--tw-text-opacity:1;color:rgba(var(--primary-600),var(--tw-text-opacity))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.underline{text-decoration-line:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-50{opacity:.5}.opacity-70{opacity:.7}.shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.shadow,.shadow-lg{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.shadow-sm,.shadow-xl{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color)}.outline-none{outline:2px solid transparent;outline-offset:2px}.ring{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring,.ring-0{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-0{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring-1{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring-1,.ring-2{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-2{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring-4{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-inset{--tw-ring-inset:inset}.ring-custom-600{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--c-600),var(--tw-ring-opacity))}.ring-custom-600\/10{--tw-ring-color:rgba(var(--c-600),0.1)}.ring-custom-600\/20{--tw-ring-color:rgba(var(--c-600),0.2)}.ring-danger-600{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--danger-600),var(--tw-ring-opacity))}.ring-gray-200{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--gray-200),var(--tw-ring-opacity))}.ring-gray-300{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--gray-300),var(--tw-ring-opacity))}.ring-gray-600\/10{--tw-ring-color:rgba(var(--gray-600),0.1)}.ring-gray-900\/10{--tw-ring-color:rgba(var(--gray-900),0.1)}.ring-gray-950\/10{--tw-ring-color:rgba(var(--gray-950),0.1)}.ring-gray-950\/5{--tw-ring-color:rgba(var(--gray-950),0.05)}.ring-white{--tw-ring-opacity:1;--tw-ring-color:rgb(255 255 255/var(--tw-ring-opacity))}.ring-white\/10{--tw-ring-color:hsla(0,0%,100%,.1)}.blur{--tw-blur:blur(8px)}.blur,.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-all{transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-colors{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-opacity{transition-duration:.15s;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}.delay-100{transition-delay:.1s}.duration-100{transition-duration:.1s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.duration-500{transition-duration:.5s}.duration-75{transition-duration:75ms}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.\[transform\:translateZ\(0\)\]{transform:translateZ(0)}:is(.dark .dark\:prose-invert){--tw-prose-body:var(--tw-prose-invert-body);--tw-prose-headings:var(--tw-prose-invert-headings);--tw-prose-lead:var(--tw-prose-invert-lead);--tw-prose-links:var(--tw-prose-invert-links);--tw-prose-bold:var(--tw-prose-invert-bold);--tw-prose-counters:var(--tw-prose-invert-counters);--tw-prose-bullets:var(--tw-prose-invert-bullets);--tw-prose-hr:var(--tw-prose-invert-hr);--tw-prose-quotes:var(--tw-prose-invert-quotes);--tw-prose-quote-borders:var(--tw-prose-invert-quote-borders);--tw-prose-captions:var(--tw-prose-invert-captions);--tw-prose-kbd:var(--tw-prose-invert-kbd);--tw-prose-kbd-shadows:var(--tw-prose-invert-kbd-shadows);--tw-prose-code:var(--tw-prose-invert-code);--tw-prose-pre-code:var(--tw-prose-invert-pre-code);--tw-prose-pre-bg:var(--tw-prose-invert-pre-bg);--tw-prose-th-borders:var(--tw-prose-invert-th-borders);--tw-prose-td-borders:var(--tw-prose-invert-td-borders)}.placeholder\:text-gray-400::-moz-placeholder{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.placeholder\:text-gray-400::placeholder{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.before\:absolute:before{content:var(--tw-content);position:absolute}.before\:inset-y-0:before{bottom:0;content:var(--tw-content);top:0}.before\:start-0:before{content:var(--tw-content);inset-inline-start:0}.before\:h-full:before{content:var(--tw-content);height:100%}.before\:w-0:before{content:var(--tw-content);width:0}.before\:w-0\.5:before{content:var(--tw-content);width:.125rem}.before\:bg-primary-600:before{--tw-bg-opacity:1;background-color:rgba(var(--primary-600),var(--tw-bg-opacity));content:var(--tw-content)}.first\:border-s-0:first-child{border-inline-start-width:0}.first\:border-t-0:first-child{border-top-width:0}.last\:border-e-0:last-child{border-inline-end-width:0}.first-of-type\:ps-1:first-of-type{padding-inline-start:.25rem}.last-of-type\:pe-1:last-of-type{padding-inline-end:.25rem}.checked\:ring-0:checked{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-within\:bg-gray-50:focus-within{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.focus-within\:ring-2:focus-within{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-within\:ring-danger-600:focus-within{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--danger-600),var(--tw-ring-opacity))}.focus-within\:ring-primary-600:focus-within{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-600),var(--tw-ring-opacity))}.hover\:bg-custom-400\/10:hover{background-color:rgba(var(--c-400),.1)}.hover\:bg-custom-50:hover{--tw-bg-opacity:1;background-color:rgba(var(--c-50),var(--tw-bg-opacity))}.hover\:bg-custom-500:hover{--tw-bg-opacity:1;background-color:rgba(var(--c-500),var(--tw-bg-opacity))}.hover\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgba(var(--gray-100),var(--tw-bg-opacity))}.hover\:bg-gray-400\/10:hover{background-color:rgba(var(--gray-400),.1)}.hover\:bg-gray-50:hover{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.hover\:text-custom-600:hover{--tw-text-opacity:1;color:rgba(var(--c-600),var(--tw-text-opacity))}.hover\:text-custom-700\/75:hover{color:rgba(var(--c-700),.75)}.hover\:text-gray-500:hover{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.hover\:text-gray-700:hover{--tw-text-opacity:1;color:rgba(var(--gray-700),var(--tw-text-opacity))}.hover\:text-gray-700\/75:hover{color:rgba(var(--gray-700),.75)}.hover\:opacity-100:hover{opacity:1}.focus\:ring-0:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\:ring-0:focus,.focus\:ring-2:focus{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\:ring-danger-600:focus{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--danger-600),var(--tw-ring-opacity))}.focus\:ring-primary-600:focus{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-600),var(--tw-ring-opacity))}.focus\:ring-offset-0:focus{--tw-ring-offset-width:0px}.checked\:focus\:ring-danger-500\/50:focus:checked{--tw-ring-color:rgba(var(--danger-500),0.5)}.checked\:focus\:ring-primary-500\/50:focus:checked{--tw-ring-color:rgba(var(--primary-500),0.5)}.focus-visible\:z-10:focus-visible{z-index:10}.focus-visible\:border-primary-500:focus-visible{--tw-border-opacity:1;border-color:rgba(var(--primary-500),var(--tw-border-opacity))}.focus-visible\:bg-custom-50:focus-visible{--tw-bg-opacity:1;background-color:rgba(var(--c-50),var(--tw-bg-opacity))}.focus-visible\:bg-gray-100:focus-visible{--tw-bg-opacity:1;background-color:rgba(var(--gray-100),var(--tw-bg-opacity))}.focus-visible\:bg-gray-50:focus-visible{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.focus-visible\:text-custom-700\/75:focus-visible{color:rgba(var(--c-700),.75)}.focus-visible\:text-gray-500:focus-visible{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.focus-visible\:text-gray-700\/75:focus-visible{color:rgba(var(--gray-700),.75)}.focus-visible\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\:ring-1:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\:ring-inset:focus-visible{--tw-ring-inset:inset}.focus-visible\:ring-custom-500\/50:focus-visible{--tw-ring-color:rgba(var(--c-500),0.5)}.focus-visible\:ring-custom-600:focus-visible{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--c-600),var(--tw-ring-opacity))}.focus-visible\:ring-gray-400\/40:focus-visible{--tw-ring-color:rgba(var(--gray-400),0.4)}.focus-visible\:ring-primary-500:focus-visible{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-500),var(--tw-ring-opacity))}.focus-visible\:ring-primary-600:focus-visible{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-600),var(--tw-ring-opacity))}.enabled\:cursor-wait:enabled{cursor:wait}.enabled\:opacity-70:enabled{opacity:.7}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:bg-gray-50:disabled{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.disabled\:text-gray-50:disabled{--tw-text-opacity:1;color:rgba(var(--gray-50),var(--tw-text-opacity))}.disabled\:text-gray-500:disabled{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.disabled\:opacity-70:disabled{opacity:.7}.disabled\:\[-webkit-text-fill-color\:theme\(colors\.gray\.500\)\]:disabled{-webkit-text-fill-color:rgba(var(--gray-500),1)}.disabled\:placeholder\:\[-webkit-text-fill-color\:theme\(colors\.gray\.400\)\]:disabled::-moz-placeholder{-webkit-text-fill-color:rgba(var(--gray-400),1)}.disabled\:placeholder\:\[-webkit-text-fill-color\:theme\(colors\.gray\.400\)\]:disabled::placeholder{-webkit-text-fill-color:rgba(var(--gray-400),1)}.disabled\:checked\:bg-current:checked:disabled{background-color:currentColor}.disabled\:checked\:text-gray-400:checked:disabled{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.group\/item:first-child .group-first\/item\:rounded-s-lg{border-end-start-radius:.5rem;border-start-start-radius:.5rem}.group\/item:last-child .group-last\/item\:rounded-e-lg{border-end-end-radius:.5rem;border-start-end-radius:.5rem}.group:hover .group-hover\:text-gray-500,.group\/button:hover .group-hover\/button\:text-gray-500{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.group:hover .group-hover\:text-gray-700{--tw-text-opacity:1;color:rgba(var(--gray-700),var(--tw-text-opacity))}.group\/item:hover .group-hover\/item\:underline,.group\/link:hover .group-hover\/link\:underline{text-decoration-line:underline}.group:focus-visible .group-focus-visible\:text-gray-500{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.group:focus-visible .group-focus-visible\:text-gray-700{--tw-text-opacity:1;color:rgba(var(--gray-700),var(--tw-text-opacity))}.group\/item:focus-visible .group-focus-visible\/item\:underline{text-decoration-line:underline}.group\/link:focus-visible .group-focus-visible\/link\:underline{text-decoration-line:underline}:is(.dark .dark\:inline-flex){display:inline-flex}:is(.dark .dark\:hidden){display:none}:is(.dark .dark\:divide-white\/10)>:not([hidden])~:not([hidden]){border-color:hsla(0,0%,100%,.1)}:is(.dark .dark\:divide-white\/5)>:not([hidden])~:not([hidden]){border-color:hsla(0,0%,100%,.05)}:is(.dark .dark\:border-gray-600){--tw-border-opacity:1;border-color:rgba(var(--gray-600),var(--tw-border-opacity))}:is(.dark .dark\:border-gray-700){--tw-border-opacity:1;border-color:rgba(var(--gray-700),var(--tw-border-opacity))}:is(.dark .dark\:border-primary-500){--tw-border-opacity:1;border-color:rgba(var(--primary-500),var(--tw-border-opacity))}:is(.dark .dark\:border-white\/10){border-color:hsla(0,0%,100%,.1)}:is(.dark .dark\:border-white\/5){border-color:hsla(0,0%,100%,.05)}:is(.dark .dark\:border-t-white\/10){border-top-color:hsla(0,0%,100%,.1)}:is(.dark .dark\:\!bg-gray-700){--tw-bg-opacity:1!important;background-color:rgba(var(--gray-700),var(--tw-bg-opacity))!important}:is(.dark .dark\:bg-custom-400\/10){background-color:rgba(var(--c-400),.1)}:is(.dark .dark\:bg-custom-500){--tw-bg-opacity:1;background-color:rgba(var(--c-500),var(--tw-bg-opacity))}:is(.dark .dark\:bg-custom-500\/20){background-color:rgba(var(--c-500),.2)}:is(.dark .dark\:bg-gray-400\/10){background-color:rgba(var(--gray-400),.1)}:is(.dark .dark\:bg-gray-500){--tw-bg-opacity:1;background-color:rgba(var(--gray-500),var(--tw-bg-opacity))}:is(.dark .dark\:bg-gray-500\/20){background-color:rgba(var(--gray-500),.2)}:is(.dark .dark\:bg-gray-600){--tw-bg-opacity:1;background-color:rgba(var(--gray-600),var(--tw-bg-opacity))}:is(.dark .dark\:bg-gray-700){--tw-bg-opacity:1;background-color:rgba(var(--gray-700),var(--tw-bg-opacity))}:is(.dark .dark\:bg-gray-800){--tw-bg-opacity:1;background-color:rgba(var(--gray-800),var(--tw-bg-opacity))}:is(.dark .dark\:bg-gray-900){--tw-bg-opacity:1;background-color:rgba(var(--gray-900),var(--tw-bg-opacity))}:is(.dark .dark\:bg-gray-900\/30){background-color:rgba(var(--gray-900),.3)}:is(.dark .dark\:bg-gray-950){--tw-bg-opacity:1;background-color:rgba(var(--gray-950),var(--tw-bg-opacity))}:is(.dark .dark\:bg-gray-950\/75){background-color:rgba(var(--gray-950),.75)}:is(.dark .dark\:bg-primary-400){--tw-bg-opacity:1;background-color:rgba(var(--primary-400),var(--tw-bg-opacity))}:is(.dark .dark\:bg-primary-500){--tw-bg-opacity:1;background-color:rgba(var(--primary-500),var(--tw-bg-opacity))}:is(.dark .dark\:bg-transparent){background-color:transparent}:is(.dark .dark\:bg-white\/10){background-color:hsla(0,0%,100%,.1)}:is(.dark .dark\:bg-white\/5){background-color:hsla(0,0%,100%,.05)}:is(.dark .dark\:fill-current){fill:currentColor}:is(.dark .dark\:text-custom-300\/50){color:rgba(var(--c-300),.5)}:is(.dark .dark\:text-custom-400){--tw-text-opacity:1;color:rgba(var(--c-400),var(--tw-text-opacity))}:is(.dark .dark\:text-custom-400\/10){color:rgba(var(--c-400),.1)}:is(.dark .dark\:text-danger-400){--tw-text-opacity:1;color:rgba(var(--danger-400),var(--tw-text-opacity))}:is(.dark .dark\:text-danger-500){--tw-text-opacity:1;color:rgba(var(--danger-500),var(--tw-text-opacity))}:is(.dark .dark\:text-gray-200){--tw-text-opacity:1;color:rgba(var(--gray-200),var(--tw-text-opacity))}:is(.dark .dark\:text-gray-300\/50){color:rgba(var(--gray-300),.5)}:is(.dark .dark\:text-gray-400){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}:is(.dark .dark\:text-gray-500){--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}:is(.dark .dark\:text-gray-700){--tw-text-opacity:1;color:rgba(var(--gray-700),var(--tw-text-opacity))}:is(.dark .dark\:text-gray-800){--tw-text-opacity:1;color:rgba(var(--gray-800),var(--tw-text-opacity))}:is(.dark .dark\:text-primary-400){--tw-text-opacity:1;color:rgba(var(--primary-400),var(--tw-text-opacity))}:is(.dark .dark\:text-primary-500){--tw-text-opacity:1;color:rgba(var(--primary-500),var(--tw-text-opacity))}:is(.dark .dark\:text-white){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}:is(.dark .dark\:text-white\/5){color:hsla(0,0%,100%,.05)}:is(.dark .dark\:ring-custom-400\/30){--tw-ring-color:rgba(var(--c-400),0.3)}:is(.dark .dark\:ring-custom-500){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--c-500),var(--tw-ring-opacity))}:is(.dark .dark\:ring-danger-500){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--danger-500),var(--tw-ring-opacity))}:is(.dark .dark\:ring-gray-400\/20){--tw-ring-color:rgba(var(--gray-400),0.2)}:is(.dark .dark\:ring-gray-50\/10){--tw-ring-color:rgba(var(--gray-50),0.1)}:is(.dark .dark\:ring-gray-700){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--gray-700),var(--tw-ring-opacity))}:is(.dark .dark\:ring-gray-900){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--gray-900),var(--tw-ring-opacity))}:is(.dark .dark\:ring-white\/10){--tw-ring-color:hsla(0,0%,100%,.1)}:is(.dark .dark\:ring-white\/20){--tw-ring-color:hsla(0,0%,100%,.2)}:is(.dark .dark\:placeholder\:text-gray-500)::-moz-placeholder{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}:is(.dark .dark\:placeholder\:text-gray-500)::placeholder{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}:is(.dark .dark\:before\:bg-primary-500):before{--tw-bg-opacity:1;background-color:rgba(var(--primary-500),var(--tw-bg-opacity));content:var(--tw-content)}:is(.dark .dark\:checked\:bg-danger-500:checked){--tw-bg-opacity:1;background-color:rgba(var(--danger-500),var(--tw-bg-opacity))}:is(.dark .dark\:checked\:bg-primary-500:checked){--tw-bg-opacity:1;background-color:rgba(var(--primary-500),var(--tw-bg-opacity))}:is(.dark .dark\:focus-within\:bg-white\/5:focus-within){background-color:hsla(0,0%,100%,.05)}:is(.dark .dark\:focus-within\:ring-danger-500:focus-within){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--danger-500),var(--tw-ring-opacity))}:is(.dark .dark\:focus-within\:ring-primary-500:focus-within){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-500),var(--tw-ring-opacity))}:is(.dark .dark\:hover\:bg-custom-400:hover){--tw-bg-opacity:1;background-color:rgba(var(--c-400),var(--tw-bg-opacity))}:is(.dark .dark\:hover\:bg-custom-400\/10:hover){background-color:rgba(var(--c-400),.1)}:is(.dark .dark\:hover\:bg-white\/10:hover){background-color:hsla(0,0%,100%,.1)}:is(.dark .dark\:hover\:bg-white\/5:hover){background-color:hsla(0,0%,100%,.05)}:is(.dark .dark\:hover\:text-custom-300:hover){--tw-text-opacity:1;color:rgba(var(--c-300),var(--tw-text-opacity))}:is(.dark .dark\:hover\:text-custom-300\/75:hover){color:rgba(var(--c-300),.75)}:is(.dark .dark\:hover\:text-gray-200:hover){--tw-text-opacity:1;color:rgba(var(--gray-200),var(--tw-text-opacity))}:is(.dark .dark\:hover\:text-gray-300\/75:hover){color:rgba(var(--gray-300),.75)}:is(.dark .dark\:hover\:text-gray-400:hover){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}:is(.dark .dark\:hover\:ring-white\/20:hover){--tw-ring-color:hsla(0,0%,100%,.2)}:is(.dark .dark\:focus\:ring-danger-500:focus){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--danger-500),var(--tw-ring-opacity))}:is(.dark .dark\:focus\:ring-primary-500:focus){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-500),var(--tw-ring-opacity))}:is(.dark .dark\:checked\:focus\:ring-danger-400\/50:focus:checked){--tw-ring-color:rgba(var(--danger-400),0.5)}:is(.dark .dark\:checked\:focus\:ring-primary-400\/50:focus:checked){--tw-ring-color:rgba(var(--primary-400),0.5)}:is(.dark .dark\:focus-visible\:border-primary-500:focus-visible){--tw-border-opacity:1;border-color:rgba(var(--primary-500),var(--tw-border-opacity))}:is(.dark .dark\:focus-visible\:bg-custom-400\/10:focus-visible){background-color:rgba(var(--c-400),.1)}:is(.dark .dark\:focus-visible\:bg-white\/5:focus-visible){background-color:hsla(0,0%,100%,.05)}:is(.dark .dark\:focus-visible\:text-custom-300\/75:focus-visible){color:rgba(var(--c-300),.75)}:is(.dark .dark\:focus-visible\:text-gray-300\/75:focus-visible){color:rgba(var(--gray-300),.75)}:is(.dark .dark\:focus-visible\:text-gray-400:focus-visible){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}:is(.dark .dark\:focus-visible\:ring-custom-400\/50:focus-visible){--tw-ring-color:rgba(var(--c-400),0.5)}:is(.dark .dark\:focus-visible\:ring-custom-500:focus-visible){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--c-500),var(--tw-ring-opacity))}:is(.dark .dark\:focus-visible\:ring-primary-500:focus-visible){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-500),var(--tw-ring-opacity))}:is(.dark .dark\:disabled\:bg-transparent:disabled){background-color:transparent}:is(.dark .dark\:disabled\:text-gray-400:disabled){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}:is(.dark .dark\:disabled\:ring-white\/10:disabled){--tw-ring-color:hsla(0,0%,100%,.1)}:is(.dark .dark\:disabled\:\[-webkit-text-fill-color\:theme\(colors\.gray\.400\)\]:disabled){-webkit-text-fill-color:rgba(var(--gray-400),1)}:is(.dark .dark\:disabled\:placeholder\:\[-webkit-text-fill-color\:theme\(colors\.gray\.500\)\]:disabled)::-moz-placeholder{-webkit-text-fill-color:rgba(var(--gray-500),1)}:is(.dark .dark\:disabled\:placeholder\:\[-webkit-text-fill-color\:theme\(colors\.gray\.500\)\]:disabled)::placeholder{-webkit-text-fill-color:rgba(var(--gray-500),1)}:is(.dark .dark\:disabled\:checked\:bg-gray-600:checked:disabled){--tw-bg-opacity:1;background-color:rgba(var(--gray-600),var(--tw-bg-opacity))}:is(.dark .group\/button:hover .dark\:group-hover\/button\:text-gray-400){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}:is(.dark .group:hover .dark\:group-hover\:text-gray-200){--tw-text-opacity:1;color:rgba(var(--gray-200),var(--tw-text-opacity))}:is(.dark .group:hover .dark\:group-hover\:text-gray-400){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}:is(.dark .group:focus-visible .dark\:group-focus-visible\:text-gray-200){--tw-text-opacity:1;color:rgba(var(--gray-200),var(--tw-text-opacity))}:is(.dark .group:focus-visible .dark\:group-focus-visible\:text-gray-400){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}@media (min-width:640px){.sm\:relative{position:relative}.sm\:inset-x-auto{left:auto;right:auto}.sm\:end-0{inset-inline-end:0}.sm\:col-\[--col-span-sm\]{grid-column:var(--col-span-sm)}.sm\:col-span-2{grid-column:span 2/span 2}.sm\:col-start-\[--col-start-sm\]{grid-column-start:var(--col-start-sm)}.sm\:-mx-6{margin-left:-1.5rem;margin-right:-1.5rem}.sm\:-my-2{margin-bottom:-.5rem;margin-top:-.5rem}.sm\:ms-auto{margin-inline-start:auto}.sm\:mt-7{margin-top:1.75rem}.sm\:block{display:block}.sm\:flex{display:flex}.sm\:table-cell{display:table-cell}.sm\:grid{display:grid}.sm\:inline-grid{display:inline-grid}.sm\:hidden{display:none}.sm\:w-\[calc\(100\%\+3rem\)\]{width:calc(100% + 3rem)}.sm\:w-screen{width:100vw}.sm\:max-w-2xl{max-width:42rem}.sm\:max-w-3xl{max-width:48rem}.sm\:max-w-4xl{max-width:56rem}.sm\:max-w-5xl{max-width:64rem}.sm\:max-w-6xl{max-width:72rem}.sm\:max-w-7xl{max-width:80rem}.sm\:max-w-lg{max-width:32rem}.sm\:max-w-md{max-width:28rem}.sm\:max-w-sm{max-width:24rem}.sm\:max-w-xl{max-width:36rem}.sm\:max-w-xs{max-width:20rem}.sm\:columns-\[--cols-sm\]{-moz-columns:var(--cols-sm);columns:var(--cols-sm)}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-\[--cols-sm\]{grid-template-columns:var(--cols-sm)}.sm\:grid-cols-\[repeat\(auto-fit\2c minmax\(0\2c 1fr\)\)\]{grid-template-columns:repeat(auto-fit,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:flex-nowrap{flex-wrap:nowrap}.sm\:items-start{align-items:flex-start}.sm\:items-end{align-items:flex-end}.sm\:items-center{align-items:center}.sm\:justify-between{justify-content:space-between}.sm\:gap-1{gap:.25rem}.sm\:gap-3{gap:.75rem}.sm\:gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.sm\:rounded-xl{border-radius:.75rem}.sm\:p-10{padding:2.5rem}.sm\:px-12{padding-left:3rem;padding-right:3rem}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:py-1{padding-bottom:.25rem;padding-top:.25rem}.sm\:py-1\.5{padding-bottom:.375rem;padding-top:.375rem}.sm\:pe-3{padding-inline-end:.75rem}.sm\:pe-6{padding-inline-end:1.5rem}.sm\:ps-3{padding-inline-start:.75rem}.sm\:ps-6{padding-inline-start:1.5rem}.sm\:pt-1{padding-top:.25rem}.sm\:pt-1\.5{padding-top:.375rem}.sm\:text-3xl{font-size:1.875rem;line-height:2.25rem}.sm\:text-sm{font-size:.875rem;line-height:1.25rem}.sm\:leading-6{line-height:1.5rem}.sm\:first-of-type\:ps-3:first-of-type{padding-inline-start:.75rem}.sm\:first-of-type\:ps-6:first-of-type{padding-inline-start:1.5rem}.sm\:last-of-type\:pe-3:last-of-type{padding-inline-end:.75rem}.sm\:last-of-type\:pe-6:last-of-type{padding-inline-end:1.5rem}}@media (min-width:768px){.md\:bottom-4{bottom:1rem}.md\:order-first{order:-9999}.md\:col-\[--col-span-md\]{grid-column:var(--col-span-md)}.md\:col-span-2{grid-column:span 2/span 2}.md\:col-start-\[--col-start-md\]{grid-column-start:var(--col-start-md)}.md\:block{display:block}.md\:flex{display:flex}.md\:table-cell{display:table-cell}.md\:inline-grid{display:inline-grid}.md\:hidden{display:none}.md\:columns-\[--cols-md\]{-moz-columns:var(--cols-md);columns:var(--cols-md)}.md\:grid-flow-col{grid-auto-flow:column}.md\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-\[--cols-md\]{grid-template-columns:var(--cols-md)}.md\:flex-row{flex-direction:row}.md\:items-start{align-items:flex-start}.md\:items-end{align-items:flex-end}.md\:items-center{align-items:center}.md\:justify-end{justify-content:flex-end}.md\:gap-1{gap:.25rem}.md\:gap-3{gap:.75rem}.md\:divide-y-0>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-bottom-width:calc(0px*var(--tw-divide-y-reverse));border-top-width:calc(0px*(1 - var(--tw-divide-y-reverse)))}.md\:rounded-xl{border-radius:.75rem}.md\:p-20{padding:5rem}.md\:px-6{padding-left:1.5rem;padding-right:1.5rem}.md\:pe-3{padding-inline-end:.75rem}.md\:pe-6{padding-inline-end:1.5rem}.md\:ps-3{padding-inline-start:.75rem}}@media (min-width:1024px){.lg\:sticky{position:sticky}.lg\:z-0{z-index:0}.lg\:col-\[--col-span-lg\]{grid-column:var(--col-span-lg)}.lg\:col-start-\[--col-start-lg\]{grid-column-start:var(--col-start-lg)}.lg\:block{display:block}.lg\:flex{display:flex}.lg\:table-cell{display:table-cell}.lg\:inline-grid{display:inline-grid}.lg\:hidden{display:none}.lg\:h-full{height:100%}.lg\:max-w-xs{max-width:20rem}.lg\:-translate-x-full{--tw-translate-x:-100%}.lg\:-translate-x-full,.lg\:translate-x-0{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lg\:translate-x-0{--tw-translate-x:0px}.lg\:columns-\[--cols-lg\]{-moz-columns:var(--cols-lg);columns:var(--cols-lg)}.lg\:grid-cols-\[--cols-lg\]{grid-template-columns:var(--cols-lg)}.lg\:flex-row{flex-direction:row}.lg\:items-start{align-items:flex-start}.lg\:items-end{align-items:flex-end}.lg\:items-center{align-items:center}.lg\:gap-1{gap:.25rem}.lg\:gap-3{gap:.75rem}.lg\:bg-transparent{background-color:transparent}.lg\:px-8{padding-left:2rem;padding-right:2rem}.lg\:pe-8{padding-inline-end:2rem}.lg\:shadow-none{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000}.lg\:shadow-none,.lg\:shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.lg\:shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.lg\:ring-0{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.lg\:transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.lg\:transition-none{transition-property:none}.lg\:delay-100{transition-delay:.1s}:is(.dark .dark\:lg\:bg-transparent){background-color:transparent}}@media (min-width:1280px){.xl\:col-\[--col-span-xl\]{grid-column:var(--col-span-xl)}.xl\:col-start-\[--col-start-xl\]{grid-column-start:var(--col-start-xl)}.xl\:block{display:block}.xl\:table-cell{display:table-cell}.xl\:inline-grid{display:inline-grid}.xl\:hidden{display:none}.xl\:columns-\[--cols-xl\]{-moz-columns:var(--cols-xl);columns:var(--cols-xl)}.xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.xl\:grid-cols-\[--cols-xl\]{grid-template-columns:var(--cols-xl)}.xl\:flex-row{flex-direction:row}.xl\:items-start{align-items:flex-start}.xl\:items-end{align-items:flex-end}.xl\:items-center{align-items:center}.xl\:gap-1{gap:.25rem}.xl\:gap-3{gap:.75rem}}@media (min-width:1536px){.\32xl\:col-\[--col-span-2xl\]{grid-column:var(--col-span-2xl)}.\32xl\:col-start-\[--col-start-2xl\]{grid-column-start:var(--col-start-2xl)}.\32xl\:block{display:block}.\32xl\:table-cell{display:table-cell}.\32xl\:inline-grid{display:inline-grid}.\32xl\:hidden{display:none}.\32xl\:columns-\[--cols-2xl\]{-moz-columns:var(--cols-2xl);columns:var(--cols-2xl)}.\32xl\:grid-cols-\[--cols-2xl\]{grid-template-columns:var(--cols-2xl)}.\32xl\:flex-row{flex-direction:row}.\32xl\:items-start{align-items:flex-start}.\32xl\:items-end{align-items:flex-end}.\32xl\:items-center{align-items:center}.\32xl\:gap-1{gap:.25rem}.\32xl\:gap-3{gap:.75rem}}.ltr\:hidden:where([dir=ltr],[dir=ltr] *){display:none}.rtl\:hidden:where([dir=rtl],[dir=rtl] *){display:none}.rtl\:-translate-x-0:where([dir=rtl],[dir=rtl] *){--tw-translate-x:-0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rtl\:-translate-x-5:where([dir=rtl],[dir=rtl] *){--tw-translate-x:-1.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rtl\:-translate-x-full:where([dir=rtl],[dir=rtl] *){--tw-translate-x:-100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rtl\:translate-x-1\/2:where([dir=rtl],[dir=rtl] *){--tw-translate-x:50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rtl\:translate-x-full:where([dir=rtl],[dir=rtl] *){--tw-translate-x:100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rtl\:rotate-180:where([dir=rtl],[dir=rtl] *){--tw-rotate:180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rtl\:flex-row-reverse:where([dir=rtl],[dir=rtl] *){flex-direction:row-reverse}.rtl\:divide-x-reverse:where([dir=rtl],[dir=rtl] *)>:not([hidden])~:not([hidden]){--tw-divide-x-reverse:1}@media (min-width:1024px){.rtl\:lg\:-translate-x-0:where([dir=rtl],[dir=rtl] *){--tw-translate-x:-0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rtl\:lg\:translate-x-full:where([dir=rtl],[dir=rtl] *){--tw-translate-x:100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}}.\[\&\.trix-active\]\:bg-gray-50.trix-active{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.\[\&\.trix-active\]\:text-primary-600.trix-active{--tw-text-opacity:1;color:rgba(var(--primary-600),var(--tw-text-opacity))}:is(.dark .dark\:\[\&\.trix-active\]\:bg-white\/5.trix-active){background-color:hsla(0,0%,100%,.05)}:is(.dark .dark\:\[\&\.trix-active\]\:text-primary-400.trix-active){--tw-text-opacity:1;color:rgba(var(--primary-400),var(--tw-text-opacity))}.\[\&\:not\(\:first-of-type\)\]\:border-s:not(:first-of-type){border-inline-start-width:1px}.\[\&\:not\(\:last-of-type\)\]\:border-e:not(:last-of-type){border-inline-end-width:1px}.\[\&\:not\(\:nth-child\(1_of_\.fi-btn\)\)\]\:shadow-\[-1px_0_0_0_theme\(colors\.gray\.200\)\]:not(:nth-child(1 of .fi-btn)){--tw-shadow:-1px 0 0 0 rgba(var(--gray-200),1);--tw-shadow-colored:-1px 0 0 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}:is(.dark .dark\:\[\&\:not\(\:nth-child\(1_of_\.fi-btn\)\)\]\:shadow-\[-1px_0_0_0_theme\(colors\.white\/20\%\)\]:not(:nth-child(1 of .fi-btn))){--tw-shadow:-1px 0 0 0 hsla(0,0%,100%,.2);--tw-shadow-colored:-1px 0 0 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.\[\&\:not\(\:nth-last-child\(1_of_\.fi-btn\)\)\]\:me-px:not(:nth-last-child(1 of .fi-btn)){margin-inline-end:1px}.\[\&\:nth-child\(1_of_\.fi-btn\)\]\:rounded-s-lg:nth-child(1 of .fi-btn){border-end-start-radius:.5rem;border-start-start-radius:.5rem}.\[\&\:nth-last-child\(1_of_\.fi-btn\)\]\:rounded-e-lg:nth-last-child(1 of .fi-btn){border-end-end-radius:.5rem;border-start-end-radius:.5rem}.\[\&\>\*\:first-child\]\:relative>:first-child{position:relative}.\[\&\>\*\:first-child\]\:mt-0>:first-child{margin-top:0}.\[\&\>\*\:first-child\]\:before\:absolute>:first-child:before{content:var(--tw-content);position:absolute}.\[\&\>\*\:first-child\]\:before\:inset-y-0>:first-child:before{bottom:0;content:var(--tw-content);top:0}.\[\&\>\*\:first-child\]\:before\:start-0>:first-child:before{content:var(--tw-content);inset-inline-start:0}.\[\&\>\*\:first-child\]\:before\:w-0\.5>:first-child:before{content:var(--tw-content);width:.125rem}.\[\&\>\*\:first-child\]\:before\:bg-primary-600>:first-child:before{--tw-bg-opacity:1;background-color:rgba(var(--primary-600),var(--tw-bg-opacity));content:var(--tw-content)}:is(.dark .\[\&\>\*\:first-child\]\:dark\:before\:bg-primary-500)>:first-child:before{--tw-bg-opacity:1;background-color:rgba(var(--primary-500),var(--tw-bg-opacity));content:var(--tw-content)}.\[\&\>\*\:last-child\]\:mb-0>:last-child{margin-bottom:0}.\[\&_\.choices\\_\\_inner\]\:ps-0 .choices__inner{padding-inline-start:0}.\[\&_\.fi-badge-delete-button\]\:hidden .fi-badge-delete-button{display:none}.\[\&_\.filepond--root\]\:font-sans .filepond--root{font-family:var(--font-family),ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"}.\[\&_optgroup\]\:bg-white optgroup{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}:is(.dark .\[\&_optgroup\]\:dark\:bg-gray-900) optgroup{--tw-bg-opacity:1;background-color:rgba(var(--gray-900),var(--tw-bg-opacity))}.\[\&_option\]\:bg-white option{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}:is(.dark .\[\&_option\]\:dark\:bg-gray-900) option{--tw-bg-opacity:1;background-color:rgba(var(--gray-900),var(--tw-bg-opacity))}:checked+*>.\[\:checked\+\*\>\&\]\:text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}@media(hover:hover){.\[\@media\(hover\:hover\)\]\:transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.\[\@media\(hover\:hover\)\]\:duration-75{transition-duration:75ms}}input:checked+.\[input\:checked\+\&\]\:bg-custom-600{--tw-bg-opacity:1;background-color:rgba(var(--c-600),var(--tw-bg-opacity))}input:checked+.\[input\:checked\+\&\]\:text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}input:checked+.\[input\:checked\+\&\]\:ring-0{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}input:checked+.\[input\:checked\+\&\]\:hover\:bg-custom-500:hover{--tw-bg-opacity:1;background-color:rgba(var(--c-500),var(--tw-bg-opacity))}:is(.dark input:checked+.dark\:\[input\:checked\+\&\]\:bg-custom-500){--tw-bg-opacity:1;background-color:rgba(var(--c-500),var(--tw-bg-opacity))}:is(.dark input:checked+.dark\:\[input\:checked\+\&\]\:hover\:bg-custom-400:hover){--tw-bg-opacity:1;background-color:rgba(var(--c-400),var(--tw-bg-opacity))}input:checked:focus-visible+.\[input\:checked\:focus-visible\+\&\]\:ring-custom-500\/50{--tw-ring-color:rgba(var(--c-500),0.5)}:is(.dark input:checked:focus-visible+.dark\:\[input\:checked\:focus-visible\+\&\]\:ring-custom-400\/50){--tw-ring-color:rgba(var(--c-400),0.5)}input:focus-visible+.\[input\:focus-visible\+\&\]\:z-10{z-index:10}input:focus-visible+.\[input\:focus-visible\+\&\]\:ring-2{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}input:focus-visible+.\[input\:focus-visible\+\&\]\:ring-gray-950\/10{--tw-ring-color:rgba(var(--gray-950),0.1)}:is(.dark input:focus-visible+.dark\:\[input\:focus-visible\+\&\]\:ring-white\/20){--tw-ring-color:hsla(0,0%,100%,.2)} \ No newline at end of file diff --git a/public/js/filament/forms/components/color-picker.js b/public/js/filament/forms/components/color-picker.js index a3ff70c85..67e4f5d6f 100644 --- a/public/js/filament/forms/components/color-picker.js +++ b/public/js/filament/forms/components/color-picker.js @@ -1 +1 @@ -var l=(e,t=0,r=1)=>e>r?r:eMath.round(r*e)/r;var nt={grad:360/400,turn:360,rad:360/(Math.PI*2)},B=e=>J(x(e)),x=e=>(e[0]==="#"&&(e=e.substr(1)),e.length<6?{r:parseInt(e[0]+e[0],16),g:parseInt(e[1]+e[1],16),b:parseInt(e[2]+e[2],16),a:1}:{r:parseInt(e.substr(0,2),16),g:parseInt(e.substr(2,2),16),b:parseInt(e.substr(4,2),16),a:1}),it=(e,t="deg")=>Number(e)*(nt[t]||1),lt=e=>{let r=/hsla?\(?\s*(-?\d*\.?\d+)(deg|rad|grad|turn)?[,\s]+(-?\d*\.?\d+)%?[,\s]+(-?\d*\.?\d+)%?,?\s*[/\s]*(-?\d*\.?\d+)?(%)?\s*\)?/i.exec(e);return r?ct({h:it(r[1],r[2]),s:Number(r[3]),l:Number(r[4]),a:r[5]===void 0?1:Number(r[5])/(r[6]?100:1)}):{h:0,s:0,v:0,a:1}},F=lt,ct=({h:e,s:t,l:r,a:s})=>(t*=(r<50?r:100-r)/100,{h:e,s:t>0?2*t/(r+t)*100:0,v:r+t,a:s}),X=e=>pt(N(e)),Y=({h:e,s:t,v:r,a:s})=>{let o=(200-t)*r/100;return{h:n(e),s:n(o>0&&o<200?t*r/100/(o<=100?o:200-o)*100:0),l:n(o/2),a:n(s,2)}};var u=e=>{let{h:t,s:r,l:s}=Y(e);return`hsl(${t}, ${r}%, ${s}%)`},b=e=>{let{h:t,s:r,l:s,a:o}=Y(e);return`hsla(${t}, ${r}%, ${s}%, ${o})`},N=({h:e,s:t,v:r,a:s})=>{e=e/360*6,t=t/100,r=r/100;let o=Math.floor(e),a=r*(1-t),i=r*(1-(e-o)*t),E=r*(1-(1-e+o)*t),q=o%6;return{r:n([r,i,a,a,E,r][q]*255),g:n([E,r,r,i,a,a][q]*255),b:n([a,a,E,r,r,i][q]*255),a:n(s,2)}},_=e=>{let{r:t,g:r,b:s}=N(e);return`rgb(${t}, ${r}, ${s})`},U=e=>{let{r:t,g:r,b:s,a:o}=N(e);return`rgba(${t}, ${r}, ${s}, ${o})`};var A=e=>{let r=/rgba?\(?\s*(-?\d*\.?\d+)(%)?[,\s]+(-?\d*\.?\d+)(%)?[,\s]+(-?\d*\.?\d+)(%)?,?\s*[/\s]*(-?\d*\.?\d+)?(%)?\s*\)?/i.exec(e);return r?J({r:Number(r[1])/(r[2]?100/255:1),g:Number(r[3])/(r[4]?100/255:1),b:Number(r[5])/(r[6]?100/255:1),a:r[7]===void 0?1:Number(r[7])/(r[8]?100:1)}):{h:0,s:0,v:0,a:1}},G=A,L=e=>{let t=e.toString(16);return t.length<2?"0"+t:t},pt=({r:e,g:t,b:r})=>"#"+L(e)+L(t)+L(r),J=({r:e,g:t,b:r,a:s})=>{let o=Math.max(e,t,r),a=o-Math.min(e,t,r),i=a?o===e?(t-r)/a:o===t?2+(r-e)/a:4+(e-t)/a:0;return{h:n(60*(i<0?i+6:i)),s:n(o?a/o*100:0),v:n(o/255*100),a:s}};var I=(e,t)=>{if(e===t)return!0;for(let r in e)if(e[r]!==t[r])return!1;return!0},d=(e,t)=>e.replace(/\s/g,"")===t.replace(/\s/g,""),K=(e,t)=>e.toLowerCase()===t.toLowerCase()?!0:I(x(e),x(t));var Q={},v=e=>{let t=Q[e];return t||(t=document.createElement("template"),t.innerHTML=e,Q[e]=t),t},m=(e,t,r)=>{e.dispatchEvent(new CustomEvent(t,{bubbles:!0,detail:r}))};var h=!1,O=e=>"touches"in e,ut=e=>h&&!O(e)?!1:(h||(h=O(e)),!0),W=(e,t)=>{let r=O(t)?t.touches[0]:t,s=e.el.getBoundingClientRect();m(e.el,"move",e.getMove({x:l((r.pageX-(s.left+window.pageXOffset))/s.width),y:l((r.pageY-(s.top+window.pageYOffset))/s.height)}))},dt=(e,t)=>{let r=t.keyCode;r>40||e.xy&&r<37||r<33||(t.preventDefault(),m(e.el,"move",e.getMove({x:r===39?.01:r===37?-.01:r===34?.05:r===33?-.05:r===35?1:r===36?-1:0,y:r===40?.01:r===38?-.01:0},!0)))},p=class{constructor(t,r,s,o){let a=v(`
    `);t.appendChild(a.content.cloneNode(!0));let i=t.querySelector(`[part=${r}]`);i.addEventListener("mousedown",this),i.addEventListener("touchstart",this),i.addEventListener("keydown",this),this.el=i,this.xy=o,this.nodes=[i.firstChild,i]}set dragging(t){let r=t?document.addEventListener:document.removeEventListener;r(h?"touchmove":"mousemove",this),r(h?"touchend":"mouseup",this)}handleEvent(t){switch(t.type){case"mousedown":case"touchstart":if(t.preventDefault(),!ut(t)||!h&&t.button!=0)return;this.el.focus(),W(this,t),this.dragging=!0;break;case"mousemove":case"touchmove":t.preventDefault(),W(this,t);break;case"mouseup":case"touchend":this.dragging=!1;break;case"keydown":dt(this,t);break}}style(t){t.forEach((r,s)=>{for(let o in r)this.nodes[s].style.setProperty(o,r[o])})}};var $=class extends p{constructor(t){super(t,"hue",'aria-label="Hue" aria-valuemin="0" aria-valuemax="360"',!1)}update({h:t}){this.h=t,this.style([{left:`${t/360*100}%`,color:u({h:t,s:100,v:100,a:1})}]),this.el.setAttribute("aria-valuenow",`${n(t)}`)}getMove(t,r){return{h:r?l(this.h+t.x*360,0,360):360*t.x}}};var H=class extends p{constructor(t){super(t,"saturation",'aria-label="Color"',!0)}update(t){this.hsva=t,this.style([{top:`${100-t.v}%`,left:`${t.s}%`,color:u(t)},{"background-color":u({h:t.h,s:100,v:100,a:1})}]),this.el.setAttribute("aria-valuetext",`Saturation ${n(t.s)}%, Brightness ${n(t.v)}%`)}getMove(t,r){return{s:r?l(this.hsva.s+t.x*100,0,100):t.x*100,v:r?l(this.hsva.v-t.y*100,0,100):Math.round(100-t.y*100)}}};var Z=":host{display:flex;flex-direction:column;position:relative;width:200px;height:200px;user-select:none;-webkit-user-select:none;cursor:default}:host([hidden]){display:none!important}[role=slider]{position:relative;touch-action:none;user-select:none;-webkit-user-select:none;outline:0}[role=slider]:last-child{border-radius:0 0 8px 8px}[part$=pointer]{position:absolute;z-index:1;box-sizing:border-box;width:28px;height:28px;transform:translate(-50%,-50%);background-color:#fff;border:2px solid #fff;border-radius:50%;box-shadow:0 2px 4px rgba(0,0,0,.2)}[part$=pointer]::after{display:block;content:'';position:absolute;left:0;top:0;right:0;bottom:0;border-radius:inherit;background-color:currentColor}[role=slider]:focus [part$=pointer]{transform:translate(-50%,-50%) scale(1.1)}";var tt="[part=hue]{flex:0 0 24px;background:linear-gradient(to right,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red 100%)}[part=hue-pointer]{top:50%;z-index:2}";var rt="[part=saturation]{flex-grow:1;border-color:transparent;border-bottom:12px solid #000;border-radius:8px 8px 0 0;background-image:linear-gradient(to top,#000,transparent),linear-gradient(to right,#fff,rgba(255,255,255,0));box-shadow:inset 0 0 0 1px rgba(0,0,0,.05)}[part=saturation-pointer]{z-index:3}";var S=Symbol("same"),et=Symbol("color"),ot=Symbol("hsva"),R=Symbol("change"),P=Symbol("update"),st=Symbol("parts"),f=Symbol("css"),g=Symbol("sliders"),c=class extends HTMLElement{static get observedAttributes(){return["color"]}get[f](){return[Z,tt,rt]}get[g](){return[H,$]}get color(){return this[et]}set color(t){if(!this[S](t)){let r=this.colorModel.toHsva(t);this[P](r),this[R](t)}}constructor(){super();let t=v(``),r=this.attachShadow({mode:"open"});r.appendChild(t.content.cloneNode(!0)),r.addEventListener("move",this),this[st]=this[g].map(s=>new s(r))}connectedCallback(){if(this.hasOwnProperty("color")){let t=this.color;delete this.color,this.color=t}else this.color||(this.color=this.colorModel.defaultColor)}attributeChangedCallback(t,r,s){let o=this.colorModel.fromAttr(s);this[S](o)||(this.color=o)}handleEvent(t){let r=this[ot],s={...r,...t.detail};this[P](s);let o;!I(s,r)&&!this[S](o=this.colorModel.fromHsva(s))&&this[R](o)}[S](t){return this.color&&this.colorModel.equal(t,this.color)}[P](t){this[ot]=t,this[st].forEach(r=>r.update(t))}[R](t){this[et]=t,m(this,"color-changed",{value:t})}};var ht={defaultColor:"#000",toHsva:B,fromHsva:X,equal:K,fromAttr:e=>e},y=class extends c{get colorModel(){return ht}};var z=class extends y{};customElements.define("hex-color-picker",z);var mt={defaultColor:"hsl(0, 0%, 0%)",toHsva:F,fromHsva:u,equal:d,fromAttr:e=>e},T=class extends c{get colorModel(){return mt}};var V=class extends T{};customElements.define("hsl-string-color-picker",V);var ft={defaultColor:"rgb(0, 0, 0)",toHsva:G,fromHsva:_,equal:d,fromAttr:e=>e},w=class extends c{get colorModel(){return ft}};var j=class extends w{};customElements.define("rgb-string-color-picker",j);var M=class extends p{constructor(t){super(t,"alpha",'aria-label="Alpha" aria-valuemin="0" aria-valuemax="1"',!1)}update(t){this.hsva=t;let r=b({...t,a:0}),s=b({...t,a:1}),o=t.a*100;this.style([{left:`${o}%`,color:b(t)},{"--gradient":`linear-gradient(90deg, ${r}, ${s}`}]);let a=n(o);this.el.setAttribute("aria-valuenow",`${a}`),this.el.setAttribute("aria-valuetext",`${a}%`)}getMove(t,r){return{a:r?l(this.hsva.a+t.x):t.x}}};var at=`[part=alpha]{flex:0 0 24px}[part=alpha]::after{display:block;content:'';position:absolute;top:0;left:0;right:0;bottom:0;border-radius:inherit;background-image:var(--gradient);box-shadow:inset 0 0 0 1px rgba(0,0,0,.05)}[part^=alpha]{background-color:#fff;background-image:url('data:image/svg+xml,')}[part=alpha-pointer]{top:50%}`;var k=class extends c{get[f](){return[...super[f],at]}get[g](){return[...super[g],M]}};var gt={defaultColor:"rgba(0, 0, 0, 1)",toHsva:A,fromHsva:U,equal:d,fromAttr:e=>e},C=class extends k{get colorModel(){return gt}};var D=class extends C{};customElements.define("rgba-string-color-picker",D);function xt({isAutofocused:e,isDisabled:t,isLiveDebounced:r,isLiveOnBlur:s,state:o}){return{state:o,init:function(){this.state===null||this.state===""||this.setState(this.state),e&&this.togglePanelVisibility(this.$refs.input),this.$refs.input.addEventListener("change",a=>{this.setState(a.target.value)}),this.$refs.panel.addEventListener("color-changed",a=>{this.setState(a.detail.value)}),(r||s)&&new MutationObserver(()=>{this.$refs.panel.style.display==="none"&&this.$wire.call("$refresh")}).observe(this.$refs.panel,{attributes:!0,childList:!0})},togglePanelVisibility:function(){t||this.$refs.panel.toggle(this.$refs.input)},setState:function(a){this.state=a,this.$refs.input.value=a,this.$refs.panel.color=a},isOpen:function(){return this.$refs.panel.style.display==="block"}}}export{xt as default}; +var c=(e,t=0,r=1)=>e>r?r:eMath.round(r*e)/r;var nt={grad:360/400,turn:360,rad:360/(Math.PI*2)},F=e=>G(b(e)),b=e=>(e[0]==="#"&&(e=e.substr(1)),e.length<6?{r:parseInt(e[0]+e[0],16),g:parseInt(e[1]+e[1],16),b:parseInt(e[2]+e[2],16),a:1}:{r:parseInt(e.substr(0,2),16),g:parseInt(e.substr(2,2),16),b:parseInt(e.substr(4,2),16),a:1}),it=(e,t="deg")=>Number(e)*(nt[t]||1),lt=e=>{let r=/hsla?\(?\s*(-?\d*\.?\d+)(deg|rad|grad|turn)?[,\s]+(-?\d*\.?\d+)%?[,\s]+(-?\d*\.?\d+)%?,?\s*[/\s]*(-?\d*\.?\d+)?(%)?\s*\)?/i.exec(e);return r?ct({h:it(r[1],r[2]),s:Number(r[3]),l:Number(r[4]),a:r[5]===void 0?1:Number(r[5])/(r[6]?100:1)}):{h:0,s:0,v:0,a:1}},J=lt,ct=({h:e,s:t,l:r,a:o})=>(t*=(r<50?r:100-r)/100,{h:e,s:t>0?2*t/(r+t)*100:0,v:r+t,a:o}),X=e=>pt(A(e)),Y=({h:e,s:t,v:r,a:o})=>{let s=(200-t)*r/100;return{h:n(e),s:n(s>0&&s<200?t*r/100/(s<=100?s:200-s)*100:0),l:n(s/2),a:n(o,2)}};var d=e=>{let{h:t,s:r,l:o}=Y(e);return`hsl(${t}, ${r}%, ${o}%)`},v=e=>{let{h:t,s:r,l:o,a:s}=Y(e);return`hsla(${t}, ${r}%, ${o}%, ${s})`},A=({h:e,s:t,v:r,a:o})=>{e=e/360*6,t=t/100,r=r/100;let s=Math.floor(e),a=r*(1-t),i=r*(1-(e-s)*t),l=r*(1-(1-e+s)*t),N=s%6;return{r:n([r,i,a,a,l,r][N]*255),g:n([l,r,r,i,a,a][N]*255),b:n([a,a,l,r,r,i][N]*255),a:n(o,2)}},B=e=>{let{r:t,g:r,b:o}=A(e);return`rgb(${t}, ${r}, ${o})`},D=e=>{let{r:t,g:r,b:o,a:s}=A(e);return`rgba(${t}, ${r}, ${o}, ${s})`};var L=e=>{let r=/rgba?\(?\s*(-?\d*\.?\d+)(%)?[,\s]+(-?\d*\.?\d+)(%)?[,\s]+(-?\d*\.?\d+)(%)?,?\s*[/\s]*(-?\d*\.?\d+)?(%)?\s*\)?/i.exec(e);return r?G({r:Number(r[1])/(r[2]?100/255:1),g:Number(r[3])/(r[4]?100/255:1),b:Number(r[5])/(r[6]?100/255:1),a:r[7]===void 0?1:Number(r[7])/(r[8]?100:1)}):{h:0,s:0,v:0,a:1}},U=L,q=e=>{let t=e.toString(16);return t.length<2?"0"+t:t},pt=({r:e,g:t,b:r})=>"#"+q(e)+q(t)+q(r),G=({r:e,g:t,b:r,a:o})=>{let s=Math.max(e,t,r),a=s-Math.min(e,t,r),i=a?s===e?(t-r)/a:s===t?2+(r-e)/a:4+(e-t)/a:0;return{h:n(60*(i<0?i+6:i)),s:n(s?a/s*100:0),v:n(s/255*100),a:o}};var O=(e,t)=>{if(e===t)return!0;for(let r in e)if(e[r]!==t[r])return!1;return!0},h=(e,t)=>e.replace(/\s/g,"")===t.replace(/\s/g,""),K=(e,t)=>e.toLowerCase()===t.toLowerCase()?!0:O(b(e),b(t));var Q={},$=e=>{let t=Q[e];return t||(t=document.createElement("template"),t.innerHTML=e,Q[e]=t),t},f=(e,t,r)=>{e.dispatchEvent(new CustomEvent(t,{bubbles:!0,detail:r}))};var m=!1,I=e=>"touches"in e,ut=e=>m&&!I(e)?!1:(m||(m=I(e)),!0),W=(e,t)=>{let r=I(t)?t.touches[0]:t,o=e.el.getBoundingClientRect();f(e.el,"move",e.getMove({x:c((r.pageX-(o.left+window.pageXOffset))/o.width),y:c((r.pageY-(o.top+window.pageYOffset))/o.height)}))},dt=(e,t)=>{let r=t.keyCode;r>40||e.xy&&r<37||r<33||(t.preventDefault(),f(e.el,"move",e.getMove({x:r===39?.01:r===37?-.01:r===34?.05:r===33?-.05:r===35?1:r===36?-1:0,y:r===40?.01:r===38?-.01:0},!0)))},u=class{constructor(t,r,o,s){let a=$(`
    `);t.appendChild(a.content.cloneNode(!0));let i=t.querySelector(`[part=${r}]`);i.addEventListener("mousedown",this),i.addEventListener("touchstart",this),i.addEventListener("keydown",this),this.el=i,this.xy=s,this.nodes=[i.firstChild,i]}set dragging(t){let r=t?document.addEventListener:document.removeEventListener;r(m?"touchmove":"mousemove",this),r(m?"touchend":"mouseup",this)}handleEvent(t){switch(t.type){case"mousedown":case"touchstart":if(t.preventDefault(),!ut(t)||!m&&t.button!=0)return;this.el.focus(),W(this,t),this.dragging=!0;break;case"mousemove":case"touchmove":t.preventDefault(),W(this,t);break;case"mouseup":case"touchend":this.dragging=!1;break;case"keydown":dt(this,t);break}}style(t){t.forEach((r,o)=>{for(let s in r)this.nodes[o].style.setProperty(s,r[s])})}};var S=class extends u{constructor(t){super(t,"hue",'aria-label="Hue" aria-valuemin="0" aria-valuemax="360"',!1)}update({h:t}){this.h=t,this.style([{left:`${t/360*100}%`,color:d({h:t,s:100,v:100,a:1})}]),this.el.setAttribute("aria-valuenow",`${n(t)}`)}getMove(t,r){return{h:r?c(this.h+t.x*360,0,360):360*t.x}}};var H=class extends u{constructor(t){super(t,"saturation",'aria-label="Color"',!0)}update(t){this.hsva=t,this.style([{top:`${100-t.v}%`,left:`${t.s}%`,color:d(t)},{"background-color":d({h:t.h,s:100,v:100,a:1})}]),this.el.setAttribute("aria-valuetext",`Saturation ${n(t.s)}%, Brightness ${n(t.v)}%`)}getMove(t,r){return{s:r?c(this.hsva.s+t.x*100,0,100):t.x*100,v:r?c(this.hsva.v-t.y*100,0,100):Math.round(100-t.y*100)}}};var Z=":host{display:flex;flex-direction:column;position:relative;width:200px;height:200px;user-select:none;-webkit-user-select:none;cursor:default}:host([hidden]){display:none!important}[role=slider]{position:relative;touch-action:none;user-select:none;-webkit-user-select:none;outline:0}[role=slider]:last-child{border-radius:0 0 8px 8px}[part$=pointer]{position:absolute;z-index:1;box-sizing:border-box;width:28px;height:28px;transform:translate(-50%,-50%);background-color:#fff;border:2px solid #fff;border-radius:50%;box-shadow:0 2px 4px rgba(0,0,0,.2)}[part$=pointer]::after{display:block;content:'';position:absolute;left:0;top:0;right:0;bottom:0;border-radius:inherit;background-color:currentColor}[role=slider]:focus [part$=pointer]{transform:translate(-50%,-50%) scale(1.1)}";var tt="[part=hue]{flex:0 0 24px;background:linear-gradient(to right,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red 100%)}[part=hue-pointer]{top:50%;z-index:2}";var rt="[part=saturation]{flex-grow:1;border-color:transparent;border-bottom:12px solid #000;border-radius:8px 8px 0 0;background-image:linear-gradient(to top,#000,transparent),linear-gradient(to right,#fff,rgba(255,255,255,0));box-shadow:inset 0 0 0 1px rgba(0,0,0,.05)}[part=saturation-pointer]{z-index:3}";var T=Symbol("same"),et=Symbol("color"),ot=Symbol("hsva"),R=Symbol("change"),_=Symbol("update"),st=Symbol("parts"),g=Symbol("css"),x=Symbol("sliders"),p=class extends HTMLElement{static get observedAttributes(){return["color"]}get[g](){return[Z,tt,rt]}get[x](){return[H,S]}get color(){return this[et]}set color(t){if(!this[T](t)){let r=this.colorModel.toHsva(t);this[_](r),this[R](t)}}constructor(){super();let t=$(``),r=this.attachShadow({mode:"open"});r.appendChild(t.content.cloneNode(!0)),r.addEventListener("move",this),this[st]=this[x].map(o=>new o(r))}connectedCallback(){if(this.hasOwnProperty("color")){let t=this.color;delete this.color,this.color=t}else this.color||(this.color=this.colorModel.defaultColor)}attributeChangedCallback(t,r,o){let s=this.colorModel.fromAttr(o);this[T](s)||(this.color=s)}handleEvent(t){let r=this[ot],o={...r,...t.detail};this[_](o);let s;!O(o,r)&&!this[T](s=this.colorModel.fromHsva(o))&&this[R](s)}[T](t){return this.color&&this.colorModel.equal(t,this.color)}[_](t){this[ot]=t,this[st].forEach(r=>r.update(t))}[R](t){this[et]=t,f(this,"color-changed",{value:t})}};var ht={defaultColor:"#000",toHsva:F,fromHsva:X,equal:K,fromAttr:e=>e},y=class extends p{get colorModel(){return ht}};var P=class extends y{};customElements.define("hex-color-picker",P);var mt={defaultColor:"hsl(0, 0%, 0%)",toHsva:J,fromHsva:d,equal:h,fromAttr:e=>e},w=class extends p{get colorModel(){return mt}};var z=class extends w{};customElements.define("hsl-string-color-picker",z);var ft={defaultColor:"rgb(0, 0, 0)",toHsva:U,fromHsva:B,equal:h,fromAttr:e=>e},M=class extends p{get colorModel(){return ft}};var V=class extends M{};customElements.define("rgb-string-color-picker",V);var k=class extends u{constructor(t){super(t,"alpha",'aria-label="Alpha" aria-valuemin="0" aria-valuemax="1"',!1)}update(t){this.hsva=t;let r=v({...t,a:0}),o=v({...t,a:1}),s=t.a*100;this.style([{left:`${s}%`,color:v(t)},{"--gradient":`linear-gradient(90deg, ${r}, ${o}`}]);let a=n(s);this.el.setAttribute("aria-valuenow",`${a}`),this.el.setAttribute("aria-valuetext",`${a}%`)}getMove(t,r){return{a:r?c(this.hsva.a+t.x):t.x}}};var at=`[part=alpha]{flex:0 0 24px}[part=alpha]::after{display:block;content:'';position:absolute;top:0;left:0;right:0;bottom:0;border-radius:inherit;background-image:var(--gradient);box-shadow:inset 0 0 0 1px rgba(0,0,0,.05)}[part^=alpha]{background-color:#fff;background-image:url('data:image/svg+xml,')}[part=alpha-pointer]{top:50%}`;var C=class extends p{get[g](){return[...super[g],at]}get[x](){return[...super[x],k]}};var gt={defaultColor:"rgba(0, 0, 0, 1)",toHsva:L,fromHsva:D,equal:h,fromAttr:e=>e},E=class extends C{get colorModel(){return gt}};var j=class extends E{};customElements.define("rgba-string-color-picker",j);function xt({isAutofocused:e,isDisabled:t,isLive:r,isLiveDebounced:o,isLiveOnBlur:s,liveDebounce:a,state:i}){return{state:i,init:function(){this.state===null||this.state===""||this.setState(this.state),e&&this.togglePanelVisibility(this.$refs.input),this.$refs.input.addEventListener("change",l=>{this.setState(l.target.value)}),this.$refs.panel.addEventListener("color-changed",l=>{this.setState(l.detail.value),!(s||!(r||o))&&setTimeout(()=>{this.state===l.detail.value&&this.commitState()},o?a:250)}),(r||o||s)&&new MutationObserver(()=>this.isOpen()?null:this.commitState()).observe(this.$refs.panel,{attributes:!0,childList:!0})},togglePanelVisibility:function(){t||this.$refs.panel.toggle(this.$refs.input)},setState:function(l){this.state=l,this.$refs.input.value=l,this.$refs.panel.color=l},isOpen:function(){return this.$refs.panel.style.display==="block"},commitState:function(){JSON.stringify(this.$wire.__instance.canonical)!==JSON.stringify(this.$wire.__instance.ephemeral)&&this.$wire.$commit()}}}export{xt as default}; diff --git a/public/js/filament/support/support.js b/public/js/filament/support/support.js index d869ff9e1..efddd58db 100644 --- a/public/js/filament/support/support.js +++ b/public/js/filament/support/support.js @@ -1,33 +1,44 @@ -(()=>{function wt(e){return e.split("-")[0]}function ln(e){return e.split("-")[1]}function xn(e){return["top","bottom"].includes(wt(e))?"x":"y"}function zr(e){return e==="y"?"height":"width"}function xo(e,t,n){let{reference:r,floating:i}=e,o=r.x+r.width/2-i.width/2,s=r.y+r.height/2-i.height/2,c=xn(t),u=zr(c),p=r[u]/2-i[u]/2,m=wt(t),v=c==="x",b;switch(m){case"top":b={x:o,y:r.y-i.height};break;case"bottom":b={x:o,y:r.y+r.height};break;case"right":b={x:r.x+r.width,y:s};break;case"left":b={x:r.x-i.width,y:s};break;default:b={x:r.x,y:r.y}}switch(ln(t)){case"start":b[c]-=p*(n&&v?-1:1);break;case"end":b[c]+=p*(n&&v?-1:1);break}return b}var Ci=async(e,t,n)=>{let{placement:r="bottom",strategy:i="absolute",middleware:o=[],platform:s}=n,c=await(s.isRTL==null?void 0:s.isRTL(t));if(s==null&&console.error(["Floating UI: `platform` property was not passed to config. If you","want to use Floating UI on the web, install @floating-ui/dom","instead of the /core package. Otherwise, you can create your own","`platform`: https://floating-ui.com/docs/platform"].join(" ")),o.filter(S=>{let{name:A}=S;return A==="autoPlacement"||A==="flip"}).length>1)throw new Error(["Floating UI: duplicate `flip` and/or `autoPlacement`","middleware detected. This will lead to an infinite loop. Ensure only","one of either has been passed to the `middleware` array."].join(" "));let u=await s.getElementRects({reference:e,floating:t,strategy:i}),{x:p,y:m}=xo(u,r,c),v=r,b={},O=0;for(let S=0;S100)throw new Error(["Floating UI: The middleware lifecycle appears to be","running in an infinite loop. This is usually caused by a `reset`","continually being returned without a break condition."].join(" "));let{name:A,fn:B}=o[S],{x:F,y:L,data:K,reset:V}=await B({x:p,y:m,initialPlacement:r,placement:v,strategy:i,middlewareData:b,rects:u,platform:s,elements:{reference:e,floating:t}});if(p=F??p,m=L??m,b={...b,[A]:{...b[A],...K}},V){typeof V=="object"&&(V.placement&&(v=V.placement),V.rects&&(u=V.rects===!0?await s.getElementRects({reference:e,floating:t,strategy:i}):V.rects),{x:p,y:m}=xo(u,v,c)),S=-1;continue}}return{x:p,y:m,placement:v,strategy:i,middlewareData:b}};function Di(e){return{top:0,right:0,bottom:0,left:0,...e}}function qr(e){return typeof e!="number"?Di(e):{top:e,right:e,bottom:e,left:e}}function Fn(e){return{...e,top:e.y,left:e.x,right:e.x+e.width,bottom:e.y+e.height}}async function En(e,t){var n;t===void 0&&(t={});let{x:r,y:i,platform:o,rects:s,elements:c,strategy:u}=e,{boundary:p="clippingAncestors",rootBoundary:m="viewport",elementContext:v="floating",altBoundary:b=!1,padding:O=0}=t,S=qr(O),B=c[b?v==="floating"?"reference":"floating":v],F=Fn(await o.getClippingRect({element:(n=await(o.isElement==null?void 0:o.isElement(B)))==null||n?B:B.contextElement||await(o.getDocumentElement==null?void 0:o.getDocumentElement(c.floating)),boundary:p,rootBoundary:m,strategy:u})),L=Fn(o.convertOffsetParentRelativeRectToViewportRelativeRect?await o.convertOffsetParentRelativeRectToViewportRelativeRect({rect:v==="floating"?{...s.floating,x:r,y:i}:s.reference,offsetParent:await(o.getOffsetParent==null?void 0:o.getOffsetParent(c.floating)),strategy:u}):s[v]);return{top:F.top-L.top+S.top,bottom:L.bottom-F.bottom+S.bottom,left:F.left-L.left+S.left,right:L.right-F.right+S.right}}var Io=Math.min,qt=Math.max;function Ur(e,t,n){return qt(e,Io(t,n))}var Lo=e=>({name:"arrow",options:e,async fn(t){let{element:n,padding:r=0}=e??{},{x:i,y:o,placement:s,rects:c,platform:u}=t;if(n==null)return console.warn("Floating UI: No `element` was passed to the `arrow` middleware."),{};let p=qr(r),m={x:i,y:o},v=xn(s),b=zr(v),O=await u.getDimensions(n),S=v==="y"?"top":"left",A=v==="y"?"bottom":"right",B=c.reference[b]+c.reference[v]-m[v]-c.floating[b],F=m[v]-c.reference[v],L=await(u.getOffsetParent==null?void 0:u.getOffsetParent(n)),K=L?v==="y"?L.clientHeight||0:L.clientWidth||0:0,V=B/2-F/2,he=p[S],ee=K-O[b]-p[A],Z=K/2-O[b]/2+V,de=Ur(he,Z,ee);return{data:{[v]:de,centerOffset:Z-de}}}}),Ti={left:"right",right:"left",bottom:"top",top:"bottom"};function lr(e){return e.replace(/left|right|bottom|top/g,t=>Ti[t])}function No(e,t,n){n===void 0&&(n=!1);let r=ln(e),i=xn(e),o=zr(i),s=i==="x"?r===(n?"end":"start")?"right":"left":r==="start"?"bottom":"top";return t.reference[o]>t.floating[o]&&(s=lr(s)),{main:s,cross:lr(s)}}var _i={start:"end",end:"start"};function Xr(e){return e.replace(/start|end/g,t=>_i[t])}var ko=["top","right","bottom","left"],Pi=ko.reduce((e,t)=>e.concat(t,t+"-start",t+"-end"),[]);function Mi(e,t,n){return(e?[...n.filter(i=>ln(i)===e),...n.filter(i=>ln(i)!==e)]:n.filter(i=>wt(i)===i)).filter(i=>e?ln(i)===e||(t?Xr(i)!==i:!1):!0)}var Gr=function(e){return e===void 0&&(e={}),{name:"autoPlacement",options:e,async fn(t){var n,r,i,o,s;let{x:c,y:u,rects:p,middlewareData:m,placement:v,platform:b,elements:O}=t,{alignment:S=null,allowedPlacements:A=Pi,autoAlignment:B=!0,...F}=e,L=Mi(S,B,A),K=await En(t,F),V=(n=(r=m.autoPlacement)==null?void 0:r.index)!=null?n:0,he=L[V];if(he==null)return{};let{main:ee,cross:Z}=No(he,p,await(b.isRTL==null?void 0:b.isRTL(O.floating)));if(v!==he)return{x:c,y:u,reset:{placement:L[0]}};let de=[K[wt(he)],K[ee],K[Z]],N=[...(i=(o=m.autoPlacement)==null?void 0:o.overflows)!=null?i:[],{placement:he,overflows:de}],ae=L[V+1];if(ae)return{data:{index:V+1,overflows:N},reset:{placement:ae}};let ue=N.slice().sort((ve,We)=>ve.overflows[0]-We.overflows[0]),Ae=(s=ue.find(ve=>{let{overflows:We}=ve;return We.every(Le=>Le<=0)}))==null?void 0:s.placement,pe=Ae??ue[0].placement;return pe!==v?{data:{index:V+1,overflows:N},reset:{placement:pe}}:{}}}};function Ri(e){let t=lr(e);return[Xr(e),t,Xr(t)]}var jo=function(e){return e===void 0&&(e={}),{name:"flip",options:e,async fn(t){var n;let{placement:r,middlewareData:i,rects:o,initialPlacement:s,platform:c,elements:u}=t,{mainAxis:p=!0,crossAxis:m=!0,fallbackPlacements:v,fallbackStrategy:b="bestFit",flipAlignment:O=!0,...S}=e,A=wt(r),F=v||(A===s||!O?[lr(s)]:Ri(s)),L=[s,...F],K=await En(t,S),V=[],he=((n=i.flip)==null?void 0:n.overflows)||[];if(p&&V.push(K[A]),m){let{main:N,cross:ae}=No(r,o,await(c.isRTL==null?void 0:c.isRTL(u.floating)));V.push(K[N],K[ae])}if(he=[...he,{placement:r,overflows:V}],!V.every(N=>N<=0)){var ee,Z;let N=((ee=(Z=i.flip)==null?void 0:Z.index)!=null?ee:0)+1,ae=L[N];if(ae)return{data:{index:N,overflows:he},reset:{placement:ae}};let ue="bottom";switch(b){case"bestFit":{var de;let Ae=(de=he.map(pe=>[pe,pe.overflows.filter(ve=>ve>0).reduce((ve,We)=>ve+We,0)]).sort((pe,ve)=>pe[1]-ve[1])[0])==null?void 0:de[0].placement;Ae&&(ue=Ae);break}case"initialPlacement":ue=s;break}if(r!==ue)return{reset:{placement:ue}}}return{}}}};function Oo(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function So(e){return ko.some(t=>e[t]>=0)}var Bo=function(e){let{strategy:t="referenceHidden",...n}=e===void 0?{}:e;return{name:"hide",async fn(r){let{rects:i}=r;switch(t){case"referenceHidden":{let o=await En(r,{...n,elementContext:"reference"}),s=Oo(o,i.reference);return{data:{referenceHiddenOffsets:s,referenceHidden:So(s)}}}case"escaped":{let o=await En(r,{...n,altBoundary:!0}),s=Oo(o,i.floating);return{data:{escapedOffsets:s,escaped:So(s)}}}default:return{}}}}};function Ii(e,t,n,r){r===void 0&&(r=!1);let i=wt(e),o=ln(e),s=xn(e)==="x",c=["left","top"].includes(i)?-1:1,u=r&&s?-1:1,p=typeof n=="function"?n({...t,placement:e}):n,{mainAxis:m,crossAxis:v,alignmentAxis:b}=typeof p=="number"?{mainAxis:p,crossAxis:0,alignmentAxis:null}:{mainAxis:0,crossAxis:0,alignmentAxis:null,...p};return o&&typeof b=="number"&&(v=o==="end"?b*-1:b),s?{x:v*u,y:m*c}:{x:m*c,y:v*u}}var Fo=function(e){return e===void 0&&(e=0),{name:"offset",options:e,async fn(t){let{x:n,y:r,placement:i,rects:o,platform:s,elements:c}=t,u=Ii(i,o,e,await(s.isRTL==null?void 0:s.isRTL(c.floating)));return{x:n+u.x,y:r+u.y,data:u}}}};function Li(e){return e==="x"?"y":"x"}var Ho=function(e){return e===void 0&&(e={}),{name:"shift",options:e,async fn(t){let{x:n,y:r,placement:i}=t,{mainAxis:o=!0,crossAxis:s=!1,limiter:c={fn:B=>{let{x:F,y:L}=B;return{x:F,y:L}}},...u}=e,p={x:n,y:r},m=await En(t,u),v=xn(wt(i)),b=Li(v),O=p[v],S=p[b];if(o){let B=v==="y"?"top":"left",F=v==="y"?"bottom":"right",L=O+m[B],K=O-m[F];O=Ur(L,O,K)}if(s){let B=b==="y"?"top":"left",F=b==="y"?"bottom":"right",L=S+m[B],K=S-m[F];S=Ur(L,S,K)}let A=c.fn({...t,[v]:O,[b]:S});return{...A,data:{x:A.x-n,y:A.y-r}}}}},$o=function(e){return e===void 0&&(e={}),{name:"size",options:e,async fn(t){let{placement:n,rects:r,platform:i,elements:o}=t,{apply:s,...c}=e,u=await En(t,c),p=wt(n),m=ln(n),v,b;p==="top"||p==="bottom"?(v=p,b=m===(await(i.isRTL==null?void 0:i.isRTL(o.floating))?"start":"end")?"left":"right"):(b=p,v=m==="end"?"top":"bottom");let O=qt(u.left,0),S=qt(u.right,0),A=qt(u.top,0),B=qt(u.bottom,0),F={height:r.floating.height-(["left","right"].includes(n)?2*(A!==0||B!==0?A+B:qt(u.top,u.bottom)):u[v]),width:r.floating.width-(["top","bottom"].includes(n)?2*(O!==0||S!==0?O+S:qt(u.left,u.right)):u[b])},L=await i.getDimensions(o.floating);s?.({...F,...r});let K=await i.getDimensions(o.floating);return L.width!==K.width||L.height!==K.height?{reset:{rects:!0}}:{}}}},Wo=function(e){return e===void 0&&(e={}),{name:"inline",options:e,async fn(t){var n;let{placement:r,elements:i,rects:o,platform:s,strategy:c}=t,{padding:u=2,x:p,y:m}=e,v=Fn(s.convertOffsetParentRelativeRectToViewportRelativeRect?await s.convertOffsetParentRelativeRectToViewportRelativeRect({rect:o.reference,offsetParent:await(s.getOffsetParent==null?void 0:s.getOffsetParent(i.floating)),strategy:c}):o.reference),b=(n=await(s.getClientRects==null?void 0:s.getClientRects(i.reference)))!=null?n:[],O=qr(u);function S(){if(b.length===2&&b[0].left>b[1].right&&p!=null&&m!=null){var B;return(B=b.find(F=>p>F.left-O.left&&pF.top-O.top&&m=2){if(xn(r)==="x"){let ue=b[0],Ae=b[b.length-1],pe=wt(r)==="top",ve=ue.top,We=Ae.bottom,Le=pe?ue.left:Ae.left,Te=pe?ue.right:Ae.right,tt=Te-Le,Nt=We-ve;return{top:ve,bottom:We,left:Le,right:Te,width:tt,height:Nt,x:Le,y:ve}}let F=wt(r)==="left",L=qt(...b.map(ue=>ue.right)),K=Io(...b.map(ue=>ue.left)),V=b.filter(ue=>F?ue.left===K:ue.right===L),he=V[0].top,ee=V[V.length-1].bottom,Z=K,de=L,N=de-Z,ae=ee-he;return{top:he,bottom:ee,left:Z,right:de,width:N,height:ae,x:Z,y:he}}return v}let A=await s.getElementRects({reference:{getBoundingClientRect:S},floating:i.floating,strategy:c});return o.reference.x!==A.reference.x||o.reference.y!==A.reference.y||o.reference.width!==A.reference.width||o.reference.height!==A.reference.height?{reset:{rects:A}}:{}}}};function Vo(e){return e&&e.document&&e.location&&e.alert&&e.setInterval}function Mt(e){if(e==null)return window;if(!Vo(e)){let t=e.ownerDocument;return t&&t.defaultView||window}return e}function Hn(e){return Mt(e).getComputedStyle(e)}function _t(e){return Vo(e)?"":e?(e.nodeName||"").toLowerCase():""}function Et(e){return e instanceof Mt(e).HTMLElement}function Gt(e){return e instanceof Mt(e).Element}function Ni(e){return e instanceof Mt(e).Node}function Kr(e){if(typeof ShadowRoot>"u")return!1;let t=Mt(e).ShadowRoot;return e instanceof t||e instanceof ShadowRoot}function fr(e){let{overflow:t,overflowX:n,overflowY:r}=Hn(e);return/auto|scroll|overlay|hidden/.test(t+r+n)}function ki(e){return["table","td","th"].includes(_t(e))}function Uo(e){let t=navigator.userAgent.toLowerCase().includes("firefox"),n=Hn(e);return n.transform!=="none"||n.perspective!=="none"||n.contain==="paint"||["transform","perspective"].includes(n.willChange)||t&&n.willChange==="filter"||t&&(n.filter?n.filter!=="none":!1)}function Xo(){return!/^((?!chrome|android).)*safari/i.test(navigator.userAgent)}var Ao=Math.min,jn=Math.max,cr=Math.round;function Pt(e,t,n){var r,i,o,s;t===void 0&&(t=!1),n===void 0&&(n=!1);let c=e.getBoundingClientRect(),u=1,p=1;t&&Et(e)&&(u=e.offsetWidth>0&&cr(c.width)/e.offsetWidth||1,p=e.offsetHeight>0&&cr(c.height)/e.offsetHeight||1);let m=Gt(e)?Mt(e):window,v=!Xo()&&n,b=(c.left+(v&&(r=(i=m.visualViewport)==null?void 0:i.offsetLeft)!=null?r:0))/u,O=(c.top+(v&&(o=(s=m.visualViewport)==null?void 0:s.offsetTop)!=null?o:0))/p,S=c.width/u,A=c.height/p;return{width:S,height:A,top:O,right:b+S,bottom:O+A,left:b,x:b,y:O}}function Kt(e){return((Ni(e)?e.ownerDocument:e.document)||window.document).documentElement}function dr(e){return Gt(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function Yo(e){return Pt(Kt(e)).left+dr(e).scrollLeft}function ji(e){let t=Pt(e);return cr(t.width)!==e.offsetWidth||cr(t.height)!==e.offsetHeight}function Bi(e,t,n){let r=Et(t),i=Kt(t),o=Pt(e,r&&ji(t),n==="fixed"),s={scrollLeft:0,scrollTop:0},c={x:0,y:0};if(r||!r&&n!=="fixed")if((_t(t)!=="body"||fr(i))&&(s=dr(t)),Et(t)){let u=Pt(t,!0);c.x=u.x+t.clientLeft,c.y=u.y+t.clientTop}else i&&(c.x=Yo(i));return{x:o.left+s.scrollLeft-c.x,y:o.top+s.scrollTop-c.y,width:o.width,height:o.height}}function zo(e){return _t(e)==="html"?e:e.assignedSlot||e.parentNode||(Kr(e)?e.host:null)||Kt(e)}function Co(e){return!Et(e)||getComputedStyle(e).position==="fixed"?null:e.offsetParent}function Fi(e){let t=zo(e);for(Kr(t)&&(t=t.host);Et(t)&&!["html","body"].includes(_t(t));){if(Uo(t))return t;t=t.parentNode}return null}function Yr(e){let t=Mt(e),n=Co(e);for(;n&&ki(n)&&getComputedStyle(n).position==="static";)n=Co(n);return n&&(_t(n)==="html"||_t(n)==="body"&&getComputedStyle(n).position==="static"&&!Uo(n))?t:n||Fi(e)||t}function Do(e){if(Et(e))return{width:e.offsetWidth,height:e.offsetHeight};let t=Pt(e);return{width:t.width,height:t.height}}function Hi(e){let{rect:t,offsetParent:n,strategy:r}=e,i=Et(n),o=Kt(n);if(n===o)return t;let s={scrollLeft:0,scrollTop:0},c={x:0,y:0};if((i||!i&&r!=="fixed")&&((_t(n)!=="body"||fr(o))&&(s=dr(n)),Et(n))){let u=Pt(n,!0);c.x=u.x+n.clientLeft,c.y=u.y+n.clientTop}return{...t,x:t.x-s.scrollLeft+c.x,y:t.y-s.scrollTop+c.y}}function $i(e,t){let n=Mt(e),r=Kt(e),i=n.visualViewport,o=r.clientWidth,s=r.clientHeight,c=0,u=0;if(i){o=i.width,s=i.height;let p=Xo();(p||!p&&t==="fixed")&&(c=i.offsetLeft,u=i.offsetTop)}return{width:o,height:s,x:c,y:u}}function Wi(e){var t;let n=Kt(e),r=dr(e),i=(t=e.ownerDocument)==null?void 0:t.body,o=jn(n.scrollWidth,n.clientWidth,i?i.scrollWidth:0,i?i.clientWidth:0),s=jn(n.scrollHeight,n.clientHeight,i?i.scrollHeight:0,i?i.clientHeight:0),c=-r.scrollLeft+Yo(e),u=-r.scrollTop;return Hn(i||n).direction==="rtl"&&(c+=jn(n.clientWidth,i?i.clientWidth:0)-o),{width:o,height:s,x:c,y:u}}function qo(e){let t=zo(e);return["html","body","#document"].includes(_t(t))?e.ownerDocument.body:Et(t)&&fr(t)?t:qo(t)}function ur(e,t){var n;t===void 0&&(t=[]);let r=qo(e),i=r===((n=e.ownerDocument)==null?void 0:n.body),o=Mt(r),s=i?[o].concat(o.visualViewport||[],fr(r)?r:[]):r,c=t.concat(s);return i?c:c.concat(ur(s))}function Vi(e,t){let n=t==null||t.getRootNode==null?void 0:t.getRootNode();if(e!=null&&e.contains(t))return!0;if(n&&Kr(n)){let r=t;do{if(r&&e===r)return!0;r=r.parentNode||r.host}while(r)}return!1}function Ui(e,t){let n=Pt(e,!1,t==="fixed"),r=n.top+e.clientTop,i=n.left+e.clientLeft;return{top:r,left:i,x:i,y:r,right:i+e.clientWidth,bottom:r+e.clientHeight,width:e.clientWidth,height:e.clientHeight}}function To(e,t,n){return t==="viewport"?Fn($i(e,n)):Gt(t)?Ui(t,n):Fn(Wi(Kt(e)))}function Xi(e){let t=ur(e),r=["absolute","fixed"].includes(Hn(e).position)&&Et(e)?Yr(e):e;return Gt(r)?t.filter(i=>Gt(i)&&Vi(i,r)&&_t(i)!=="body"):[]}function Yi(e){let{element:t,boundary:n,rootBoundary:r,strategy:i}=e,s=[...n==="clippingAncestors"?Xi(t):[].concat(n),r],c=s[0],u=s.reduce((p,m)=>{let v=To(t,m,i);return p.top=jn(v.top,p.top),p.right=Ao(v.right,p.right),p.bottom=Ao(v.bottom,p.bottom),p.left=jn(v.left,p.left),p},To(t,c,i));return{width:u.right-u.left,height:u.bottom-u.top,x:u.left,y:u.top}}var zi={getClippingRect:Yi,convertOffsetParentRelativeRectToViewportRelativeRect:Hi,isElement:Gt,getDimensions:Do,getOffsetParent:Yr,getDocumentElement:Kt,getElementRects:e=>{let{reference:t,floating:n,strategy:r}=e;return{reference:Bi(t,Yr(n),r),floating:{...Do(n),x:0,y:0}}},getClientRects:e=>Array.from(e.getClientRects()),isRTL:e=>Hn(e).direction==="rtl"};function _o(e,t,n,r){r===void 0&&(r={});let{ancestorScroll:i=!0,ancestorResize:o=!0,elementResize:s=!0,animationFrame:c=!1}=r,u=!1,p=i&&!c,m=o&&!c,v=s&&!c,b=p||m?[...Gt(e)?ur(e):[],...ur(t)]:[];b.forEach(F=>{p&&F.addEventListener("scroll",n,{passive:!0}),m&&F.addEventListener("resize",n)});let O=null;v&&(O=new ResizeObserver(n),Gt(e)&&O.observe(e),O.observe(t));let S,A=c?Pt(e):null;c&&B();function B(){if(u)return;let F=Pt(e);A&&(F.x!==A.x||F.y!==A.y||F.width!==A.width||F.height!==A.height)&&n(),A=F,S=requestAnimationFrame(B)}return()=>{var F;u=!0,b.forEach(L=>{p&&L.removeEventListener("scroll",n),m&&L.removeEventListener("resize",n)}),(F=O)==null||F.disconnect(),O=null,c&&cancelAnimationFrame(S)}}var Po=(e,t,n)=>Ci(e,t,{platform:zi,...n}),qi=e=>{let t={placement:"bottom",middleware:[]},n=Object.keys(e),r=i=>e[i];return n.includes("offset")&&t.middleware.push(Fo(r("offset"))),n.includes("placement")&&(t.placement=r("placement")),n.includes("autoPlacement")&&!n.includes("flip")&&t.middleware.push(Gr(r("autoPlacement"))),n.includes("flip")&&t.middleware.push(jo(r("flip"))),n.includes("shift")&&t.middleware.push(Ho(r("shift"))),n.includes("inline")&&t.middleware.push(Wo(r("inline"))),n.includes("arrow")&&t.middleware.push(Lo(r("arrow"))),n.includes("hide")&&t.middleware.push(Bo(r("hide"))),n.includes("size")&&t.middleware.push($o(r("size"))),t},Gi=(e,t)=>{let n={component:{trap:!1},float:{placement:"bottom",strategy:"absolute",middleware:[]}},r=i=>e[e.indexOf(i)+1];return e.includes("trap")&&(n.component.trap=!0),e.includes("teleport")&&(n.float.strategy="fixed"),e.includes("offset")&&n.float.middleware.push(Fo(t.offset||10)),e.includes("placement")&&(n.float.placement=r("placement")),e.includes("autoPlacement")&&!e.includes("flip")&&n.float.middleware.push(Gr(t.autoPlacement)),e.includes("flip")&&n.float.middleware.push(jo(t.flip)),e.includes("shift")&&n.float.middleware.push(Ho(t.shift)),e.includes("inline")&&n.float.middleware.push(Wo(t.inline)),e.includes("arrow")&&n.float.middleware.push(Lo(t.arrow)),e.includes("hide")&&n.float.middleware.push(Bo(t.hide)),e.includes("size")&&n.float.middleware.push($o(t.size)),n},Ki=e=>{var t="0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz".split(""),n="";e||(e=Math.floor(Math.random()*t.length));for(var r=0;r{(t===void 0||t.includes(n))&&(r.forEach(i=>i()),delete e._x_attributeCleanups[n])})}var Jr=new MutationObserver(Go),Qr=!1;function ta(){Jr.observe(document,{subtree:!0,childList:!0,attributes:!0,attributeOldValue:!0}),Qr=!0}function na(){ra(),Jr.disconnect(),Qr=!1}var Bn=[],Vr=!1;function ra(){Bn=Bn.concat(Jr.takeRecords()),Bn.length&&!Vr&&(Vr=!0,queueMicrotask(()=>{oa(),Vr=!1}))}function oa(){Go(Bn),Bn.length=0}function Mo(e){if(!Qr)return e();na();let t=e();return ta(),t}var ia=!1,Ro=[];function Go(e){if(ia){Ro=Ro.concat(e);return}let t=[],n=[],r=new Map,i=new Map;for(let o=0;os.nodeType===1&&t.push(s)),e[o].removedNodes.forEach(s=>s.nodeType===1&&n.push(s))),e[o].type==="attributes")){let s=e[o].target,c=e[o].attributeName,u=e[o].oldValue,p=()=>{r.has(s)||r.set(s,[]),r.get(s).push({name:c,value:s.getAttribute(c)})},m=()=>{i.has(s)||i.set(s,[]),i.get(s).push(c)};s.hasAttribute(c)&&u===null?p():s.hasAttribute(c)?(m(),p()):m()}i.forEach((o,s)=>{ea(s,o)}),r.forEach((o,s)=>{Ji.forEach(c=>c(s,o))});for(let o of n)if(!t.includes(o)&&(Qi.forEach(s=>s(o)),o._x_cleanups))for(;o._x_cleanups.length;)o._x_cleanups.pop()();t.forEach(o=>{o._x_ignoreSelf=!0,o._x_ignore=!0});for(let o of t)n.includes(o)||o.isConnected&&(delete o._x_ignoreSelf,delete o._x_ignore,Zi.forEach(s=>s(o)),o._x_ignore=!0,o._x_ignoreSelf=!0);t.forEach(o=>{delete o._x_ignoreSelf,delete o._x_ignore}),t=null,n=null,r=null,i=null}function aa(e,t=()=>{}){let n=!1;return function(){n?t.apply(this,arguments):(n=!0,e.apply(this,arguments))}}function sa(e){let t={dismissable:!0,trap:!1};function n(o,s,c=null){if(s){if(s.hasAttribute("aria-expanded")||s.setAttribute("aria-expanded",!1),c.hasAttribute("id"))s.setAttribute("aria-controls",c.getAttribute("id"));else{let u=`panel-${Ki(8)}`;s.setAttribute("aria-controls",u),c.setAttribute("id",u)}c.setAttribute("aria-modal",!0),c.setAttribute("role","dialog")}}let r=document.querySelectorAll('[\\@click^="$float"]'),i=document.querySelectorAll('[x-on\\:click^="$float"]');[...r,...i].forEach(o=>{let s=o.parentElement.closest("[x-data]"),c=s.querySelector('[x-ref="panel"]');n(s,o,c)}),e.magic("float",o=>(s={},c={})=>{let u={...t,...c},p=Object.keys(s).length>0?qi(s):{middleware:[Gr()]},m=o,v=o.parentElement.closest("[x-data]"),b=v.querySelector('[x-ref="panel"]');function O(){return b.style.display=="block"}function S(){b.style.display="",m.setAttribute("aria-expanded",!1),u.trap&&b.setAttribute("x-trap",!1),_o(o,b,F)}function A(){b.style.display="block",m.setAttribute("aria-expanded",!0),u.trap&&b.setAttribute("x-trap",!0),F()}function B(){O()?S():A()}async function F(){return await Po(o,b,p).then(({middlewareData:L,placement:K,x:V,y:he})=>{if(L.arrow){let ee=L.arrow?.x,Z=L.arrow?.y,de=p.middleware.filter(ae=>ae.name=="arrow")[0].options.element,N={top:"bottom",right:"left",bottom:"top",left:"right"}[K.split("-")[0]];Object.assign(de.style,{left:ee!=null?`${ee}px`:"",top:Z!=null?`${Z}px`:"",right:"",bottom:"",[N]:"-4px"})}if(L.hide){let{referenceHidden:ee}=L.hide;Object.assign(b.style,{visibility:ee?"hidden":"visible"})}Object.assign(b.style,{left:`${V}px`,top:`${he}px`})})}u.dismissable&&(window.addEventListener("click",L=>{!v.contains(L.target)&&O()&&B()}),window.addEventListener("keydown",L=>{L.key==="Escape"&&O()&&B()},!0)),B()}),e.directive("float",(o,{modifiers:s,expression:c},{evaluate:u,effect:p})=>{let m=c?u(c):{},v=s.length>0?Gi(s,m):{},b=null;v.float.strategy=="fixed"&&(o.style.position="fixed");let O=N=>o.parentElement&&!o.parentElement.closest("[x-data]").contains(N.target)?o.close():null,S=N=>N.key==="Escape"?o.close():null,A=o.getAttribute("x-ref"),B=o.parentElement.closest("[x-data]"),F=B.querySelectorAll(`[\\@click^="$refs.${A}"]`),L=B.querySelectorAll(`[x-on\\:click^="$refs.${A}"]`);o.style.setProperty("display","none"),n(B,[...F,...L][0],o),o._x_isShown=!1,o.trigger=null,o._x_doHide||(o._x_doHide=()=>{Mo(()=>{o.style.setProperty("display","none",s.includes("important")?"important":void 0)})}),o._x_doShow||(o._x_doShow=()=>{Mo(()=>{o.style.setProperty("display","block",s.includes("important")?"important":void 0)})});let K=()=>{o._x_doHide(),o._x_isShown=!1},V=()=>{o._x_doShow(),o._x_isShown=!0},he=()=>setTimeout(V),ee=aa(N=>N?V():K(),N=>{typeof o._x_toggleAndCascadeWithTransitions=="function"?o._x_toggleAndCascadeWithTransitions(o,N,V,K):N?he():K()}),Z,de=!0;p(()=>u(N=>{!de&&N===Z||(s.includes("immediate")&&(N?he():K()),ee(N),Z=N,de=!1)})),o.open=async function(N){o.trigger=N.currentTarget?N.currentTarget:N,ee(!0),o.trigger.setAttribute("aria-expanded",!0),v.component.trap&&o.setAttribute("x-trap",!0),b=_o(o.trigger,o,()=>{Po(o.trigger,o,v.float).then(({middlewareData:ae,placement:ue,x:Ae,y:pe})=>{if(ae.arrow){let ve=ae.arrow?.x,We=ae.arrow?.y,Le=v.float.middleware.filter(tt=>tt.name=="arrow")[0].options.element,Te={top:"bottom",right:"left",bottom:"top",left:"right"}[ue.split("-")[0]];Object.assign(Le.style,{left:ve!=null?`${ve}px`:"",top:We!=null?`${We}px`:"",right:"",bottom:"",[Te]:"-4px"})}if(ae.hide){let{referenceHidden:ve}=ae.hide;Object.assign(o.style,{visibility:ve?"hidden":"visible"})}Object.assign(o.style,{left:`${Ae}px`,top:`${pe}px`})})}),window.addEventListener("click",O),window.addEventListener("keydown",S,!0)},o.close=function(){ee(!1),o.trigger.setAttribute("aria-expanded",!1),v.component.trap&&o.setAttribute("x-trap",!1),b(),window.removeEventListener("click",O),window.removeEventListener("keydown",S,!1)},o.toggle=function(N){o._x_isShown?o.close():o.open(N)}})}var Ko=sa;function la(e){e.store("lazyLoadedAssets",{loaded:new Set,check(s){return Array.isArray(s)?s.every(c=>this.loaded.has(c)):this.loaded.has(s)},markLoaded(s){Array.isArray(s)?s.forEach(c=>this.loaded.add(c)):this.loaded.add(s)}});function t(s){return new CustomEvent(s,{bubbles:!0,composed:!0,cancelable:!0})}function n(s,c={},u,p){let m=document.createElement(s);for(let[v,b]of Object.entries(c))m[v]=b;return u&&(p?u.insertBefore(m,p):u.appendChild(m)),m}function r(s,c,u={},p=null,m=null){let v=s==="link"?`link[href="${c}"]`:`script[src="${c}"]`;if(document.querySelector(v)||e.store("lazyLoadedAssets").check(c))return Promise.resolve();let b=n(s,{...u,href:c},p,m);return new Promise((O,S)=>{b.onload=()=>{e.store("lazyLoadedAssets").markLoaded(c),O()},b.onerror=()=>{S(new Error(`Failed to load ${s}: ${c}`))}})}async function i(s,c,u=null,p=null){let m={type:"text/css",rel:"stylesheet"};c&&(m.media=c);let v=document.head,b=null;if(u&&p){let O=document.querySelector(`link[href*="${p}"]`);O?(v=O.parentNode,b=u==="before"?O:O.nextSibling):console.warn(`Target (${p}) not found for ${s}. Appending to head.`)}await r("link",s,m,v,b)}async function o(s,c,u=null,p=null){let m,v;u&&p&&(m=document.querySelector(`script[src*="${p}"]`),m?v=u==="before"?m:m.nextSibling:console.warn(`Target (${p}) not found for ${s}. Appending to body.`));let b=c.has("body-start")?"prepend":"append";await r("script",s,{},m||document[c.has("body-end")?"body":"head"],v)}e.directive("load-css",(s,{expression:c},{evaluate:u})=>{let p=u(c),m=s.media,v=s.getAttribute("data-dispatch"),b=s.getAttribute("data-css-before")?"before":s.getAttribute("data-css-after")?"after":null,O=s.getAttribute("data-css-before")||s.getAttribute("data-css-after")||null;Promise.all(p.map(S=>i(S,m,b,O))).then(()=>{v&&window.dispatchEvent(t(v+"-css"))}).catch(S=>{console.error(S)})}),e.directive("load-js",(s,{expression:c,modifiers:u},{evaluate:p})=>{let m=p(c),v=new Set(u),b=s.getAttribute("data-js-before")?"before":s.getAttribute("data-js-after")?"after":null,O=s.getAttribute("data-js-before")||s.getAttribute("data-js-after")||null,S=s.getAttribute("data-dispatch");Promise.all(m.map(A=>o(A,v,b,O))).then(()=>{S&&window.dispatchEvent(t(S+"-js"))}).catch(A=>{console.error(A)})})}var Jo=la;function Qo(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),n.push.apply(n,r)}return n}function St(e){for(var t=1;t=0)&&(n[i]=e[i]);return n}function fa(e,t){if(e==null)return{};var n=ua(e,t),r,i;if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(i=0;i=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var da="1.15.1";function Rt(e){if(typeof window<"u"&&window.navigator)return!!navigator.userAgent.match(e)}var Lt=Rt(/(?:Trident.*rv[ :]?11\.|msie|iemobile|Windows Phone)/i),Gn=Rt(/Edge/i),Zo=Rt(/firefox/i),Un=Rt(/safari/i)&&!Rt(/chrome/i)&&!Rt(/android/i),si=Rt(/iP(ad|od|hone)/i),li=Rt(/chrome/i)&&Rt(/android/i),ci={capture:!1,passive:!1};function we(e,t,n){e.addEventListener(t,n,!Lt&&ci)}function me(e,t,n){e.removeEventListener(t,n,!Lt&&ci)}function xr(e,t){if(t){if(t[0]===">"&&(t=t.substring(1)),e)try{if(e.matches)return e.matches(t);if(e.msMatchesSelector)return e.msMatchesSelector(t);if(e.webkitMatchesSelector)return e.webkitMatchesSelector(t)}catch{return!1}return!1}}function pa(e){return e.host&&e!==document&&e.host.nodeType?e.host:e.parentNode}function xt(e,t,n,r){if(e){n=n||document;do{if(t!=null&&(t[0]===">"?e.parentNode===n&&xr(e,t):xr(e,t))||r&&e===n)return e;if(e===n)break}while(e=pa(e))}return null}var ei=/\s+/g;function it(e,t,n){if(e&&t)if(e.classList)e.classList[n?"add":"remove"](t);else{var r=(" "+e.className+" ").replace(ei," ").replace(" "+t+" "," ");e.className=(r+(n?" "+t:"")).replace(ei," ")}}function W(e,t,n){var r=e&&e.style;if(r){if(n===void 0)return document.defaultView&&document.defaultView.getComputedStyle?n=document.defaultView.getComputedStyle(e,""):e.currentStyle&&(n=e.currentStyle),t===void 0?n:n[t];!(t in r)&&t.indexOf("webkit")===-1&&(t="-webkit-"+t),r[t]=n+(typeof n=="string"?"":"px")}}function Dn(e,t){var n="";if(typeof e=="string")n=e;else do{var r=W(e,"transform");r&&r!=="none"&&(n=r+" "+n)}while(!t&&(e=e.parentNode));var i=window.DOMMatrix||window.WebKitCSSMatrix||window.CSSMatrix||window.MSCSSMatrix;return i&&new i(n)}function ui(e,t,n){if(e){var r=e.getElementsByTagName(t),i=0,o=r.length;if(n)for(;i=o:s=i<=o,!s)return r;if(r===Ot())break;r=Zt(r,!1)}return!1}function Tn(e,t,n,r){for(var i=0,o=0,s=e.children;o2&&arguments[2]!==void 0?arguments[2]:{},i=r.evt,o=fa(r,Ea);Kn.pluginEvent.bind(q)(t,n,St({dragEl:T,parentEl:$e,ghostEl:oe,rootEl:Ie,nextEl:fn,lastDownEl:br,cloneEl:Fe,cloneHidden:Qt,dragStarted:$n,putSortable:Ge,activeSortable:q.active,originalEvent:i,oldIndex:Cn,oldDraggableIndex:Yn,newIndex:at,newDraggableIndex:Jt,hideGhostForTarget:bi,unhideGhostForTarget:yi,cloneNowHidden:function(){Qt=!0},cloneNowShown:function(){Qt=!1},dispatchSortableEvent:function(c){et({sortable:n,name:c,originalEvent:i})}},o))};function et(e){wa(St({putSortable:Ge,cloneEl:Fe,targetEl:T,rootEl:Ie,oldIndex:Cn,oldDraggableIndex:Yn,newIndex:at,newDraggableIndex:Jt},e))}var T,$e,oe,Ie,fn,br,Fe,Qt,Cn,at,Yn,Jt,pr,Ge,An=!1,Or=!1,Sr=[],cn,vt,to,no,ri,oi,$n,Sn,zn,qn=!1,hr=!1,yr,Qe,ro=[],lo=!1,Ar=[],Dr=typeof document<"u",vr=si,ii=Gn||Lt?"cssFloat":"float",xa=Dr&&!li&&!si&&"draggable"in document.createElement("div"),vi=function(){if(Dr){if(Lt)return!1;var e=document.createElement("x");return e.style.cssText="pointer-events:auto",e.style.pointerEvents==="auto"}}(),gi=function(t,n){var r=W(t),i=parseInt(r.width)-parseInt(r.paddingLeft)-parseInt(r.paddingRight)-parseInt(r.borderLeftWidth)-parseInt(r.borderRightWidth),o=Tn(t,0,n),s=Tn(t,1,n),c=o&&W(o),u=s&&W(s),p=c&&parseInt(c.marginLeft)+parseInt(c.marginRight)+Xe(o).width,m=u&&parseInt(u.marginLeft)+parseInt(u.marginRight)+Xe(s).width;if(r.display==="flex")return r.flexDirection==="column"||r.flexDirection==="column-reverse"?"vertical":"horizontal";if(r.display==="grid")return r.gridTemplateColumns.split(" ").length<=1?"vertical":"horizontal";if(o&&c.float&&c.float!=="none"){var v=c.float==="left"?"left":"right";return s&&(u.clear==="both"||u.clear===v)?"vertical":"horizontal"}return o&&(c.display==="block"||c.display==="flex"||c.display==="table"||c.display==="grid"||p>=i&&r[ii]==="none"||s&&r[ii]==="none"&&p+m>i)?"vertical":"horizontal"},Oa=function(t,n,r){var i=r?t.left:t.top,o=r?t.right:t.bottom,s=r?t.width:t.height,c=r?n.left:n.top,u=r?n.right:n.bottom,p=r?n.width:n.height;return i===c||o===u||i+s/2===c+p/2},Sa=function(t,n){var r;return Sr.some(function(i){var o=i[st].options.emptyInsertThreshold;if(!(!o||po(i))){var s=Xe(i),c=t>=s.left-o&&t<=s.right+o,u=n>=s.top-o&&n<=s.bottom+o;if(c&&u)return r=i}}),r},mi=function(t){function n(o,s){return function(c,u,p,m){var v=c.options.group.name&&u.options.group.name&&c.options.group.name===u.options.group.name;if(o==null&&(s||v))return!0;if(o==null||o===!1)return!1;if(s&&o==="clone")return o;if(typeof o=="function")return n(o(c,u,p,m),s)(c,u,p,m);var b=(s?c:u).options.group.name;return o===!0||typeof o=="string"&&o===b||o.join&&o.indexOf(b)>-1}}var r={},i=t.group;(!i||mr(i)!="object")&&(i={name:i}),r.name=i.name,r.checkPull=n(i.pull,!0),r.checkPut=n(i.put),r.revertClone=i.revertClone,t.group=r},bi=function(){!vi&&oe&&W(oe,"display","none")},yi=function(){!vi&&oe&&W(oe,"display","")};Dr&&!li&&document.addEventListener("click",function(e){if(Or)return e.preventDefault(),e.stopPropagation&&e.stopPropagation(),e.stopImmediatePropagation&&e.stopImmediatePropagation(),Or=!1,!1},!0);var un=function(t){if(T){t=t.touches?t.touches[0]:t;var n=Sa(t.clientX,t.clientY);if(n){var r={};for(var i in t)t.hasOwnProperty(i)&&(r[i]=t[i]);r.target=r.rootEl=n,r.preventDefault=void 0,r.stopPropagation=void 0,n[st]._onDragOver(r)}}},Aa=function(t){T&&T.parentNode[st]._isOutsideThisEl(t.target)};function q(e,t){if(!(e&&e.nodeType&&e.nodeType===1))throw"Sortable: `el` must be an HTMLElement, not ".concat({}.toString.call(e));this.el=e,this.options=t=It({},t),e[st]=this;var n={group:null,sort:!0,disabled:!1,store:null,handle:null,draggable:/^[uo]l$/i.test(e.nodeName)?">li":">*",swapThreshold:1,invertSwap:!1,invertedSwapThreshold:null,removeCloneOnHide:!0,direction:function(){return gi(e,this.options)},ghostClass:"sortable-ghost",chosenClass:"sortable-chosen",dragClass:"sortable-drag",ignore:"a, img",filter:null,preventOnFilter:!0,animation:0,easing:null,setData:function(s,c){s.setData("Text",c.textContent)},dropBubble:!1,dragoverBubble:!1,dataIdAttr:"data-id",delay:0,delayOnTouchOnly:!1,touchStartThreshold:(Number.parseInt?Number:window).parseInt(window.devicePixelRatio,10)||1,forceFallback:!1,fallbackClass:"sortable-fallback",fallbackOnBody:!1,fallbackTolerance:0,fallbackOffset:{x:0,y:0},supportPointer:q.supportPointer!==!1&&"PointerEvent"in window&&!Un,emptyInsertThreshold:5};Kn.initializePlugins(this,e,n);for(var r in n)!(r in t)&&(t[r]=n[r]);mi(t);for(var i in this)i.charAt(0)==="_"&&typeof this[i]=="function"&&(this[i]=this[i].bind(this));this.nativeDraggable=t.forceFallback?!1:xa,this.nativeDraggable&&(this.options.touchStartThreshold=1),t.supportPointer?we(e,"pointerdown",this._onTapStart):(we(e,"mousedown",this._onTapStart),we(e,"touchstart",this._onTapStart)),this.nativeDraggable&&(we(e,"dragover",this),we(e,"dragenter",this)),Sr.push(this.el),t.store&&t.store.get&&this.sort(t.store.get(this)||[]),It(this,ma())}q.prototype={constructor:q,_isOutsideThisEl:function(t){!this.el.contains(t)&&t!==this.el&&(Sn=null)},_getDirection:function(t,n){return typeof this.options.direction=="function"?this.options.direction.call(this,t,n,T):this.options.direction},_onTapStart:function(t){if(t.cancelable){var n=this,r=this.el,i=this.options,o=i.preventOnFilter,s=t.type,c=t.touches&&t.touches[0]||t.pointerType&&t.pointerType==="touch"&&t,u=(c||t).target,p=t.target.shadowRoot&&(t.path&&t.path[0]||t.composedPath&&t.composedPath()[0])||u,m=i.filter;if(Ia(r),!T&&!(/mousedown|pointerdown/.test(s)&&t.button!==0||i.disabled)&&!p.isContentEditable&&!(!this.nativeDraggable&&Un&&u&&u.tagName.toUpperCase()==="SELECT")&&(u=xt(u,i.draggable,r,!1),!(u&&u.animated)&&br!==u)){if(Cn=ct(u),Yn=ct(u,i.draggable),typeof m=="function"){if(m.call(this,t,u,this)){et({sortable:n,rootEl:p,name:"filter",targetEl:u,toEl:r,fromEl:r}),rt("filter",n,{evt:t}),o&&t.cancelable&&t.preventDefault();return}}else if(m&&(m=m.split(",").some(function(v){if(v=xt(p,v.trim(),r,!1),v)return et({sortable:n,rootEl:v,name:"filter",targetEl:u,fromEl:r,toEl:r}),rt("filter",n,{evt:t}),!0}),m)){o&&t.cancelable&&t.preventDefault();return}i.handle&&!xt(p,i.handle,r,!1)||this._prepareDragStart(t,c,u)}}},_prepareDragStart:function(t,n,r){var i=this,o=i.el,s=i.options,c=o.ownerDocument,u;if(r&&!T&&r.parentNode===o){var p=Xe(r);if(Ie=o,T=r,$e=T.parentNode,fn=T.nextSibling,br=r,pr=s.group,q.dragged=T,cn={target:T,clientX:(n||t).clientX,clientY:(n||t).clientY},ri=cn.clientX-p.left,oi=cn.clientY-p.top,this._lastX=(n||t).clientX,this._lastY=(n||t).clientY,T.style["will-change"]="all",u=function(){if(rt("delayEnded",i,{evt:t}),q.eventCanceled){i._onDrop();return}i._disableDelayedDragEvents(),!Zo&&i.nativeDraggable&&(T.draggable=!0),i._triggerDragStart(t,n),et({sortable:i,name:"choose",originalEvent:t}),it(T,s.chosenClass,!0)},s.ignore.split(",").forEach(function(m){ui(T,m.trim(),oo)}),we(c,"dragover",un),we(c,"mousemove",un),we(c,"touchmove",un),we(c,"mouseup",i._onDrop),we(c,"touchend",i._onDrop),we(c,"touchcancel",i._onDrop),Zo&&this.nativeDraggable&&(this.options.touchStartThreshold=4,T.draggable=!0),rt("delayStart",this,{evt:t}),s.delay&&(!s.delayOnTouchOnly||n)&&(!this.nativeDraggable||!(Gn||Lt))){if(q.eventCanceled){this._onDrop();return}we(c,"mouseup",i._disableDelayedDrag),we(c,"touchend",i._disableDelayedDrag),we(c,"touchcancel",i._disableDelayedDrag),we(c,"mousemove",i._delayedDragTouchMoveHandler),we(c,"touchmove",i._delayedDragTouchMoveHandler),s.supportPointer&&we(c,"pointermove",i._delayedDragTouchMoveHandler),i._dragStartTimer=setTimeout(u,s.delay)}else u()}},_delayedDragTouchMoveHandler:function(t){var n=t.touches?t.touches[0]:t;Math.max(Math.abs(n.clientX-this._lastX),Math.abs(n.clientY-this._lastY))>=Math.floor(this.options.touchStartThreshold/(this.nativeDraggable&&window.devicePixelRatio||1))&&this._disableDelayedDrag()},_disableDelayedDrag:function(){T&&oo(T),clearTimeout(this._dragStartTimer),this._disableDelayedDragEvents()},_disableDelayedDragEvents:function(){var t=this.el.ownerDocument;me(t,"mouseup",this._disableDelayedDrag),me(t,"touchend",this._disableDelayedDrag),me(t,"touchcancel",this._disableDelayedDrag),me(t,"mousemove",this._delayedDragTouchMoveHandler),me(t,"touchmove",this._delayedDragTouchMoveHandler),me(t,"pointermove",this._delayedDragTouchMoveHandler)},_triggerDragStart:function(t,n){n=n||t.pointerType=="touch"&&t,!this.nativeDraggable||n?this.options.supportPointer?we(document,"pointermove",this._onTouchMove):n?we(document,"touchmove",this._onTouchMove):we(document,"mousemove",this._onTouchMove):(we(T,"dragend",this),we(Ie,"dragstart",this._onDragStart));try{document.selection?wr(function(){document.selection.empty()}):window.getSelection().removeAllRanges()}catch{}},_dragStarted:function(t,n){if(An=!1,Ie&&T){rt("dragStarted",this,{evt:n}),this.nativeDraggable&&we(document,"dragover",Aa);var r=this.options;!t&&it(T,r.dragClass,!1),it(T,r.ghostClass,!0),q.active=this,t&&this._appendGhost(),et({sortable:this,name:"start",originalEvent:n})}else this._nulling()},_emulateDragOver:function(){if(vt){this._lastX=vt.clientX,this._lastY=vt.clientY,bi();for(var t=document.elementFromPoint(vt.clientX,vt.clientY),n=t;t&&t.shadowRoot&&(t=t.shadowRoot.elementFromPoint(vt.clientX,vt.clientY),t!==n);)n=t;if(T.parentNode[st]._isOutsideThisEl(t),n)do{if(n[st]){var r=void 0;if(r=n[st]._onDragOver({clientX:vt.clientX,clientY:vt.clientY,target:t,rootEl:n}),r&&!this.options.dragoverBubble)break}t=n}while(n=n.parentNode);yi()}},_onTouchMove:function(t){if(cn){var n=this.options,r=n.fallbackTolerance,i=n.fallbackOffset,o=t.touches?t.touches[0]:t,s=oe&&Dn(oe,!0),c=oe&&s&&s.a,u=oe&&s&&s.d,p=vr&&Qe&&ni(Qe),m=(o.clientX-cn.clientX+i.x)/(c||1)+(p?p[0]-ro[0]:0)/(c||1),v=(o.clientY-cn.clientY+i.y)/(u||1)+(p?p[1]-ro[1]:0)/(u||1);if(!q.active&&!An){if(r&&Math.max(Math.abs(o.clientX-this._lastX),Math.abs(o.clientY-this._lastY))=0&&(et({rootEl:$e,name:"add",toEl:$e,fromEl:Ie,originalEvent:t}),et({sortable:this,name:"remove",toEl:$e,originalEvent:t}),et({rootEl:$e,name:"sort",toEl:$e,fromEl:Ie,originalEvent:t}),et({sortable:this,name:"sort",toEl:$e,originalEvent:t})),Ge&&Ge.save()):at!==Cn&&at>=0&&(et({sortable:this,name:"update",toEl:$e,originalEvent:t}),et({sortable:this,name:"sort",toEl:$e,originalEvent:t})),q.active&&((at==null||at===-1)&&(at=Cn,Jt=Yn),et({sortable:this,name:"end",toEl:$e,originalEvent:t}),this.save()))),this._nulling()},_nulling:function(){rt("nulling",this),Ie=T=$e=oe=fn=Fe=br=Qt=cn=vt=$n=at=Jt=Cn=Yn=Sn=zn=Ge=pr=q.dragged=q.ghost=q.clone=q.active=null,Ar.forEach(function(t){t.checked=!0}),Ar.length=to=no=0},handleEvent:function(t){switch(t.type){case"drop":case"dragend":this._onDrop(t);break;case"dragenter":case"dragover":T&&(this._onDragOver(t),Ca(t));break;case"selectstart":t.preventDefault();break}},toArray:function(){for(var t=[],n,r=this.el.children,i=0,o=r.length,s=this.options;ii.right+o||e.clientY>r.bottom&&e.clientX>r.left:e.clientY>i.bottom+o||e.clientX>r.right&&e.clientY>r.top}function Pa(e,t,n,r,i,o,s,c){var u=r?e.clientY:e.clientX,p=r?n.height:n.width,m=r?n.top:n.left,v=r?n.bottom:n.right,b=!1;if(!s){if(c&&yrm+p*o/2:uv-yr)return-zn}else if(u>m+p*(1-i)/2&&uv-p*o/2)?u>m+p/2?1:-1:0}function Ma(e){return ct(T){e.directive("sortable",t=>{let n=parseInt(t.dataset?.sortableAnimationDuration);n!==0&&!n&&(n=300),t.sortable=go.create(t,{draggable:"[x-sortable-item]",handle:"[x-sortable-handle]",dataIdAttr:"x-sortable-item",animation:n,ghostClass:"fi-sortable-ghost"})})};var Na=Object.create,yo=Object.defineProperty,ka=Object.getPrototypeOf,ja=Object.prototype.hasOwnProperty,Ba=Object.getOwnPropertyNames,Fa=Object.getOwnPropertyDescriptor,Ha=e=>yo(e,"__esModule",{value:!0}),xi=(e,t)=>()=>(t||(t={exports:{}},e(t.exports,t)),t.exports),$a=(e,t,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of Ba(t))!ja.call(e,r)&&r!=="default"&&yo(e,r,{get:()=>t[r],enumerable:!(n=Fa(t,r))||n.enumerable});return e},Oi=e=>$a(Ha(yo(e!=null?Na(ka(e)):{},"default",e&&e.__esModule&&"default"in e?{get:()=>e.default,enumerable:!0}:{value:e,enumerable:!0})),e),Wa=xi(e=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});function t(l){var a=l.getBoundingClientRect();return{width:a.width,height:a.height,top:a.top,right:a.right,bottom:a.bottom,left:a.left,x:a.left,y:a.top}}function n(l){if(l==null)return window;if(l.toString()!=="[object Window]"){var a=l.ownerDocument;return a&&a.defaultView||window}return l}function r(l){var a=n(l),d=a.pageXOffset,E=a.pageYOffset;return{scrollLeft:d,scrollTop:E}}function i(l){var a=n(l).Element;return l instanceof a||l instanceof Element}function o(l){var a=n(l).HTMLElement;return l instanceof a||l instanceof HTMLElement}function s(l){if(typeof ShadowRoot>"u")return!1;var a=n(l).ShadowRoot;return l instanceof a||l instanceof ShadowRoot}function c(l){return{scrollLeft:l.scrollLeft,scrollTop:l.scrollTop}}function u(l){return l===n(l)||!o(l)?r(l):c(l)}function p(l){return l?(l.nodeName||"").toLowerCase():null}function m(l){return((i(l)?l.ownerDocument:l.document)||window.document).documentElement}function v(l){return t(m(l)).left+r(l).scrollLeft}function b(l){return n(l).getComputedStyle(l)}function O(l){var a=b(l),d=a.overflow,E=a.overflowX,x=a.overflowY;return/auto|scroll|overlay|hidden/.test(d+x+E)}function S(l,a,d){d===void 0&&(d=!1);var E=m(a),x=t(l),D=o(a),R={scrollLeft:0,scrollTop:0},P={x:0,y:0};return(D||!D&&!d)&&((p(a)!=="body"||O(E))&&(R=u(a)),o(a)?(P=t(a),P.x+=a.clientLeft,P.y+=a.clientTop):E&&(P.x=v(E))),{x:x.left+R.scrollLeft-P.x,y:x.top+R.scrollTop-P.y,width:x.width,height:x.height}}function A(l){var a=t(l),d=l.offsetWidth,E=l.offsetHeight;return Math.abs(a.width-d)<=1&&(d=a.width),Math.abs(a.height-E)<=1&&(E=a.height),{x:l.offsetLeft,y:l.offsetTop,width:d,height:E}}function B(l){return p(l)==="html"?l:l.assignedSlot||l.parentNode||(s(l)?l.host:null)||m(l)}function F(l){return["html","body","#document"].indexOf(p(l))>=0?l.ownerDocument.body:o(l)&&O(l)?l:F(B(l))}function L(l,a){var d;a===void 0&&(a=[]);var E=F(l),x=E===((d=l.ownerDocument)==null?void 0:d.body),D=n(E),R=x?[D].concat(D.visualViewport||[],O(E)?E:[]):E,P=a.concat(R);return x?P:P.concat(L(B(R)))}function K(l){return["table","td","th"].indexOf(p(l))>=0}function V(l){return!o(l)||b(l).position==="fixed"?null:l.offsetParent}function he(l){var a=navigator.userAgent.toLowerCase().indexOf("firefox")!==-1,d=navigator.userAgent.indexOf("Trident")!==-1;if(d&&o(l)){var E=b(l);if(E.position==="fixed")return null}for(var x=B(l);o(x)&&["html","body"].indexOf(p(x))<0;){var D=b(x);if(D.transform!=="none"||D.perspective!=="none"||D.contain==="paint"||["transform","perspective"].indexOf(D.willChange)!==-1||a&&D.willChange==="filter"||a&&D.filter&&D.filter!=="none")return x;x=x.parentNode}return null}function ee(l){for(var a=n(l),d=V(l);d&&K(d)&&b(d).position==="static";)d=V(d);return d&&(p(d)==="html"||p(d)==="body"&&b(d).position==="static")?a:d||he(l)||a}var Z="top",de="bottom",N="right",ae="left",ue="auto",Ae=[Z,de,N,ae],pe="start",ve="end",We="clippingParents",Le="viewport",Te="popper",tt="reference",Nt=Ae.reduce(function(l,a){return l.concat([a+"-"+pe,a+"-"+ve])},[]),dn=[].concat(Ae,[ue]).reduce(function(l,a){return l.concat([a,a+"-"+pe,a+"-"+ve])},[]),pn="beforeRead",_n="read",Tr="afterRead",_r="beforeMain",Pr="main",kt="afterMain",Jn="beforeWrite",Mr="write",Qn="afterWrite",At=[pn,_n,Tr,_r,Pr,kt,Jn,Mr,Qn];function Rr(l){var a=new Map,d=new Set,E=[];l.forEach(function(D){a.set(D.name,D)});function x(D){d.add(D.name);var R=[].concat(D.requires||[],D.requiresIfExists||[]);R.forEach(function(P){if(!d.has(P)){var j=a.get(P);j&&x(j)}}),E.push(D)}return l.forEach(function(D){d.has(D.name)||x(D)}),E}function ut(l){var a=Rr(l);return At.reduce(function(d,E){return d.concat(a.filter(function(x){return x.phase===E}))},[])}function jt(l){var a;return function(){return a||(a=new Promise(function(d){Promise.resolve().then(function(){a=void 0,d(l())})})),a}}function gt(l){for(var a=arguments.length,d=new Array(a>1?a-1:0),E=1;E=0,E=d&&o(l)?ee(l):l;return i(E)?a.filter(function(x){return i(x)&&Pn(x,E)&&p(x)!=="body"}):[]}function vn(l,a,d){var E=a==="clippingParents"?hn(l):[].concat(a),x=[].concat(E,[d]),D=x[0],R=x.reduce(function(P,j){var z=nr(l,j);return P.top=ft(z.top,P.top),P.right=en(z.right,P.right),P.bottom=en(z.bottom,P.bottom),P.left=ft(z.left,P.left),P},nr(l,D));return R.width=R.right-R.left,R.height=R.bottom-R.top,R.x=R.left,R.y=R.top,R}function tn(l){return l.split("-")[1]}function lt(l){return["top","bottom"].indexOf(l)>=0?"x":"y"}function rr(l){var a=l.reference,d=l.element,E=l.placement,x=E?nt(E):null,D=E?tn(E):null,R=a.x+a.width/2-d.width/2,P=a.y+a.height/2-d.height/2,j;switch(x){case Z:j={x:R,y:a.y-d.height};break;case de:j={x:R,y:a.y+a.height};break;case N:j={x:a.x+a.width,y:P};break;case ae:j={x:a.x-d.width,y:P};break;default:j={x:a.x,y:a.y}}var z=x?lt(x):null;if(z!=null){var I=z==="y"?"height":"width";switch(D){case pe:j[z]=j[z]-(a[I]/2-d[I]/2);break;case ve:j[z]=j[z]+(a[I]/2-d[I]/2);break}}return j}function or(){return{top:0,right:0,bottom:0,left:0}}function ir(l){return Object.assign({},or(),l)}function ar(l,a){return a.reduce(function(d,E){return d[E]=l,d},{})}function Ht(l,a){a===void 0&&(a={});var d=a,E=d.placement,x=E===void 0?l.placement:E,D=d.boundary,R=D===void 0?We:D,P=d.rootBoundary,j=P===void 0?Le:P,z=d.elementContext,I=z===void 0?Te:z,Ee=d.altBoundary,Me=Ee===void 0?!1:Ee,ye=d.padding,fe=ye===void 0?0:ye,Ce=ir(typeof fe!="number"?fe:ar(fe,Ae)),ge=I===Te?tt:Te,ke=l.elements.reference,De=l.rects.popper,je=l.elements[Me?ge:I],J=vn(i(je)?je:je.contextElement||m(l.elements.popper),R,j),Se=t(ke),xe=rr({reference:Se,element:De,strategy:"absolute",placement:x}),Re=Ft(Object.assign({},De,xe)),Pe=I===Te?Re:Se,Ve={top:J.top-Pe.top+Ce.top,bottom:Pe.bottom-J.bottom+Ce.bottom,left:J.left-Pe.left+Ce.left,right:Pe.right-J.right+Ce.right},Be=l.modifiersData.offset;if(I===Te&&Be){var He=Be[x];Object.keys(Ve).forEach(function(ht){var Je=[N,de].indexOf(ht)>=0?1:-1,Dt=[Z,de].indexOf(ht)>=0?"y":"x";Ve[ht]+=He[Dt]*Je})}return Ve}var sr="Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.",jr="Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.",gn={placement:"bottom",modifiers:[],strategy:"absolute"};function nn(){for(var l=arguments.length,a=new Array(l),d=0;d100){console.error(jr);break}if(I.reset===!0){I.reset=!1,Se=-1;continue}var xe=I.orderedModifiers[Se],Re=xe.fn,Pe=xe.options,Ve=Pe===void 0?{}:Pe,Be=xe.name;typeof Re=="function"&&(I=Re({state:I,options:Ve,name:Be,instance:ye})||I)}}},update:jt(function(){return new Promise(function(ge){ye.forceUpdate(),ge(I)})}),destroy:function(){Ce(),Me=!0}};if(!nn(P,j))return console.error(sr),ye;ye.setOptions(z).then(function(ge){!Me&&z.onFirstUpdate&&z.onFirstUpdate(ge)});function fe(){I.orderedModifiers.forEach(function(ge){var ke=ge.name,De=ge.options,je=De===void 0?{}:De,J=ge.effect;if(typeof J=="function"){var Se=J({state:I,name:ke,instance:ye,options:je}),xe=function(){};Ee.push(Se||xe)}})}function Ce(){Ee.forEach(function(ge){return ge()}),Ee=[]}return ye}}var bn={passive:!0};function Br(l){var a=l.state,d=l.instance,E=l.options,x=E.scroll,D=x===void 0?!0:x,R=E.resize,P=R===void 0?!0:R,j=n(a.elements.popper),z=[].concat(a.scrollParents.reference,a.scrollParents.popper);return D&&z.forEach(function(I){I.addEventListener("scroll",d.update,bn)}),P&&j.addEventListener("resize",d.update,bn),function(){D&&z.forEach(function(I){I.removeEventListener("scroll",d.update,bn)}),P&&j.removeEventListener("resize",d.update,bn)}}var Mn={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:Br,data:{}};function Fr(l){var a=l.state,d=l.name;a.modifiersData[d]=rr({reference:a.rects.reference,element:a.rects.popper,strategy:"absolute",placement:a.placement})}var Rn={name:"popperOffsets",enabled:!0,phase:"read",fn:Fr,data:{}},Hr={top:"auto",right:"auto",bottom:"auto",left:"auto"};function $r(l){var a=l.x,d=l.y,E=window,x=E.devicePixelRatio||1;return{x:Bt(Bt(a*x)/x)||0,y:Bt(Bt(d*x)/x)||0}}function In(l){var a,d=l.popper,E=l.popperRect,x=l.placement,D=l.offsets,R=l.position,P=l.gpuAcceleration,j=l.adaptive,z=l.roundOffsets,I=z===!0?$r(D):typeof z=="function"?z(D):D,Ee=I.x,Me=Ee===void 0?0:Ee,ye=I.y,fe=ye===void 0?0:ye,Ce=D.hasOwnProperty("x"),ge=D.hasOwnProperty("y"),ke=ae,De=Z,je=window;if(j){var J=ee(d),Se="clientHeight",xe="clientWidth";J===n(d)&&(J=m(d),b(J).position!=="static"&&(Se="scrollHeight",xe="scrollWidth")),J=J,x===Z&&(De=de,fe-=J[Se]-E.height,fe*=P?1:-1),x===ae&&(ke=N,Me-=J[xe]-E.width,Me*=P?1:-1)}var Re=Object.assign({position:R},j&&Hr);if(P){var Pe;return Object.assign({},Re,(Pe={},Pe[De]=ge?"0":"",Pe[ke]=Ce?"0":"",Pe.transform=(je.devicePixelRatio||1)<2?"translate("+Me+"px, "+fe+"px)":"translate3d("+Me+"px, "+fe+"px, 0)",Pe))}return Object.assign({},Re,(a={},a[De]=ge?fe+"px":"",a[ke]=Ce?Me+"px":"",a.transform="",a))}function f(l){var a=l.state,d=l.options,E=d.gpuAcceleration,x=E===void 0?!0:E,D=d.adaptive,R=D===void 0?!0:D,P=d.roundOffsets,j=P===void 0?!0:P,z=b(a.elements.popper).transitionProperty||"";R&&["transform","top","right","bottom","left"].some(function(Ee){return z.indexOf(Ee)>=0})&&console.warn(["Popper: Detected CSS transitions on at least one of the following",'CSS properties: "transform", "top", "right", "bottom", "left".',` +(()=>{var Io=Object.create;var Oi=Object.defineProperty;var Fo=Object.getOwnPropertyDescriptor;var No=Object.getOwnPropertyNames;var Lo=Object.getPrototypeOf,ko=Object.prototype.hasOwnProperty;var Ur=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var jo=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of No(t))!ko.call(e,o)&&o!==n&&Oi(e,o,{get:()=>t[o],enumerable:!(r=Fo(t,o))||r.enumerable});return e};var Bo=(e,t,n)=>(n=e!=null?Io(Lo(e)):{},jo(t||!e||!e.__esModule?Oi(n,"default",{value:e,enumerable:!0}):n,e));var eo=Ur(()=>{});var to=Ur(()=>{});var no=Ur((hs,pr)=>{(function(){"use strict";var e="input is invalid type",t="finalize already called",n=typeof window=="object",r=n?window:{};r.JS_MD5_NO_WINDOW&&(n=!1);var o=!n&&typeof self=="object",i=!r.JS_MD5_NO_NODE_JS&&typeof process=="object"&&process.versions&&process.versions.node;i?r=global:o&&(r=self);var s=!r.JS_MD5_NO_COMMON_JS&&typeof pr=="object"&&pr.exports,u=typeof define=="function"&&define.amd,h=!r.JS_MD5_NO_ARRAY_BUFFER&&typeof ArrayBuffer<"u",p="0123456789abcdef".split(""),x=[128,32768,8388608,-2147483648],b=[0,8,16,24],E=["hex","array","digest","buffer","arrayBuffer","base64"],_="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""),C=[],M;if(h){var U=new ArrayBuffer(68);M=new Uint8Array(U),C=new Uint32Array(U)}var V=Array.isArray;(r.JS_MD5_NO_NODE_JS||!V)&&(V=function(l){return Object.prototype.toString.call(l)==="[object Array]"});var B=ArrayBuffer.isView;h&&(r.JS_MD5_NO_ARRAY_BUFFER_IS_VIEW||!B)&&(B=function(l){return typeof l=="object"&&l.buffer&&l.buffer.constructor===ArrayBuffer});var Q=function(l){var d=typeof l;if(d==="string")return[l,!0];if(d!=="object"||l===null)throw new Error(e);if(h&&l.constructor===ArrayBuffer)return[new Uint8Array(l),!1];if(!V(l)&&!B(l))throw new Error(e);return[l,!1]},q=function(l){return function(d){return new R(!0).update(d)[l]()}},xe=function(){var l=q("hex");i&&(l=se(l)),l.create=function(){return new R},l.update=function(c){return l.create().update(c)};for(var d=0;d>>6,ze[T++]=128|c&63):c<55296||c>=57344?(ze[T++]=224|c>>>12,ze[T++]=128|c>>>6&63,ze[T++]=128|c&63):(c=65536+((c&1023)<<10|l.charCodeAt(++H)&1023),ze[T++]=240|c>>>18,ze[T++]=128|c>>>12&63,ze[T++]=128|c>>>6&63,ze[T++]=128|c&63);else for(T=this.start;H>>2]|=c<>>2]|=(192|c>>>6)<>>2]|=(128|c&63)<=57344?(G[T>>>2]|=(224|c>>>12)<>>2]|=(128|c>>>6&63)<>>2]|=(128|c&63)<>>2]|=(240|c>>>18)<>>2]|=(128|c>>>12&63)<>>2]|=(128|c>>>6&63)<>>2]|=(128|c&63)<>>2]|=l[H]<=64?(this.start=T-64,this.hash(),this.hashed=!0):this.start=T}return this.bytes>4294967295&&(this.hBytes+=this.bytes/4294967296<<0,this.bytes=this.bytes%4294967296),this},R.prototype.finalize=function(){if(!this.finalized){this.finalized=!0;var l=this.blocks,d=this.lastByteIndex;l[d>>>2]|=x[d&3],d>=56&&(this.hashed||this.hash(),l[0]=l[16],l[16]=l[1]=l[2]=l[3]=l[4]=l[5]=l[6]=l[7]=l[8]=l[9]=l[10]=l[11]=l[12]=l[13]=l[14]=l[15]=0),l[14]=this.bytes<<3,l[15]=this.hBytes<<3|this.bytes>>>29,this.hash()}},R.prototype.hash=function(){var l,d,v,c,H,T,P=this.blocks;this.first?(l=P[0]-680876937,l=(l<<7|l>>>25)-271733879<<0,c=(-1732584194^l&2004318071)+P[1]-117830708,c=(c<<12|c>>>20)+l<<0,v=(-271733879^c&(l^-271733879))+P[2]-1126478375,v=(v<<17|v>>>15)+c<<0,d=(l^v&(c^l))+P[3]-1316259209,d=(d<<22|d>>>10)+v<<0):(l=this.h0,d=this.h1,v=this.h2,c=this.h3,l+=(c^d&(v^c))+P[0]-680876936,l=(l<<7|l>>>25)+d<<0,c+=(v^l&(d^v))+P[1]-389564586,c=(c<<12|c>>>20)+l<<0,v+=(d^c&(l^d))+P[2]+606105819,v=(v<<17|v>>>15)+c<<0,d+=(l^v&(c^l))+P[3]-1044525330,d=(d<<22|d>>>10)+v<<0),l+=(c^d&(v^c))+P[4]-176418897,l=(l<<7|l>>>25)+d<<0,c+=(v^l&(d^v))+P[5]+1200080426,c=(c<<12|c>>>20)+l<<0,v+=(d^c&(l^d))+P[6]-1473231341,v=(v<<17|v>>>15)+c<<0,d+=(l^v&(c^l))+P[7]-45705983,d=(d<<22|d>>>10)+v<<0,l+=(c^d&(v^c))+P[8]+1770035416,l=(l<<7|l>>>25)+d<<0,c+=(v^l&(d^v))+P[9]-1958414417,c=(c<<12|c>>>20)+l<<0,v+=(d^c&(l^d))+P[10]-42063,v=(v<<17|v>>>15)+c<<0,d+=(l^v&(c^l))+P[11]-1990404162,d=(d<<22|d>>>10)+v<<0,l+=(c^d&(v^c))+P[12]+1804603682,l=(l<<7|l>>>25)+d<<0,c+=(v^l&(d^v))+P[13]-40341101,c=(c<<12|c>>>20)+l<<0,v+=(d^c&(l^d))+P[14]-1502002290,v=(v<<17|v>>>15)+c<<0,d+=(l^v&(c^l))+P[15]+1236535329,d=(d<<22|d>>>10)+v<<0,l+=(v^c&(d^v))+P[1]-165796510,l=(l<<5|l>>>27)+d<<0,c+=(d^v&(l^d))+P[6]-1069501632,c=(c<<9|c>>>23)+l<<0,v+=(l^d&(c^l))+P[11]+643717713,v=(v<<14|v>>>18)+c<<0,d+=(c^l&(v^c))+P[0]-373897302,d=(d<<20|d>>>12)+v<<0,l+=(v^c&(d^v))+P[5]-701558691,l=(l<<5|l>>>27)+d<<0,c+=(d^v&(l^d))+P[10]+38016083,c=(c<<9|c>>>23)+l<<0,v+=(l^d&(c^l))+P[15]-660478335,v=(v<<14|v>>>18)+c<<0,d+=(c^l&(v^c))+P[4]-405537848,d=(d<<20|d>>>12)+v<<0,l+=(v^c&(d^v))+P[9]+568446438,l=(l<<5|l>>>27)+d<<0,c+=(d^v&(l^d))+P[14]-1019803690,c=(c<<9|c>>>23)+l<<0,v+=(l^d&(c^l))+P[3]-187363961,v=(v<<14|v>>>18)+c<<0,d+=(c^l&(v^c))+P[8]+1163531501,d=(d<<20|d>>>12)+v<<0,l+=(v^c&(d^v))+P[13]-1444681467,l=(l<<5|l>>>27)+d<<0,c+=(d^v&(l^d))+P[2]-51403784,c=(c<<9|c>>>23)+l<<0,v+=(l^d&(c^l))+P[7]+1735328473,v=(v<<14|v>>>18)+c<<0,d+=(c^l&(v^c))+P[12]-1926607734,d=(d<<20|d>>>12)+v<<0,H=d^v,l+=(H^c)+P[5]-378558,l=(l<<4|l>>>28)+d<<0,c+=(H^l)+P[8]-2022574463,c=(c<<11|c>>>21)+l<<0,T=c^l,v+=(T^d)+P[11]+1839030562,v=(v<<16|v>>>16)+c<<0,d+=(T^v)+P[14]-35309556,d=(d<<23|d>>>9)+v<<0,H=d^v,l+=(H^c)+P[1]-1530992060,l=(l<<4|l>>>28)+d<<0,c+=(H^l)+P[4]+1272893353,c=(c<<11|c>>>21)+l<<0,T=c^l,v+=(T^d)+P[7]-155497632,v=(v<<16|v>>>16)+c<<0,d+=(T^v)+P[10]-1094730640,d=(d<<23|d>>>9)+v<<0,H=d^v,l+=(H^c)+P[13]+681279174,l=(l<<4|l>>>28)+d<<0,c+=(H^l)+P[0]-358537222,c=(c<<11|c>>>21)+l<<0,T=c^l,v+=(T^d)+P[3]-722521979,v=(v<<16|v>>>16)+c<<0,d+=(T^v)+P[6]+76029189,d=(d<<23|d>>>9)+v<<0,H=d^v,l+=(H^c)+P[9]-640364487,l=(l<<4|l>>>28)+d<<0,c+=(H^l)+P[12]-421815835,c=(c<<11|c>>>21)+l<<0,T=c^l,v+=(T^d)+P[15]+530742520,v=(v<<16|v>>>16)+c<<0,d+=(T^v)+P[2]-995338651,d=(d<<23|d>>>9)+v<<0,l+=(v^(d|~c))+P[0]-198630844,l=(l<<6|l>>>26)+d<<0,c+=(d^(l|~v))+P[7]+1126891415,c=(c<<10|c>>>22)+l<<0,v+=(l^(c|~d))+P[14]-1416354905,v=(v<<15|v>>>17)+c<<0,d+=(c^(v|~l))+P[5]-57434055,d=(d<<21|d>>>11)+v<<0,l+=(v^(d|~c))+P[12]+1700485571,l=(l<<6|l>>>26)+d<<0,c+=(d^(l|~v))+P[3]-1894986606,c=(c<<10|c>>>22)+l<<0,v+=(l^(c|~d))+P[10]-1051523,v=(v<<15|v>>>17)+c<<0,d+=(c^(v|~l))+P[1]-2054922799,d=(d<<21|d>>>11)+v<<0,l+=(v^(d|~c))+P[8]+1873313359,l=(l<<6|l>>>26)+d<<0,c+=(d^(l|~v))+P[15]-30611744,c=(c<<10|c>>>22)+l<<0,v+=(l^(c|~d))+P[6]-1560198380,v=(v<<15|v>>>17)+c<<0,d+=(c^(v|~l))+P[13]+1309151649,d=(d<<21|d>>>11)+v<<0,l+=(v^(d|~c))+P[4]-145523070,l=(l<<6|l>>>26)+d<<0,c+=(d^(l|~v))+P[11]-1120210379,c=(c<<10|c>>>22)+l<<0,v+=(l^(c|~d))+P[2]+718787259,v=(v<<15|v>>>17)+c<<0,d+=(c^(v|~l))+P[9]-343485551,d=(d<<21|d>>>11)+v<<0,this.first?(this.h0=l+1732584193<<0,this.h1=d-271733879<<0,this.h2=v-1732584194<<0,this.h3=c+271733878<<0,this.first=!1):(this.h0=this.h0+l<<0,this.h1=this.h1+d<<0,this.h2=this.h2+v<<0,this.h3=this.h3+c<<0)},R.prototype.hex=function(){this.finalize();var l=this.h0,d=this.h1,v=this.h2,c=this.h3;return p[l>>>4&15]+p[l&15]+p[l>>>12&15]+p[l>>>8&15]+p[l>>>20&15]+p[l>>>16&15]+p[l>>>28&15]+p[l>>>24&15]+p[d>>>4&15]+p[d&15]+p[d>>>12&15]+p[d>>>8&15]+p[d>>>20&15]+p[d>>>16&15]+p[d>>>28&15]+p[d>>>24&15]+p[v>>>4&15]+p[v&15]+p[v>>>12&15]+p[v>>>8&15]+p[v>>>20&15]+p[v>>>16&15]+p[v>>>28&15]+p[v>>>24&15]+p[c>>>4&15]+p[c&15]+p[c>>>12&15]+p[c>>>8&15]+p[c>>>20&15]+p[c>>>16&15]+p[c>>>28&15]+p[c>>>24&15]},R.prototype.toString=R.prototype.hex,R.prototype.digest=function(){this.finalize();var l=this.h0,d=this.h1,v=this.h2,c=this.h3;return[l&255,l>>>8&255,l>>>16&255,l>>>24&255,d&255,d>>>8&255,d>>>16&255,d>>>24&255,v&255,v>>>8&255,v>>>16&255,v>>>24&255,c&255,c>>>8&255,c>>>16&255,c>>>24&255]},R.prototype.array=R.prototype.digest,R.prototype.arrayBuffer=function(){this.finalize();var l=new ArrayBuffer(16),d=new Uint32Array(l);return d[0]=this.h0,d[1]=this.h1,d[2]=this.h2,d[3]=this.h3,l},R.prototype.buffer=R.prototype.arrayBuffer,R.prototype.base64=function(){for(var l,d,v,c="",H=this.array(),T=0;T<15;)l=H[T++],d=H[T++],v=H[T++],c+=_[l>>>2]+_[(l<<4|d>>>4)&63]+_[(d<<2|v>>>6)&63]+_[v&63];return l=H[T],c+=_[l>>>2]+_[l<<4&63]+"==",c};function fe(l,d){var v,c=Q(l);if(l=c[0],c[1]){var H=[],T=l.length,P=0,G;for(v=0;v>>6,H[P++]=128|G&63):G<55296||G>=57344?(H[P++]=224|G>>>12,H[P++]=128|G>>>6&63,H[P++]=128|G&63):(G=65536+((G&1023)<<10|l.charCodeAt(++v)&1023),H[P++]=240|G>>>18,H[P++]=128|G>>>12&63,H[P++]=128|G>>>6&63,H[P++]=128|G&63);l=H}l.length>64&&(l=new R(!0).update(l).array());var ze=[],Dt=[];for(v=0;v<64;++v){var jt=l[v]||0;ze[v]=92^jt,Dt[v]=54^jt}R.call(this,d),this.update(Dt),this.oKeyPad=ze,this.inner=!0,this.sharedMemory=d}fe.prototype=new R,fe.prototype.finalize=function(){if(R.prototype.finalize.call(this),this.inner){this.inner=!1;var l=this.array();R.call(this,this.sharedMemory),this.update(this.oKeyPad),this.update(l),R.prototype.finalize.call(this)}};var ce=xe();ce.md5=ce,ce.md5.hmac=be(),s?pr.exports=ce:(r.md5=ce,u&&define(function(){return ce}))})()});function Ot(e){return e.split("-")[0]}function cn(e){return e.split("-")[1]}function On(e){return["top","bottom"].includes(Ot(e))?"x":"y"}function Gr(e){return e==="y"?"height":"width"}function Si(e,t,n){let{reference:r,floating:o}=e,i=r.x+r.width/2-o.width/2,s=r.y+r.height/2-o.height/2,u=On(t),h=Gr(u),p=r[h]/2-o[h]/2,x=Ot(t),b=u==="x",E;switch(x){case"top":E={x:i,y:r.y-o.height};break;case"bottom":E={x:i,y:r.y+r.height};break;case"right":E={x:r.x+r.width,y:s};break;case"left":E={x:r.x-o.width,y:s};break;default:E={x:r.x,y:r.y}}switch(cn(t)){case"start":E[u]-=p*(n&&b?-1:1);break;case"end":E[u]+=p*(n&&b?-1:1);break}return E}var Ho=async(e,t,n)=>{let{placement:r="bottom",strategy:o="absolute",middleware:i=[],platform:s}=n,u=await(s.isRTL==null?void 0:s.isRTL(t));if(s==null&&console.error(["Floating UI: `platform` property was not passed to config. If you","want to use Floating UI on the web, install @floating-ui/dom","instead of the /core package. Otherwise, you can create your own","`platform`: https://floating-ui.com/docs/platform"].join(" ")),i.filter(C=>{let{name:M}=C;return M==="autoPlacement"||M==="flip"}).length>1)throw new Error(["Floating UI: duplicate `flip` and/or `autoPlacement`","middleware detected. This will lead to an infinite loop. Ensure only","one of either has been passed to the `middleware` array."].join(" "));let h=await s.getElementRects({reference:e,floating:t,strategy:o}),{x:p,y:x}=Si(h,r,u),b=r,E={},_=0;for(let C=0;C100)throw new Error(["Floating UI: The middleware lifecycle appears to be","running in an infinite loop. This is usually caused by a `reset`","continually being returned without a break condition."].join(" "));let{name:M,fn:U}=i[C],{x:V,y:B,data:Q,reset:q}=await U({x:p,y:x,initialPlacement:r,placement:b,strategy:o,middlewareData:E,rects:h,platform:s,elements:{reference:e,floating:t}});if(p=V??p,x=B??x,E={...E,[M]:{...E[M],...Q}},q){typeof q=="object"&&(q.placement&&(b=q.placement),q.rects&&(h=q.rects===!0?await s.getElementRects({reference:e,floating:t,strategy:o}):q.rects),{x:p,y:x}=Si(h,b,u)),C=-1;continue}}return{x:p,y:x,placement:b,strategy:o,middlewareData:E}};function $o(e){return{top:0,right:0,bottom:0,left:0,...e}}function Kr(e){return typeof e!="number"?$o(e):{top:e,right:e,bottom:e,left:e}}function Bn(e){return{...e,top:e.y,left:e.x,right:e.x+e.width,bottom:e.y+e.height}}async function En(e,t){var n;t===void 0&&(t={});let{x:r,y:o,platform:i,rects:s,elements:u,strategy:h}=e,{boundary:p="clippingAncestors",rootBoundary:x="viewport",elementContext:b="floating",altBoundary:E=!1,padding:_=0}=t,C=Kr(_),U=u[E?b==="floating"?"reference":"floating":b],V=Bn(await i.getClippingRect({element:(n=await(i.isElement==null?void 0:i.isElement(U)))==null||n?U:U.contextElement||await(i.getDocumentElement==null?void 0:i.getDocumentElement(u.floating)),boundary:p,rootBoundary:x,strategy:h})),B=Bn(i.convertOffsetParentRelativeRectToViewportRelativeRect?await i.convertOffsetParentRelativeRectToViewportRelativeRect({rect:b==="floating"?{...s.floating,x:r,y:o}:s.reference,offsetParent:await(i.getOffsetParent==null?void 0:i.getOffsetParent(u.floating)),strategy:h}):s[b]);return{top:V.top-B.top+C.top,bottom:B.bottom-V.bottom+C.bottom,left:V.left-B.left+C.left,right:B.right-V.right+C.right}}var Ni=Math.min,Jt=Math.max;function Yr(e,t,n){return Jt(e,Ni(t,n))}var Li=e=>({name:"arrow",options:e,async fn(t){let{element:n,padding:r=0}=e??{},{x:o,y:i,placement:s,rects:u,platform:h}=t;if(n==null)return console.warn("Floating UI: No `element` was passed to the `arrow` middleware."),{};let p=Kr(r),x={x:o,y:i},b=On(s),E=Gr(b),_=await h.getDimensions(n),C=b==="y"?"top":"left",M=b==="y"?"bottom":"right",U=u.reference[E]+u.reference[b]-x[b]-u.floating[E],V=x[b]-u.reference[b],B=await(h.getOffsetParent==null?void 0:h.getOffsetParent(n)),Q=B?b==="y"?B.clientHeight||0:B.clientWidth||0:0,q=U/2-V/2,xe=p[C],se=Q-_[E]-p[M],ie=Q/2-_[E]/2+q,be=Yr(xe,ie,se);return{data:{[b]:be,centerOffset:ie-be}}}}),Wo={left:"right",right:"left",bottom:"top",top:"bottom"};function lr(e){return e.replace(/left|right|bottom|top/g,t=>Wo[t])}function ki(e,t,n){n===void 0&&(n=!1);let r=cn(e),o=On(e),i=Gr(o),s=o==="x"?r===(n?"end":"start")?"right":"left":r==="start"?"bottom":"top";return t.reference[i]>t.floating[i]&&(s=lr(s)),{main:s,cross:lr(s)}}var Vo={start:"end",end:"start"};function Xr(e){return e.replace(/start|end/g,t=>Vo[t])}var ji=["top","right","bottom","left"],Uo=ji.reduce((e,t)=>e.concat(t,t+"-start",t+"-end"),[]);function zo(e,t,n){return(e?[...n.filter(o=>cn(o)===e),...n.filter(o=>cn(o)!==e)]:n.filter(o=>Ot(o)===o)).filter(o=>e?cn(o)===e||(t?Xr(o)!==o:!1):!0)}var Jr=function(e){return e===void 0&&(e={}),{name:"autoPlacement",options:e,async fn(t){var n,r,o,i,s;let{x:u,y:h,rects:p,middlewareData:x,placement:b,platform:E,elements:_}=t,{alignment:C=null,allowedPlacements:M=Uo,autoAlignment:U=!0,...V}=e,B=zo(C,U,M),Q=await En(t,V),q=(n=(r=x.autoPlacement)==null?void 0:r.index)!=null?n:0,xe=B[q];if(xe==null)return{};let{main:se,cross:ie}=ki(xe,p,await(E.isRTL==null?void 0:E.isRTL(_.floating)));if(b!==xe)return{x:u,y:h,reset:{placement:B[0]}};let be=[Q[Ot(xe)],Q[se],Q[ie]],R=[...(o=(i=x.autoPlacement)==null?void 0:i.overflows)!=null?o:[],{placement:xe,overflows:be}],fe=B[q+1];if(fe)return{data:{index:q+1,overflows:R},reset:{placement:fe}};let ce=R.slice().sort((v,c)=>v.overflows[0]-c.overflows[0]),l=(s=ce.find(v=>{let{overflows:c}=v;return c.every(H=>H<=0)}))==null?void 0:s.placement,d=l??ce[0].placement;return d!==b?{data:{index:q+1,overflows:R},reset:{placement:d}}:{}}}};function Yo(e){let t=lr(e);return[Xr(e),t,Xr(t)]}var Bi=function(e){return e===void 0&&(e={}),{name:"flip",options:e,async fn(t){var n;let{placement:r,middlewareData:o,rects:i,initialPlacement:s,platform:u,elements:h}=t,{mainAxis:p=!0,crossAxis:x=!0,fallbackPlacements:b,fallbackStrategy:E="bestFit",flipAlignment:_=!0,...C}=e,M=Ot(r),V=b||(M===s||!_?[lr(s)]:Yo(s)),B=[s,...V],Q=await En(t,C),q=[],xe=((n=o.flip)==null?void 0:n.overflows)||[];if(p&&q.push(Q[M]),x){let{main:R,cross:fe}=ki(r,i,await(u.isRTL==null?void 0:u.isRTL(h.floating)));q.push(Q[R],Q[fe])}if(xe=[...xe,{placement:r,overflows:q}],!q.every(R=>R<=0)){var se,ie;let R=((se=(ie=o.flip)==null?void 0:ie.index)!=null?se:0)+1,fe=B[R];if(fe)return{data:{index:R,overflows:xe},reset:{placement:fe}};let ce="bottom";switch(E){case"bestFit":{var be;let l=(be=xe.map(d=>[d,d.overflows.filter(v=>v>0).reduce((v,c)=>v+c,0)]).sort((d,v)=>d[1]-v[1])[0])==null?void 0:be[0].placement;l&&(ce=l);break}case"initialPlacement":ce=s;break}if(r!==ce)return{reset:{placement:ce}}}return{}}}};function Ai(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function Ci(e){return ji.some(t=>e[t]>=0)}var Hi=function(e){let{strategy:t="referenceHidden",...n}=e===void 0?{}:e;return{name:"hide",async fn(r){let{rects:o}=r;switch(t){case"referenceHidden":{let i=await En(r,{...n,elementContext:"reference"}),s=Ai(i,o.reference);return{data:{referenceHiddenOffsets:s,referenceHidden:Ci(s)}}}case"escaped":{let i=await En(r,{...n,altBoundary:!0}),s=Ai(i,o.floating);return{data:{escapedOffsets:s,escaped:Ci(s)}}}default:return{}}}}};function Xo(e,t,n,r){r===void 0&&(r=!1);let o=Ot(e),i=cn(e),s=On(e)==="x",u=["left","top"].includes(o)?-1:1,h=r&&s?-1:1,p=typeof n=="function"?n({...t,placement:e}):n,{mainAxis:x,crossAxis:b,alignmentAxis:E}=typeof p=="number"?{mainAxis:p,crossAxis:0,alignmentAxis:null}:{mainAxis:0,crossAxis:0,alignmentAxis:null,...p};return i&&typeof E=="number"&&(b=i==="end"?E*-1:E),s?{x:b*h,y:x*u}:{x:x*u,y:b*h}}var $i=function(e){return e===void 0&&(e=0),{name:"offset",options:e,async fn(t){let{x:n,y:r,placement:o,rects:i,platform:s,elements:u}=t,h=Xo(o,i,e,await(s.isRTL==null?void 0:s.isRTL(u.floating)));return{x:n+h.x,y:r+h.y,data:h}}}};function qo(e){return e==="x"?"y":"x"}var Wi=function(e){return e===void 0&&(e={}),{name:"shift",options:e,async fn(t){let{x:n,y:r,placement:o}=t,{mainAxis:i=!0,crossAxis:s=!1,limiter:u={fn:U=>{let{x:V,y:B}=U;return{x:V,y:B}}},...h}=e,p={x:n,y:r},x=await En(t,h),b=On(Ot(o)),E=qo(b),_=p[b],C=p[E];if(i){let U=b==="y"?"top":"left",V=b==="y"?"bottom":"right",B=_+x[U],Q=_-x[V];_=Yr(B,_,Q)}if(s){let U=E==="y"?"top":"left",V=E==="y"?"bottom":"right",B=C+x[U],Q=C-x[V];C=Yr(B,C,Q)}let M=u.fn({...t,[b]:_,[E]:C});return{...M,data:{x:M.x-n,y:M.y-r}}}}},Vi=function(e){return e===void 0&&(e={}),{name:"size",options:e,async fn(t){let{placement:n,rects:r,platform:o,elements:i}=t,{apply:s,...u}=e,h=await En(t,u),p=Ot(n),x=cn(n),b,E;p==="top"||p==="bottom"?(b=p,E=x===(await(o.isRTL==null?void 0:o.isRTL(i.floating))?"start":"end")?"left":"right"):(E=p,b=x==="end"?"top":"bottom");let _=Jt(h.left,0),C=Jt(h.right,0),M=Jt(h.top,0),U=Jt(h.bottom,0),V={height:r.floating.height-(["left","right"].includes(n)?2*(M!==0||U!==0?M+U:Jt(h.top,h.bottom)):h[b]),width:r.floating.width-(["top","bottom"].includes(n)?2*(_!==0||C!==0?_+C:Jt(h.left,h.right)):h[E])},B=await o.getDimensions(i.floating);s?.({...V,...r});let Q=await o.getDimensions(i.floating);return B.width!==Q.width||B.height!==Q.height?{reset:{rects:!0}}:{}}}},Ui=function(e){return e===void 0&&(e={}),{name:"inline",options:e,async fn(t){var n;let{placement:r,elements:o,rects:i,platform:s,strategy:u}=t,{padding:h=2,x:p,y:x}=e,b=Bn(s.convertOffsetParentRelativeRectToViewportRelativeRect?await s.convertOffsetParentRelativeRectToViewportRelativeRect({rect:i.reference,offsetParent:await(s.getOffsetParent==null?void 0:s.getOffsetParent(o.floating)),strategy:u}):i.reference),E=(n=await(s.getClientRects==null?void 0:s.getClientRects(o.reference)))!=null?n:[],_=Kr(h);function C(){if(E.length===2&&E[0].left>E[1].right&&p!=null&&x!=null){var U;return(U=E.find(V=>p>V.left-_.left&&pV.top-_.top&&x=2){if(On(r)==="x"){let ce=E[0],l=E[E.length-1],d=Ot(r)==="top",v=ce.top,c=l.bottom,H=d?ce.left:l.left,T=d?ce.right:l.right,P=T-H,G=c-v;return{top:v,bottom:c,left:H,right:T,width:P,height:G,x:H,y:v}}let V=Ot(r)==="left",B=Jt(...E.map(ce=>ce.right)),Q=Ni(...E.map(ce=>ce.left)),q=E.filter(ce=>V?ce.left===Q:ce.right===B),xe=q[0].top,se=q[q.length-1].bottom,ie=Q,be=B,R=be-ie,fe=se-xe;return{top:xe,bottom:se,left:ie,right:be,width:R,height:fe,x:ie,y:xe}}return b}let M=await s.getElementRects({reference:{getBoundingClientRect:C},floating:o.floating,strategy:u});return i.reference.x!==M.reference.x||i.reference.y!==M.reference.y||i.reference.width!==M.reference.width||i.reference.height!==M.reference.height?{reset:{rects:M}}:{}}}};function zi(e){return e&&e.document&&e.location&&e.alert&&e.setInterval}function Ft(e){if(e==null)return window;if(!zi(e)){let t=e.ownerDocument;return t&&t.defaultView||window}return e}function Hn(e){return Ft(e).getComputedStyle(e)}function Rt(e){return zi(e)?"":e?(e.nodeName||"").toLowerCase():""}function St(e){return e instanceof Ft(e).HTMLElement}function Qt(e){return e instanceof Ft(e).Element}function Go(e){return e instanceof Ft(e).Node}function Qr(e){if(typeof ShadowRoot>"u")return!1;let t=Ft(e).ShadowRoot;return e instanceof t||e instanceof ShadowRoot}function cr(e){let{overflow:t,overflowX:n,overflowY:r}=Hn(e);return/auto|scroll|overlay|hidden/.test(t+r+n)}function Ko(e){return["table","td","th"].includes(Rt(e))}function Yi(e){let t=navigator.userAgent.toLowerCase().includes("firefox"),n=Hn(e);return n.transform!=="none"||n.perspective!=="none"||n.contain==="paint"||["transform","perspective"].includes(n.willChange)||t&&n.willChange==="filter"||t&&(n.filter?n.filter!=="none":!1)}function Xi(){return!/^((?!chrome|android).)*safari/i.test(navigator.userAgent)}var Di=Math.min,kn=Math.max,fr=Math.round;function It(e,t,n){var r,o,i,s;t===void 0&&(t=!1),n===void 0&&(n=!1);let u=e.getBoundingClientRect(),h=1,p=1;t&&St(e)&&(h=e.offsetWidth>0&&fr(u.width)/e.offsetWidth||1,p=e.offsetHeight>0&&fr(u.height)/e.offsetHeight||1);let x=Qt(e)?Ft(e):window,b=!Xi()&&n,E=(u.left+(b&&(r=(o=x.visualViewport)==null?void 0:o.offsetLeft)!=null?r:0))/h,_=(u.top+(b&&(i=(s=x.visualViewport)==null?void 0:s.offsetTop)!=null?i:0))/p,C=u.width/h,M=u.height/p;return{width:C,height:M,top:_,right:E+C,bottom:_+M,left:E,x:E,y:_}}function Zt(e){return((Go(e)?e.ownerDocument:e.document)||window.document).documentElement}function dr(e){return Qt(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function qi(e){return It(Zt(e)).left+dr(e).scrollLeft}function Jo(e){let t=It(e);return fr(t.width)!==e.offsetWidth||fr(t.height)!==e.offsetHeight}function Qo(e,t,n){let r=St(t),o=Zt(t),i=It(e,r&&Jo(t),n==="fixed"),s={scrollLeft:0,scrollTop:0},u={x:0,y:0};if(r||!r&&n!=="fixed")if((Rt(t)!=="body"||cr(o))&&(s=dr(t)),St(t)){let h=It(t,!0);u.x=h.x+t.clientLeft,u.y=h.y+t.clientTop}else o&&(u.x=qi(o));return{x:i.left+s.scrollLeft-u.x,y:i.top+s.scrollTop-u.y,width:i.width,height:i.height}}function Gi(e){return Rt(e)==="html"?e:e.assignedSlot||e.parentNode||(Qr(e)?e.host:null)||Zt(e)}function _i(e){return!St(e)||getComputedStyle(e).position==="fixed"?null:e.offsetParent}function Zo(e){let t=Gi(e);for(Qr(t)&&(t=t.host);St(t)&&!["html","body"].includes(Rt(t));){if(Yi(t))return t;t=t.parentNode}return null}function qr(e){let t=Ft(e),n=_i(e);for(;n&&Ko(n)&&getComputedStyle(n).position==="static";)n=_i(n);return n&&(Rt(n)==="html"||Rt(n)==="body"&&getComputedStyle(n).position==="static"&&!Yi(n))?t:n||Zo(e)||t}function Ti(e){if(St(e))return{width:e.offsetWidth,height:e.offsetHeight};let t=It(e);return{width:t.width,height:t.height}}function ea(e){let{rect:t,offsetParent:n,strategy:r}=e,o=St(n),i=Zt(n);if(n===i)return t;let s={scrollLeft:0,scrollTop:0},u={x:0,y:0};if((o||!o&&r!=="fixed")&&((Rt(n)!=="body"||cr(i))&&(s=dr(n)),St(n))){let h=It(n,!0);u.x=h.x+n.clientLeft,u.y=h.y+n.clientTop}return{...t,x:t.x-s.scrollLeft+u.x,y:t.y-s.scrollTop+u.y}}function ta(e,t){let n=Ft(e),r=Zt(e),o=n.visualViewport,i=r.clientWidth,s=r.clientHeight,u=0,h=0;if(o){i=o.width,s=o.height;let p=Xi();(p||!p&&t==="fixed")&&(u=o.offsetLeft,h=o.offsetTop)}return{width:i,height:s,x:u,y:h}}function na(e){var t;let n=Zt(e),r=dr(e),o=(t=e.ownerDocument)==null?void 0:t.body,i=kn(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),s=kn(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),u=-r.scrollLeft+qi(e),h=-r.scrollTop;return Hn(o||n).direction==="rtl"&&(u+=kn(n.clientWidth,o?o.clientWidth:0)-i),{width:i,height:s,x:u,y:h}}function Ki(e){let t=Gi(e);return["html","body","#document"].includes(Rt(t))?e.ownerDocument.body:St(t)&&cr(t)?t:Ki(t)}function ur(e,t){var n;t===void 0&&(t=[]);let r=Ki(e),o=r===((n=e.ownerDocument)==null?void 0:n.body),i=Ft(r),s=o?[i].concat(i.visualViewport||[],cr(r)?r:[]):r,u=t.concat(s);return o?u:u.concat(ur(s))}function ra(e,t){let n=t==null||t.getRootNode==null?void 0:t.getRootNode();if(e!=null&&e.contains(t))return!0;if(n&&Qr(n)){let r=t;do{if(r&&e===r)return!0;r=r.parentNode||r.host}while(r)}return!1}function ia(e,t){let n=It(e,!1,t==="fixed"),r=n.top+e.clientTop,o=n.left+e.clientLeft;return{top:r,left:o,x:o,y:r,right:o+e.clientWidth,bottom:r+e.clientHeight,width:e.clientWidth,height:e.clientHeight}}function Pi(e,t,n){return t==="viewport"?Bn(ta(e,n)):Qt(t)?ia(t,n):Bn(na(Zt(e)))}function oa(e){let t=ur(e),r=["absolute","fixed"].includes(Hn(e).position)&&St(e)?qr(e):e;return Qt(r)?t.filter(o=>Qt(o)&&ra(o,r)&&Rt(o)!=="body"):[]}function aa(e){let{element:t,boundary:n,rootBoundary:r,strategy:o}=e,s=[...n==="clippingAncestors"?oa(t):[].concat(n),r],u=s[0],h=s.reduce((p,x)=>{let b=Pi(t,x,o);return p.top=kn(b.top,p.top),p.right=Di(b.right,p.right),p.bottom=Di(b.bottom,p.bottom),p.left=kn(b.left,p.left),p},Pi(t,u,o));return{width:h.right-h.left,height:h.bottom-h.top,x:h.left,y:h.top}}var sa={getClippingRect:aa,convertOffsetParentRelativeRectToViewportRelativeRect:ea,isElement:Qt,getDimensions:Ti,getOffsetParent:qr,getDocumentElement:Zt,getElementRects:e=>{let{reference:t,floating:n,strategy:r}=e;return{reference:Qo(t,qr(n),r),floating:{...Ti(n),x:0,y:0}}},getClientRects:e=>Array.from(e.getClientRects()),isRTL:e=>Hn(e).direction==="rtl"};function Mi(e,t,n,r){r===void 0&&(r={});let{ancestorScroll:o=!0,ancestorResize:i=!0,elementResize:s=!0,animationFrame:u=!1}=r,h=!1,p=o&&!u,x=i&&!u,b=s&&!u,E=p||x?[...Qt(e)?ur(e):[],...ur(t)]:[];E.forEach(V=>{p&&V.addEventListener("scroll",n,{passive:!0}),x&&V.addEventListener("resize",n)});let _=null;b&&(_=new ResizeObserver(n),Qt(e)&&_.observe(e),_.observe(t));let C,M=u?It(e):null;u&&U();function U(){if(h)return;let V=It(e);M&&(V.x!==M.x||V.y!==M.y||V.width!==M.width||V.height!==M.height)&&n(),M=V,C=requestAnimationFrame(U)}return()=>{var V;h=!0,E.forEach(B=>{p&&B.removeEventListener("scroll",n),x&&B.removeEventListener("resize",n)}),(V=_)==null||V.disconnect(),_=null,u&&cancelAnimationFrame(C)}}var Ri=(e,t,n)=>Ho(e,t,{platform:sa,...n}),la=e=>{let t={placement:"bottom",middleware:[]},n=Object.keys(e),r=o=>e[o];return n.includes("offset")&&t.middleware.push($i(r("offset"))),n.includes("placement")&&(t.placement=r("placement")),n.includes("autoPlacement")&&!n.includes("flip")&&t.middleware.push(Jr(r("autoPlacement"))),n.includes("flip")&&t.middleware.push(Bi(r("flip"))),n.includes("shift")&&t.middleware.push(Wi(r("shift"))),n.includes("inline")&&t.middleware.push(Ui(r("inline"))),n.includes("arrow")&&t.middleware.push(Li(r("arrow"))),n.includes("hide")&&t.middleware.push(Hi(r("hide"))),n.includes("size")&&t.middleware.push(Vi(r("size"))),t},fa=(e,t)=>{let n={component:{trap:!1},float:{placement:"bottom",strategy:"absolute",middleware:[]}},r=o=>e[e.indexOf(o)+1];return e.includes("trap")&&(n.component.trap=!0),e.includes("teleport")&&(n.float.strategy="fixed"),e.includes("offset")&&n.float.middleware.push($i(t.offset||10)),e.includes("placement")&&(n.float.placement=r("placement")),e.includes("autoPlacement")&&!e.includes("flip")&&n.float.middleware.push(Jr(t.autoPlacement)),e.includes("flip")&&n.float.middleware.push(Bi(t.flip)),e.includes("shift")&&n.float.middleware.push(Wi(t.shift)),e.includes("inline")&&n.float.middleware.push(Ui(t.inline)),e.includes("arrow")&&n.float.middleware.push(Li(t.arrow)),e.includes("hide")&&n.float.middleware.push(Hi(t.hide)),e.includes("size")&&n.float.middleware.push(Vi(t.size)),n},ua=e=>{var t="0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz".split(""),n="";e||(e=Math.floor(Math.random()*t.length));for(var r=0;r{(t===void 0||t.includes(n))&&(r.forEach(o=>o()),delete e._x_attributeCleanups[n])})}var Zr=new MutationObserver(Ji),ei=!1;function va(){Zr.observe(document,{subtree:!0,childList:!0,attributes:!0,attributeOldValue:!0}),ei=!0}function ga(){ma(),Zr.disconnect(),ei=!1}var jn=[],zr=!1;function ma(){jn=jn.concat(Zr.takeRecords()),jn.length&&!zr&&(zr=!0,queueMicrotask(()=>{ba(),zr=!1}))}function ba(){Ji(jn),jn.length=0}function Ii(e){if(!ei)return e();ga();let t=e();return va(),t}var ya=!1,Fi=[];function Ji(e){if(ya){Fi=Fi.concat(e);return}let t=[],n=[],r=new Map,o=new Map;for(let i=0;is.nodeType===1&&t.push(s)),e[i].removedNodes.forEach(s=>s.nodeType===1&&n.push(s))),e[i].type==="attributes")){let s=e[i].target,u=e[i].attributeName,h=e[i].oldValue,p=()=>{r.has(s)||r.set(s,[]),r.get(s).push({name:u,value:s.getAttribute(u)})},x=()=>{o.has(s)||o.set(s,[]),o.get(s).push(u)};s.hasAttribute(u)&&h===null?p():s.hasAttribute(u)?(x(),p()):x()}o.forEach((i,s)=>{ha(s,i)}),r.forEach((i,s)=>{ca.forEach(u=>u(s,i))});for(let i of n)if(!t.includes(i)&&(da.forEach(s=>s(i)),i._x_cleanups))for(;i._x_cleanups.length;)i._x_cleanups.pop()();t.forEach(i=>{i._x_ignoreSelf=!0,i._x_ignore=!0});for(let i of t)n.includes(i)||i.isConnected&&(delete i._x_ignoreSelf,delete i._x_ignore,pa.forEach(s=>s(i)),i._x_ignore=!0,i._x_ignoreSelf=!0);t.forEach(i=>{delete i._x_ignoreSelf,delete i._x_ignore}),t=null,n=null,r=null,o=null}function wa(e,t=()=>{}){let n=!1;return function(){n?t.apply(this,arguments):(n=!0,e.apply(this,arguments))}}function xa(e){let t={dismissable:!0,trap:!1};function n(i,s,u=null){if(s){if(s.hasAttribute("aria-expanded")||s.setAttribute("aria-expanded",!1),u.hasAttribute("id"))s.setAttribute("aria-controls",u.getAttribute("id"));else{let h=`panel-${ua(8)}`;s.setAttribute("aria-controls",h),u.setAttribute("id",h)}u.setAttribute("aria-modal",!0),u.setAttribute("role","dialog")}}let r=document.querySelectorAll('[\\@click^="$float"]'),o=document.querySelectorAll('[x-on\\:click^="$float"]');[...r,...o].forEach(i=>{let s=i.parentElement.closest("[x-data]"),u=s.querySelector('[x-ref="panel"]');n(s,i,u)}),e.magic("float",i=>(s={},u={})=>{let h={...t,...u},p=Object.keys(s).length>0?la(s):{middleware:[Jr()]},x=i,b=i.parentElement.closest("[x-data]"),E=b.querySelector('[x-ref="panel"]');function _(){return E.style.display=="block"}function C(){E.style.display="",x.setAttribute("aria-expanded",!1),h.trap&&E.setAttribute("x-trap",!1),Mi(i,E,V)}function M(){E.style.display="block",x.setAttribute("aria-expanded",!0),h.trap&&E.setAttribute("x-trap",!0),V()}function U(){_()?C():M()}async function V(){return await Ri(i,E,p).then(({middlewareData:B,placement:Q,x:q,y:xe})=>{if(B.arrow){let se=B.arrow?.x,ie=B.arrow?.y,be=p.middleware.filter(fe=>fe.name=="arrow")[0].options.element,R={top:"bottom",right:"left",bottom:"top",left:"right"}[Q.split("-")[0]];Object.assign(be.style,{left:se!=null?`${se}px`:"",top:ie!=null?`${ie}px`:"",right:"",bottom:"",[R]:"-4px"})}if(B.hide){let{referenceHidden:se}=B.hide;Object.assign(E.style,{visibility:se?"hidden":"visible"})}Object.assign(E.style,{left:`${q}px`,top:`${xe}px`})})}h.dismissable&&(window.addEventListener("click",B=>{!b.contains(B.target)&&_()&&U()}),window.addEventListener("keydown",B=>{B.key==="Escape"&&_()&&U()},!0)),U()}),e.directive("float",(i,{modifiers:s,expression:u},{evaluate:h,effect:p})=>{let x=u?h(u):{},b=s.length>0?fa(s,x):{},E=null;b.float.strategy=="fixed"&&(i.style.position="fixed");let _=R=>i.parentElement&&!i.parentElement.closest("[x-data]").contains(R.target)?i.close():null,C=R=>R.key==="Escape"?i.close():null,M=i.getAttribute("x-ref"),U=i.parentElement.closest("[x-data]"),V=U.querySelectorAll(`[\\@click^="$refs.${M}"]`),B=U.querySelectorAll(`[x-on\\:click^="$refs.${M}"]`);i.style.setProperty("display","none"),n(U,[...V,...B][0],i),i._x_isShown=!1,i.trigger=null,i._x_doHide||(i._x_doHide=()=>{Ii(()=>{i.style.setProperty("display","none",s.includes("important")?"important":void 0)})}),i._x_doShow||(i._x_doShow=()=>{Ii(()=>{i.style.setProperty("display","block",s.includes("important")?"important":void 0)})});let Q=()=>{i._x_doHide(),i._x_isShown=!1},q=()=>{i._x_doShow(),i._x_isShown=!0},xe=()=>setTimeout(q),se=wa(R=>R?q():Q(),R=>{typeof i._x_toggleAndCascadeWithTransitions=="function"?i._x_toggleAndCascadeWithTransitions(i,R,q,Q):R?xe():Q()}),ie,be=!0;p(()=>h(R=>{!be&&R===ie||(s.includes("immediate")&&(R?xe():Q()),se(R),ie=R,be=!1)})),i.open=async function(R){i.trigger=R.currentTarget?R.currentTarget:R,se(!0),i.trigger.setAttribute("aria-expanded",!0),b.component.trap&&i.setAttribute("x-trap",!0),E=Mi(i.trigger,i,()=>{Ri(i.trigger,i,b.float).then(({middlewareData:fe,placement:ce,x:l,y:d})=>{if(fe.arrow){let v=fe.arrow?.x,c=fe.arrow?.y,H=b.float.middleware.filter(P=>P.name=="arrow")[0].options.element,T={top:"bottom",right:"left",bottom:"top",left:"right"}[ce.split("-")[0]];Object.assign(H.style,{left:v!=null?`${v}px`:"",top:c!=null?`${c}px`:"",right:"",bottom:"",[T]:"-4px"})}if(fe.hide){let{referenceHidden:v}=fe.hide;Object.assign(i.style,{visibility:v?"hidden":"visible"})}Object.assign(i.style,{left:`${l}px`,top:`${d}px`})})}),window.addEventListener("click",_),window.addEventListener("keydown",C,!0)},i.close=function(){se(!1),i.trigger.setAttribute("aria-expanded",!1),b.component.trap&&i.setAttribute("x-trap",!1),E(),window.removeEventListener("click",_),window.removeEventListener("keydown",C,!1)},i.toggle=function(R){i._x_isShown?i.close():i.open(R)}})}var Qi=xa;function Ea(e){e.store("lazyLoadedAssets",{loaded:new Set,check(s){return Array.isArray(s)?s.every(u=>this.loaded.has(u)):this.loaded.has(s)},markLoaded(s){Array.isArray(s)?s.forEach(u=>this.loaded.add(u)):this.loaded.add(s)}});function t(s){return new CustomEvent(s,{bubbles:!0,composed:!0,cancelable:!0})}function n(s,u={},h,p){let x=document.createElement(s);for(let[b,E]of Object.entries(u))x[b]=E;return h&&(p?h.insertBefore(x,p):h.appendChild(x)),x}function r(s,u,h={},p=null,x=null){let b=s==="link"?`link[href="${u}"]`:`script[src="${u}"]`;if(document.querySelector(b)||e.store("lazyLoadedAssets").check(u))return Promise.resolve();let E=s==="link"?{...h,href:u}:{...h,src:u},_=n(s,E,p,x);return new Promise((C,M)=>{_.onload=()=>{e.store("lazyLoadedAssets").markLoaded(u),C()},_.onerror=()=>{M(new Error(`Failed to load ${s}: ${u}`))}})}async function o(s,u,h=null,p=null){let x={type:"text/css",rel:"stylesheet"};u&&(x.media=u);let b=document.head,E=null;if(h&&p){let _=document.querySelector(`link[href*="${p}"]`);_?(b=_.parentNode,E=h==="before"?_:_.nextSibling):console.warn(`Target (${p}) not found for ${s}. Appending to head.`)}await r("link",s,x,b,E)}async function i(s,u,h=null,p=null){let x,b;h&&p&&(x=document.querySelector(`script[src*="${p}"]`),x?b=h==="before"?x:x.nextSibling:console.warn(`Target (${p}) not found for ${s}. Appending to body.`));let E=u.has("body-start")?"prepend":"append";await r("script",s,{},x||document[u.has("body-end")?"body":"head"],b)}e.directive("load-css",(s,{expression:u},{evaluate:h})=>{let p=h(u),x=s.media,b=s.getAttribute("data-dispatch"),E=s.getAttribute("data-css-before")?"before":s.getAttribute("data-css-after")?"after":null,_=s.getAttribute("data-css-before")||s.getAttribute("data-css-after")||null;Promise.all(p.map(C=>o(C,x,E,_))).then(()=>{b&&window.dispatchEvent(t(b+"-css"))}).catch(C=>{console.error(C)})}),e.directive("load-js",(s,{expression:u,modifiers:h},{evaluate:p})=>{let x=p(u),b=new Set(h),E=s.getAttribute("data-js-before")?"before":s.getAttribute("data-js-after")?"after":null,_=s.getAttribute("data-js-before")||s.getAttribute("data-js-after")||null,C=s.getAttribute("data-dispatch");Promise.all(x.map(M=>i(M,b,E,_))).then(()=>{C&&window.dispatchEvent(t(C+"-js"))}).catch(M=>{console.error(M)})})}var Zi=Ea;var Ro=Bo(no(),1);function ro(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),n.push.apply(n,r)}return n}function Ct(e){for(var t=1;t=0)&&(n[o]=e[o]);return n}function Aa(e,t){if(e==null)return{};var n=Sa(e,t),r,o;if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var Ca="1.15.2";function Nt(e){if(typeof window<"u"&&window.navigator)return!!navigator.userAgent.match(e)}var kt=Nt(/(?:Trident.*rv[ :]?11\.|msie|iemobile|Windows Phone)/i),Gn=Nt(/Edge/i),io=Nt(/firefox/i),Un=Nt(/safari/i)&&!Nt(/chrome/i)&&!Nt(/android/i),po=Nt(/iP(ad|od|hone)/i),ho=Nt(/chrome/i)&&Nt(/android/i),vo={capture:!1,passive:!1};function Ce(e,t,n){e.addEventListener(t,n,!kt&&vo)}function Oe(e,t,n){e.removeEventListener(t,n,!kt&&vo)}function Or(e,t){if(t){if(t[0]===">"&&(t=t.substring(1)),e)try{if(e.matches)return e.matches(t);if(e.msMatchesSelector)return e.msMatchesSelector(t);if(e.webkitMatchesSelector)return e.webkitMatchesSelector(t)}catch{return!1}return!1}}function Da(e){return e.host&&e!==document&&e.host.nodeType?e.host:e.parentNode}function bt(e,t,n,r){if(e){n=n||document;do{if(t!=null&&(t[0]===">"?e.parentNode===n&&Or(e,t):Or(e,t))||r&&e===n)return e;if(e===n)break}while(e=Da(e))}return null}var oo=/\s+/g;function st(e,t,n){if(e&&t)if(e.classList)e.classList[n?"add":"remove"](t);else{var r=(" "+e.className+" ").replace(oo," ").replace(" "+t+" "," ");e.className=(r+(n?" "+t:"")).replace(oo," ")}}function ne(e,t,n){var r=e&&e.style;if(r){if(n===void 0)return document.defaultView&&document.defaultView.getComputedStyle?n=document.defaultView.getComputedStyle(e,""):e.currentStyle&&(n=e.currentStyle),t===void 0?n:n[t];!(t in r)&&t.indexOf("webkit")===-1&&(t="-webkit-"+t),r[t]=n+(typeof n=="string"?"":"px")}}function _n(e,t){var n="";if(typeof e=="string")n=e;else do{var r=ne(e,"transform");r&&r!=="none"&&(n=r+" "+n)}while(!t&&(e=e.parentNode));var o=window.DOMMatrix||window.WebKitCSSMatrix||window.CSSMatrix||window.MSCSSMatrix;return o&&new o(n)}function go(e,t,n){if(e){var r=e.getElementsByTagName(t),o=0,i=r.length;if(n)for(;o=i:s=o<=i,!s)return r;if(r===At())break;r=nn(r,!1)}return!1}function Tn(e,t,n,r){for(var o=0,i=0,s=e.children;i2&&arguments[2]!==void 0?arguments[2]:{},o=r.evt,i=Aa(r,Na);Kn.pluginEvent.bind(re)(t,n,Ct({dragEl:N,parentEl:Ue,ghostEl:ue,rootEl:ke,nextEl:hn,lastDownEl:yr,cloneEl:We,cloneHidden:tn,dragStarted:$n,putSortable:Qe,activeSortable:re.active,originalEvent:o,oldIndex:Dn,oldDraggableIndex:Yn,newIndex:lt,newDraggableIndex:en,hideGhostForTarget:So,unhideGhostForTarget:Ao,cloneNowHidden:function(){tn=!0},cloneNowShown:function(){tn=!1},dispatchSortableEvent:function(u){rt({sortable:n,name:u,originalEvent:o})}},i))};function rt(e){Fa(Ct({putSortable:Qe,cloneEl:We,targetEl:N,rootEl:ke,oldIndex:Dn,oldDraggableIndex:Yn,newIndex:lt,newDraggableIndex:en},e))}var N,Ue,ue,ke,hn,yr,We,tn,Dn,lt,Yn,en,hr,Qe,Cn=!1,Sr=!1,Ar=[],dn,mt,ri,ii,lo,fo,$n,An,Xn,qn=!1,vr=!1,wr,tt,oi=[],ui=!1,Cr=[],_r=typeof document<"u",gr=po,uo=Gn||kt?"cssFloat":"float",La=_r&&!ho&&!po&&"draggable"in document.createElement("div"),xo=function(){if(_r){if(kt)return!1;var e=document.createElement("x");return e.style.cssText="pointer-events:auto",e.style.pointerEvents==="auto"}}(),Eo=function(t,n){var r=ne(t),o=parseInt(r.width)-parseInt(r.paddingLeft)-parseInt(r.paddingRight)-parseInt(r.borderLeftWidth)-parseInt(r.borderRightWidth),i=Tn(t,0,n),s=Tn(t,1,n),u=i&&ne(i),h=s&&ne(s),p=u&&parseInt(u.marginLeft)+parseInt(u.marginRight)+qe(i).width,x=h&&parseInt(h.marginLeft)+parseInt(h.marginRight)+qe(s).width;if(r.display==="flex")return r.flexDirection==="column"||r.flexDirection==="column-reverse"?"vertical":"horizontal";if(r.display==="grid")return r.gridTemplateColumns.split(" ").length<=1?"vertical":"horizontal";if(i&&u.float&&u.float!=="none"){var b=u.float==="left"?"left":"right";return s&&(h.clear==="both"||h.clear===b)?"vertical":"horizontal"}return i&&(u.display==="block"||u.display==="flex"||u.display==="table"||u.display==="grid"||p>=o&&r[uo]==="none"||s&&r[uo]==="none"&&p+x>o)?"vertical":"horizontal"},ka=function(t,n,r){var o=r?t.left:t.top,i=r?t.right:t.bottom,s=r?t.width:t.height,u=r?n.left:n.top,h=r?n.right:n.bottom,p=r?n.width:n.height;return o===u||i===h||o+s/2===u+p/2},ja=function(t,n){var r;return Ar.some(function(o){var i=o[ft].options.emptyInsertThreshold;if(!(!i||hi(o))){var s=qe(o),u=t>=s.left-i&&t<=s.right+i,h=n>=s.top-i&&n<=s.bottom+i;if(u&&h)return r=o}}),r},Oo=function(t){function n(i,s){return function(u,h,p,x){var b=u.options.group.name&&h.options.group.name&&u.options.group.name===h.options.group.name;if(i==null&&(s||b))return!0;if(i==null||i===!1)return!1;if(s&&i==="clone")return i;if(typeof i=="function")return n(i(u,h,p,x),s)(u,h,p,x);var E=(s?u:h).options.group.name;return i===!0||typeof i=="string"&&i===E||i.join&&i.indexOf(E)>-1}}var r={},o=t.group;(!o||br(o)!="object")&&(o={name:o}),r.name=o.name,r.checkPull=n(o.pull,!0),r.checkPut=n(o.put),r.revertClone=o.revertClone,t.group=r},So=function(){!xo&&ue&&ne(ue,"display","none")},Ao=function(){!xo&&ue&&ne(ue,"display","")};_r&&!ho&&document.addEventListener("click",function(e){if(Sr)return e.preventDefault(),e.stopPropagation&&e.stopPropagation(),e.stopImmediatePropagation&&e.stopImmediatePropagation(),Sr=!1,!1},!0);var pn=function(t){if(N){t=t.touches?t.touches[0]:t;var n=ja(t.clientX,t.clientY);if(n){var r={};for(var o in t)t.hasOwnProperty(o)&&(r[o]=t[o]);r.target=r.rootEl=n,r.preventDefault=void 0,r.stopPropagation=void 0,n[ft]._onDragOver(r)}}},Ba=function(t){N&&N.parentNode[ft]._isOutsideThisEl(t.target)};function re(e,t){if(!(e&&e.nodeType&&e.nodeType===1))throw"Sortable: `el` must be an HTMLElement, not ".concat({}.toString.call(e));this.el=e,this.options=t=Lt({},t),e[ft]=this;var n={group:null,sort:!0,disabled:!1,store:null,handle:null,draggable:/^[uo]l$/i.test(e.nodeName)?">li":">*",swapThreshold:1,invertSwap:!1,invertedSwapThreshold:null,removeCloneOnHide:!0,direction:function(){return Eo(e,this.options)},ghostClass:"sortable-ghost",chosenClass:"sortable-chosen",dragClass:"sortable-drag",ignore:"a, img",filter:null,preventOnFilter:!0,animation:0,easing:null,setData:function(s,u){s.setData("Text",u.textContent)},dropBubble:!1,dragoverBubble:!1,dataIdAttr:"data-id",delay:0,delayOnTouchOnly:!1,touchStartThreshold:(Number.parseInt?Number:window).parseInt(window.devicePixelRatio,10)||1,forceFallback:!1,fallbackClass:"sortable-fallback",fallbackOnBody:!1,fallbackTolerance:0,fallbackOffset:{x:0,y:0},supportPointer:re.supportPointer!==!1&&"PointerEvent"in window&&!Un,emptyInsertThreshold:5};Kn.initializePlugins(this,e,n);for(var r in n)!(r in t)&&(t[r]=n[r]);Oo(t);for(var o in this)o.charAt(0)==="_"&&typeof this[o]=="function"&&(this[o]=this[o].bind(this));this.nativeDraggable=t.forceFallback?!1:La,this.nativeDraggable&&(this.options.touchStartThreshold=1),t.supportPointer?Ce(e,"pointerdown",this._onTapStart):(Ce(e,"mousedown",this._onTapStart),Ce(e,"touchstart",this._onTapStart)),this.nativeDraggable&&(Ce(e,"dragover",this),Ce(e,"dragenter",this)),Ar.push(this.el),t.store&&t.store.get&&this.sort(t.store.get(this)||[]),Lt(this,Ma())}re.prototype={constructor:re,_isOutsideThisEl:function(t){!this.el.contains(t)&&t!==this.el&&(An=null)},_getDirection:function(t,n){return typeof this.options.direction=="function"?this.options.direction.call(this,t,n,N):this.options.direction},_onTapStart:function(t){if(t.cancelable){var n=this,r=this.el,o=this.options,i=o.preventOnFilter,s=t.type,u=t.touches&&t.touches[0]||t.pointerType&&t.pointerType==="touch"&&t,h=(u||t).target,p=t.target.shadowRoot&&(t.path&&t.path[0]||t.composedPath&&t.composedPath()[0])||h,x=o.filter;if(Xa(r),!N&&!(/mousedown|pointerdown/.test(s)&&t.button!==0||o.disabled)&&!p.isContentEditable&&!(!this.nativeDraggable&&Un&&h&&h.tagName.toUpperCase()==="SELECT")&&(h=bt(h,o.draggable,r,!1),!(h&&h.animated)&&yr!==h)){if(Dn=ct(h),Yn=ct(h,o.draggable),typeof x=="function"){if(x.call(this,t,h,this)){rt({sortable:n,rootEl:p,name:"filter",targetEl:h,toEl:r,fromEl:r}),ot("filter",n,{evt:t}),i&&t.cancelable&&t.preventDefault();return}}else if(x&&(x=x.split(",").some(function(b){if(b=bt(p,b.trim(),r,!1),b)return rt({sortable:n,rootEl:b,name:"filter",targetEl:h,fromEl:r,toEl:r}),ot("filter",n,{evt:t}),!0}),x)){i&&t.cancelable&&t.preventDefault();return}o.handle&&!bt(p,o.handle,r,!1)||this._prepareDragStart(t,u,h)}}},_prepareDragStart:function(t,n,r){var o=this,i=o.el,s=o.options,u=i.ownerDocument,h;if(r&&!N&&r.parentNode===i){var p=qe(r);if(ke=i,N=r,Ue=N.parentNode,hn=N.nextSibling,yr=r,hr=s.group,re.dragged=N,dn={target:N,clientX:(n||t).clientX,clientY:(n||t).clientY},lo=dn.clientX-p.left,fo=dn.clientY-p.top,this._lastX=(n||t).clientX,this._lastY=(n||t).clientY,N.style["will-change"]="all",h=function(){if(ot("delayEnded",o,{evt:t}),re.eventCanceled){o._onDrop();return}o._disableDelayedDragEvents(),!io&&o.nativeDraggable&&(N.draggable=!0),o._triggerDragStart(t,n),rt({sortable:o,name:"choose",originalEvent:t}),st(N,s.chosenClass,!0)},s.ignore.split(",").forEach(function(x){go(N,x.trim(),ai)}),Ce(u,"dragover",pn),Ce(u,"mousemove",pn),Ce(u,"touchmove",pn),Ce(u,"mouseup",o._onDrop),Ce(u,"touchend",o._onDrop),Ce(u,"touchcancel",o._onDrop),io&&this.nativeDraggable&&(this.options.touchStartThreshold=4,N.draggable=!0),ot("delayStart",this,{evt:t}),s.delay&&(!s.delayOnTouchOnly||n)&&(!this.nativeDraggable||!(Gn||kt))){if(re.eventCanceled){this._onDrop();return}Ce(u,"mouseup",o._disableDelayedDrag),Ce(u,"touchend",o._disableDelayedDrag),Ce(u,"touchcancel",o._disableDelayedDrag),Ce(u,"mousemove",o._delayedDragTouchMoveHandler),Ce(u,"touchmove",o._delayedDragTouchMoveHandler),s.supportPointer&&Ce(u,"pointermove",o._delayedDragTouchMoveHandler),o._dragStartTimer=setTimeout(h,s.delay)}else h()}},_delayedDragTouchMoveHandler:function(t){var n=t.touches?t.touches[0]:t;Math.max(Math.abs(n.clientX-this._lastX),Math.abs(n.clientY-this._lastY))>=Math.floor(this.options.touchStartThreshold/(this.nativeDraggable&&window.devicePixelRatio||1))&&this._disableDelayedDrag()},_disableDelayedDrag:function(){N&&ai(N),clearTimeout(this._dragStartTimer),this._disableDelayedDragEvents()},_disableDelayedDragEvents:function(){var t=this.el.ownerDocument;Oe(t,"mouseup",this._disableDelayedDrag),Oe(t,"touchend",this._disableDelayedDrag),Oe(t,"touchcancel",this._disableDelayedDrag),Oe(t,"mousemove",this._delayedDragTouchMoveHandler),Oe(t,"touchmove",this._delayedDragTouchMoveHandler),Oe(t,"pointermove",this._delayedDragTouchMoveHandler)},_triggerDragStart:function(t,n){n=n||t.pointerType=="touch"&&t,!this.nativeDraggable||n?this.options.supportPointer?Ce(document,"pointermove",this._onTouchMove):n?Ce(document,"touchmove",this._onTouchMove):Ce(document,"mousemove",this._onTouchMove):(Ce(N,"dragend",this),Ce(ke,"dragstart",this._onDragStart));try{document.selection?xr(function(){document.selection.empty()}):window.getSelection().removeAllRanges()}catch{}},_dragStarted:function(t,n){if(Cn=!1,ke&&N){ot("dragStarted",this,{evt:n}),this.nativeDraggable&&Ce(document,"dragover",Ba);var r=this.options;!t&&st(N,r.dragClass,!1),st(N,r.ghostClass,!0),re.active=this,t&&this._appendGhost(),rt({sortable:this,name:"start",originalEvent:n})}else this._nulling()},_emulateDragOver:function(){if(mt){this._lastX=mt.clientX,this._lastY=mt.clientY,So();for(var t=document.elementFromPoint(mt.clientX,mt.clientY),n=t;t&&t.shadowRoot&&(t=t.shadowRoot.elementFromPoint(mt.clientX,mt.clientY),t!==n);)n=t;if(N.parentNode[ft]._isOutsideThisEl(t),n)do{if(n[ft]){var r=void 0;if(r=n[ft]._onDragOver({clientX:mt.clientX,clientY:mt.clientY,target:t,rootEl:n}),r&&!this.options.dragoverBubble)break}t=n}while(n=n.parentNode);Ao()}},_onTouchMove:function(t){if(dn){var n=this.options,r=n.fallbackTolerance,o=n.fallbackOffset,i=t.touches?t.touches[0]:t,s=ue&&_n(ue,!0),u=ue&&s&&s.a,h=ue&&s&&s.d,p=gr&&tt&&so(tt),x=(i.clientX-dn.clientX+o.x)/(u||1)+(p?p[0]-oi[0]:0)/(u||1),b=(i.clientY-dn.clientY+o.y)/(h||1)+(p?p[1]-oi[1]:0)/(h||1);if(!re.active&&!Cn){if(r&&Math.max(Math.abs(i.clientX-this._lastX),Math.abs(i.clientY-this._lastY))=0&&(rt({rootEl:Ue,name:"add",toEl:Ue,fromEl:ke,originalEvent:t}),rt({sortable:this,name:"remove",toEl:Ue,originalEvent:t}),rt({rootEl:Ue,name:"sort",toEl:Ue,fromEl:ke,originalEvent:t}),rt({sortable:this,name:"sort",toEl:Ue,originalEvent:t})),Qe&&Qe.save()):lt!==Dn&<>=0&&(rt({sortable:this,name:"update",toEl:Ue,originalEvent:t}),rt({sortable:this,name:"sort",toEl:Ue,originalEvent:t})),re.active&&((lt==null||lt===-1)&&(lt=Dn,en=Yn),rt({sortable:this,name:"end",toEl:Ue,originalEvent:t}),this.save()))),this._nulling()},_nulling:function(){ot("nulling",this),ke=N=Ue=ue=hn=We=yr=tn=dn=mt=$n=lt=en=Dn=Yn=An=Xn=Qe=hr=re.dragged=re.ghost=re.clone=re.active=null,Cr.forEach(function(t){t.checked=!0}),Cr.length=ri=ii=0},handleEvent:function(t){switch(t.type){case"drop":case"dragend":this._onDrop(t);break;case"dragenter":case"dragover":N&&(this._onDragOver(t),Ha(t));break;case"selectstart":t.preventDefault();break}},toArray:function(){for(var t=[],n,r=this.el.children,o=0,i=r.length,s=this.options;oo.right+i||e.clientY>r.bottom&&e.clientX>r.left:e.clientY>o.bottom+i||e.clientX>r.right&&e.clientY>r.top}function Ua(e,t,n,r,o,i,s,u){var h=r?e.clientY:e.clientX,p=r?n.height:n.width,x=r?n.top:n.left,b=r?n.bottom:n.right,E=!1;if(!s){if(u&&wrx+p*i/2:hb-wr)return-Xn}else if(h>x+p*(1-o)/2&&hb-p*i/2)?h>x+p/2?1:-1:0}function za(e){return ct(N){e.directive("sortable",t=>{let n=parseInt(t.dataset?.sortableAnimationDuration);n!==0&&!n&&(n=300),t.sortable=mi.create(t,{draggable:"[x-sortable-item]",handle:"[x-sortable-handle]",dataIdAttr:"x-sortable-item",animation:n,ghostClass:"fi-sortable-ghost"})})};var Ga=Object.create,wi=Object.defineProperty,Ka=Object.getPrototypeOf,Ja=Object.prototype.hasOwnProperty,Qa=Object.getOwnPropertyNames,Za=Object.getOwnPropertyDescriptor,es=e=>wi(e,"__esModule",{value:!0}),_o=(e,t)=>()=>(t||(t={exports:{}},e(t.exports,t)),t.exports),ts=(e,t,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of Qa(t))!Ja.call(e,r)&&r!=="default"&&wi(e,r,{get:()=>t[r],enumerable:!(n=Za(t,r))||n.enumerable});return e},To=e=>ts(es(wi(e!=null?Ga(Ka(e)):{},"default",e&&e.__esModule&&"default"in e?{get:()=>e.default,enumerable:!0}:{value:e,enumerable:!0})),e),ns=_o(e=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});function t(f){var a=f.getBoundingClientRect();return{width:a.width,height:a.height,top:a.top,right:a.right,bottom:a.bottom,left:a.left,x:a.left,y:a.top}}function n(f){if(f==null)return window;if(f.toString()!=="[object Window]"){var a=f.ownerDocument;return a&&a.defaultView||window}return f}function r(f){var a=n(f),m=a.pageXOffset,A=a.pageYOffset;return{scrollLeft:m,scrollTop:A}}function o(f){var a=n(f).Element;return f instanceof a||f instanceof Element}function i(f){var a=n(f).HTMLElement;return f instanceof a||f instanceof HTMLElement}function s(f){if(typeof ShadowRoot>"u")return!1;var a=n(f).ShadowRoot;return f instanceof a||f instanceof ShadowRoot}function u(f){return{scrollLeft:f.scrollLeft,scrollTop:f.scrollTop}}function h(f){return f===n(f)||!i(f)?r(f):u(f)}function p(f){return f?(f.nodeName||"").toLowerCase():null}function x(f){return((o(f)?f.ownerDocument:f.document)||window.document).documentElement}function b(f){return t(x(f)).left+r(f).scrollLeft}function E(f){return n(f).getComputedStyle(f)}function _(f){var a=E(f),m=a.overflow,A=a.overflowX,D=a.overflowY;return/auto|scroll|overlay|hidden/.test(m+D+A)}function C(f,a,m){m===void 0&&(m=!1);var A=x(a),D=t(f),F=i(a),$={scrollLeft:0,scrollTop:0},k={x:0,y:0};return(F||!F&&!m)&&((p(a)!=="body"||_(A))&&($=h(a)),i(a)?(k=t(a),k.x+=a.clientLeft,k.y+=a.clientTop):A&&(k.x=b(A))),{x:D.left+$.scrollLeft-k.x,y:D.top+$.scrollTop-k.y,width:D.width,height:D.height}}function M(f){var a=t(f),m=f.offsetWidth,A=f.offsetHeight;return Math.abs(a.width-m)<=1&&(m=a.width),Math.abs(a.height-A)<=1&&(A=a.height),{x:f.offsetLeft,y:f.offsetTop,width:m,height:A}}function U(f){return p(f)==="html"?f:f.assignedSlot||f.parentNode||(s(f)?f.host:null)||x(f)}function V(f){return["html","body","#document"].indexOf(p(f))>=0?f.ownerDocument.body:i(f)&&_(f)?f:V(U(f))}function B(f,a){var m;a===void 0&&(a=[]);var A=V(f),D=A===((m=f.ownerDocument)==null?void 0:m.body),F=n(A),$=D?[F].concat(F.visualViewport||[],_(A)?A:[]):A,k=a.concat($);return D?k:k.concat(B(U($)))}function Q(f){return["table","td","th"].indexOf(p(f))>=0}function q(f){return!i(f)||E(f).position==="fixed"?null:f.offsetParent}function xe(f){var a=navigator.userAgent.toLowerCase().indexOf("firefox")!==-1,m=navigator.userAgent.indexOf("Trident")!==-1;if(m&&i(f)){var A=E(f);if(A.position==="fixed")return null}for(var D=U(f);i(D)&&["html","body"].indexOf(p(D))<0;){var F=E(D);if(F.transform!=="none"||F.perspective!=="none"||F.contain==="paint"||["transform","perspective"].indexOf(F.willChange)!==-1||a&&F.willChange==="filter"||a&&F.filter&&F.filter!=="none")return D;D=D.parentNode}return null}function se(f){for(var a=n(f),m=q(f);m&&Q(m)&&E(m).position==="static";)m=q(m);return m&&(p(m)==="html"||p(m)==="body"&&E(m).position==="static")?a:m||xe(f)||a}var ie="top",be="bottom",R="right",fe="left",ce="auto",l=[ie,be,R,fe],d="start",v="end",c="clippingParents",H="viewport",T="popper",P="reference",G=l.reduce(function(f,a){return f.concat([a+"-"+d,a+"-"+v])},[]),ze=[].concat(l,[ce]).reduce(function(f,a){return f.concat([a,a+"-"+d,a+"-"+v])},[]),Dt="beforeRead",jt="read",Tr="afterRead",Pr="beforeMain",Mr="main",Bt="afterMain",Jn="beforeWrite",Rr="write",Qn="afterWrite",_t=[Dt,jt,Tr,Pr,Mr,Bt,Jn,Rr,Qn];function Ir(f){var a=new Map,m=new Set,A=[];f.forEach(function(F){a.set(F.name,F)});function D(F){m.add(F.name);var $=[].concat(F.requires||[],F.requiresIfExists||[]);$.forEach(function(k){if(!m.has(k)){var Y=a.get(k);Y&&D(Y)}}),A.push(F)}return f.forEach(function(F){m.has(F.name)||D(F)}),A}function dt(f){var a=Ir(f);return _t.reduce(function(m,A){return m.concat(a.filter(function(D){return D.phase===A}))},[])}function Ht(f){var a;return function(){return a||(a=new Promise(function(m){Promise.resolve().then(function(){a=void 0,m(f())})})),a}}function yt(f){for(var a=arguments.length,m=new Array(a>1?a-1:0),A=1;A=0,A=m&&i(f)?se(f):f;return o(A)?a.filter(function(D){return o(D)&&Pn(D,A)&&p(D)!=="body"}):[]}function gn(f,a,m){var A=a==="clippingParents"?vn(f):[].concat(a),D=[].concat(A,[m]),F=D[0],$=D.reduce(function(k,Y){var te=nr(f,Y);return k.top=pt(te.top,k.top),k.right=rn(te.right,k.right),k.bottom=rn(te.bottom,k.bottom),k.left=pt(te.left,k.left),k},nr(f,F));return $.width=$.right-$.left,$.height=$.bottom-$.top,$.x=$.left,$.y=$.top,$}function on(f){return f.split("-")[1]}function ut(f){return["top","bottom"].indexOf(f)>=0?"x":"y"}function rr(f){var a=f.reference,m=f.element,A=f.placement,D=A?it(A):null,F=A?on(A):null,$=a.x+a.width/2-m.width/2,k=a.y+a.height/2-m.height/2,Y;switch(D){case ie:Y={x:$,y:a.y-m.height};break;case be:Y={x:$,y:a.y+a.height};break;case R:Y={x:a.x+a.width,y:k};break;case fe:Y={x:a.x-m.width,y:k};break;default:Y={x:a.x,y:a.y}}var te=D?ut(D):null;if(te!=null){var W=te==="y"?"height":"width";switch(F){case d:Y[te]=Y[te]-(a[W]/2-m[W]/2);break;case v:Y[te]=Y[te]+(a[W]/2-m[W]/2);break}}return Y}function ir(){return{top:0,right:0,bottom:0,left:0}}function or(f){return Object.assign({},ir(),f)}function ar(f,a){return a.reduce(function(m,A){return m[A]=f,m},{})}function Vt(f,a){a===void 0&&(a={});var m=a,A=m.placement,D=A===void 0?f.placement:A,F=m.boundary,$=F===void 0?c:F,k=m.rootBoundary,Y=k===void 0?H:k,te=m.elementContext,W=te===void 0?T:te,De=m.altBoundary,Ne=De===void 0?!1:De,Ae=m.padding,we=Ae===void 0?0:Ae,Me=or(typeof we!="number"?we:ar(we,l)),Ee=W===T?P:T,Be=f.elements.reference,Re=f.rects.popper,He=f.elements[Ne?Ee:W],ae=gn(o(He)?He:He.contextElement||x(f.elements.popper),$,Y),Pe=t(Be),_e=rr({reference:Pe,element:Re,strategy:"absolute",placement:D}),Le=Wt(Object.assign({},Re,_e)),Fe=W===T?Le:Pe,Ye={top:ae.top-Fe.top+Me.top,bottom:Fe.bottom-ae.bottom+Me.bottom,left:ae.left-Fe.left+Me.left,right:Fe.right-ae.right+Me.right},$e=f.modifiersData.offset;if(W===T&&$e){var Ve=$e[D];Object.keys(Ye).forEach(function(gt){var et=[R,be].indexOf(gt)>=0?1:-1,Pt=[ie,be].indexOf(gt)>=0?"y":"x";Ye[gt]+=Ve[Pt]*et})}return Ye}var sr="Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.",jr="Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.",mn={placement:"bottom",modifiers:[],strategy:"absolute"};function an(){for(var f=arguments.length,a=new Array(f),m=0;m100){console.error(jr);break}if(W.reset===!0){W.reset=!1,Pe=-1;continue}var _e=W.orderedModifiers[Pe],Le=_e.fn,Fe=_e.options,Ye=Fe===void 0?{}:Fe,$e=_e.name;typeof Le=="function"&&(W=Le({state:W,options:Ye,name:$e,instance:Ae})||W)}}},update:Ht(function(){return new Promise(function(Ee){Ae.forceUpdate(),Ee(W)})}),destroy:function(){Me(),Ne=!0}};if(!an(k,Y))return console.error(sr),Ae;Ae.setOptions(te).then(function(Ee){!Ne&&te.onFirstUpdate&&te.onFirstUpdate(Ee)});function we(){W.orderedModifiers.forEach(function(Ee){var Be=Ee.name,Re=Ee.options,He=Re===void 0?{}:Re,ae=Ee.effect;if(typeof ae=="function"){var Pe=ae({state:W,name:Be,instance:Ae,options:He}),_e=function(){};De.push(Pe||_e)}})}function Me(){De.forEach(function(Ee){return Ee()}),De=[]}return Ae}}var yn={passive:!0};function Br(f){var a=f.state,m=f.instance,A=f.options,D=A.scroll,F=D===void 0?!0:D,$=A.resize,k=$===void 0?!0:$,Y=n(a.elements.popper),te=[].concat(a.scrollParents.reference,a.scrollParents.popper);return F&&te.forEach(function(W){W.addEventListener("scroll",m.update,yn)}),k&&Y.addEventListener("resize",m.update,yn),function(){F&&te.forEach(function(W){W.removeEventListener("scroll",m.update,yn)}),k&&Y.removeEventListener("resize",m.update,yn)}}var Mn={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:Br,data:{}};function Hr(f){var a=f.state,m=f.name;a.modifiersData[m]=rr({reference:a.rects.reference,element:a.rects.popper,strategy:"absolute",placement:a.placement})}var Rn={name:"popperOffsets",enabled:!0,phase:"read",fn:Hr,data:{}},$r={top:"auto",right:"auto",bottom:"auto",left:"auto"};function Wr(f){var a=f.x,m=f.y,A=window,D=A.devicePixelRatio||1;return{x:$t($t(a*D)/D)||0,y:$t($t(m*D)/D)||0}}function In(f){var a,m=f.popper,A=f.popperRect,D=f.placement,F=f.offsets,$=f.position,k=f.gpuAcceleration,Y=f.adaptive,te=f.roundOffsets,W=te===!0?Wr(F):typeof te=="function"?te(F):F,De=W.x,Ne=De===void 0?0:De,Ae=W.y,we=Ae===void 0?0:Ae,Me=F.hasOwnProperty("x"),Ee=F.hasOwnProperty("y"),Be=fe,Re=ie,He=window;if(Y){var ae=se(m),Pe="clientHeight",_e="clientWidth";ae===n(m)&&(ae=x(m),E(ae).position!=="static"&&(Pe="scrollHeight",_e="scrollWidth")),ae=ae,D===ie&&(Re=be,we-=ae[Pe]-A.height,we*=k?1:-1),D===fe&&(Be=R,Ne-=ae[_e]-A.width,Ne*=k?1:-1)}var Le=Object.assign({position:$},Y&&$r);if(k){var Fe;return Object.assign({},Le,(Fe={},Fe[Re]=Ee?"0":"",Fe[Be]=Me?"0":"",Fe.transform=(He.devicePixelRatio||1)<2?"translate("+Ne+"px, "+we+"px)":"translate3d("+Ne+"px, "+we+"px, 0)",Fe))}return Object.assign({},Le,(a={},a[Re]=Ee?we+"px":"",a[Be]=Me?Ne+"px":"",a.transform="",a))}function g(f){var a=f.state,m=f.options,A=m.gpuAcceleration,D=A===void 0?!0:A,F=m.adaptive,$=F===void 0?!0:F,k=m.roundOffsets,Y=k===void 0?!0:k,te=E(a.elements.popper).transitionProperty||"";$&&["transform","top","right","bottom","left"].some(function(De){return te.indexOf(De)>=0})&&console.warn(["Popper: Detected CSS transitions on at least one of the following",'CSS properties: "transform", "top", "right", "bottom", "left".',` `,'Disable the "computeStyles" modifier\'s `adaptive` option to allow',"for smooth transitions, or remove these properties from the CSS","transition declaration on the popper element if only transitioning","opacity or background-color for example.",` -`,"We recommend using the popper element as a wrapper around an inner","element that can have any CSS property transitioned for animations."].join(" "));var I={placement:nt(a.placement),popper:a.elements.popper,popperRect:a.rects.popper,gpuAcceleration:x};a.modifiersData.popperOffsets!=null&&(a.styles.popper=Object.assign({},a.styles.popper,In(Object.assign({},I,{offsets:a.modifiersData.popperOffsets,position:a.options.strategy,adaptive:R,roundOffsets:j})))),a.modifiersData.arrow!=null&&(a.styles.arrow=Object.assign({},a.styles.arrow,In(Object.assign({},I,{offsets:a.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:j})))),a.attributes.popper=Object.assign({},a.attributes.popper,{"data-popper-placement":a.placement})}var h={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:f,data:{}};function y(l){var a=l.state;Object.keys(a.elements).forEach(function(d){var E=a.styles[d]||{},x=a.attributes[d]||{},D=a.elements[d];!o(D)||!p(D)||(Object.assign(D.style,E),Object.keys(x).forEach(function(R){var P=x[R];P===!1?D.removeAttribute(R):D.setAttribute(R,P===!0?"":P)}))})}function C(l){var a=l.state,d={popper:{position:a.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(a.elements.popper.style,d.popper),a.styles=d,a.elements.arrow&&Object.assign(a.elements.arrow.style,d.arrow),function(){Object.keys(a.elements).forEach(function(E){var x=a.elements[E],D=a.attributes[E]||{},R=Object.keys(a.styles.hasOwnProperty(E)?a.styles[E]:d[E]),P=R.reduce(function(j,z){return j[z]="",j},{});!o(x)||!p(x)||(Object.assign(x.style,P),Object.keys(D).forEach(function(j){x.removeAttribute(j)}))})}}var k={name:"applyStyles",enabled:!0,phase:"write",fn:y,effect:C,requires:["computeStyles"]};function M(l,a,d){var E=nt(l),x=[ae,Z].indexOf(E)>=0?-1:1,D=typeof d=="function"?d(Object.assign({},a,{placement:l})):d,R=D[0],P=D[1];return R=R||0,P=(P||0)*x,[ae,N].indexOf(E)>=0?{x:P,y:R}:{x:R,y:P}}function _(l){var a=l.state,d=l.options,E=l.name,x=d.offset,D=x===void 0?[0,0]:x,R=dn.reduce(function(I,Ee){return I[Ee]=M(Ee,a.rects,D),I},{}),P=R[a.placement],j=P.x,z=P.y;a.modifiersData.popperOffsets!=null&&(a.modifiersData.popperOffsets.x+=j,a.modifiersData.popperOffsets.y+=z),a.modifiersData[E]=R}var se={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:_},G={left:"right",right:"left",bottom:"top",top:"bottom"};function te(l){return l.replace(/left|right|bottom|top/g,function(a){return G[a]})}var le={start:"end",end:"start"};function Oe(l){return l.replace(/start|end/g,function(a){return le[a]})}function Ne(l,a){a===void 0&&(a={});var d=a,E=d.placement,x=d.boundary,D=d.rootBoundary,R=d.padding,P=d.flipVariations,j=d.allowedAutoPlacements,z=j===void 0?dn:j,I=tn(E),Ee=I?P?Nt:Nt.filter(function(fe){return tn(fe)===I}):Ae,Me=Ee.filter(function(fe){return z.indexOf(fe)>=0});Me.length===0&&(Me=Ee,console.error(["Popper: The `allowedAutoPlacements` option did not allow any","placements. Ensure the `placement` option matches the variation","of the allowed placements.",'For example, "auto" cannot be used to allow "bottom-start".','Use "auto-start" instead.'].join(" ")));var ye=Me.reduce(function(fe,Ce){return fe[Ce]=Ht(l,{placement:Ce,boundary:x,rootBoundary:D,padding:R})[nt(Ce)],fe},{});return Object.keys(ye).sort(function(fe,Ce){return ye[fe]-ye[Ce]})}function be(l){if(nt(l)===ue)return[];var a=te(l);return[Oe(l),a,Oe(a)]}function _e(l){var a=l.state,d=l.options,E=l.name;if(!a.modifiersData[E]._skip){for(var x=d.mainAxis,D=x===void 0?!0:x,R=d.altAxis,P=R===void 0?!0:R,j=d.fallbackPlacements,z=d.padding,I=d.boundary,Ee=d.rootBoundary,Me=d.altBoundary,ye=d.flipVariations,fe=ye===void 0?!0:ye,Ce=d.allowedAutoPlacements,ge=a.options.placement,ke=nt(ge),De=ke===ge,je=j||(De||!fe?[te(ge)]:be(ge)),J=[ge].concat(je).reduce(function(U,ie){return U.concat(nt(ie)===ue?Ne(a,{placement:ie,boundary:I,rootBoundary:Ee,padding:z,flipVariations:fe,allowedAutoPlacements:Ce}):ie)},[]),Se=a.rects.reference,xe=a.rects.popper,Re=new Map,Pe=!0,Ve=J[0],Be=0;Be=0,on=Dt?"width":"height",Ut=Ht(a,{placement:He,boundary:I,rootBoundary:Ee,altBoundary:Me,padding:z}),Tt=Dt?Je?N:ae:Je?de:Z;Se[on]>xe[on]&&(Tt=te(Tt));var Ln=te(Tt),Xt=[];if(D&&Xt.push(Ut[ht]<=0),P&&Xt.push(Ut[Tt]<=0,Ut[Ln]<=0),Xt.every(function(U){return U})){Ve=He,Pe=!1;break}Re.set(He,Xt)}if(Pe)for(var yn=fe?3:1,Nn=function(ie){var ce=J.find(function(ze){var qe=Re.get(ze);if(qe)return qe.slice(0,ie).every(function(bt){return bt})});if(ce)return Ve=ce,"break"},w=yn;w>0;w--){var H=Nn(w);if(H==="break")break}a.placement!==Ve&&(a.modifiersData[E]._skip=!0,a.placement=Ve,a.reset=!0)}}var X={name:"flip",enabled:!0,phase:"main",fn:_e,requiresIfExists:["offset"],data:{_skip:!1}};function ne(l){return l==="x"?"y":"x"}function re(l,a,d){return ft(l,en(a,d))}function $(l){var a=l.state,d=l.options,E=l.name,x=d.mainAxis,D=x===void 0?!0:x,R=d.altAxis,P=R===void 0?!1:R,j=d.boundary,z=d.rootBoundary,I=d.altBoundary,Ee=d.padding,Me=d.tether,ye=Me===void 0?!0:Me,fe=d.tetherOffset,Ce=fe===void 0?0:fe,ge=Ht(a,{boundary:j,rootBoundary:z,padding:Ee,altBoundary:I}),ke=nt(a.placement),De=tn(a.placement),je=!De,J=lt(ke),Se=ne(J),xe=a.modifiersData.popperOffsets,Re=a.rects.reference,Pe=a.rects.popper,Ve=typeof Ce=="function"?Ce(Object.assign({},a.rects,{placement:a.placement})):Ce,Be={x:0,y:0};if(xe){if(D||P){var He=J==="y"?Z:ae,ht=J==="y"?de:N,Je=J==="y"?"height":"width",Dt=xe[J],on=xe[J]+ge[He],Ut=xe[J]-ge[ht],Tt=ye?-Pe[Je]/2:0,Ln=De===pe?Re[Je]:Pe[Je],Xt=De===pe?-Pe[Je]:-Re[Je],yn=a.elements.arrow,Nn=ye&&yn?A(yn):{width:0,height:0},w=a.modifiersData["arrow#persistent"]?a.modifiersData["arrow#persistent"].padding:or(),H=w[He],U=w[ht],ie=re(0,Re[Je],Nn[Je]),ce=je?Re[Je]/2-Tt-ie-H-Ve:Ln-ie-H-Ve,ze=je?-Re[Je]/2+Tt+ie+U+Ve:Xt+ie+U+Ve,qe=a.elements.arrow&&ee(a.elements.arrow),bt=qe?J==="y"?qe.clientTop||0:qe.clientLeft||0:0,kn=a.modifiersData.offset?a.modifiersData.offset[a.placement][J]:0,yt=xe[J]+ce-kn-bt,wn=xe[J]+ze-kn;if(D){var an=re(ye?en(on,yt):on,Dt,ye?ft(Ut,wn):Ut);xe[J]=an,Be[J]=an-Dt}if(P){var Yt=J==="x"?Z:ae,Wr=J==="x"?de:N,zt=xe[Se],sn=zt+ge[Yt],wo=zt-ge[Wr],Eo=re(ye?en(sn,yt):sn,zt,ye?ft(wo,wn):wo);xe[Se]=Eo,Be[Se]=Eo-zt}}a.modifiersData[E]=Be}}var Y={name:"preventOverflow",enabled:!0,phase:"main",fn:$,requiresIfExists:["offset"]},g=function(a,d){return a=typeof a=="function"?a(Object.assign({},d.rects,{placement:d.placement})):a,ir(typeof a!="number"?a:ar(a,Ae))};function Ye(l){var a,d=l.state,E=l.name,x=l.options,D=d.elements.arrow,R=d.modifiersData.popperOffsets,P=nt(d.placement),j=lt(P),z=[ae,N].indexOf(P)>=0,I=z?"height":"width";if(!(!D||!R)){var Ee=g(x.padding,d),Me=A(D),ye=j==="y"?Z:ae,fe=j==="y"?de:N,Ce=d.rects.reference[I]+d.rects.reference[j]-R[j]-d.rects.popper[I],ge=R[j]-d.rects.reference[j],ke=ee(D),De=ke?j==="y"?ke.clientHeight||0:ke.clientWidth||0:0,je=Ce/2-ge/2,J=Ee[ye],Se=De-Me[I]-Ee[fe],xe=De/2-Me[I]/2+je,Re=re(J,xe,Se),Pe=j;d.modifiersData[E]=(a={},a[Pe]=Re,a.centerOffset=Re-xe,a)}}function Q(l){var a=l.state,d=l.options,E=d.element,x=E===void 0?"[data-popper-arrow]":E;if(x!=null&&!(typeof x=="string"&&(x=a.elements.popper.querySelector(x),!x))){if(o(x)||console.error(['Popper: "arrow" element must be an HTMLElement (not an SVGElement).',"To use an SVG arrow, wrap it in an HTMLElement that will be used as","the arrow."].join(" ")),!Pn(a.elements.popper,x)){console.error(['Popper: "arrow" modifier\'s `element` must be a child of the popper',"element."].join(" "));return}a.elements.arrow=x}}var Ct={name:"arrow",enabled:!0,phase:"main",fn:Ye,effect:Q,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function dt(l,a,d){return d===void 0&&(d={x:0,y:0}),{top:l.top-a.height-d.y,right:l.right-a.width+d.x,bottom:l.bottom-a.height+d.y,left:l.left-a.width-d.x}}function $t(l){return[Z,N,de,ae].some(function(a){return l[a]>=0})}function Wt(l){var a=l.state,d=l.name,E=a.rects.reference,x=a.rects.popper,D=a.modifiersData.preventOverflow,R=Ht(a,{elementContext:"reference"}),P=Ht(a,{altBoundary:!0}),j=dt(R,E),z=dt(P,x,D),I=$t(j),Ee=$t(z);a.modifiersData[d]={referenceClippingOffsets:j,popperEscapeOffsets:z,isReferenceHidden:I,hasPopperEscaped:Ee},a.attributes.popper=Object.assign({},a.attributes.popper,{"data-popper-reference-hidden":I,"data-popper-escaped":Ee})}var Vt={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:Wt},Ze=[Mn,Rn,h,k],ot=mn({defaultModifiers:Ze}),pt=[Mn,Rn,h,k,se,X,Y,Ct,Vt],rn=mn({defaultModifiers:pt});e.applyStyles=k,e.arrow=Ct,e.computeStyles=h,e.createPopper=rn,e.createPopperLite=ot,e.defaultModifiers=pt,e.detectOverflow=Ht,e.eventListeners=Mn,e.flip=X,e.hide=Vt,e.offset=se,e.popperGenerator=mn,e.popperOffsets=Rn,e.preventOverflow=Y}),Si=xi(e=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});var t=Wa(),n='',r="tippy-box",i="tippy-content",o="tippy-backdrop",s="tippy-arrow",c="tippy-svg-arrow",u={passive:!0,capture:!0};function p(f,h){return{}.hasOwnProperty.call(f,h)}function m(f,h,y){if(Array.isArray(f)){var C=f[h];return C??(Array.isArray(y)?y[h]:y)}return f}function v(f,h){var y={}.toString.call(f);return y.indexOf("[object")===0&&y.indexOf(h+"]")>-1}function b(f,h){return typeof f=="function"?f.apply(void 0,h):f}function O(f,h){if(h===0)return f;var y;return function(C){clearTimeout(y),y=setTimeout(function(){f(C)},h)}}function S(f,h){var y=Object.assign({},f);return h.forEach(function(C){delete y[C]}),y}function A(f){return f.split(/\s+/).filter(Boolean)}function B(f){return[].concat(f)}function F(f,h){f.indexOf(h)===-1&&f.push(h)}function L(f){return f.filter(function(h,y){return f.indexOf(h)===y})}function K(f){return f.split("-")[0]}function V(f){return[].slice.call(f)}function he(f){return Object.keys(f).reduce(function(h,y){return f[y]!==void 0&&(h[y]=f[y]),h},{})}function ee(){return document.createElement("div")}function Z(f){return["Element","Fragment"].some(function(h){return v(f,h)})}function de(f){return v(f,"NodeList")}function N(f){return v(f,"MouseEvent")}function ae(f){return!!(f&&f._tippy&&f._tippy.reference===f)}function ue(f){return Z(f)?[f]:de(f)?V(f):Array.isArray(f)?f:V(document.querySelectorAll(f))}function Ae(f,h){f.forEach(function(y){y&&(y.style.transitionDuration=h+"ms")})}function pe(f,h){f.forEach(function(y){y&&y.setAttribute("data-state",h)})}function ve(f){var h,y=B(f),C=y[0];return!(C==null||(h=C.ownerDocument)==null)&&h.body?C.ownerDocument:document}function We(f,h){var y=h.clientX,C=h.clientY;return f.every(function(k){var M=k.popperRect,_=k.popperState,se=k.props,G=se.interactiveBorder,te=K(_.placement),le=_.modifiersData.offset;if(!le)return!0;var Oe=te==="bottom"?le.top.y:0,Ne=te==="top"?le.bottom.y:0,be=te==="right"?le.left.x:0,_e=te==="left"?le.right.x:0,X=M.top-C+Oe>G,ne=C-M.bottom-Ne>G,re=M.left-y+be>G,$=y-M.right-_e>G;return X||ne||re||$})}function Le(f,h,y){var C=h+"EventListener";["transitionend","webkitTransitionEnd"].forEach(function(k){f[C](k,y)})}var Te={isTouch:!1},tt=0;function Nt(){Te.isTouch||(Te.isTouch=!0,window.performance&&document.addEventListener("mousemove",dn))}function dn(){var f=performance.now();f-tt<20&&(Te.isTouch=!1,document.removeEventListener("mousemove",dn)),tt=f}function pn(){var f=document.activeElement;if(ae(f)){var h=f._tippy;f.blur&&!h.state.isVisible&&f.blur()}}function _n(){document.addEventListener("touchstart",Nt,u),window.addEventListener("blur",pn)}var Tr=typeof window<"u"&&typeof document<"u",_r=Tr?navigator.userAgent:"",Pr=/MSIE |Trident\//.test(_r);function kt(f){var h=f==="destroy"?"n already-":" ";return[f+"() was called on a"+h+"destroyed instance. This is a no-op but","indicates a potential memory leak."].join(" ")}function Jn(f){var h=/[ \t]{2,}/g,y=/^[ \t]*/gm;return f.replace(h," ").replace(y,"").trim()}function Mr(f){return Jn(` +`,"We recommend using the popper element as a wrapper around an inner","element that can have any CSS property transitioned for animations."].join(" "));var W={placement:it(a.placement),popper:a.elements.popper,popperRect:a.rects.popper,gpuAcceleration:D};a.modifiersData.popperOffsets!=null&&(a.styles.popper=Object.assign({},a.styles.popper,In(Object.assign({},W,{offsets:a.modifiersData.popperOffsets,position:a.options.strategy,adaptive:$,roundOffsets:Y})))),a.modifiersData.arrow!=null&&(a.styles.arrow=Object.assign({},a.styles.arrow,In(Object.assign({},W,{offsets:a.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:Y})))),a.attributes.popper=Object.assign({},a.attributes.popper,{"data-popper-placement":a.placement})}var y={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:g,data:{}};function O(f){var a=f.state;Object.keys(a.elements).forEach(function(m){var A=a.styles[m]||{},D=a.attributes[m]||{},F=a.elements[m];!i(F)||!p(F)||(Object.assign(F.style,A),Object.keys(D).forEach(function($){var k=D[$];k===!1?F.removeAttribute($):F.setAttribute($,k===!0?"":k)}))})}function I(f){var a=f.state,m={popper:{position:a.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(a.elements.popper.style,m.popper),a.styles=m,a.elements.arrow&&Object.assign(a.elements.arrow.style,m.arrow),function(){Object.keys(a.elements).forEach(function(A){var D=a.elements[A],F=a.attributes[A]||{},$=Object.keys(a.styles.hasOwnProperty(A)?a.styles[A]:m[A]),k=$.reduce(function(Y,te){return Y[te]="",Y},{});!i(D)||!p(D)||(Object.assign(D.style,k),Object.keys(F).forEach(function(Y){D.removeAttribute(Y)}))})}}var z={name:"applyStyles",enabled:!0,phase:"write",fn:O,effect:I,requires:["computeStyles"]};function j(f,a,m){var A=it(f),D=[fe,ie].indexOf(A)>=0?-1:1,F=typeof m=="function"?m(Object.assign({},a,{placement:f})):m,$=F[0],k=F[1];return $=$||0,k=(k||0)*D,[fe,R].indexOf(A)>=0?{x:k,y:$}:{x:$,y:k}}function L(f){var a=f.state,m=f.options,A=f.name,D=m.offset,F=D===void 0?[0,0]:D,$=ze.reduce(function(W,De){return W[De]=j(De,a.rects,F),W},{}),k=$[a.placement],Y=k.x,te=k.y;a.modifiersData.popperOffsets!=null&&(a.modifiersData.popperOffsets.x+=Y,a.modifiersData.popperOffsets.y+=te),a.modifiersData[A]=$}var ge={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:L},oe={left:"right",right:"left",bottom:"top",top:"bottom"};function de(f){return f.replace(/left|right|bottom|top/g,function(a){return oe[a]})}var me={start:"end",end:"start"};function Te(f){return f.replace(/start|end/g,function(a){return me[a]})}function je(f,a){a===void 0&&(a={});var m=a,A=m.placement,D=m.boundary,F=m.rootBoundary,$=m.padding,k=m.flipVariations,Y=m.allowedAutoPlacements,te=Y===void 0?ze:Y,W=on(A),De=W?k?G:G.filter(function(we){return on(we)===W}):l,Ne=De.filter(function(we){return te.indexOf(we)>=0});Ne.length===0&&(Ne=De,console.error(["Popper: The `allowedAutoPlacements` option did not allow any","placements. Ensure the `placement` option matches the variation","of the allowed placements.",'For example, "auto" cannot be used to allow "bottom-start".','Use "auto-start" instead.'].join(" ")));var Ae=Ne.reduce(function(we,Me){return we[Me]=Vt(f,{placement:Me,boundary:D,rootBoundary:F,padding:$})[it(Me)],we},{});return Object.keys(Ae).sort(function(we,Me){return Ae[we]-Ae[Me]})}function Se(f){if(it(f)===ce)return[];var a=de(f);return[Te(f),a,Te(a)]}function Ie(f){var a=f.state,m=f.options,A=f.name;if(!a.modifiersData[A]._skip){for(var D=m.mainAxis,F=D===void 0?!0:D,$=m.altAxis,k=$===void 0?!0:$,Y=m.fallbackPlacements,te=m.padding,W=m.boundary,De=m.rootBoundary,Ne=m.altBoundary,Ae=m.flipVariations,we=Ae===void 0?!0:Ae,Me=m.allowedAutoPlacements,Ee=a.options.placement,Be=it(Ee),Re=Be===Ee,He=Y||(Re||!we?[de(Ee)]:Se(Ee)),ae=[Ee].concat(He).reduce(function(J,ve){return J.concat(it(ve)===ce?je(a,{placement:ve,boundary:W,rootBoundary:De,padding:te,flipVariations:we,allowedAutoPlacements:Me}):ve)},[]),Pe=a.rects.reference,_e=a.rects.popper,Le=new Map,Fe=!0,Ye=ae[0],$e=0;$e=0,ln=Pt?"width":"height",Xt=Vt(a,{placement:Ve,boundary:W,rootBoundary:De,altBoundary:Ne,padding:te}),Mt=Pt?et?R:fe:et?be:ie;Pe[ln]>_e[ln]&&(Mt=de(Mt));var Fn=de(Mt),qt=[];if(F&&qt.push(Xt[gt]<=0),k&&qt.push(Xt[Mt]<=0,Xt[Fn]<=0),qt.every(function(J){return J})){Ye=Ve,Fe=!1;break}Le.set(Ve,qt)}if(Fe)for(var wn=we?3:1,Nn=function(ve){var ye=ae.find(function(Ke){var Je=Le.get(Ke);if(Je)return Je.slice(0,ve).every(function(xt){return xt})});if(ye)return Ye=ye,"break"},S=wn;S>0;S--){var X=Nn(S);if(X==="break")break}a.placement!==Ye&&(a.modifiersData[A]._skip=!0,a.placement=Ye,a.reset=!0)}}var Z={name:"flip",enabled:!0,phase:"main",fn:Ie,requiresIfExists:["offset"],data:{_skip:!1}};function pe(f){return f==="x"?"y":"x"}function he(f,a,m){return pt(f,rn(a,m))}function K(f){var a=f.state,m=f.options,A=f.name,D=m.mainAxis,F=D===void 0?!0:D,$=m.altAxis,k=$===void 0?!1:$,Y=m.boundary,te=m.rootBoundary,W=m.altBoundary,De=m.padding,Ne=m.tether,Ae=Ne===void 0?!0:Ne,we=m.tetherOffset,Me=we===void 0?0:we,Ee=Vt(a,{boundary:Y,rootBoundary:te,padding:De,altBoundary:W}),Be=it(a.placement),Re=on(a.placement),He=!Re,ae=ut(Be),Pe=pe(ae),_e=a.modifiersData.popperOffsets,Le=a.rects.reference,Fe=a.rects.popper,Ye=typeof Me=="function"?Me(Object.assign({},a.rects,{placement:a.placement})):Me,$e={x:0,y:0};if(_e){if(F||k){var Ve=ae==="y"?ie:fe,gt=ae==="y"?be:R,et=ae==="y"?"height":"width",Pt=_e[ae],ln=_e[ae]+Ee[Ve],Xt=_e[ae]-Ee[gt],Mt=Ae?-Fe[et]/2:0,Fn=Re===d?Le[et]:Fe[et],qt=Re===d?-Fe[et]:-Le[et],wn=a.elements.arrow,Nn=Ae&&wn?M(wn):{width:0,height:0},S=a.modifiersData["arrow#persistent"]?a.modifiersData["arrow#persistent"].padding:ir(),X=S[Ve],J=S[gt],ve=he(0,Le[et],Nn[et]),ye=He?Le[et]/2-Mt-ve-X-Ye:Fn-ve-X-Ye,Ke=He?-Le[et]/2+Mt+ve+J+Ye:qt+ve+J+Ye,Je=a.elements.arrow&&se(a.elements.arrow),xt=Je?ae==="y"?Je.clientTop||0:Je.clientLeft||0:0,Ln=a.modifiersData.offset?a.modifiersData.offset[a.placement][ae]:0,Et=_e[ae]+ye-Ln-xt,xn=_e[ae]+Ke-Ln;if(F){var fn=he(Ae?rn(ln,Et):ln,Pt,Ae?pt(Xt,xn):Xt);_e[ae]=fn,$e[ae]=fn-Pt}if(k){var Gt=ae==="x"?ie:fe,Vr=ae==="x"?be:R,Kt=_e[Pe],un=Kt+Ee[Gt],xi=Kt-Ee[Vr],Ei=he(Ae?rn(un,Et):un,Kt,Ae?pt(xi,xn):xi);_e[Pe]=Ei,$e[Pe]=Ei-Kt}}a.modifiersData[A]=$e}}var ee={name:"preventOverflow",enabled:!0,phase:"main",fn:K,requiresIfExists:["offset"]},w=function(a,m){return a=typeof a=="function"?a(Object.assign({},m.rects,{placement:m.placement})):a,or(typeof a!="number"?a:ar(a,l))};function Ge(f){var a,m=f.state,A=f.name,D=f.options,F=m.elements.arrow,$=m.modifiersData.popperOffsets,k=it(m.placement),Y=ut(k),te=[fe,R].indexOf(k)>=0,W=te?"height":"width";if(!(!F||!$)){var De=w(D.padding,m),Ne=M(F),Ae=Y==="y"?ie:fe,we=Y==="y"?be:R,Me=m.rects.reference[W]+m.rects.reference[Y]-$[Y]-m.rects.popper[W],Ee=$[Y]-m.rects.reference[Y],Be=se(F),Re=Be?Y==="y"?Be.clientHeight||0:Be.clientWidth||0:0,He=Me/2-Ee/2,ae=De[Ae],Pe=Re-Ne[W]-De[we],_e=Re/2-Ne[W]/2+He,Le=he(ae,_e,Pe),Fe=Y;m.modifiersData[A]=(a={},a[Fe]=Le,a.centerOffset=Le-_e,a)}}function le(f){var a=f.state,m=f.options,A=m.element,D=A===void 0?"[data-popper-arrow]":A;if(D!=null&&!(typeof D=="string"&&(D=a.elements.popper.querySelector(D),!D))){if(i(D)||console.error(['Popper: "arrow" element must be an HTMLElement (not an SVGElement).',"To use an SVG arrow, wrap it in an HTMLElement that will be used as","the arrow."].join(" ")),!Pn(a.elements.popper,D)){console.error(['Popper: "arrow" modifier\'s `element` must be a child of the popper',"element."].join(" "));return}a.elements.arrow=D}}var Tt={name:"arrow",enabled:!0,phase:"main",fn:Ge,effect:le,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function ht(f,a,m){return m===void 0&&(m={x:0,y:0}),{top:f.top-a.height-m.y,right:f.right-a.width+m.x,bottom:f.bottom-a.height+m.y,left:f.left-a.width-m.x}}function Ut(f){return[ie,R,be,fe].some(function(a){return f[a]>=0})}function zt(f){var a=f.state,m=f.name,A=a.rects.reference,D=a.rects.popper,F=a.modifiersData.preventOverflow,$=Vt(a,{elementContext:"reference"}),k=Vt(a,{altBoundary:!0}),Y=ht($,A),te=ht(k,D,F),W=Ut(Y),De=Ut(te);a.modifiersData[m]={referenceClippingOffsets:Y,popperEscapeOffsets:te,isReferenceHidden:W,hasPopperEscaped:De},a.attributes.popper=Object.assign({},a.attributes.popper,{"data-popper-reference-hidden":W,"data-popper-escaped":De})}var Yt={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:zt},nt=[Mn,Rn,y,z],at=bn({defaultModifiers:nt}),vt=[Mn,Rn,y,z,ge,Z,ee,Tt,Yt],sn=bn({defaultModifiers:vt});e.applyStyles=z,e.arrow=Tt,e.computeStyles=y,e.createPopper=sn,e.createPopperLite=at,e.defaultModifiers=vt,e.detectOverflow=Vt,e.eventListeners=Mn,e.flip=Z,e.hide=Yt,e.offset=ge,e.popperGenerator=bn,e.popperOffsets=Rn,e.preventOverflow=ee}),Po=_o(e=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});var t=ns(),n='',r="tippy-box",o="tippy-content",i="tippy-backdrop",s="tippy-arrow",u="tippy-svg-arrow",h={passive:!0,capture:!0};function p(g,y){return{}.hasOwnProperty.call(g,y)}function x(g,y,O){if(Array.isArray(g)){var I=g[y];return I??(Array.isArray(O)?O[y]:O)}return g}function b(g,y){var O={}.toString.call(g);return O.indexOf("[object")===0&&O.indexOf(y+"]")>-1}function E(g,y){return typeof g=="function"?g.apply(void 0,y):g}function _(g,y){if(y===0)return g;var O;return function(I){clearTimeout(O),O=setTimeout(function(){g(I)},y)}}function C(g,y){var O=Object.assign({},g);return y.forEach(function(I){delete O[I]}),O}function M(g){return g.split(/\s+/).filter(Boolean)}function U(g){return[].concat(g)}function V(g,y){g.indexOf(y)===-1&&g.push(y)}function B(g){return g.filter(function(y,O){return g.indexOf(y)===O})}function Q(g){return g.split("-")[0]}function q(g){return[].slice.call(g)}function xe(g){return Object.keys(g).reduce(function(y,O){return g[O]!==void 0&&(y[O]=g[O]),y},{})}function se(){return document.createElement("div")}function ie(g){return["Element","Fragment"].some(function(y){return b(g,y)})}function be(g){return b(g,"NodeList")}function R(g){return b(g,"MouseEvent")}function fe(g){return!!(g&&g._tippy&&g._tippy.reference===g)}function ce(g){return ie(g)?[g]:be(g)?q(g):Array.isArray(g)?g:q(document.querySelectorAll(g))}function l(g,y){g.forEach(function(O){O&&(O.style.transitionDuration=y+"ms")})}function d(g,y){g.forEach(function(O){O&&O.setAttribute("data-state",y)})}function v(g){var y,O=U(g),I=O[0];return!(I==null||(y=I.ownerDocument)==null)&&y.body?I.ownerDocument:document}function c(g,y){var O=y.clientX,I=y.clientY;return g.every(function(z){var j=z.popperRect,L=z.popperState,ge=z.props,oe=ge.interactiveBorder,de=Q(L.placement),me=L.modifiersData.offset;if(!me)return!0;var Te=de==="bottom"?me.top.y:0,je=de==="top"?me.bottom.y:0,Se=de==="right"?me.left.x:0,Ie=de==="left"?me.right.x:0,Z=j.top-I+Te>oe,pe=I-j.bottom-je>oe,he=j.left-O+Se>oe,K=O-j.right-Ie>oe;return Z||pe||he||K})}function H(g,y,O){var I=y+"EventListener";["transitionend","webkitTransitionEnd"].forEach(function(z){g[I](z,O)})}var T={isTouch:!1},P=0;function G(){T.isTouch||(T.isTouch=!0,window.performance&&document.addEventListener("mousemove",ze))}function ze(){var g=performance.now();g-P<20&&(T.isTouch=!1,document.removeEventListener("mousemove",ze)),P=g}function Dt(){var g=document.activeElement;if(fe(g)){var y=g._tippy;g.blur&&!y.state.isVisible&&g.blur()}}function jt(){document.addEventListener("touchstart",G,h),window.addEventListener("blur",Dt)}var Tr=typeof window<"u"&&typeof document<"u",Pr=Tr?navigator.userAgent:"",Mr=/MSIE |Trident\//.test(Pr);function Bt(g){var y=g==="destroy"?"n already-":" ";return[g+"() was called on a"+y+"destroyed instance. This is a no-op but","indicates a potential memory leak."].join(" ")}function Jn(g){var y=/[ \t]{2,}/g,O=/^[ \t]*/gm;return g.replace(y," ").replace(O,"").trim()}function Rr(g){return Jn(` %ctippy.js - %c`+Jn(f)+` + %c`+Jn(g)+` %c\u{1F477}\u200D This is a development-only message. It will be removed in production. - `)}function Qn(f){return[Mr(f),"color: #00C584; font-size: 1.3em; font-weight: bold;","line-height: 1.5","color: #a6a095;"]}var At;Rr();function Rr(){At=new Set}function ut(f,h){if(f&&!At.has(h)){var y;At.add(h),(y=console).warn.apply(y,Qn(h))}}function jt(f,h){if(f&&!At.has(h)){var y;At.add(h),(y=console).error.apply(y,Qn(h))}}function gt(f){var h=!f,y=Object.prototype.toString.call(f)==="[object Object]"&&!f.addEventListener;jt(h,["tippy() was passed","`"+String(f)+"`","as its targets (first) argument. Valid types are: String, Element,","Element[], or NodeList."].join(" ")),jt(y,["tippy() was passed a plain object which is not supported as an argument","for virtual positioning. Use props.getReferenceClientRect instead."].join(" "))}var mt={animateFill:!1,followCursor:!1,inlinePositioning:!1,sticky:!1},Ir={allowHTML:!1,animation:"fade",arrow:!0,content:"",inertia:!1,maxWidth:350,role:"tooltip",theme:"",zIndex:9999},Ke=Object.assign({appendTo:function(){return document.body},aria:{content:"auto",expanded:"auto"},delay:0,duration:[300,250],getReferenceClientRect:null,hideOnClick:!0,ignoreAttributes:!1,interactive:!1,interactiveBorder:2,interactiveDebounce:0,moveTransition:"",offset:[0,10],onAfterUpdate:function(){},onBeforeUpdate:function(){},onCreate:function(){},onDestroy:function(){},onHidden:function(){},onHide:function(){},onMount:function(){},onShow:function(){},onShown:function(){},onTrigger:function(){},onUntrigger:function(){},onClickOutside:function(){},placement:"top",plugins:[],popperOptions:{},render:null,showOnCreate:!1,touch:!0,trigger:"mouseenter focus",triggerTarget:null},mt,{},Ir),Lr=Object.keys(Ke),Nr=function(h){ft(h,[]);var y=Object.keys(h);y.forEach(function(C){Ke[C]=h[C]})};function nt(f){var h=f.plugins||[],y=h.reduce(function(C,k){var M=k.name,_=k.defaultValue;return M&&(C[M]=f[M]!==void 0?f[M]:_),C},{});return Object.assign({},f,{},y)}function kr(f,h){var y=h?Object.keys(nt(Object.assign({},Ke,{plugins:h}))):Lr,C=y.reduce(function(k,M){var _=(f.getAttribute("data-tippy-"+M)||"").trim();if(!_)return k;if(M==="content")k[M]=_;else try{k[M]=JSON.parse(_)}catch{k[M]=_}return k},{});return C}function Zn(f,h){var y=Object.assign({},h,{content:b(h.content,[f])},h.ignoreAttributes?{}:kr(f,h.plugins));return y.aria=Object.assign({},Ke.aria,{},y.aria),y.aria={expanded:y.aria.expanded==="auto"?h.interactive:y.aria.expanded,content:y.aria.content==="auto"?h.interactive?null:"describedby":y.aria.content},y}function ft(f,h){f===void 0&&(f={}),h===void 0&&(h=[]);var y=Object.keys(f);y.forEach(function(C){var k=S(Ke,Object.keys(mt)),M=!p(k,C);M&&(M=h.filter(function(_){return _.name===C}).length===0),ut(M,["`"+C+"`","is not a valid prop. You may have spelled it incorrectly, or if it's","a plugin, forgot to pass it in an array as props.plugins.",` + `)}function Qn(g){return[Rr(g),"color: #00C584; font-size: 1.3em; font-weight: bold;","line-height: 1.5","color: #a6a095;"]}var _t;Ir();function Ir(){_t=new Set}function dt(g,y){if(g&&!_t.has(y)){var O;_t.add(y),(O=console).warn.apply(O,Qn(y))}}function Ht(g,y){if(g&&!_t.has(y)){var O;_t.add(y),(O=console).error.apply(O,Qn(y))}}function yt(g){var y=!g,O=Object.prototype.toString.call(g)==="[object Object]"&&!g.addEventListener;Ht(y,["tippy() was passed","`"+String(g)+"`","as its targets (first) argument. Valid types are: String, Element,","Element[], or NodeList."].join(" ")),Ht(O,["tippy() was passed a plain object which is not supported as an argument","for virtual positioning. Use props.getReferenceClientRect instead."].join(" "))}var wt={animateFill:!1,followCursor:!1,inlinePositioning:!1,sticky:!1},Fr={allowHTML:!1,animation:"fade",arrow:!0,content:"",inertia:!1,maxWidth:350,role:"tooltip",theme:"",zIndex:9999},Ze=Object.assign({appendTo:function(){return document.body},aria:{content:"auto",expanded:"auto"},delay:0,duration:[300,250],getReferenceClientRect:null,hideOnClick:!0,ignoreAttributes:!1,interactive:!1,interactiveBorder:2,interactiveDebounce:0,moveTransition:"",offset:[0,10],onAfterUpdate:function(){},onBeforeUpdate:function(){},onCreate:function(){},onDestroy:function(){},onHidden:function(){},onHide:function(){},onMount:function(){},onShow:function(){},onShown:function(){},onTrigger:function(){},onUntrigger:function(){},onClickOutside:function(){},placement:"top",plugins:[],popperOptions:{},render:null,showOnCreate:!1,touch:!0,trigger:"mouseenter focus",triggerTarget:null},wt,{},Fr),Nr=Object.keys(Ze),Lr=function(y){pt(y,[]);var O=Object.keys(y);O.forEach(function(I){Ze[I]=y[I]})};function it(g){var y=g.plugins||[],O=y.reduce(function(I,z){var j=z.name,L=z.defaultValue;return j&&(I[j]=g[j]!==void 0?g[j]:L),I},{});return Object.assign({},g,{},O)}function kr(g,y){var O=y?Object.keys(it(Object.assign({},Ze,{plugins:y}))):Nr,I=O.reduce(function(z,j){var L=(g.getAttribute("data-tippy-"+j)||"").trim();if(!L)return z;if(j==="content")z[j]=L;else try{z[j]=JSON.parse(L)}catch{z[j]=L}return z},{});return I}function Zn(g,y){var O=Object.assign({},y,{content:E(y.content,[g])},y.ignoreAttributes?{}:kr(g,y.plugins));return O.aria=Object.assign({},Ze.aria,{},O.aria),O.aria={expanded:O.aria.expanded==="auto"?y.interactive:O.aria.expanded,content:O.aria.content==="auto"?y.interactive?null:"describedby":O.aria.content},O}function pt(g,y){g===void 0&&(g={}),y===void 0&&(y=[]);var O=Object.keys(g);O.forEach(function(I){var z=C(Ze,Object.keys(wt)),j=!p(z,I);j&&(j=y.filter(function(L){return L.name===I}).length===0),dt(j,["`"+I+"`","is not a valid prop. You may have spelled it incorrectly, or if it's","a plugin, forgot to pass it in an array as props.plugins.",` `,`All props: https://atomiks.github.io/tippyjs/v6/all-props/ -`,"Plugins: https://atomiks.github.io/tippyjs/v6/plugins/"].join(" "))})}var en=function(){return"innerHTML"};function Bt(f,h){f[en()]=h}function er(f){var h=ee();return f===!0?h.className=s:(h.className=c,Z(f)?h.appendChild(f):Bt(h,f)),h}function Pn(f,h){Z(h.content)?(Bt(f,""),f.appendChild(h.content)):typeof h.content!="function"&&(h.allowHTML?Bt(f,h.content):f.textContent=h.content)}function Ft(f){var h=f.firstElementChild,y=V(h.children);return{box:h,content:y.find(function(C){return C.classList.contains(i)}),arrow:y.find(function(C){return C.classList.contains(s)||C.classList.contains(c)}),backdrop:y.find(function(C){return C.classList.contains(o)})}}function tr(f){var h=ee(),y=ee();y.className=r,y.setAttribute("data-state","hidden"),y.setAttribute("tabindex","-1");var C=ee();C.className=i,C.setAttribute("data-state","hidden"),Pn(C,f.props),h.appendChild(y),y.appendChild(C),k(f.props,f.props);function k(M,_){var se=Ft(h),G=se.box,te=se.content,le=se.arrow;_.theme?G.setAttribute("data-theme",_.theme):G.removeAttribute("data-theme"),typeof _.animation=="string"?G.setAttribute("data-animation",_.animation):G.removeAttribute("data-animation"),_.inertia?G.setAttribute("data-inertia",""):G.removeAttribute("data-inertia"),G.style.maxWidth=typeof _.maxWidth=="number"?_.maxWidth+"px":_.maxWidth,_.role?G.setAttribute("role",_.role):G.removeAttribute("role"),(M.content!==_.content||M.allowHTML!==_.allowHTML)&&Pn(te,f.props),_.arrow?le?M.arrow!==_.arrow&&(G.removeChild(le),G.appendChild(er(_.arrow))):G.appendChild(er(_.arrow)):le&&G.removeChild(le)}return{popper:h,onUpdate:k}}tr.$$tippy=!0;var nr=1,hn=[],vn=[];function tn(f,h){var y=Zn(f,Object.assign({},Ke,{},nt(he(h)))),C,k,M,_=!1,se=!1,G=!1,te=!1,le,Oe,Ne,be=[],_e=O(De,y.interactiveDebounce),X,ne=nr++,re=null,$=L(y.plugins),Y={isEnabled:!0,isVisible:!1,isDestroyed:!1,isMounted:!1,isShown:!1},g={id:ne,reference:f,popper:ee(),popperInstance:re,props:y,state:Y,plugins:$,clearDelayTimeouts:Dt,setProps:on,setContent:Ut,show:Tt,hide:Ln,hideWithInteractivity:Xt,enable:ht,disable:Je,unmount:yn,destroy:Nn};if(!y.render)return jt(!0,"render() function has not been supplied."),g;var Ye=y.render(g),Q=Ye.popper,Ct=Ye.onUpdate;Q.setAttribute("data-tippy-root",""),Q.id="tippy-"+g.id,g.popper=Q,f._tippy=g,Q._tippy=g;var dt=$.map(function(w){return w.fn(g)}),$t=f.hasAttribute("aria-expanded");return Ce(),x(),a(),d("onCreate",[g]),y.showOnCreate&&Be(),Q.addEventListener("mouseenter",function(){g.props.interactive&&g.state.isVisible&&g.clearDelayTimeouts()}),Q.addEventListener("mouseleave",function(w){g.props.interactive&&g.props.trigger.indexOf("mouseenter")>=0&&(pt().addEventListener("mousemove",_e),_e(w))}),g;function Wt(){var w=g.props.touch;return Array.isArray(w)?w:[w,0]}function Vt(){return Wt()[0]==="hold"}function Ze(){var w;return!!((w=g.props.render)!=null&&w.$$tippy)}function ot(){return X||f}function pt(){var w=ot().parentNode;return w?ve(w):document}function rn(){return Ft(Q)}function l(w){return g.state.isMounted&&!g.state.isVisible||Te.isTouch||le&&le.type==="focus"?0:m(g.props.delay,w?0:1,Ke.delay)}function a(){Q.style.pointerEvents=g.props.interactive&&g.state.isVisible?"":"none",Q.style.zIndex=""+g.props.zIndex}function d(w,H,U){if(U===void 0&&(U=!0),dt.forEach(function(ce){ce[w]&&ce[w].apply(void 0,H)}),U){var ie;(ie=g.props)[w].apply(ie,H)}}function E(){var w=g.props.aria;if(w.content){var H="aria-"+w.content,U=Q.id,ie=B(g.props.triggerTarget||f);ie.forEach(function(ce){var ze=ce.getAttribute(H);if(g.state.isVisible)ce.setAttribute(H,ze?ze+" "+U:U);else{var qe=ze&&ze.replace(U,"").trim();qe?ce.setAttribute(H,qe):ce.removeAttribute(H)}})}}function x(){if(!($t||!g.props.aria.expanded)){var w=B(g.props.triggerTarget||f);w.forEach(function(H){g.props.interactive?H.setAttribute("aria-expanded",g.state.isVisible&&H===ot()?"true":"false"):H.removeAttribute("aria-expanded")})}}function D(){pt().removeEventListener("mousemove",_e),hn=hn.filter(function(w){return w!==_e})}function R(w){if(!(Te.isTouch&&(G||w.type==="mousedown"))&&!(g.props.interactive&&Q.contains(w.target))){if(ot().contains(w.target)){if(Te.isTouch||g.state.isVisible&&g.props.trigger.indexOf("click")>=0)return}else d("onClickOutside",[g,w]);g.props.hideOnClick===!0&&(g.clearDelayTimeouts(),g.hide(),se=!0,setTimeout(function(){se=!1}),g.state.isMounted||I())}}function P(){G=!0}function j(){G=!1}function z(){var w=pt();w.addEventListener("mousedown",R,!0),w.addEventListener("touchend",R,u),w.addEventListener("touchstart",j,u),w.addEventListener("touchmove",P,u)}function I(){var w=pt();w.removeEventListener("mousedown",R,!0),w.removeEventListener("touchend",R,u),w.removeEventListener("touchstart",j,u),w.removeEventListener("touchmove",P,u)}function Ee(w,H){ye(w,function(){!g.state.isVisible&&Q.parentNode&&Q.parentNode.contains(Q)&&H()})}function Me(w,H){ye(w,H)}function ye(w,H){var U=rn().box;function ie(ce){ce.target===U&&(Le(U,"remove",ie),H())}if(w===0)return H();Le(U,"remove",Oe),Le(U,"add",ie),Oe=ie}function fe(w,H,U){U===void 0&&(U=!1);var ie=B(g.props.triggerTarget||f);ie.forEach(function(ce){ce.addEventListener(w,H,U),be.push({node:ce,eventType:w,handler:H,options:U})})}function Ce(){Vt()&&(fe("touchstart",ke,{passive:!0}),fe("touchend",je,{passive:!0})),A(g.props.trigger).forEach(function(w){if(w!=="manual")switch(fe(w,ke),w){case"mouseenter":fe("mouseleave",je);break;case"focus":fe(Pr?"focusout":"blur",J);break;case"focusin":fe("focusout",J);break}})}function ge(){be.forEach(function(w){var H=w.node,U=w.eventType,ie=w.handler,ce=w.options;H.removeEventListener(U,ie,ce)}),be=[]}function ke(w){var H,U=!1;if(!(!g.state.isEnabled||Se(w)||se)){var ie=((H=le)==null?void 0:H.type)==="focus";le=w,X=w.currentTarget,x(),!g.state.isVisible&&N(w)&&hn.forEach(function(ce){return ce(w)}),w.type==="click"&&(g.props.trigger.indexOf("mouseenter")<0||_)&&g.props.hideOnClick!==!1&&g.state.isVisible?U=!0:Be(w),w.type==="click"&&(_=!U),U&&!ie&&He(w)}}function De(w){var H=w.target,U=ot().contains(H)||Q.contains(H);if(!(w.type==="mousemove"&&U)){var ie=Ve().concat(Q).map(function(ce){var ze,qe=ce._tippy,bt=(ze=qe.popperInstance)==null?void 0:ze.state;return bt?{popperRect:ce.getBoundingClientRect(),popperState:bt,props:y}:null}).filter(Boolean);We(ie,w)&&(D(),He(w))}}function je(w){var H=Se(w)||g.props.trigger.indexOf("click")>=0&&_;if(!H){if(g.props.interactive){g.hideWithInteractivity(w);return}He(w)}}function J(w){g.props.trigger.indexOf("focusin")<0&&w.target!==ot()||g.props.interactive&&w.relatedTarget&&Q.contains(w.relatedTarget)||He(w)}function Se(w){return Te.isTouch?Vt()!==w.type.indexOf("touch")>=0:!1}function xe(){Re();var w=g.props,H=w.popperOptions,U=w.placement,ie=w.offset,ce=w.getReferenceClientRect,ze=w.moveTransition,qe=Ze()?Ft(Q).arrow:null,bt=ce?{getBoundingClientRect:ce,contextElement:ce.contextElement||ot()}:f,kn={name:"$$tippy",enabled:!0,phase:"beforeWrite",requires:["computeStyles"],fn:function(an){var Yt=an.state;if(Ze()){var Wr=rn(),zt=Wr.box;["placement","reference-hidden","escaped"].forEach(function(sn){sn==="placement"?zt.setAttribute("data-placement",Yt.placement):Yt.attributes.popper["data-popper-"+sn]?zt.setAttribute("data-"+sn,""):zt.removeAttribute("data-"+sn)}),Yt.attributes.popper={}}}},yt=[{name:"offset",options:{offset:ie}},{name:"preventOverflow",options:{padding:{top:2,bottom:2,left:5,right:5}}},{name:"flip",options:{padding:5}},{name:"computeStyles",options:{adaptive:!ze}},kn];Ze()&&qe&&yt.push({name:"arrow",options:{element:qe,padding:3}}),yt.push.apply(yt,H?.modifiers||[]),g.popperInstance=t.createPopper(bt,Q,Object.assign({},H,{placement:U,onFirstUpdate:Ne,modifiers:yt}))}function Re(){g.popperInstance&&(g.popperInstance.destroy(),g.popperInstance=null)}function Pe(){var w=g.props.appendTo,H,U=ot();g.props.interactive&&w===Ke.appendTo||w==="parent"?H=U.parentNode:H=b(w,[U]),H.contains(Q)||H.appendChild(Q),xe(),ut(g.props.interactive&&w===Ke.appendTo&&U.nextElementSibling!==Q,["Interactive tippy element may not be accessible via keyboard","navigation because it is not directly after the reference element","in the DOM source order.",` +`,"Plugins: https://atomiks.github.io/tippyjs/v6/plugins/"].join(" "))})}var rn=function(){return"innerHTML"};function $t(g,y){g[rn()]=y}function er(g){var y=se();return g===!0?y.className=s:(y.className=u,ie(g)?y.appendChild(g):$t(y,g)),y}function Pn(g,y){ie(y.content)?($t(g,""),g.appendChild(y.content)):typeof y.content!="function"&&(y.allowHTML?$t(g,y.content):g.textContent=y.content)}function Wt(g){var y=g.firstElementChild,O=q(y.children);return{box:y,content:O.find(function(I){return I.classList.contains(o)}),arrow:O.find(function(I){return I.classList.contains(s)||I.classList.contains(u)}),backdrop:O.find(function(I){return I.classList.contains(i)})}}function tr(g){var y=se(),O=se();O.className=r,O.setAttribute("data-state","hidden"),O.setAttribute("tabindex","-1");var I=se();I.className=o,I.setAttribute("data-state","hidden"),Pn(I,g.props),y.appendChild(O),O.appendChild(I),z(g.props,g.props);function z(j,L){var ge=Wt(y),oe=ge.box,de=ge.content,me=ge.arrow;L.theme?oe.setAttribute("data-theme",L.theme):oe.removeAttribute("data-theme"),typeof L.animation=="string"?oe.setAttribute("data-animation",L.animation):oe.removeAttribute("data-animation"),L.inertia?oe.setAttribute("data-inertia",""):oe.removeAttribute("data-inertia"),oe.style.maxWidth=typeof L.maxWidth=="number"?L.maxWidth+"px":L.maxWidth,L.role?oe.setAttribute("role",L.role):oe.removeAttribute("role"),(j.content!==L.content||j.allowHTML!==L.allowHTML)&&Pn(de,g.props),L.arrow?me?j.arrow!==L.arrow&&(oe.removeChild(me),oe.appendChild(er(L.arrow))):oe.appendChild(er(L.arrow)):me&&oe.removeChild(me)}return{popper:y,onUpdate:z}}tr.$$tippy=!0;var nr=1,vn=[],gn=[];function on(g,y){var O=Zn(g,Object.assign({},Ze,{},it(xe(y)))),I,z,j,L=!1,ge=!1,oe=!1,de=!1,me,Te,je,Se=[],Ie=_(Re,O.interactiveDebounce),Z,pe=nr++,he=null,K=B(O.plugins),ee={isEnabled:!0,isVisible:!1,isDestroyed:!1,isMounted:!1,isShown:!1},w={id:pe,reference:g,popper:se(),popperInstance:he,props:O,state:ee,plugins:K,clearDelayTimeouts:Pt,setProps:ln,setContent:Xt,show:Mt,hide:Fn,hideWithInteractivity:qt,enable:gt,disable:et,unmount:wn,destroy:Nn};if(!O.render)return Ht(!0,"render() function has not been supplied."),w;var Ge=O.render(w),le=Ge.popper,Tt=Ge.onUpdate;le.setAttribute("data-tippy-root",""),le.id="tippy-"+w.id,w.popper=le,g._tippy=w,le._tippy=w;var ht=K.map(function(S){return S.fn(w)}),Ut=g.hasAttribute("aria-expanded");return Me(),D(),a(),m("onCreate",[w]),O.showOnCreate&&$e(),le.addEventListener("mouseenter",function(){w.props.interactive&&w.state.isVisible&&w.clearDelayTimeouts()}),le.addEventListener("mouseleave",function(S){w.props.interactive&&w.props.trigger.indexOf("mouseenter")>=0&&(vt().addEventListener("mousemove",Ie),Ie(S))}),w;function zt(){var S=w.props.touch;return Array.isArray(S)?S:[S,0]}function Yt(){return zt()[0]==="hold"}function nt(){var S;return!!((S=w.props.render)!=null&&S.$$tippy)}function at(){return Z||g}function vt(){var S=at().parentNode;return S?v(S):document}function sn(){return Wt(le)}function f(S){return w.state.isMounted&&!w.state.isVisible||T.isTouch||me&&me.type==="focus"?0:x(w.props.delay,S?0:1,Ze.delay)}function a(){le.style.pointerEvents=w.props.interactive&&w.state.isVisible?"":"none",le.style.zIndex=""+w.props.zIndex}function m(S,X,J){if(J===void 0&&(J=!0),ht.forEach(function(ye){ye[S]&&ye[S].apply(void 0,X)}),J){var ve;(ve=w.props)[S].apply(ve,X)}}function A(){var S=w.props.aria;if(S.content){var X="aria-"+S.content,J=le.id,ve=U(w.props.triggerTarget||g);ve.forEach(function(ye){var Ke=ye.getAttribute(X);if(w.state.isVisible)ye.setAttribute(X,Ke?Ke+" "+J:J);else{var Je=Ke&&Ke.replace(J,"").trim();Je?ye.setAttribute(X,Je):ye.removeAttribute(X)}})}}function D(){if(!(Ut||!w.props.aria.expanded)){var S=U(w.props.triggerTarget||g);S.forEach(function(X){w.props.interactive?X.setAttribute("aria-expanded",w.state.isVisible&&X===at()?"true":"false"):X.removeAttribute("aria-expanded")})}}function F(){vt().removeEventListener("mousemove",Ie),vn=vn.filter(function(S){return S!==Ie})}function $(S){if(!(T.isTouch&&(oe||S.type==="mousedown"))&&!(w.props.interactive&&le.contains(S.target))){if(at().contains(S.target)){if(T.isTouch||w.state.isVisible&&w.props.trigger.indexOf("click")>=0)return}else m("onClickOutside",[w,S]);w.props.hideOnClick===!0&&(w.clearDelayTimeouts(),w.hide(),ge=!0,setTimeout(function(){ge=!1}),w.state.isMounted||W())}}function k(){oe=!0}function Y(){oe=!1}function te(){var S=vt();S.addEventListener("mousedown",$,!0),S.addEventListener("touchend",$,h),S.addEventListener("touchstart",Y,h),S.addEventListener("touchmove",k,h)}function W(){var S=vt();S.removeEventListener("mousedown",$,!0),S.removeEventListener("touchend",$,h),S.removeEventListener("touchstart",Y,h),S.removeEventListener("touchmove",k,h)}function De(S,X){Ae(S,function(){!w.state.isVisible&&le.parentNode&&le.parentNode.contains(le)&&X()})}function Ne(S,X){Ae(S,X)}function Ae(S,X){var J=sn().box;function ve(ye){ye.target===J&&(H(J,"remove",ve),X())}if(S===0)return X();H(J,"remove",Te),H(J,"add",ve),Te=ve}function we(S,X,J){J===void 0&&(J=!1);var ve=U(w.props.triggerTarget||g);ve.forEach(function(ye){ye.addEventListener(S,X,J),Se.push({node:ye,eventType:S,handler:X,options:J})})}function Me(){Yt()&&(we("touchstart",Be,{passive:!0}),we("touchend",He,{passive:!0})),M(w.props.trigger).forEach(function(S){if(S!=="manual")switch(we(S,Be),S){case"mouseenter":we("mouseleave",He);break;case"focus":we(Mr?"focusout":"blur",ae);break;case"focusin":we("focusout",ae);break}})}function Ee(){Se.forEach(function(S){var X=S.node,J=S.eventType,ve=S.handler,ye=S.options;X.removeEventListener(J,ve,ye)}),Se=[]}function Be(S){var X,J=!1;if(!(!w.state.isEnabled||Pe(S)||ge)){var ve=((X=me)==null?void 0:X.type)==="focus";me=S,Z=S.currentTarget,D(),!w.state.isVisible&&R(S)&&vn.forEach(function(ye){return ye(S)}),S.type==="click"&&(w.props.trigger.indexOf("mouseenter")<0||L)&&w.props.hideOnClick!==!1&&w.state.isVisible?J=!0:$e(S),S.type==="click"&&(L=!J),J&&!ve&&Ve(S)}}function Re(S){var X=S.target,J=at().contains(X)||le.contains(X);if(!(S.type==="mousemove"&&J)){var ve=Ye().concat(le).map(function(ye){var Ke,Je=ye._tippy,xt=(Ke=Je.popperInstance)==null?void 0:Ke.state;return xt?{popperRect:ye.getBoundingClientRect(),popperState:xt,props:O}:null}).filter(Boolean);c(ve,S)&&(F(),Ve(S))}}function He(S){var X=Pe(S)||w.props.trigger.indexOf("click")>=0&&L;if(!X){if(w.props.interactive){w.hideWithInteractivity(S);return}Ve(S)}}function ae(S){w.props.trigger.indexOf("focusin")<0&&S.target!==at()||w.props.interactive&&S.relatedTarget&&le.contains(S.relatedTarget)||Ve(S)}function Pe(S){return T.isTouch?Yt()!==S.type.indexOf("touch")>=0:!1}function _e(){Le();var S=w.props,X=S.popperOptions,J=S.placement,ve=S.offset,ye=S.getReferenceClientRect,Ke=S.moveTransition,Je=nt()?Wt(le).arrow:null,xt=ye?{getBoundingClientRect:ye,contextElement:ye.contextElement||at()}:g,Ln={name:"$$tippy",enabled:!0,phase:"beforeWrite",requires:["computeStyles"],fn:function(fn){var Gt=fn.state;if(nt()){var Vr=sn(),Kt=Vr.box;["placement","reference-hidden","escaped"].forEach(function(un){un==="placement"?Kt.setAttribute("data-placement",Gt.placement):Gt.attributes.popper["data-popper-"+un]?Kt.setAttribute("data-"+un,""):Kt.removeAttribute("data-"+un)}),Gt.attributes.popper={}}}},Et=[{name:"offset",options:{offset:ve}},{name:"preventOverflow",options:{padding:{top:2,bottom:2,left:5,right:5}}},{name:"flip",options:{padding:5}},{name:"computeStyles",options:{adaptive:!Ke}},Ln];nt()&&Je&&Et.push({name:"arrow",options:{element:Je,padding:3}}),Et.push.apply(Et,X?.modifiers||[]),w.popperInstance=t.createPopper(xt,le,Object.assign({},X,{placement:J,onFirstUpdate:je,modifiers:Et}))}function Le(){w.popperInstance&&(w.popperInstance.destroy(),w.popperInstance=null)}function Fe(){var S=w.props.appendTo,X,J=at();w.props.interactive&&S===Ze.appendTo||S==="parent"?X=J.parentNode:X=E(S,[J]),X.contains(le)||X.appendChild(le),_e(),dt(w.props.interactive&&S===Ze.appendTo&&J.nextElementSibling!==le,["Interactive tippy element may not be accessible via keyboard","navigation because it is not directly after the reference element","in the DOM source order.",` `,"Using a wrapper
    or tag around the reference element","solves this by creating a new parentNode context.",` `,"Specifying `appendTo: document.body` silences this warning, but it","assumes you are using a focus management solution to handle","keyboard navigation.",` -`,"See: https://atomiks.github.io/tippyjs/v6/accessibility/#interactivity"].join(" "))}function Ve(){return V(Q.querySelectorAll("[data-tippy-root]"))}function Be(w){g.clearDelayTimeouts(),w&&d("onTrigger",[g,w]),z();var H=l(!0),U=Wt(),ie=U[0],ce=U[1];Te.isTouch&&ie==="hold"&&ce&&(H=ce),H?C=setTimeout(function(){g.show()},H):g.show()}function He(w){if(g.clearDelayTimeouts(),d("onUntrigger",[g,w]),!g.state.isVisible){I();return}if(!(g.props.trigger.indexOf("mouseenter")>=0&&g.props.trigger.indexOf("click")>=0&&["mouseleave","mousemove"].indexOf(w.type)>=0&&_)){var H=l(!1);H?k=setTimeout(function(){g.state.isVisible&&g.hide()},H):M=requestAnimationFrame(function(){g.hide()})}}function ht(){g.state.isEnabled=!0}function Je(){g.hide(),g.state.isEnabled=!1}function Dt(){clearTimeout(C),clearTimeout(k),cancelAnimationFrame(M)}function on(w){if(ut(g.state.isDestroyed,kt("setProps")),!g.state.isDestroyed){d("onBeforeUpdate",[g,w]),ge();var H=g.props,U=Zn(f,Object.assign({},g.props,{},w,{ignoreAttributes:!0}));g.props=U,Ce(),H.interactiveDebounce!==U.interactiveDebounce&&(D(),_e=O(De,U.interactiveDebounce)),H.triggerTarget&&!U.triggerTarget?B(H.triggerTarget).forEach(function(ie){ie.removeAttribute("aria-expanded")}):U.triggerTarget&&f.removeAttribute("aria-expanded"),x(),a(),Ct&&Ct(H,U),g.popperInstance&&(xe(),Ve().forEach(function(ie){requestAnimationFrame(ie._tippy.popperInstance.forceUpdate)})),d("onAfterUpdate",[g,w])}}function Ut(w){g.setProps({content:w})}function Tt(){ut(g.state.isDestroyed,kt("show"));var w=g.state.isVisible,H=g.state.isDestroyed,U=!g.state.isEnabled,ie=Te.isTouch&&!g.props.touch,ce=m(g.props.duration,0,Ke.duration);if(!(w||H||U||ie)&&!ot().hasAttribute("disabled")&&(d("onShow",[g],!1),g.props.onShow(g)!==!1)){if(g.state.isVisible=!0,Ze()&&(Q.style.visibility="visible"),a(),z(),g.state.isMounted||(Q.style.transition="none"),Ze()){var ze=rn(),qe=ze.box,bt=ze.content;Ae([qe,bt],0)}Ne=function(){var yt;if(!(!g.state.isVisible||te)){if(te=!0,Q.offsetHeight,Q.style.transition=g.props.moveTransition,Ze()&&g.props.animation){var wn=rn(),an=wn.box,Yt=wn.content;Ae([an,Yt],ce),pe([an,Yt],"visible")}E(),x(),F(vn,g),(yt=g.popperInstance)==null||yt.forceUpdate(),g.state.isMounted=!0,d("onMount",[g]),g.props.animation&&Ze()&&Me(ce,function(){g.state.isShown=!0,d("onShown",[g])})}},Pe()}}function Ln(){ut(g.state.isDestroyed,kt("hide"));var w=!g.state.isVisible,H=g.state.isDestroyed,U=!g.state.isEnabled,ie=m(g.props.duration,1,Ke.duration);if(!(w||H||U)&&(d("onHide",[g],!1),g.props.onHide(g)!==!1)){if(g.state.isVisible=!1,g.state.isShown=!1,te=!1,_=!1,Ze()&&(Q.style.visibility="hidden"),D(),I(),a(),Ze()){var ce=rn(),ze=ce.box,qe=ce.content;g.props.animation&&(Ae([ze,qe],ie),pe([ze,qe],"hidden"))}E(),x(),g.props.animation?Ze()&&Ee(ie,g.unmount):g.unmount()}}function Xt(w){ut(g.state.isDestroyed,kt("hideWithInteractivity")),pt().addEventListener("mousemove",_e),F(hn,_e),_e(w)}function yn(){ut(g.state.isDestroyed,kt("unmount")),g.state.isVisible&&g.hide(),g.state.isMounted&&(Re(),Ve().forEach(function(w){w._tippy.unmount()}),Q.parentNode&&Q.parentNode.removeChild(Q),vn=vn.filter(function(w){return w!==g}),g.state.isMounted=!1,d("onHidden",[g]))}function Nn(){ut(g.state.isDestroyed,kt("destroy")),!g.state.isDestroyed&&(g.clearDelayTimeouts(),g.unmount(),ge(),delete f._tippy,g.state.isDestroyed=!0,d("onDestroy",[g]))}}function lt(f,h){h===void 0&&(h={});var y=Ke.plugins.concat(h.plugins||[]);gt(f),ft(h,y),_n();var C=Object.assign({},h,{plugins:y}),k=ue(f),M=Z(C.content),_=k.length>1;ut(M&&_,["tippy() was passed an Element as the `content` prop, but more than","one tippy instance was created by this invocation. This means the","content element will only be appended to the last tippy instance.",` +`,"See: https://atomiks.github.io/tippyjs/v6/accessibility/#interactivity"].join(" "))}function Ye(){return q(le.querySelectorAll("[data-tippy-root]"))}function $e(S){w.clearDelayTimeouts(),S&&m("onTrigger",[w,S]),te();var X=f(!0),J=zt(),ve=J[0],ye=J[1];T.isTouch&&ve==="hold"&&ye&&(X=ye),X?I=setTimeout(function(){w.show()},X):w.show()}function Ve(S){if(w.clearDelayTimeouts(),m("onUntrigger",[w,S]),!w.state.isVisible){W();return}if(!(w.props.trigger.indexOf("mouseenter")>=0&&w.props.trigger.indexOf("click")>=0&&["mouseleave","mousemove"].indexOf(S.type)>=0&&L)){var X=f(!1);X?z=setTimeout(function(){w.state.isVisible&&w.hide()},X):j=requestAnimationFrame(function(){w.hide()})}}function gt(){w.state.isEnabled=!0}function et(){w.hide(),w.state.isEnabled=!1}function Pt(){clearTimeout(I),clearTimeout(z),cancelAnimationFrame(j)}function ln(S){if(dt(w.state.isDestroyed,Bt("setProps")),!w.state.isDestroyed){m("onBeforeUpdate",[w,S]),Ee();var X=w.props,J=Zn(g,Object.assign({},w.props,{},S,{ignoreAttributes:!0}));w.props=J,Me(),X.interactiveDebounce!==J.interactiveDebounce&&(F(),Ie=_(Re,J.interactiveDebounce)),X.triggerTarget&&!J.triggerTarget?U(X.triggerTarget).forEach(function(ve){ve.removeAttribute("aria-expanded")}):J.triggerTarget&&g.removeAttribute("aria-expanded"),D(),a(),Tt&&Tt(X,J),w.popperInstance&&(_e(),Ye().forEach(function(ve){requestAnimationFrame(ve._tippy.popperInstance.forceUpdate)})),m("onAfterUpdate",[w,S])}}function Xt(S){w.setProps({content:S})}function Mt(){dt(w.state.isDestroyed,Bt("show"));var S=w.state.isVisible,X=w.state.isDestroyed,J=!w.state.isEnabled,ve=T.isTouch&&!w.props.touch,ye=x(w.props.duration,0,Ze.duration);if(!(S||X||J||ve)&&!at().hasAttribute("disabled")&&(m("onShow",[w],!1),w.props.onShow(w)!==!1)){if(w.state.isVisible=!0,nt()&&(le.style.visibility="visible"),a(),te(),w.state.isMounted||(le.style.transition="none"),nt()){var Ke=sn(),Je=Ke.box,xt=Ke.content;l([Je,xt],0)}je=function(){var Et;if(!(!w.state.isVisible||de)){if(de=!0,le.offsetHeight,le.style.transition=w.props.moveTransition,nt()&&w.props.animation){var xn=sn(),fn=xn.box,Gt=xn.content;l([fn,Gt],ye),d([fn,Gt],"visible")}A(),D(),V(gn,w),(Et=w.popperInstance)==null||Et.forceUpdate(),w.state.isMounted=!0,m("onMount",[w]),w.props.animation&&nt()&&Ne(ye,function(){w.state.isShown=!0,m("onShown",[w])})}},Fe()}}function Fn(){dt(w.state.isDestroyed,Bt("hide"));var S=!w.state.isVisible,X=w.state.isDestroyed,J=!w.state.isEnabled,ve=x(w.props.duration,1,Ze.duration);if(!(S||X||J)&&(m("onHide",[w],!1),w.props.onHide(w)!==!1)){if(w.state.isVisible=!1,w.state.isShown=!1,de=!1,L=!1,nt()&&(le.style.visibility="hidden"),F(),W(),a(),nt()){var ye=sn(),Ke=ye.box,Je=ye.content;w.props.animation&&(l([Ke,Je],ve),d([Ke,Je],"hidden"))}A(),D(),w.props.animation?nt()&&De(ve,w.unmount):w.unmount()}}function qt(S){dt(w.state.isDestroyed,Bt("hideWithInteractivity")),vt().addEventListener("mousemove",Ie),V(vn,Ie),Ie(S)}function wn(){dt(w.state.isDestroyed,Bt("unmount")),w.state.isVisible&&w.hide(),w.state.isMounted&&(Le(),Ye().forEach(function(S){S._tippy.unmount()}),le.parentNode&&le.parentNode.removeChild(le),gn=gn.filter(function(S){return S!==w}),w.state.isMounted=!1,m("onHidden",[w]))}function Nn(){dt(w.state.isDestroyed,Bt("destroy")),!w.state.isDestroyed&&(w.clearDelayTimeouts(),w.unmount(),Ee(),delete g._tippy,w.state.isDestroyed=!0,m("onDestroy",[w]))}}function ut(g,y){y===void 0&&(y={});var O=Ze.plugins.concat(y.plugins||[]);yt(g),pt(y,O),jt();var I=Object.assign({},y,{plugins:O}),z=ce(g),j=ie(I.content),L=z.length>1;dt(j&&L,["tippy() was passed an Element as the `content` prop, but more than","one tippy instance was created by this invocation. This means the","content element will only be appended to the last tippy instance.",` `,"Instead, pass the .innerHTML of the element, or use a function that","returns a cloned version of the element instead.",` `,`1) content: element.innerHTML -`,"2) content: () => element.cloneNode(true)"].join(" "));var se=k.reduce(function(G,te){var le=te&&tn(te,C);return le&&G.push(le),G},[]);return Z(f)?se[0]:se}lt.defaultProps=Ke,lt.setDefaultProps=Nr,lt.currentInput=Te;var rr=function(h){var y=h===void 0?{}:h,C=y.exclude,k=y.duration;vn.forEach(function(M){var _=!1;if(C&&(_=ae(C)?M.reference===C:M.popper===C.popper),!_){var se=M.props.duration;M.setProps({duration:k}),M.hide(),M.state.isDestroyed||M.setProps({duration:se})}})},or=Object.assign({},t.applyStyles,{effect:function(h){var y=h.state,C={popper:{position:y.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};Object.assign(y.elements.popper.style,C.popper),y.styles=C,y.elements.arrow&&Object.assign(y.elements.arrow.style,C.arrow)}}),ir=function(h,y){var C;y===void 0&&(y={}),jt(!Array.isArray(h),["The first argument passed to createSingleton() must be an array of","tippy instances. The passed value was",String(h)].join(" "));var k=h,M=[],_,se=y.overrides,G=[],te=!1;function le(){M=k.map(function($){return $.reference})}function Oe($){k.forEach(function(Y){$?Y.enable():Y.disable()})}function Ne($){return k.map(function(Y){var g=Y.setProps;return Y.setProps=function(Ye){g(Ye),Y.reference===_&&$.setProps(Ye)},function(){Y.setProps=g}})}function be($,Y){var g=M.indexOf(Y);if(Y!==_){_=Y;var Ye=(se||[]).concat("content").reduce(function(Q,Ct){return Q[Ct]=k[g].props[Ct],Q},{});$.setProps(Object.assign({},Ye,{getReferenceClientRect:typeof Ye.getReferenceClientRect=="function"?Ye.getReferenceClientRect:function(){return Y.getBoundingClientRect()}}))}}Oe(!1),le();var _e={fn:function(){return{onDestroy:function(){Oe(!0)},onHidden:function(){_=null},onClickOutside:function(g){g.props.showOnCreate&&!te&&(te=!0,_=null)},onShow:function(g){g.props.showOnCreate&&!te&&(te=!0,be(g,M[0]))},onTrigger:function(g,Ye){be(g,Ye.currentTarget)}}}},X=lt(ee(),Object.assign({},S(y,["overrides"]),{plugins:[_e].concat(y.plugins||[]),triggerTarget:M,popperOptions:Object.assign({},y.popperOptions,{modifiers:[].concat(((C=y.popperOptions)==null?void 0:C.modifiers)||[],[or])})})),ne=X.show;X.show=function($){if(ne(),!_&&$==null)return be(X,M[0]);if(!(_&&$==null)){if(typeof $=="number")return M[$]&&be(X,M[$]);if(k.includes($)){var Y=$.reference;return be(X,Y)}if(M.includes($))return be(X,$)}},X.showNext=function(){var $=M[0];if(!_)return X.show(0);var Y=M.indexOf(_);X.show(M[Y+1]||$)},X.showPrevious=function(){var $=M[M.length-1];if(!_)return X.show($);var Y=M.indexOf(_),g=M[Y-1]||$;X.show(g)};var re=X.setProps;return X.setProps=function($){se=$.overrides||se,re($)},X.setInstances=function($){Oe(!0),G.forEach(function(Y){return Y()}),k=$,Oe(!1),le(),Ne(X),X.setProps({triggerTarget:M})},G=Ne(X),X},ar={mouseover:"mouseenter",focusin:"focus",click:"click"};function Ht(f,h){jt(!(h&&h.target),["You must specity a `target` prop indicating a CSS selector string matching","the target elements that should receive a tippy."].join(" "));var y=[],C=[],k=!1,M=h.target,_=S(h,["target"]),se=Object.assign({},_,{trigger:"manual",touch:!1}),G=Object.assign({},_,{showOnCreate:!0}),te=lt(f,se),le=B(te);function Oe(ne){if(!(!ne.target||k)){var re=ne.target.closest(M);if(re){var $=re.getAttribute("data-tippy-trigger")||h.trigger||Ke.trigger;if(!re._tippy&&!(ne.type==="touchstart"&&typeof G.touch=="boolean")&&!(ne.type!=="touchstart"&&$.indexOf(ar[ne.type])<0)){var Y=lt(re,G);Y&&(C=C.concat(Y))}}}}function Ne(ne,re,$,Y){Y===void 0&&(Y=!1),ne.addEventListener(re,$,Y),y.push({node:ne,eventType:re,handler:$,options:Y})}function be(ne){var re=ne.reference;Ne(re,"touchstart",Oe,u),Ne(re,"mouseover",Oe),Ne(re,"focusin",Oe),Ne(re,"click",Oe)}function _e(){y.forEach(function(ne){var re=ne.node,$=ne.eventType,Y=ne.handler,g=ne.options;re.removeEventListener($,Y,g)}),y=[]}function X(ne){var re=ne.destroy,$=ne.enable,Y=ne.disable;ne.destroy=function(g){g===void 0&&(g=!0),g&&C.forEach(function(Ye){Ye.destroy()}),C=[],_e(),re()},ne.enable=function(){$(),C.forEach(function(g){return g.enable()}),k=!1},ne.disable=function(){Y(),C.forEach(function(g){return g.disable()}),k=!0},be(ne)}return le.forEach(X),te}var sr={name:"animateFill",defaultValue:!1,fn:function(h){var y;if(!((y=h.props.render)!=null&&y.$$tippy))return jt(h.props.animateFill,"The `animateFill` plugin requires the default render function."),{};var C=Ft(h.popper),k=C.box,M=C.content,_=h.props.animateFill?jr():null;return{onCreate:function(){_&&(k.insertBefore(_,k.firstElementChild),k.setAttribute("data-animatefill",""),k.style.overflow="hidden",h.setProps({arrow:!1,animation:"shift-away"}))},onMount:function(){if(_){var G=k.style.transitionDuration,te=Number(G.replace("ms",""));M.style.transitionDelay=Math.round(te/10)+"ms",_.style.transitionDuration=G,pe([_],"visible")}},onShow:function(){_&&(_.style.transitionDuration="0ms")},onHide:function(){_&&pe([_],"hidden")}}}};function jr(){var f=ee();return f.className=o,pe([f],"hidden"),f}var gn={clientX:0,clientY:0},nn=[];function mn(f){var h=f.clientX,y=f.clientY;gn={clientX:h,clientY:y}}function bn(f){f.addEventListener("mousemove",mn)}function Br(f){f.removeEventListener("mousemove",mn)}var Mn={name:"followCursor",defaultValue:!1,fn:function(h){var y=h.reference,C=ve(h.props.triggerTarget||y),k=!1,M=!1,_=!0,se=h.props;function G(){return h.props.followCursor==="initial"&&h.state.isVisible}function te(){C.addEventListener("mousemove",Ne)}function le(){C.removeEventListener("mousemove",Ne)}function Oe(){k=!0,h.setProps({getReferenceClientRect:null}),k=!1}function Ne(X){var ne=X.target?y.contains(X.target):!0,re=h.props.followCursor,$=X.clientX,Y=X.clientY,g=y.getBoundingClientRect(),Ye=$-g.left,Q=Y-g.top;(ne||!h.props.interactive)&&h.setProps({getReferenceClientRect:function(){var dt=y.getBoundingClientRect(),$t=$,Wt=Y;re==="initial"&&($t=dt.left+Ye,Wt=dt.top+Q);var Vt=re==="horizontal"?dt.top:Wt,Ze=re==="vertical"?dt.right:$t,ot=re==="horizontal"?dt.bottom:Wt,pt=re==="vertical"?dt.left:$t;return{width:Ze-pt,height:ot-Vt,top:Vt,right:Ze,bottom:ot,left:pt}}})}function be(){h.props.followCursor&&(nn.push({instance:h,doc:C}),bn(C))}function _e(){nn=nn.filter(function(X){return X.instance!==h}),nn.filter(function(X){return X.doc===C}).length===0&&Br(C)}return{onCreate:be,onDestroy:_e,onBeforeUpdate:function(){se=h.props},onAfterUpdate:function(ne,re){var $=re.followCursor;k||$!==void 0&&se.followCursor!==$&&(_e(),$?(be(),h.state.isMounted&&!M&&!G()&&te()):(le(),Oe()))},onMount:function(){h.props.followCursor&&!M&&(_&&(Ne(gn),_=!1),G()||te())},onTrigger:function(ne,re){N(re)&&(gn={clientX:re.clientX,clientY:re.clientY}),M=re.type==="focus"},onHidden:function(){h.props.followCursor&&(Oe(),le(),_=!0)}}}};function Fr(f,h){var y;return{popperOptions:Object.assign({},f.popperOptions,{modifiers:[].concat((((y=f.popperOptions)==null?void 0:y.modifiers)||[]).filter(function(C){var k=C.name;return k!==h.name}),[h])})}}var Rn={name:"inlinePositioning",defaultValue:!1,fn:function(h){var y=h.reference;function C(){return!!h.props.inlinePositioning}var k,M=-1,_=!1,se={name:"tippyInlinePositioning",enabled:!0,phase:"afterWrite",fn:function(Ne){var be=Ne.state;C()&&(k!==be.placement&&h.setProps({getReferenceClientRect:function(){return G(be.placement)}}),k=be.placement)}};function G(Oe){return Hr(K(Oe),y.getBoundingClientRect(),V(y.getClientRects()),M)}function te(Oe){_=!0,h.setProps(Oe),_=!1}function le(){_||te(Fr(h.props,se))}return{onCreate:le,onAfterUpdate:le,onTrigger:function(Ne,be){if(N(be)){var _e=V(h.reference.getClientRects()),X=_e.find(function(ne){return ne.left-2<=be.clientX&&ne.right+2>=be.clientX&&ne.top-2<=be.clientY&&ne.bottom+2>=be.clientY});M=_e.indexOf(X)}},onUntrigger:function(){M=-1}}}};function Hr(f,h,y,C){if(y.length<2||f===null)return h;if(y.length===2&&C>=0&&y[0].left>y[1].right)return y[C]||h;switch(f){case"top":case"bottom":{var k=y[0],M=y[y.length-1],_=f==="top",se=k.top,G=M.bottom,te=_?k.left:M.left,le=_?k.right:M.right,Oe=le-te,Ne=G-se;return{top:se,bottom:G,left:te,right:le,width:Oe,height:Ne}}case"left":case"right":{var be=Math.min.apply(Math,y.map(function(Q){return Q.left})),_e=Math.max.apply(Math,y.map(function(Q){return Q.right})),X=y.filter(function(Q){return f==="left"?Q.left===be:Q.right===_e}),ne=X[0].top,re=X[X.length-1].bottom,$=be,Y=_e,g=Y-$,Ye=re-ne;return{top:ne,bottom:re,left:$,right:Y,width:g,height:Ye}}default:return h}}var $r={name:"sticky",defaultValue:!1,fn:function(h){var y=h.reference,C=h.popper;function k(){return h.popperInstance?h.popperInstance.state.elements.reference:y}function M(te){return h.props.sticky===!0||h.props.sticky===te}var _=null,se=null;function G(){var te=M("reference")?k().getBoundingClientRect():null,le=M("popper")?C.getBoundingClientRect():null;(te&&In(_,te)||le&&In(se,le))&&h.popperInstance&&h.popperInstance.update(),_=te,se=le,h.state.isMounted&&requestAnimationFrame(G)}return{onMount:function(){h.props.sticky&&G()}}}};function In(f,h){return f&&h?f.top!==h.top||f.right!==h.right||f.bottom!==h.bottom||f.left!==h.left:!0}lt.setDefaultProps({render:tr}),e.animateFill=sr,e.createSingleton=ir,e.default=lt,e.delegate=Ht,e.followCursor=Mn,e.hideAll=rr,e.inlinePositioning=Rn,e.roundArrow=n,e.sticky=$r}),mo=Oi(Si()),Va=Oi(Si()),Ua=e=>{let t={plugins:[]},n=i=>e[e.indexOf(i)+1];if(e.includes("animation")&&(t.animation=n("animation")),e.includes("duration")&&(t.duration=parseInt(n("duration"))),e.includes("delay")){let i=n("delay");t.delay=i.includes("-")?i.split("-").map(o=>parseInt(o)):parseInt(i)}if(e.includes("cursor")){t.plugins.push(Va.followCursor);let i=n("cursor");["x","initial"].includes(i)?t.followCursor=i==="x"?"horizontal":"initial":t.followCursor=!0}e.includes("on")&&(t.trigger=n("on")),e.includes("arrowless")&&(t.arrow=!1),e.includes("html")&&(t.allowHTML=!0),e.includes("interactive")&&(t.interactive=!0),e.includes("border")&&t.interactive&&(t.interactiveBorder=parseInt(n("border"))),e.includes("debounce")&&t.interactive&&(t.interactiveDebounce=parseInt(n("debounce"))),e.includes("max-width")&&(t.maxWidth=parseInt(n("max-width"))),e.includes("theme")&&(t.theme=n("theme")),e.includes("placement")&&(t.placement=n("placement"));let r={};return e.includes("no-flip")&&(r.modifiers||(r.modifiers=[]),r.modifiers.push({name:"flip",enabled:!1})),t.popperOptions=r,t};function bo(e){e.magic("tooltip",t=>(n,r={})=>{let i=r.timeout;delete r.timeout;let o=(0,mo.default)(t,{content:n,trigger:"manual",...r});o.show(),setTimeout(()=>{o.hide(),setTimeout(()=>o.destroy(),r.duration||300)},i||2e3)}),e.directive("tooltip",(t,{modifiers:n,expression:r},{evaluateLater:i,effect:o})=>{let s=n.length>0?Ua(n):{};t.__x_tippy||(t.__x_tippy=(0,mo.default)(t,s));let c=()=>t.__x_tippy.enable(),u=()=>t.__x_tippy.disable(),p=m=>{m?(c(),t.__x_tippy.setContent(m)):u()};if(n.includes("raw"))p(r);else{let m=i(r);o(()=>{m(v=>{typeof v=="object"?(t.__x_tippy.setProps(v),c()):p(v)})})}})}bo.defaultProps=e=>(mo.default.setDefaultProps(e),bo);var Xa=bo,Ai=Xa;document.addEventListener("alpine:init",()=>{window.Alpine.plugin(Ko),window.Alpine.plugin(Jo),window.Alpine.plugin(Ei),window.Alpine.plugin(Ai)});var Ya=function(e,t,n){function r(m,v){for(let b of m){let O=i(b,v);if(O!==null)return O}}function i(m,v){let b=m.match(/^[\{\[]([^\[\]\{\}]*)[\}\]](.*)/s);if(b===null||b.length!==3)return null;let O=b[1],S=b[2];if(O.includes(",")){let[A,B]=O.split(",",2);if(B==="*"&&v>=A)return S;if(A==="*"&&v<=B)return S;if(v>=A&&v<=B)return S}return O==v?S:null}function o(m){return m.toString().charAt(0).toUpperCase()+m.toString().slice(1)}function s(m,v){if(v.length===0)return m;let b={};for(let[O,S]of Object.entries(v))b[":"+o(O??"")]=o(S??""),b[":"+O.toUpperCase()]=S.toString().toUpperCase(),b[":"+O]=S;return Object.entries(b).forEach(([O,S])=>{m=m.replaceAll(O,S)}),m}function c(m){return m.map(v=>v.replace(/^[\{\[]([^\[\]\{\}]*)[\}\]]/,""))}let u=e.split("|"),p=r(u,t);return p!=null?s(p.trim(),n):(u=c(u),s(u.length>1&&t>1?u[1]:u[0],n))};window.pluralize=Ya;})(); +`,"2) content: () => element.cloneNode(true)"].join(" "));var ge=z.reduce(function(oe,de){var me=de&&on(de,I);return me&&oe.push(me),oe},[]);return ie(g)?ge[0]:ge}ut.defaultProps=Ze,ut.setDefaultProps=Lr,ut.currentInput=T;var rr=function(y){var O=y===void 0?{}:y,I=O.exclude,z=O.duration;gn.forEach(function(j){var L=!1;if(I&&(L=fe(I)?j.reference===I:j.popper===I.popper),!L){var ge=j.props.duration;j.setProps({duration:z}),j.hide(),j.state.isDestroyed||j.setProps({duration:ge})}})},ir=Object.assign({},t.applyStyles,{effect:function(y){var O=y.state,I={popper:{position:O.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};Object.assign(O.elements.popper.style,I.popper),O.styles=I,O.elements.arrow&&Object.assign(O.elements.arrow.style,I.arrow)}}),or=function(y,O){var I;O===void 0&&(O={}),Ht(!Array.isArray(y),["The first argument passed to createSingleton() must be an array of","tippy instances. The passed value was",String(y)].join(" "));var z=y,j=[],L,ge=O.overrides,oe=[],de=!1;function me(){j=z.map(function(K){return K.reference})}function Te(K){z.forEach(function(ee){K?ee.enable():ee.disable()})}function je(K){return z.map(function(ee){var w=ee.setProps;return ee.setProps=function(Ge){w(Ge),ee.reference===L&&K.setProps(Ge)},function(){ee.setProps=w}})}function Se(K,ee){var w=j.indexOf(ee);if(ee!==L){L=ee;var Ge=(ge||[]).concat("content").reduce(function(le,Tt){return le[Tt]=z[w].props[Tt],le},{});K.setProps(Object.assign({},Ge,{getReferenceClientRect:typeof Ge.getReferenceClientRect=="function"?Ge.getReferenceClientRect:function(){return ee.getBoundingClientRect()}}))}}Te(!1),me();var Ie={fn:function(){return{onDestroy:function(){Te(!0)},onHidden:function(){L=null},onClickOutside:function(w){w.props.showOnCreate&&!de&&(de=!0,L=null)},onShow:function(w){w.props.showOnCreate&&!de&&(de=!0,Se(w,j[0]))},onTrigger:function(w,Ge){Se(w,Ge.currentTarget)}}}},Z=ut(se(),Object.assign({},C(O,["overrides"]),{plugins:[Ie].concat(O.plugins||[]),triggerTarget:j,popperOptions:Object.assign({},O.popperOptions,{modifiers:[].concat(((I=O.popperOptions)==null?void 0:I.modifiers)||[],[ir])})})),pe=Z.show;Z.show=function(K){if(pe(),!L&&K==null)return Se(Z,j[0]);if(!(L&&K==null)){if(typeof K=="number")return j[K]&&Se(Z,j[K]);if(z.includes(K)){var ee=K.reference;return Se(Z,ee)}if(j.includes(K))return Se(Z,K)}},Z.showNext=function(){var K=j[0];if(!L)return Z.show(0);var ee=j.indexOf(L);Z.show(j[ee+1]||K)},Z.showPrevious=function(){var K=j[j.length-1];if(!L)return Z.show(K);var ee=j.indexOf(L),w=j[ee-1]||K;Z.show(w)};var he=Z.setProps;return Z.setProps=function(K){ge=K.overrides||ge,he(K)},Z.setInstances=function(K){Te(!0),oe.forEach(function(ee){return ee()}),z=K,Te(!1),me(),je(Z),Z.setProps({triggerTarget:j})},oe=je(Z),Z},ar={mouseover:"mouseenter",focusin:"focus",click:"click"};function Vt(g,y){Ht(!(y&&y.target),["You must specity a `target` prop indicating a CSS selector string matching","the target elements that should receive a tippy."].join(" "));var O=[],I=[],z=!1,j=y.target,L=C(y,["target"]),ge=Object.assign({},L,{trigger:"manual",touch:!1}),oe=Object.assign({},L,{showOnCreate:!0}),de=ut(g,ge),me=U(de);function Te(pe){if(!(!pe.target||z)){var he=pe.target.closest(j);if(he){var K=he.getAttribute("data-tippy-trigger")||y.trigger||Ze.trigger;if(!he._tippy&&!(pe.type==="touchstart"&&typeof oe.touch=="boolean")&&!(pe.type!=="touchstart"&&K.indexOf(ar[pe.type])<0)){var ee=ut(he,oe);ee&&(I=I.concat(ee))}}}}function je(pe,he,K,ee){ee===void 0&&(ee=!1),pe.addEventListener(he,K,ee),O.push({node:pe,eventType:he,handler:K,options:ee})}function Se(pe){var he=pe.reference;je(he,"touchstart",Te,h),je(he,"mouseover",Te),je(he,"focusin",Te),je(he,"click",Te)}function Ie(){O.forEach(function(pe){var he=pe.node,K=pe.eventType,ee=pe.handler,w=pe.options;he.removeEventListener(K,ee,w)}),O=[]}function Z(pe){var he=pe.destroy,K=pe.enable,ee=pe.disable;pe.destroy=function(w){w===void 0&&(w=!0),w&&I.forEach(function(Ge){Ge.destroy()}),I=[],Ie(),he()},pe.enable=function(){K(),I.forEach(function(w){return w.enable()}),z=!1},pe.disable=function(){ee(),I.forEach(function(w){return w.disable()}),z=!0},Se(pe)}return me.forEach(Z),de}var sr={name:"animateFill",defaultValue:!1,fn:function(y){var O;if(!((O=y.props.render)!=null&&O.$$tippy))return Ht(y.props.animateFill,"The `animateFill` plugin requires the default render function."),{};var I=Wt(y.popper),z=I.box,j=I.content,L=y.props.animateFill?jr():null;return{onCreate:function(){L&&(z.insertBefore(L,z.firstElementChild),z.setAttribute("data-animatefill",""),z.style.overflow="hidden",y.setProps({arrow:!1,animation:"shift-away"}))},onMount:function(){if(L){var oe=z.style.transitionDuration,de=Number(oe.replace("ms",""));j.style.transitionDelay=Math.round(de/10)+"ms",L.style.transitionDuration=oe,d([L],"visible")}},onShow:function(){L&&(L.style.transitionDuration="0ms")},onHide:function(){L&&d([L],"hidden")}}}};function jr(){var g=se();return g.className=i,d([g],"hidden"),g}var mn={clientX:0,clientY:0},an=[];function bn(g){var y=g.clientX,O=g.clientY;mn={clientX:y,clientY:O}}function yn(g){g.addEventListener("mousemove",bn)}function Br(g){g.removeEventListener("mousemove",bn)}var Mn={name:"followCursor",defaultValue:!1,fn:function(y){var O=y.reference,I=v(y.props.triggerTarget||O),z=!1,j=!1,L=!0,ge=y.props;function oe(){return y.props.followCursor==="initial"&&y.state.isVisible}function de(){I.addEventListener("mousemove",je)}function me(){I.removeEventListener("mousemove",je)}function Te(){z=!0,y.setProps({getReferenceClientRect:null}),z=!1}function je(Z){var pe=Z.target?O.contains(Z.target):!0,he=y.props.followCursor,K=Z.clientX,ee=Z.clientY,w=O.getBoundingClientRect(),Ge=K-w.left,le=ee-w.top;(pe||!y.props.interactive)&&y.setProps({getReferenceClientRect:function(){var ht=O.getBoundingClientRect(),Ut=K,zt=ee;he==="initial"&&(Ut=ht.left+Ge,zt=ht.top+le);var Yt=he==="horizontal"?ht.top:zt,nt=he==="vertical"?ht.right:Ut,at=he==="horizontal"?ht.bottom:zt,vt=he==="vertical"?ht.left:Ut;return{width:nt-vt,height:at-Yt,top:Yt,right:nt,bottom:at,left:vt}}})}function Se(){y.props.followCursor&&(an.push({instance:y,doc:I}),yn(I))}function Ie(){an=an.filter(function(Z){return Z.instance!==y}),an.filter(function(Z){return Z.doc===I}).length===0&&Br(I)}return{onCreate:Se,onDestroy:Ie,onBeforeUpdate:function(){ge=y.props},onAfterUpdate:function(pe,he){var K=he.followCursor;z||K!==void 0&&ge.followCursor!==K&&(Ie(),K?(Se(),y.state.isMounted&&!j&&!oe()&&de()):(me(),Te()))},onMount:function(){y.props.followCursor&&!j&&(L&&(je(mn),L=!1),oe()||de())},onTrigger:function(pe,he){R(he)&&(mn={clientX:he.clientX,clientY:he.clientY}),j=he.type==="focus"},onHidden:function(){y.props.followCursor&&(Te(),me(),L=!0)}}}};function Hr(g,y){var O;return{popperOptions:Object.assign({},g.popperOptions,{modifiers:[].concat((((O=g.popperOptions)==null?void 0:O.modifiers)||[]).filter(function(I){var z=I.name;return z!==y.name}),[y])})}}var Rn={name:"inlinePositioning",defaultValue:!1,fn:function(y){var O=y.reference;function I(){return!!y.props.inlinePositioning}var z,j=-1,L=!1,ge={name:"tippyInlinePositioning",enabled:!0,phase:"afterWrite",fn:function(je){var Se=je.state;I()&&(z!==Se.placement&&y.setProps({getReferenceClientRect:function(){return oe(Se.placement)}}),z=Se.placement)}};function oe(Te){return $r(Q(Te),O.getBoundingClientRect(),q(O.getClientRects()),j)}function de(Te){L=!0,y.setProps(Te),L=!1}function me(){L||de(Hr(y.props,ge))}return{onCreate:me,onAfterUpdate:me,onTrigger:function(je,Se){if(R(Se)){var Ie=q(y.reference.getClientRects()),Z=Ie.find(function(pe){return pe.left-2<=Se.clientX&&pe.right+2>=Se.clientX&&pe.top-2<=Se.clientY&&pe.bottom+2>=Se.clientY});j=Ie.indexOf(Z)}},onUntrigger:function(){j=-1}}}};function $r(g,y,O,I){if(O.length<2||g===null)return y;if(O.length===2&&I>=0&&O[0].left>O[1].right)return O[I]||y;switch(g){case"top":case"bottom":{var z=O[0],j=O[O.length-1],L=g==="top",ge=z.top,oe=j.bottom,de=L?z.left:j.left,me=L?z.right:j.right,Te=me-de,je=oe-ge;return{top:ge,bottom:oe,left:de,right:me,width:Te,height:je}}case"left":case"right":{var Se=Math.min.apply(Math,O.map(function(le){return le.left})),Ie=Math.max.apply(Math,O.map(function(le){return le.right})),Z=O.filter(function(le){return g==="left"?le.left===Se:le.right===Ie}),pe=Z[0].top,he=Z[Z.length-1].bottom,K=Se,ee=Ie,w=ee-K,Ge=he-pe;return{top:pe,bottom:he,left:K,right:ee,width:w,height:Ge}}default:return y}}var Wr={name:"sticky",defaultValue:!1,fn:function(y){var O=y.reference,I=y.popper;function z(){return y.popperInstance?y.popperInstance.state.elements.reference:O}function j(de){return y.props.sticky===!0||y.props.sticky===de}var L=null,ge=null;function oe(){var de=j("reference")?z().getBoundingClientRect():null,me=j("popper")?I.getBoundingClientRect():null;(de&&In(L,de)||me&&In(ge,me))&&y.popperInstance&&y.popperInstance.update(),L=de,ge=me,y.state.isMounted&&requestAnimationFrame(oe)}return{onMount:function(){y.props.sticky&&oe()}}}};function In(g,y){return g&&y?g.top!==y.top||g.right!==y.right||g.bottom!==y.bottom||g.left!==y.left:!0}ut.setDefaultProps({render:tr}),e.animateFill=sr,e.createSingleton=or,e.default=ut,e.delegate=Vt,e.followCursor=Mn,e.hideAll=rr,e.inlinePositioning=Rn,e.roundArrow=n,e.sticky=Wr}),bi=To(Po()),rs=To(Po()),is=e=>{let t={plugins:[]},n=o=>e[e.indexOf(o)+1];if(e.includes("animation")&&(t.animation=n("animation")),e.includes("duration")&&(t.duration=parseInt(n("duration"))),e.includes("delay")){let o=n("delay");t.delay=o.includes("-")?o.split("-").map(i=>parseInt(i)):parseInt(o)}if(e.includes("cursor")){t.plugins.push(rs.followCursor);let o=n("cursor");["x","initial"].includes(o)?t.followCursor=o==="x"?"horizontal":"initial":t.followCursor=!0}e.includes("on")&&(t.trigger=n("on")),e.includes("arrowless")&&(t.arrow=!1),e.includes("html")&&(t.allowHTML=!0),e.includes("interactive")&&(t.interactive=!0),e.includes("border")&&t.interactive&&(t.interactiveBorder=parseInt(n("border"))),e.includes("debounce")&&t.interactive&&(t.interactiveDebounce=parseInt(n("debounce"))),e.includes("max-width")&&(t.maxWidth=parseInt(n("max-width"))),e.includes("theme")&&(t.theme=n("theme")),e.includes("placement")&&(t.placement=n("placement"));let r={};return e.includes("no-flip")&&(r.modifiers||(r.modifiers=[]),r.modifiers.push({name:"flip",enabled:!1})),t.popperOptions=r,t};function yi(e){e.magic("tooltip",t=>(n,r={})=>{let o=r.timeout;delete r.timeout;let i=(0,bi.default)(t,{content:n,trigger:"manual",...r});i.show(),setTimeout(()=>{i.hide(),setTimeout(()=>i.destroy(),r.duration||300)},o||2e3)}),e.directive("tooltip",(t,{modifiers:n,expression:r},{evaluateLater:o,effect:i})=>{let s=n.length>0?is(n):{};t.__x_tippy||(t.__x_tippy=(0,bi.default)(t,s));let u=()=>t.__x_tippy.enable(),h=()=>t.__x_tippy.disable(),p=x=>{x?(u(),t.__x_tippy.setContent(x)):h()};if(n.includes("raw"))p(r);else{let x=o(r);i(()=>{x(b=>{typeof b=="object"?(t.__x_tippy.setProps(b),u()):p(b)})})}})}yi.defaultProps=e=>(bi.default.setDefaultProps(e),yi);var os=yi,Mo=os;document.addEventListener("alpine:init",()=>{window.Alpine.plugin(Qi),window.Alpine.plugin(Zi),window.Alpine.plugin(Do),window.Alpine.plugin(Mo)});var as=function(e,t,n){function r(x,b){for(let E of x){let _=o(E,b);if(_!==null)return _}}function o(x,b){let E=x.match(/^[\{\[]([^\[\]\{\}]*)[\}\]](.*)/s);if(E===null||E.length!==3)return null;let _=E[1],C=E[2];if(_.includes(",")){let[M,U]=_.split(",",2);if(U==="*"&&b>=M)return C;if(M==="*"&&b<=U)return C;if(b>=M&&b<=U)return C}return _==b?C:null}function i(x){return x.toString().charAt(0).toUpperCase()+x.toString().slice(1)}function s(x,b){if(b.length===0)return x;let E={};for(let[_,C]of Object.entries(b))E[":"+i(_??"")]=i(C??""),E[":"+_.toUpperCase()]=C.toString().toUpperCase(),E[":"+_]=C;return Object.entries(E).forEach(([_,C])=>{x=x.replaceAll(_,C)}),x}function u(x){return x.map(b=>b.replace(/^[\{\[]([^\[\]\{\}]*)[\}\]]/,""))}let h=e.split("|"),p=r(h,t);return p!=null?s(p.trim(),n):(h=u(h),s(h.length>1&&t>1?h[1]:h[0],n))};window.jsMd5=Ro.md5;window.pluralize=as;})(); /*! Bundled license information: +js-md5/src/md5.js: + (** + * [js-md5]{@link https://github.com/emn178/js-md5} + * + * @namespace md5 + * @version 0.8.3 + * @author Chen, Yi-Cyuan [emn178@gmail.com] + * @copyright Chen, Yi-Cyuan 2014-2023 + * @license MIT + *) + sortablejs/modular/sortable.esm.js: (**! - * Sortable 1.15.1 + * Sortable 1.15.2 * @author RubaXa * @author owenm * @license MIT diff --git a/public/js/filament/tables/components/table.js b/public/js/filament/tables/components/table.js index c27c97235..df8bc8a7c 100644 --- a/public/js/filament/tables/components/table.js +++ b/public/js/filament/tables/components/table.js @@ -1 +1 @@ -function c(){return{collapsedGroups:[],isLoading:!1,selectedRecords:[],shouldCheckUniqueSelection:!0,init:function(){this.$wire.$on("deselectAllTableRecords",()=>this.deselectAllRecords()),this.$watch("selectedRecords",()=>{if(!this.shouldCheckUniqueSelection){this.shouldCheckUniqueSelection=!0;return}this.selectedRecords=[...new Set(this.selectedRecords)],this.shouldCheckUniqueSelection=!1})},mountBulkAction:function(e){this.$wire.set("selectedTableRecords",this.selectedRecords,!1),this.$wire.mountTableBulkAction(e)},toggleSelectRecordsOnPage:function(){let e=this.getRecordsOnPage();if(this.areRecordsSelected(e)){this.deselectRecords(e);return}this.selectRecords(e)},toggleSelectRecordsInGroup:async function(e){if(this.isLoading=!0,this.areRecordsSelected(this.getRecordsInGroupOnPage(e))){this.deselectRecords(await this.$wire.getGroupedSelectableTableRecordKeys(e));return}this.selectRecords(await this.$wire.getGroupedSelectableTableRecordKeys(e)),this.isLoading=!1},getRecordsInGroupOnPage:function(e){let s=[];for(let t of this.$root.getElementsByClassName("fi-ta-record-checkbox"))t.dataset.group===e&&s.push(t.value);return s},getRecordsOnPage:function(){let e=[];for(let s of this.$root.getElementsByClassName("fi-ta-record-checkbox"))e.push(s.value);return e},selectRecords:function(e){for(let s of e)this.isRecordSelected(s)||this.selectedRecords.push(s)},deselectRecords:function(e){for(let s of e){let t=this.selectedRecords.indexOf(s);t!==-1&&this.selectedRecords.splice(t,1)}},selectAllRecords:async function(){this.isLoading=!0,this.selectedRecords=await this.$wire.getAllSelectableTableRecordKeys(),this.isLoading=!1},deselectAllRecords:function(){this.selectedRecords=[]},isRecordSelected:function(e){return this.selectedRecords.includes(e)},areRecordsSelected:function(e){return e.every(s=>this.isRecordSelected(s))},toggleCollapseGroup:function(e){if(this.isGroupCollapsed(e)){this.collapsedGroups.splice(this.collapsedGroups.indexOf(e),1);return}this.collapsedGroups.push(e)},isGroupCollapsed:function(e){return this.collapsedGroups.includes(e)},resetCollapsedGroups:function(){this.collapsedGroups=[]}}}export{c as default}; +function c(){return{collapsedGroups:[],isLoading:!1,selectedRecords:[],shouldCheckUniqueSelection:!0,init:function(){this.$wire.$on("deselectAllTableRecords",()=>this.deselectAllRecords()),this.$watch("selectedRecords",()=>{if(!this.shouldCheckUniqueSelection){this.shouldCheckUniqueSelection=!0;return}this.selectedRecords=[...new Set(this.selectedRecords)],this.shouldCheckUniqueSelection=!1})},mountAction:function(e,s=null){this.$wire.set("selectedTableRecords",this.selectedRecords,!1),this.$wire.mountTableAction(e,s)},mountBulkAction:function(e){this.$wire.set("selectedTableRecords",this.selectedRecords,!1),this.$wire.mountTableBulkAction(e)},toggleSelectRecordsOnPage:function(){let e=this.getRecordsOnPage();if(this.areRecordsSelected(e)){this.deselectRecords(e);return}this.selectRecords(e)},toggleSelectRecordsInGroup:async function(e){if(this.isLoading=!0,this.areRecordsSelected(this.getRecordsInGroupOnPage(e))){this.deselectRecords(await this.$wire.getGroupedSelectableTableRecordKeys(e));return}this.selectRecords(await this.$wire.getGroupedSelectableTableRecordKeys(e)),this.isLoading=!1},getRecordsInGroupOnPage:function(e){let s=[];for(let t of this.$root.getElementsByClassName("fi-ta-record-checkbox"))t.dataset.group===e&&s.push(t.value);return s},getRecordsOnPage:function(){let e=[];for(let s of this.$root.getElementsByClassName("fi-ta-record-checkbox"))e.push(s.value);return e},selectRecords:function(e){for(let s of e)this.isRecordSelected(s)||this.selectedRecords.push(s)},deselectRecords:function(e){for(let s of e){let t=this.selectedRecords.indexOf(s);t!==-1&&this.selectedRecords.splice(t,1)}},selectAllRecords:async function(){this.isLoading=!0,this.selectedRecords=await this.$wire.getAllSelectableTableRecordKeys(),this.isLoading=!1},deselectAllRecords:function(){this.selectedRecords=[]},isRecordSelected:function(e){return this.selectedRecords.includes(e)},areRecordsSelected:function(e){return e.every(s=>this.isRecordSelected(s))},toggleCollapseGroup:function(e){if(this.isGroupCollapsed(e)){this.collapsedGroups.splice(this.collapsedGroups.indexOf(e),1);return}this.collapsedGroups.push(e)},isGroupCollapsed:function(e){return this.collapsedGroups.includes(e)},resetCollapsedGroups:function(){this.collapsedGroups=[]}}}export{c as default}; diff --git a/public/vendor/horizon/app.js b/public/vendor/horizon/app.js index e765b2076..8bb4173dc 100644 --- a/public/vendor/horizon/app.js +++ b/public/vendor/horizon/app.js @@ -1,2 +1,2 @@ /*! For license information please see app.js.LICENSE.txt */ -(()=>{var t,e={981:(t,e,o)=>{"use strict";var p=Object.freeze({}),b=Array.isArray;function n(t){return null==t}function M(t){return null!=t}function z(t){return!0===t}function c(t){return"string"==typeof t||"number"==typeof t||"symbol"==typeof t||"boolean"==typeof t}function r(t){return"function"==typeof t}function i(t){return null!==t&&"object"==typeof t}var a=Object.prototype.toString;function O(t){return"[object Object]"===a.call(t)}function s(t){return"[object RegExp]"===a.call(t)}function l(t){var e=parseFloat(String(t));return e>=0&&Math.floor(e)===e&&isFinite(t)}function d(t){return M(t)&&"function"==typeof t.then&&"function"==typeof t.catch}function A(t){return null==t?"":Array.isArray(t)||O(t)&&t.toString===a?JSON.stringify(t,null,2):String(t)}function u(t){var e=parseFloat(t);return isNaN(e)?t:e}function f(t,e){for(var o=Object.create(null),p=t.split(","),b=0;b-1)return t.splice(p,1)}}var m=Object.prototype.hasOwnProperty;function g(t,e){return m.call(t,e)}function v(t){var e=Object.create(null);return function(o){return e[o]||(e[o]=t(o))}}var R=/-(\w)/g,y=v((function(t){return t.replace(R,(function(t,e){return e?e.toUpperCase():""}))})),B=v((function(t){return t.charAt(0).toUpperCase()+t.slice(1)})),L=/\B([A-Z])/g,X=v((function(t){return t.replace(L,"-$1").toLowerCase()}));var _=Function.prototype.bind?function(t,e){return t.bind(e)}:function(t,e){function o(o){var p=arguments.length;return p?p>1?t.apply(e,arguments):t.call(e,o):t.call(e)}return o._length=t.length,o};function N(t,e){e=e||0;for(var o=t.length-e,p=new Array(o);o--;)p[o]=t[o+e];return p}function w(t,e){for(var o in e)t[o]=e[o];return t}function x(t){for(var e={},o=0;o0,et=Q&&Q.indexOf("edge/")>0;Q&&Q.indexOf("android");var ot=Q&&/iphone|ipad|ipod|ios/.test(Q);Q&&/chrome\/\d+/.test(Q),Q&&/phantomjs/.test(Q);var pt,bt=Q&&Q.match(/firefox\/(\d+)/),nt={}.watch,Mt=!1;if(K)try{var zt={};Object.defineProperty(zt,"passive",{get:function(){Mt=!0}}),window.addEventListener("test-passive",null,zt)}catch(t){}var ct=function(){return void 0===pt&&(pt=!K&&void 0!==o.g&&(o.g.process&&"server"===o.g.process.env.VUE_ENV)),pt},rt=K&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__;function it(t){return"function"==typeof t&&/native code/.test(t.toString())}var at,Ot="undefined"!=typeof Symbol&&it(Symbol)&&"undefined"!=typeof Reflect&&it(Reflect.ownKeys);at="undefined"!=typeof Set&&it(Set)?Set:function(){function t(){this.set=Object.create(null)}return t.prototype.has=function(t){return!0===this.set[t]},t.prototype.add=function(t){this.set[t]=!0},t.prototype.clear=function(){this.set=Object.create(null)},t}();var st=null;function lt(t){void 0===t&&(t=null),t||st&&st._scope.off(),st=t,t&&t._scope.on()}var dt=function(){function t(t,e,o,p,b,n,M,z){this.tag=t,this.data=e,this.children=o,this.text=p,this.elm=b,this.ns=void 0,this.context=n,this.fnContext=void 0,this.fnOptions=void 0,this.fnScopeId=void 0,this.key=e&&e.key,this.componentOptions=M,this.componentInstance=void 0,this.parent=void 0,this.raw=!1,this.isStatic=!1,this.isRootInsert=!0,this.isComment=!1,this.isCloned=!1,this.isOnce=!1,this.asyncFactory=z,this.asyncMeta=void 0,this.isAsyncPlaceholder=!1}return Object.defineProperty(t.prototype,"child",{get:function(){return this.componentInstance},enumerable:!1,configurable:!0}),t}(),At=function(t){void 0===t&&(t="");var e=new dt;return e.text=t,e.isComment=!0,e};function ut(t){return new dt(void 0,void 0,void 0,String(t))}function ft(t){var e=new dt(t.tag,t.data,t.children&&t.children.slice(),t.text,t.elm,t.context,t.componentOptions,t.asyncFactory);return e.ns=t.ns,e.isStatic=t.isStatic,e.key=t.key,e.isComment=t.isComment,e.fnContext=t.fnContext,e.fnOptions=t.fnOptions,e.fnScopeId=t.fnScopeId,e.asyncMeta=t.asyncMeta,e.isCloned=!0,e}var qt=0,ht=[],Wt=function(){function t(){this._pending=!1,this.id=qt++,this.subs=[]}return t.prototype.addSub=function(t){this.subs.push(t)},t.prototype.removeSub=function(t){this.subs[this.subs.indexOf(t)]=null,this._pending||(this._pending=!0,ht.push(this))},t.prototype.depend=function(e){t.target&&t.target.addDep(this)},t.prototype.notify=function(t){var e=this.subs.filter((function(t){return t}));for(var o=0,p=e.length;o0&&(Jt((p=Kt(p,"".concat(e||"","_").concat(o)))[0])&&Jt(i)&&(a[r]=ut(i.text+p[0].text),p.shift()),a.push.apply(a,p)):c(p)?Jt(i)?a[r]=ut(i.text+p):""!==p&&a.push(ut(p)):Jt(p)&&Jt(i)?a[r]=ut(i.text+p.text):(z(t._isVList)&&M(p.tag)&&n(p.key)&&M(e)&&(p.key="__vlist".concat(e,"_").concat(o,"__")),a.push(p)));return a}function Qt(t,e,o,p,n,a){return(b(o)||c(o))&&(n=p,p=o,o=void 0),z(a)&&(n=2),function(t,e,o,p,n){if(M(o)&&M(o.__ob__))return At();M(o)&&M(o.is)&&(e=o.is);if(!e)return At();0;b(p)&&r(p[0])&&((o=o||{}).scopedSlots={default:p[0]},p.length=0);2===n?p=Gt(p):1===n&&(p=function(t){for(var e=0;e0,z=e?!!e.$stable:!M,c=e&&e.$key;if(e){if(e._normalized)return e._normalized;if(z&&b&&b!==p&&c===b.$key&&!M&&!b.$hasNormal)return b;for(var r in n={},e)e[r]&&"$"!==r[0]&&(n[r]=qe(t,o,r,e[r]))}else n={};for(var i in o)i in n||(n[i]=he(o,i));return e&&Object.isExtensible(e)&&(e._normalized=n),Y(n,"$stable",z),Y(n,"$key",c),Y(n,"$hasNormal",M),n}function qe(t,e,o,p){var n=function(){var e=st;lt(t);var o=arguments.length?p.apply(null,arguments):p({}),n=(o=o&&"object"==typeof o&&!b(o)?[o]:Gt(o))&&o[0];return lt(e),o&&(!n||1===o.length&&n.isComment&&!ue(n))?void 0:o};return p.proxy&&Object.defineProperty(e,o,{get:n,enumerable:!0,configurable:!0}),n}function he(t,e){return function(){return t[e]}}function We(t){return{get attrs(){if(!t._attrsProxy){var e=t._attrsProxy={};Y(e,"_v_attr_proxy",!0),me(e,t.$attrs,p,t,"$attrs")}return t._attrsProxy},get listeners(){t._listenersProxy||me(t._listenersProxy={},t.$listeners,p,t,"$listeners");return t._listenersProxy},get slots(){return function(t){t._slotsProxy||ve(t._slotsProxy={},t.$scopedSlots);return t._slotsProxy}(t)},emit:_(t.$emit,t),expose:function(e){e&&Object.keys(e).forEach((function(o){return Ft(t,e,o)}))}}}function me(t,e,o,p,b){var n=!1;for(var M in e)M in t?e[M]!==o[M]&&(n=!0):(n=!0,ge(t,M,p,b));for(var M in t)M in e||(n=!0,delete t[M]);return n}function ge(t,e,o,p){Object.defineProperty(t,e,{enumerable:!0,configurable:!0,get:function(){return o[p][e]}})}function ve(t,e){for(var o in e)t[o]=e[o];for(var o in t)o in e||delete t[o]}var Re,ye=null;function Be(t,e){return(t.__esModule||Ot&&"Module"===t[Symbol.toStringTag])&&(t=t.default),i(t)?e.extend(t):t}function Le(t){if(b(t))for(var e=0;edocument.createEvent("Event").timeStamp&&(Ve=function(){return $e.now()})}var Ye=function(t,e){if(t.post){if(!e.post)return 1}else if(e.post)return-1;return t.id-e.id};function Ge(){var t,e;for(Ue=Ve(),Fe=!0,De.sort(Ye),He=0;HeHe&&De[o].id>t.id;)o--;De.splice(o+1,0,t)}else De.push(t);Ie||(Ie=!0,lo(Ge))}}var Ke="watcher";"".concat(Ke," callback"),"".concat(Ke," getter"),"".concat(Ke," cleanup");var Qe;var Ze=function(){function t(t){void 0===t&&(t=!1),this.detached=t,this.active=!0,this.effects=[],this.cleanups=[],this.parent=Qe,!t&&Qe&&(this.index=(Qe.scopes||(Qe.scopes=[])).push(this)-1)}return t.prototype.run=function(t){if(this.active){var e=Qe;try{return Qe=this,t()}finally{Qe=e}}else 0},t.prototype.on=function(){Qe=this},t.prototype.off=function(){Qe=this.parent},t.prototype.stop=function(t){if(this.active){var e=void 0,o=void 0;for(e=0,o=this.effects.length;e-1)if(n&&!g(b,"default"))M=!1;else if(""===M||M===X(t)){var c=tp(String,b.type);(c<0||z-1:"string"==typeof t?t.split(",").indexOf(e)>-1:!!s(t)&&t.test(e)}function np(t,e){var o=t.cache,p=t.keys,b=t._vnode;for(var n in o){var M=o[n];if(M){var z=M.name;z&&!e(z)&&Mp(o,n,p,b)}}}function Mp(t,e,o,p){var b=t[e];!b||p&&b.tag===p.tag||b.componentInstance.$destroy(),t[e]=null,W(o,e)}!function(t){t.prototype._init=function(t){var e=this;e._uid=No++,e._isVue=!0,e.__v_skip=!0,e._scope=new Ze(!0),e._scope._vm=!0,t&&t._isComponent?function(t,e){var o=t.$options=Object.create(t.constructor.options),p=e._parentVnode;o.parent=e.parent,o._parentVnode=p;var b=p.componentOptions;o.propsData=b.propsData,o._parentListeners=b.listeners,o._renderChildren=b.children,o._componentTag=b.tag,e.render&&(o.render=e.render,o.staticRenderFns=e.staticRenderFns)}(e,t):e.$options=Yo(wo(e.constructor),t||{},e),e._renderProxy=e,e._self=e,function(t){var e=t.$options,o=e.parent;if(o&&!e.abstract){for(;o.$options.abstract&&o.$parent;)o=o.$parent;o.$children.push(t)}t.$parent=o,t.$root=o?o.$root:t,t.$children=[],t.$refs={},t._provided=o?o._provided:Object.create(null),t._watcher=null,t._inactive=null,t._directInactive=!1,t._isMounted=!1,t._isDestroyed=!1,t._isBeingDestroyed=!1}(e),function(t){t._events=Object.create(null),t._hasHookEvent=!1;var e=t.$options._parentListeners;e&&we(t,e)}(e),function(t){t._vnode=null,t._staticTrees=null;var e=t.$options,o=t.$vnode=e._parentVnode,b=o&&o.context;t.$slots=de(e._renderChildren,b),t.$scopedSlots=o?fe(t.$parent,o.data.scopedSlots,t.$slots):p,t._c=function(e,o,p,b){return Qt(t,e,o,p,b,!1)},t.$createElement=function(e,o,p,b){return Qt(t,e,o,p,b,!0)};var n=o&&o.data;Et(t,"$attrs",n&&n.attrs||p,null,!0),Et(t,"$listeners",e._parentListeners||p,null,!0)}(e),Ee(e,"beforeCreate",void 0,!1),function(t){var e=_o(t.$options.inject,t);e&&(Tt(!1),Object.keys(e).forEach((function(o){Et(t,o,e[o])})),Tt(!0))}(e),vo(e),function(t){var e=t.$options.provide;if(e){var o=r(e)?e.call(t):e;if(!i(o))return;for(var p=to(t),b=Ot?Reflect.ownKeys(o):Object.keys(o),n=0;n1?N(o):o;for(var p=N(arguments,1),b='event handler for "'.concat(t,'"'),n=0,M=o.length;nparseInt(this.max)&&Mp(e,o[0],o,this._vnode),this.vnodeToCache=null}}},created:function(){this.cache=Object.create(null),this.keys=[]},destroyed:function(){for(var t in this.cache)Mp(this.cache,t,this.keys)},mounted:function(){var t=this;this.cacheVNode(),this.$watch("include",(function(e){np(t,(function(t){return bp(e,t)}))})),this.$watch("exclude",(function(e){np(t,(function(t){return!bp(e,t)}))}))},updated:function(){this.cacheVNode()},render:function(){var t=this.$slots.default,e=Le(t),o=e&&e.componentOptions;if(o){var p=pp(o),b=this.include,n=this.exclude;if(b&&(!p||!bp(b,p))||n&&p&&bp(n,p))return e;var M=this.cache,z=this.keys,c=null==e.key?o.Ctor.cid+(o.tag?"::".concat(o.tag):""):e.key;M[c]?(e.componentInstance=M[c].componentInstance,W(z,c),z.push(c)):(this.vnodeToCache=e,this.keyToCache=c),e.data.keepAlive=!0}return e||t&&t[0]}},rp={KeepAlive:cp};!function(t){var e={get:function(){return H}};Object.defineProperty(t,"config",e),t.util={warn:jo,extend:w,mergeOptions:Yo,defineReactive:Et},t.set=Dt,t.delete=Pt,t.nextTick=lo,t.observable=function(t){return kt(t),t},t.options=Object.create(null),I.forEach((function(e){t.options[e+"s"]=Object.create(null)})),t.options._base=t,w(t.options.components,rp),function(t){t.use=function(t){var e=this._installedPlugins||(this._installedPlugins=[]);if(e.indexOf(t)>-1)return this;var o=N(arguments,1);return o.unshift(this),r(t.install)?t.install.apply(t,o):r(t)&&t.apply(null,o),e.push(t),this}}(t),function(t){t.mixin=function(t){return this.options=Yo(this.options,t),this}}(t),op(t),function(t){I.forEach((function(e){t[e]=function(t,o){return o?("component"===e&&O(o)&&(o.name=o.name||t,o=this.options._base.extend(o)),"directive"===e&&r(o)&&(o={bind:o,update:o}),this.options[e+"s"][t]=o,o):this.options[e+"s"][t]}}))}(t)}(ep),Object.defineProperty(ep.prototype,"$isServer",{get:ct}),Object.defineProperty(ep.prototype,"$ssrContext",{get:function(){return this.$vnode&&this.$vnode.ssrContext}}),Object.defineProperty(ep,"FunctionalRenderContext",{value:xo}),ep.version="2.7.13";var ip=f("style,class"),ap=f("input,textarea,option,select,progress"),Op=function(t,e,o){return"value"===o&&ap(t)&&"button"!==e||"selected"===o&&"option"===t||"checked"===o&&"input"===t||"muted"===o&&"video"===t},sp=f("contenteditable,draggable,spellcheck"),lp=f("events,caret,typing,plaintext-only"),dp=f("allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,truespeed,typemustmatch,visible"),Ap="http://www.w3.org/1999/xlink",up=function(t){return":"===t.charAt(5)&&"xlink"===t.slice(0,5)},fp=function(t){return up(t)?t.slice(6,t.length):""},qp=function(t){return null==t||!1===t};function hp(t){for(var e=t.data,o=t,p=t;M(p.componentInstance);)(p=p.componentInstance._vnode)&&p.data&&(e=Wp(p.data,e));for(;M(o=o.parent);)o&&o.data&&(e=Wp(e,o.data));return function(t,e){if(M(t)||M(e))return mp(t,gp(e));return""}(e.staticClass,e.class)}function Wp(t,e){return{staticClass:mp(t.staticClass,e.staticClass),class:M(t.class)?[t.class,e.class]:e.class}}function mp(t,e){return t?e?t+" "+e:t:e||""}function gp(t){return Array.isArray(t)?function(t){for(var e,o="",p=0,b=t.length;p-1?Gp(t,e,o):dp(e)?qp(o)?t.removeAttribute(e):(o="allowfullscreen"===e&&"EMBED"===t.tagName?"true":e,t.setAttribute(e,o)):sp(e)?t.setAttribute(e,function(t,e){return qp(e)||"false"===e?"false":"contenteditable"===t&&lp(e)?e:"true"}(e,o)):up(e)?qp(o)?t.removeAttributeNS(Ap,fp(e)):t.setAttributeNS(Ap,e,o):Gp(t,e,o)}function Gp(t,e,o){if(qp(o))t.removeAttribute(e);else{if(Z&&!tt&&"TEXTAREA"===t.tagName&&"placeholder"===e&&""!==o&&!t.__ieph){var p=function(e){e.stopImmediatePropagation(),t.removeEventListener("input",p)};t.addEventListener("input",p),t.__ieph=!0}t.setAttribute(e,o)}}var Jp={create:$p,update:$p};function Kp(t,e){var o=e.elm,p=e.data,b=t.data;if(!(n(p.staticClass)&&n(p.class)&&(n(b)||n(b.staticClass)&&n(b.class)))){var z=hp(e),c=o._transitionClasses;M(c)&&(z=mp(z,gp(c))),z!==o._prevClass&&(o.setAttribute("class",z),o._prevClass=z)}}var Qp,Zp,tb,eb,ob,pb,bb={create:Kp,update:Kp},nb=/[\w).+\-_$\]]/;function Mb(t){var e,o,p,b,n,M=!1,z=!1,c=!1,r=!1,i=0,a=0,O=0,s=0;for(p=0;p=0&&" "===(d=t.charAt(l));l--);d&&nb.test(d)||(r=!0)}}else void 0===b?(s=p+1,b=t.slice(0,p).trim()):A();function A(){(n||(n=[])).push(t.slice(s,p).trim()),s=p+1}if(void 0===b?b=t.slice(0,p).trim():0!==s&&A(),n)for(p=0;p-1?{exp:t.slice(0,eb),key:'"'+t.slice(eb+1)+'"'}:{exp:t,key:null};Zp=t,eb=ob=pb=0;for(;!gb();)vb(tb=mb())?yb(tb):91===tb&&Rb(tb);return{exp:t.slice(0,ob),key:t.slice(ob+1,pb)}}(t);return null===o.key?"".concat(t,"=").concat(e):"$set(".concat(o.exp,", ").concat(o.key,", ").concat(e,")")}function mb(){return Zp.charCodeAt(++eb)}function gb(){return eb>=Qp}function vb(t){return 34===t||39===t}function Rb(t){var e=1;for(ob=eb;!gb();)if(vb(t=mb()))yb(t);else if(91===t&&e++,93===t&&e--,0===e){pb=eb;break}}function yb(t){for(var e=t;!gb()&&(t=mb())!==e;);}var Bb,Lb="__r";function Xb(t,e,o){var p=Bb;return function b(){var n=e.apply(null,arguments);null!==n&&wb(t,b,o,p)}}var _b=Mo&&!(bt&&Number(bt[1])<=53);function Nb(t,e,o,p){if(_b){var b=Ue,n=e;e=n._wrapper=function(t){if(t.target===t.currentTarget||t.timeStamp>=b||t.timeStamp<=0||t.target.ownerDocument!==document)return n.apply(this,arguments)}}Bb.addEventListener(t,e,Mt?{capture:o,passive:p}:o)}function wb(t,e,o,p){(p||Bb).removeEventListener(t,e._wrapper||e,o)}function xb(t,e){if(!n(t.data.on)||!n(e.data.on)){var o=e.data.on||{},p=t.data.on||{};Bb=e.elm||t.elm,function(t){if(M(t.__r)){var e=Z?"change":"input";t[e]=[].concat(t.__r,t[e]||[]),delete t.__r}M(t.__c)&&(t.change=[].concat(t.__c,t.change||[]),delete t.__c)}(o),Vt(o,p,Nb,wb,Xb,e.context),Bb=void 0}}var Tb,Cb={create:xb,update:xb,destroy:function(t){return xb(t,Sp)}};function Sb(t,e){if(!n(t.data.domProps)||!n(e.data.domProps)){var o,p,b=e.elm,c=t.data.domProps||{},r=e.data.domProps||{};for(o in(M(r.__ob__)||z(r._v_attr_proxy))&&(r=e.data.domProps=w({},r)),c)o in r||(b[o]="");for(o in r){if(p=r[o],"textContent"===o||"innerHTML"===o){if(e.children&&(e.children.length=0),p===c[o])continue;1===b.childNodes.length&&b.removeChild(b.childNodes[0])}if("value"===o&&"PROGRESS"!==b.tagName){b._value=p;var i=n(p)?"":String(p);kb(b,i)&&(b.value=i)}else if("innerHTML"===o&&yp(b.tagName)&&n(b.innerHTML)){(Tb=Tb||document.createElement("div")).innerHTML="".concat(p,"");for(var a=Tb.firstChild;b.firstChild;)b.removeChild(b.firstChild);for(;a.firstChild;)b.appendChild(a.firstChild)}else if(p!==c[o])try{b[o]=p}catch(t){}}}}function kb(t,e){return!t.composing&&("OPTION"===t.tagName||function(t,e){var o=!0;try{o=document.activeElement!==t}catch(t){}return o&&t.value!==e}(t,e)||function(t,e){var o=t.value,p=t._vModifiers;if(M(p)){if(p.number)return u(o)!==u(e);if(p.trim)return o.trim()!==e.trim()}return o!==e}(t,e))}var Eb={create:Sb,update:Sb},Db=v((function(t){var e={},o=/:(.+)/;return t.split(/;(?![^(]*\))/g).forEach((function(t){if(t){var p=t.split(o);p.length>1&&(e[p[0].trim()]=p[1].trim())}})),e}));function Pb(t){var e=jb(t.style);return t.staticStyle?w(t.staticStyle,e):e}function jb(t){return Array.isArray(t)?x(t):"string"==typeof t?Db(t):t}var Ib,Fb=/^--/,Hb=/\s*!important$/,Ub=function(t,e,o){if(Fb.test(e))t.style.setProperty(e,o);else if(Hb.test(o))t.style.setProperty(X(e),o.replace(Hb,""),"important");else{var p=$b(e);if(Array.isArray(o))for(var b=0,n=o.length;b-1?e.split(Jb).forEach((function(e){return t.classList.add(e)})):t.classList.add(e);else{var o=" ".concat(t.getAttribute("class")||""," ");o.indexOf(" "+e+" ")<0&&t.setAttribute("class",(o+e).trim())}}function Qb(t,e){if(e&&(e=e.trim()))if(t.classList)e.indexOf(" ")>-1?e.split(Jb).forEach((function(e){return t.classList.remove(e)})):t.classList.remove(e),t.classList.length||t.removeAttribute("class");else{for(var o=" ".concat(t.getAttribute("class")||""," "),p=" "+e+" ";o.indexOf(p)>=0;)o=o.replace(p," ");(o=o.trim())?t.setAttribute("class",o):t.removeAttribute("class")}}function Zb(t){if(t){if("object"==typeof t){var e={};return!1!==t.css&&w(e,tn(t.name||"v")),w(e,t),e}return"string"==typeof t?tn(t):void 0}}var tn=v((function(t){return{enterClass:"".concat(t,"-enter"),enterToClass:"".concat(t,"-enter-to"),enterActiveClass:"".concat(t,"-enter-active"),leaveClass:"".concat(t,"-leave"),leaveToClass:"".concat(t,"-leave-to"),leaveActiveClass:"".concat(t,"-leave-active")}})),en=K&&!tt,on="transition",pn="animation",bn="transition",nn="transitionend",Mn="animation",zn="animationend";en&&(void 0===window.ontransitionend&&void 0!==window.onwebkittransitionend&&(bn="WebkitTransition",nn="webkitTransitionEnd"),void 0===window.onanimationend&&void 0!==window.onwebkitanimationend&&(Mn="WebkitAnimation",zn="webkitAnimationEnd"));var cn=K?window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout:function(t){return t()};function rn(t){cn((function(){cn(t)}))}function an(t,e){var o=t._transitionClasses||(t._transitionClasses=[]);o.indexOf(e)<0&&(o.push(e),Kb(t,e))}function On(t,e){t._transitionClasses&&W(t._transitionClasses,e),Qb(t,e)}function sn(t,e,o){var p=dn(t,e),b=p.type,n=p.timeout,M=p.propCount;if(!b)return o();var z=b===on?nn:zn,c=0,r=function(){t.removeEventListener(z,i),o()},i=function(e){e.target===t&&++c>=M&&r()};setTimeout((function(){c0&&(o=on,i=M,a=n.length):e===pn?r>0&&(o=pn,i=r,a=c.length):a=(o=(i=Math.max(M,r))>0?M>r?on:pn:null)?o===on?n.length:c.length:0,{type:o,timeout:i,propCount:a,hasTransform:o===on&&ln.test(p[bn+"Property"])}}function An(t,e){for(;t.length1}function mn(t,e){!0!==e.data.show&&fn(e)}var gn=function(t){var e,o,p={},r=t.modules,i=t.nodeOps;for(e=0;el?h(t,n(o[u+1])?null:o[u+1].elm,o,s,u,p):s>u&&m(e,a,l)}(a,d,u,o,r):M(u)?(M(t.text)&&i.setTextContent(a,""),h(a,null,u,0,u.length-1,o)):M(d)?m(d,0,d.length-1):M(t.text)&&i.setTextContent(a,""):t.text!==e.text&&i.setTextContent(a,e.text),M(l)&&M(s=l.hook)&&M(s=s.postpatch)&&s(t,e)}}}function y(t,e,o){if(z(o)&&M(t.parent))t.parent.data.pendingInsert=e;else for(var p=0;p-1,M.selected!==n&&(M.selected=n);else if(k(Ln(M),p))return void(t.selectedIndex!==z&&(t.selectedIndex=z));b||(t.selectedIndex=-1)}}function Bn(t,e){return e.every((function(e){return!k(e,t)}))}function Ln(t){return"_value"in t?t._value:t.value}function Xn(t){t.target.composing=!0}function _n(t){t.target.composing&&(t.target.composing=!1,Nn(t.target,"input"))}function Nn(t,e){var o=document.createEvent("HTMLEvents");o.initEvent(e,!0,!0),t.dispatchEvent(o)}function wn(t){return!t.componentInstance||t.data&&t.data.transition?t:wn(t.componentInstance._vnode)}var xn={bind:function(t,e,o){var p=e.value,b=(o=wn(o)).data&&o.data.transition,n=t.__vOriginalDisplay="none"===t.style.display?"":t.style.display;p&&b?(o.data.show=!0,fn(o,(function(){t.style.display=n}))):t.style.display=p?n:"none"},update:function(t,e,o){var p=e.value;!p!=!e.oldValue&&((o=wn(o)).data&&o.data.transition?(o.data.show=!0,p?fn(o,(function(){t.style.display=t.__vOriginalDisplay})):qn(o,(function(){t.style.display="none"}))):t.style.display=p?t.__vOriginalDisplay:"none")},unbind:function(t,e,o,p,b){b||(t.style.display=t.__vOriginalDisplay)}},Tn={model:vn,show:xn},Cn={name:String,appear:Boolean,css:Boolean,mode:String,type:String,enterClass:String,leaveClass:String,enterToClass:String,leaveToClass:String,enterActiveClass:String,leaveActiveClass:String,appearClass:String,appearActiveClass:String,appearToClass:String,duration:[Number,String,Object]};function Sn(t){var e=t&&t.componentOptions;return e&&e.Ctor.options.abstract?Sn(Le(e.children)):t}function kn(t){var e={},o=t.$options;for(var p in o.propsData)e[p]=t[p];var b=o._parentListeners;for(var p in b)e[y(p)]=b[p];return e}function En(t,e){if(/\d-keep-alive$/.test(e.tag))return t("keep-alive",{props:e.componentOptions.propsData})}var Dn=function(t){return t.tag||ue(t)},Pn=function(t){return"show"===t.name},jn={name:"transition",props:Cn,abstract:!0,render:function(t){var e=this,o=this.$slots.default;if(o&&(o=o.filter(Dn)).length){0;var p=this.mode;0;var b=o[0];if(function(t){for(;t=t.parent;)if(t.data.transition)return!0}(this.$vnode))return b;var n=Sn(b);if(!n)return b;if(this._leaving)return En(t,b);var M="__transition-".concat(this._uid,"-");n.key=null==n.key?n.isComment?M+"comment":M+n.tag:c(n.key)?0===String(n.key).indexOf(M)?n.key:M+n.key:n.key;var z=(n.data||(n.data={})).transition=kn(this),r=this._vnode,i=Sn(r);if(n.data.directives&&n.data.directives.some(Pn)&&(n.data.show=!0),i&&i.data&&!function(t,e){return e.key===t.key&&e.tag===t.tag}(n,i)&&!ue(i)&&(!i.componentInstance||!i.componentInstance._vnode.isComment)){var a=i.data.transition=w({},z);if("out-in"===p)return this._leaving=!0,$t(a,"afterLeave",(function(){e._leaving=!1,e.$forceUpdate()})),En(t,b);if("in-out"===p){if(ue(n))return r;var O,s=function(){O()};$t(z,"afterEnter",s),$t(z,"enterCancelled",s),$t(a,"delayLeave",(function(t){O=t}))}}return b}}},In=w({tag:String,moveClass:String},Cn);delete In.mode;var Fn={props:In,beforeMount:function(){var t=this,e=this._update;this._update=function(o,p){var b=Te(t);t.__patch__(t._vnode,t.kept,!1,!0),t._vnode=t.kept,b(),e.call(t,o,p)}},render:function(t){for(var e=this.tag||this.$vnode.data.tag||"span",o=Object.create(null),p=this.prevChildren=this.children,b=this.$slots.default||[],n=this.children=[],M=kn(this),z=0;z-1?Xp[t]=e.constructor===window.HTMLUnknownElement||e.constructor===window.HTMLElement:Xp[t]=/HTMLUnknownElement/.test(e.toString())},w(ep.options.directives,Tn),w(ep.options.components,$n),ep.prototype.__patch__=K?gn:T,ep.prototype.$mount=function(t,e){return function(t,e,o){var p;t.$el=e,t.$options.render||(t.$options.render=At),Ee(t,"beforeMount"),p=function(){t._update(t._render(),o)},new Wo(t,p,T,{before:function(){t._isMounted&&!t._isDestroyed&&Ee(t,"beforeUpdate")}},!0),o=!1;var b=t._preWatchers;if(b)for(var n=0;n\/=]+)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/,nM=/^\s*((?:v-[\w-]+:|@|:|#)\[[^=]+?\][^\s"'<>\/=]*)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/,MM="[a-zA-Z_][\\-\\.0-9_a-zA-Z".concat(U.source,"]*"),zM="((?:".concat(MM,"\\:)?").concat(MM,")"),cM=new RegExp("^<".concat(zM)),rM=/^\s*(\/?)>/,iM=new RegExp("^<\\/".concat(zM,"[^>]*>")),aM=/^]+>/i,OM=/^",""":'"',"&":"&"," ":"\n"," ":"\t","'":"'"},uM=/&(?:lt|gt|quot|amp|#39);/g,fM=/&(?:lt|gt|quot|amp|#39|#10|#9);/g,qM=f("pre,textarea",!0),hM=function(t,e){return t&&qM(t)&&"\n"===e[0]};function WM(t,e){var o=e?fM:uM;return t.replace(o,(function(t){return AM[t]}))}function mM(t,e){for(var o,p,b=[],n=e.expectHTML,M=e.isUnaryTag||C,z=e.canBeLeftOpenTag||C,c=0,r=function(){if(o=t,p&&lM(p)){var r=0,O=p.toLowerCase(),s=dM[O]||(dM[O]=new RegExp("([\\s\\S]*?)(]*>)","i"));m=t.replace(s,(function(t,o,p){return r=p.length,lM(O)||"noscript"===O||(o=o.replace(//g,"$1").replace(//g,"$1")),hM(O,o)&&(o=o.slice(1)),e.chars&&e.chars(o),""}));c+=t.length-m.length,t=m,a(O,c-r,c)}else{var l=t.indexOf("<");if(0===l){if(OM.test(t)){var d=t.indexOf("--\x3e");if(d>=0)return e.shouldKeepComment&&e.comment&&e.comment(t.substring(4,d),c,c+d+3),i(d+3),"continue"}if(sM.test(t)){var A=t.indexOf("]>");if(A>=0)return i(A+2),"continue"}var u=t.match(aM);if(u)return i(u[0].length),"continue";var f=t.match(iM);if(f){var q=c;return i(f[0].length),a(f[1],q,c),"continue"}var h=function(){var e=t.match(cM);if(e){var o={tagName:e[1],attrs:[],start:c};i(e[0].length);for(var p=void 0,b=void 0;!(p=t.match(rM))&&(b=t.match(nM)||t.match(bM));)b.start=c,i(b[0].length),b.end=c,o.attrs.push(b);if(p)return o.unarySlash=p[1],i(p[0].length),o.end=c,o}}();if(h)return function(t){var o=t.tagName,c=t.unarySlash;n&&("p"===p&&pM(o)&&a(p),z(o)&&p===o&&a(o));for(var r=M(o)||!!c,i=t.attrs.length,O=new Array(i),s=0;s=0){for(m=t.slice(l);!(iM.test(m)||cM.test(m)||OM.test(m)||sM.test(m)||(g=m.indexOf("<",1))<0);)l+=g,m=t.slice(l);W=t.substring(0,l)}l<0&&(W=t),W&&i(W.length),e.chars&&W&&e.chars(W,c-W.length,c)}if(t===o)return e.chars&&e.chars(t),"break"};t;){if("break"===r())break}function i(e){c+=e,t=t.substring(e)}function a(t,o,n){var M,z;if(null==o&&(o=c),null==n&&(n=c),t)for(z=t.toLowerCase(),M=b.length-1;M>=0&&b[M].lowerCasedTag!==z;M--);else M=0;if(M>=0){for(var r=b.length-1;r>=M;r--)e.end&&e.end(b[r].tag,o,n);b.length=M,p=M&&b[M-1].tag}else"br"===z?e.start&&e.start(t,[],!0,o,n):"p"===z&&(e.start&&e.start(t,[],!1,o,n),e.end&&e.end(t,o,n))}a()}var gM,vM,RM,yM,BM,LM,XM,_M,NM=/^@|^v-on:/,wM=/^v-|^@|^:|^#/,xM=/([\s\S]*?)\s+(?:in|of)\s+([\s\S]*)/,TM=/,([^,\}\]]*)(?:,([^,\}\]]*))?$/,CM=/^\(|\)$/g,SM=/^\[.*\]$/,kM=/:(.*)$/,EM=/^:|^\.|^v-bind:/,DM=/\.[^.\]]+(?=[^\]]*$)/g,PM=/^v-slot(:|$)|^#/,jM=/[\r\n]/,IM=/[ \f\t\r\n]+/g,FM=v(tM),HM="_empty_";function UM(t,e,o){return{type:1,tag:t,attrsList:e,attrsMap:QM(e),rawAttrsMap:{},parent:o,children:[]}}function VM(t,e){gM=e.warn||cb,LM=e.isPreTag||C,XM=e.mustUseProp||C,_M=e.getTagNamespace||C;var o=e.isReservedTag||C;(function(t){return!(!(t.component||t.attrsMap[":is"]||t.attrsMap["v-bind:is"])&&(t.attrsMap.is?o(t.attrsMap.is):o(t.tag)))}),RM=rb(e.modules,"transformNode"),yM=rb(e.modules,"preTransformNode"),BM=rb(e.modules,"postTransformNode"),vM=e.delimiters;var p,b,n=[],M=!1!==e.preserveWhitespace,z=e.whitespace,c=!1,r=!1;function i(t){if(a(t),c||t.processed||(t=$M(t,e)),n.length||t===p||p.if&&(t.elseif||t.else)&&GM(p,{exp:t.elseif,block:t}),b&&!t.forbidden)if(t.elseif||t.else)M=t,z=function(t){for(var e=t.length;e--;){if(1===t[e].type)return t[e];t.pop()}}(b.children),z&&z.if&&GM(z,{exp:M.elseif,block:M});else{if(t.slotScope){var o=t.slotTarget||'"default"';(b.scopedSlots||(b.scopedSlots={}))[o]=t}b.children.push(t),t.parent=b}var M,z;t.children=t.children.filter((function(t){return!t.slotScope})),a(t),t.pre&&(c=!1),LM(t.tag)&&(r=!1);for(var i=0;ic&&(z.push(n=t.slice(c,b)),M.push(JSON.stringify(n)));var r=Mb(p[1].trim());M.push("_s(".concat(r,")")),z.push({"@binding":r}),c=b+p[0].length}return c-1")+("true"===n?":(".concat(e,")"):":_q(".concat(e,",").concat(n,")"))),db(t,"change","var $$a=".concat(e,",")+"$$el=$event.target,"+"$$c=$$el.checked?(".concat(n,"):(").concat(M,");")+"if(Array.isArray($$a)){"+"var $$v=".concat(p?"_n("+b+")":b,",")+"$$i=_i($$a,$$v);"+"if($$el.checked){$$i<0&&(".concat(Wb(e,"$$a.concat([$$v])"),")}")+"else{$$i>-1&&(".concat(Wb(e,"$$a.slice(0,$$i).concat($$a.slice($$i+1))"),")}")+"}else{".concat(Wb(e,"$$c"),"}"),null,!0)}(t,p,b);else if("input"===n&&"radio"===M)!function(t,e,o){var p=o&&o.number,b=Ab(t,"value")||"null";b=p?"_n(".concat(b,")"):b,ib(t,"checked","_q(".concat(e,",").concat(b,")")),db(t,"change",Wb(e,b),null,!0)}(t,p,b);else if("input"===n||"textarea"===n)!function(t,e,o){var p=t.attrsMap.type;0;var b=o||{},n=b.lazy,M=b.number,z=b.trim,c=!n&&"range"!==p,r=n?"change":"range"===p?Lb:"input",i="$event.target.value";z&&(i="$event.target.value.trim()");M&&(i="_n(".concat(i,")"));var a=Wb(e,i);c&&(a="if($event.target.composing)return;".concat(a));ib(t,"value","(".concat(e,")")),db(t,r,a,null,!0),(z||M)&&db(t,"blur","$forceUpdate()")}(t,p,b);else{if(!H.isReservedTag(n))return hb(t,p,b),!1}return!0},text:function(t,e){e.value&&ib(t,"textContent","_s(".concat(e.value,")"),e)},html:function(t,e){e.value&&ib(t,"innerHTML","_s(".concat(e.value,")"),e)}},Mz={expectHTML:!0,modules:oz,directives:nz,isPreTag:function(t){return"pre"===t},isUnaryTag:eM,mustUseProp:Op,canBeLeftOpenTag:oM,isReservedTag:Bp,getTagNamespace:Lp,staticKeys:function(t){return t.reduce((function(t,e){return t.concat(e.staticKeys||[])}),[]).join(",")}(oz)},zz=v((function(t){return f("type,tag,attrsList,attrsMap,plain,parent,children,attrs,start,end,rawAttrsMap"+(t?","+t:""))}));function cz(t,e){t&&(pz=zz(e.staticKeys||""),bz=e.isReservedTag||C,rz(t),iz(t,!1))}function rz(t){if(t.static=function(t){if(2===t.type)return!1;if(3===t.type)return!0;return!(!t.pre&&(t.hasBindings||t.if||t.for||q(t.tag)||!bz(t.tag)||function(t){for(;t.parent;){if("template"!==(t=t.parent).tag)return!1;if(t.for)return!0}return!1}(t)||!Object.keys(t).every(pz)))}(t),1===t.type){if(!bz(t.tag)&&"slot"!==t.tag&&null==t.attrsMap["inline-template"])return;for(var e=0,o=t.children.length;e|^function(?:\s+[\w$]+)?\s*\(/,Oz=/\([^)]*?\);*$/,sz=/^[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*|\['[^']*?']|\["[^"]*?"]|\[\d+]|\[[A-Za-z_$][\w$]*])*$/,lz={esc:27,tab:9,enter:13,space:32,up:38,left:37,right:39,down:40,delete:[8,46]},dz={esc:["Esc","Escape"],tab:"Tab",enter:"Enter",space:[" ","Spacebar"],up:["Up","ArrowUp"],left:["Left","ArrowLeft"],right:["Right","ArrowRight"],down:["Down","ArrowDown"],delete:["Backspace","Delete","Del"]},Az=function(t){return"if(".concat(t,")return null;")},uz={stop:"$event.stopPropagation();",prevent:"$event.preventDefault();",self:Az("$event.target !== $event.currentTarget"),ctrl:Az("!$event.ctrlKey"),shift:Az("!$event.shiftKey"),alt:Az("!$event.altKey"),meta:Az("!$event.metaKey"),left:Az("'button' in $event && $event.button !== 0"),middle:Az("'button' in $event && $event.button !== 1"),right:Az("'button' in $event && $event.button !== 2")};function fz(t,e){var o=e?"nativeOn:":"on:",p="",b="";for(var n in t){var M=qz(t[n]);t[n]&&t[n].dynamic?b+="".concat(n,",").concat(M,","):p+='"'.concat(n,'":').concat(M,",")}return p="{".concat(p.slice(0,-1),"}"),b?o+"_d(".concat(p,",[").concat(b.slice(0,-1),"])"):o+p}function qz(t){if(!t)return"function(){}";if(Array.isArray(t))return"[".concat(t.map((function(t){return qz(t)})).join(","),"]");var e=sz.test(t.value),o=az.test(t.value),p=sz.test(t.value.replace(Oz,""));if(t.modifiers){var b="",n="",M=[],z=function(e){if(uz[e])n+=uz[e],lz[e]&&M.push(e);else if("exact"===e){var o=t.modifiers;n+=Az(["ctrl","shift","alt","meta"].filter((function(t){return!o[t]})).map((function(t){return"$event.".concat(t,"Key")})).join("||"))}else M.push(e)};for(var c in t.modifiers)z(c);M.length&&(b+=function(t){return"if(!$event.type.indexOf('key')&&"+"".concat(t.map(hz).join("&&"),")return null;")}(M)),n&&(b+=n);var r=e?"return ".concat(t.value,".apply(null, arguments)"):o?"return (".concat(t.value,").apply(null, arguments)"):p?"return ".concat(t.value):t.value;return"function($event){".concat(b).concat(r,"}")}return e||o?t.value:"function($event){".concat(p?"return ".concat(t.value):t.value,"}")}function hz(t){var e=parseInt(t,10);if(e)return"$event.keyCode!==".concat(e);var o=lz[t],p=dz[t];return"_k($event.keyCode,"+"".concat(JSON.stringify(t),",")+"".concat(JSON.stringify(o),",")+"$event.key,"+"".concat(JSON.stringify(p))+")"}var Wz={on:function(t,e){t.wrapListeners=function(t){return"_g(".concat(t,",").concat(e.value,")")}},bind:function(t,e){t.wrapData=function(o){return"_b(".concat(o,",'").concat(t.tag,"',").concat(e.value,",").concat(e.modifiers&&e.modifiers.prop?"true":"false").concat(e.modifiers&&e.modifiers.sync?",true":"",")")}},cloak:T},mz=function(t){this.options=t,this.warn=t.warn||cb,this.transforms=rb(t.modules,"transformCode"),this.dataGenFns=rb(t.modules,"genData"),this.directives=w(w({},Wz),t.directives);var e=t.isReservedTag||C;this.maybeComponent=function(t){return!!t.component||!e(t.tag)},this.onceId=0,this.staticRenderFns=[],this.pre=!1};function gz(t,e){var o=new mz(e),p=t?"script"===t.tag?"null":vz(t,o):'_c("div")';return{render:"with(this){return ".concat(p,"}"),staticRenderFns:o.staticRenderFns}}function vz(t,e){if(t.parent&&(t.pre=t.pre||t.parent.pre),t.staticRoot&&!t.staticProcessed)return Rz(t,e);if(t.once&&!t.onceProcessed)return yz(t,e);if(t.for&&!t.forProcessed)return Xz(t,e);if(t.if&&!t.ifProcessed)return Bz(t,e);if("template"!==t.tag||t.slotTarget||e.pre){if("slot"===t.tag)return function(t,e){var o=t.slotName||'"default"',p=xz(t,e),b="_t(".concat(o).concat(p?",function(){return ".concat(p,"}"):""),n=t.attrs||t.dynamicAttrs?Sz((t.attrs||[]).concat(t.dynamicAttrs||[]).map((function(t){return{name:y(t.name),value:t.value,dynamic:t.dynamic}}))):null,M=t.attrsMap["v-bind"];!n&&!M||p||(b+=",null");n&&(b+=",".concat(n));M&&(b+="".concat(n?"":",null",",").concat(M));return b+")"}(t,e);var o=void 0;if(t.component)o=function(t,e,o){var p=e.inlineTemplate?null:xz(e,o,!0);return"_c(".concat(t,",").concat(_z(e,o)).concat(p?",".concat(p):"",")")}(t.component,t,e);else{var p=void 0,b=e.maybeComponent(t);(!t.plain||t.pre&&b)&&(p=_z(t,e));var n=void 0,M=e.options.bindings;b&&M&&!1!==M.__isScriptSetup&&(n=function(t,e){var o=y(e),p=B(o),b=function(b){return t[e]===b?e:t[o]===b?o:t[p]===b?p:void 0},n=b("setup-const")||b("setup-reactive-const");if(n)return n;var M=b("setup-let")||b("setup-ref")||b("setup-maybe-ref");if(M)return M}(M,t.tag)),n||(n="'".concat(t.tag,"'"));var z=t.inlineTemplate?null:xz(t,e,!0);o="_c(".concat(n).concat(p?",".concat(p):"").concat(z?",".concat(z):"",")")}for(var c=0;c>>0}(M)):"",")")}(t,t.scopedSlots,e),",")),t.model&&(o+="model:{value:".concat(t.model.value,",callback:").concat(t.model.callback,",expression:").concat(t.model.expression,"},")),t.inlineTemplate){var n=function(t,e){var o=t.children[0];0;if(o&&1===o.type){var p=gz(o,e.options);return"inlineTemplate:{render:function(){".concat(p.render,"},staticRenderFns:[").concat(p.staticRenderFns.map((function(t){return"function(){".concat(t,"}")})).join(","),"]}")}}(t,e);n&&(o+="".concat(n,","))}return o=o.replace(/,$/,"")+"}",t.dynamicAttrs&&(o="_b(".concat(o,',"').concat(t.tag,'",').concat(Sz(t.dynamicAttrs),")")),t.wrapData&&(o=t.wrapData(o)),t.wrapListeners&&(o=t.wrapListeners(o)),o}function Nz(t){return 1===t.type&&("slot"===t.tag||t.children.some(Nz))}function wz(t,e){var o=t.attrsMap["slot-scope"];if(t.if&&!t.ifProcessed&&!o)return Bz(t,e,wz,"null");if(t.for&&!t.forProcessed)return Xz(t,e,wz);var p=t.slotScope===HM?"":String(t.slotScope),b="function(".concat(p,"){")+"return ".concat("template"===t.tag?t.if&&o?"(".concat(t.if,")?").concat(xz(t,e)||"undefined",":undefined"):xz(t,e)||"undefined":vz(t,e),"}"),n=p?"":",proxy:true";return"{key:".concat(t.slotTarget||'"default"',",fn:").concat(b).concat(n,"}")}function xz(t,e,o,p,b){var n=t.children;if(n.length){var M=n[0];if(1===n.length&&M.for&&"template"!==M.tag&&"slot"!==M.tag){var z=o?e.maybeComponent(M)?",1":",0":"";return"".concat((p||vz)(M,e)).concat(z)}var c=o?function(t,e){for(var o=0,p=0;p':'
    ',jz.innerHTML.indexOf(" ")>0}var Uz=!!K&&Hz(!1),Vz=!!K&&Hz(!0),$z=v((function(t){var e=Np(t);return e&&e.innerHTML})),Yz=ep.prototype.$mount;ep.prototype.$mount=function(t,e){if((t=t&&Np(t))===document.body||t===document.documentElement)return this;var o=this.$options;if(!o.render){var p=o.template;if(p)if("string"==typeof p)"#"===p.charAt(0)&&(p=$z(p));else{if(!p.nodeType)return this;p=p.innerHTML}else t&&(p=function(t){if(t.outerHTML)return t.outerHTML;var e=document.createElement("div");return e.appendChild(t.cloneNode(!0)),e.innerHTML}(t));if(p){0;var b=Fz(p,{outputSourceRange:!1,shouldDecodeNewlines:Uz,shouldDecodeNewlinesForHref:Vz,delimiters:o.delimiters,comments:o.comments},this),n=b.render,M=b.staticRenderFns;o.render=n,o.staticRenderFns=M}}return Yz.call(this,t,e)},ep.compile=Fz;var Gz=o(8),Jz=o.n(Gz);function Kz(t){return function(t){if(Array.isArray(t))return Qz(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)return;if("string"==typeof t)return Qz(t,e);var o=Object.prototype.toString.call(t).slice(8,-1);"Object"===o&&t.constructor&&(o=t.constructor.name);if("Map"===o||"Set"===o)return Array.from(t);if("Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o))return Qz(t,e)}(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 Qz(t,e){(null==e||e>t.length)&&(e=t.length);for(var o=0,p=new Array(e);o{const e=bc.call(t);return zc[e]||(zc[e]=e.slice(8,-1).toLowerCase())});var zc;const cc=t=>(t=t.toLowerCase(),e=>Mc(e)===t),rc=t=>e=>typeof e===t,{isArray:ic}=Array,ac=rc("undefined");const Oc=cc("ArrayBuffer");const sc=rc("string"),lc=rc("function"),dc=rc("number"),Ac=t=>null!==t&&"object"==typeof t,uc=t=>{if("object"!==Mc(t))return!1;const e=nc(t);return!(null!==e&&e!==Object.prototype&&null!==Object.getPrototypeOf(e)||Symbol.toStringTag in t||Symbol.iterator in t)},fc=cc("Date"),qc=cc("File"),hc=cc("Blob"),Wc=cc("FileList"),mc=cc("URLSearchParams");function gc(t,e,{allOwnKeys:o=!1}={}){if(null==t)return;let p,b;if("object"!=typeof t&&(t=[t]),ic(t))for(p=0,b=t.length;p0;)if(p=o[b],e===p.toLowerCase())return p;return null}const Rc="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:global,yc=t=>!ac(t)&&t!==Rc;const Bc=(Lc="undefined"!=typeof Uint8Array&&nc(Uint8Array),t=>Lc&&t instanceof Lc);var Lc;const Xc=cc("HTMLFormElement"),_c=(({hasOwnProperty:t})=>(e,o)=>t.call(e,o))(Object.prototype),Nc=cc("RegExp"),wc=(t,e)=>{const o=Object.getOwnPropertyDescriptors(t),p={};gc(o,((o,b)=>{let n;!1!==(n=e(o,b,t))&&(p[b]=n||o)})),Object.defineProperties(t,p)},xc="abcdefghijklmnopqrstuvwxyz",Tc="0123456789",Cc={DIGIT:Tc,ALPHA:xc,ALPHA_DIGIT:xc+xc.toUpperCase()+Tc};const Sc=cc("AsyncFunction"),kc={isArray:ic,isArrayBuffer:Oc,isBuffer:function(t){return null!==t&&!ac(t)&&null!==t.constructor&&!ac(t.constructor)&&lc(t.constructor.isBuffer)&&t.constructor.isBuffer(t)},isFormData:t=>{let e;return t&&("function"==typeof FormData&&t instanceof FormData||lc(t.append)&&("formdata"===(e=Mc(t))||"object"===e&&lc(t.toString)&&"[object FormData]"===t.toString()))},isArrayBufferView:function(t){let e;return e="undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(t):t&&t.buffer&&Oc(t.buffer),e},isString:sc,isNumber:dc,isBoolean:t=>!0===t||!1===t,isObject:Ac,isPlainObject:uc,isUndefined:ac,isDate:fc,isFile:qc,isBlob:hc,isRegExp:Nc,isFunction:lc,isStream:t=>Ac(t)&&lc(t.pipe),isURLSearchParams:mc,isTypedArray:Bc,isFileList:Wc,forEach:gc,merge:function t(){const{caseless:e}=yc(this)&&this||{},o={},p=(p,b)=>{const n=e&&vc(o,b)||b;uc(o[n])&&uc(p)?o[n]=t(o[n],p):uc(p)?o[n]=t({},p):ic(p)?o[n]=p.slice():o[n]=p};for(let t=0,e=arguments.length;t(gc(e,((e,p)=>{o&&lc(e)?t[p]=pc(e,o):t[p]=e}),{allOwnKeys:p}),t),trim:t=>t.trim?t.trim():t.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,""),stripBOM:t=>(65279===t.charCodeAt(0)&&(t=t.slice(1)),t),inherits:(t,e,o,p)=>{t.prototype=Object.create(e.prototype,p),t.prototype.constructor=t,Object.defineProperty(t,"super",{value:e.prototype}),o&&Object.assign(t.prototype,o)},toFlatObject:(t,e,o,p)=>{let b,n,M;const z={};if(e=e||{},null==t)return e;do{for(b=Object.getOwnPropertyNames(t),n=b.length;n-- >0;)M=b[n],p&&!p(M,t,e)||z[M]||(e[M]=t[M],z[M]=!0);t=!1!==o&&nc(t)}while(t&&(!o||o(t,e))&&t!==Object.prototype);return e},kindOf:Mc,kindOfTest:cc,endsWith:(t,e,o)=>{t=String(t),(void 0===o||o>t.length)&&(o=t.length),o-=e.length;const p=t.indexOf(e,o);return-1!==p&&p===o},toArray:t=>{if(!t)return null;if(ic(t))return t;let e=t.length;if(!dc(e))return null;const o=new Array(e);for(;e-- >0;)o[e]=t[e];return o},forEachEntry:(t,e)=>{const o=(t&&t[Symbol.iterator]).call(t);let p;for(;(p=o.next())&&!p.done;){const o=p.value;e.call(t,o[0],o[1])}},matchAll:(t,e)=>{let o;const p=[];for(;null!==(o=t.exec(e));)p.push(o);return p},isHTMLForm:Xc,hasOwnProperty:_c,hasOwnProp:_c,reduceDescriptors:wc,freezeMethods:t=>{wc(t,((e,o)=>{if(lc(t)&&-1!==["arguments","caller","callee"].indexOf(o))return!1;const p=t[o];lc(p)&&(e.enumerable=!1,"writable"in e?e.writable=!1:e.set||(e.set=()=>{throw Error("Can not rewrite read-only method '"+o+"'")}))}))},toObjectSet:(t,e)=>{const o={},p=t=>{t.forEach((t=>{o[t]=!0}))};return ic(t)?p(t):p(String(t).split(e)),o},toCamelCase:t=>t.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,(function(t,e,o){return e.toUpperCase()+o})),noop:()=>{},toFiniteNumber:(t,e)=>(t=+t,Number.isFinite(t)?t:e),findKey:vc,global:Rc,isContextDefined:yc,ALPHABET:Cc,generateString:(t=16,e=Cc.ALPHA_DIGIT)=>{let o="";const{length:p}=e;for(;t--;)o+=e[Math.random()*p|0];return o},isSpecCompliantForm:function(t){return!!(t&&lc(t.append)&&"FormData"===t[Symbol.toStringTag]&&t[Symbol.iterator])},toJSONObject:t=>{const e=new Array(10),o=(t,p)=>{if(Ac(t)){if(e.indexOf(t)>=0)return;if(!("toJSON"in t)){e[p]=t;const b=ic(t)?[]:{};return gc(t,((t,e)=>{const n=o(t,p+1);!ac(n)&&(b[e]=n)})),e[p]=void 0,b}}return t};return o(t,0)},isAsyncFn:Sc,isThenable:t=>t&&(Ac(t)||lc(t))&&lc(t.then)&&lc(t.catch)};function Ec(t,e,o,p,b){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack,this.message=t,this.name="AxiosError",e&&(this.code=e),o&&(this.config=o),p&&(this.request=p),b&&(this.response=b)}kc.inherits(Ec,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:kc.toJSONObject(this.config),code:this.code,status:this.response&&this.response.status?this.response.status:null}}});const Dc=Ec.prototype,Pc={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach((t=>{Pc[t]={value:t}})),Object.defineProperties(Ec,Pc),Object.defineProperty(Dc,"isAxiosError",{value:!0}),Ec.from=(t,e,o,p,b,n)=>{const M=Object.create(Dc);return kc.toFlatObject(t,M,(function(t){return t!==Error.prototype}),(t=>"isAxiosError"!==t)),Ec.call(M,t.message,e,o,p,b),M.cause=t,M.name=t.name,n&&Object.assign(M,n),M};const jc=Ec;var Ic=o(764).lW;function Fc(t){return kc.isPlainObject(t)||kc.isArray(t)}function Hc(t){return kc.endsWith(t,"[]")?t.slice(0,-2):t}function Uc(t,e,o){return t?t.concat(e).map((function(t,e){return t=Hc(t),!o&&e?"["+t+"]":t})).join(o?".":""):e}const Vc=kc.toFlatObject(kc,{},null,(function(t){return/^is[A-Z]/.test(t)}));const $c=function(t,e,o){if(!kc.isObject(t))throw new TypeError("target must be an object");e=e||new FormData;const p=(o=kc.toFlatObject(o,{metaTokens:!0,dots:!1,indexes:!1},!1,(function(t,e){return!kc.isUndefined(e[t])}))).metaTokens,b=o.visitor||r,n=o.dots,M=o.indexes,z=(o.Blob||"undefined"!=typeof Blob&&Blob)&&kc.isSpecCompliantForm(e);if(!kc.isFunction(b))throw new TypeError("visitor must be a function");function c(t){if(null===t)return"";if(kc.isDate(t))return t.toISOString();if(!z&&kc.isBlob(t))throw new jc("Blob is not supported. Use a Buffer instead.");return kc.isArrayBuffer(t)||kc.isTypedArray(t)?z&&"function"==typeof Blob?new Blob([t]):Ic.from(t):t}function r(t,o,b){let z=t;if(t&&!b&&"object"==typeof t)if(kc.endsWith(o,"{}"))o=p?o:o.slice(0,-2),t=JSON.stringify(t);else if(kc.isArray(t)&&function(t){return kc.isArray(t)&&!t.some(Fc)}(t)||(kc.isFileList(t)||kc.endsWith(o,"[]"))&&(z=kc.toArray(t)))return o=Hc(o),z.forEach((function(t,p){!kc.isUndefined(t)&&null!==t&&e.append(!0===M?Uc([o],p,n):null===M?o:o+"[]",c(t))})),!1;return!!Fc(t)||(e.append(Uc(b,o,n),c(t)),!1)}const i=[],a=Object.assign(Vc,{defaultVisitor:r,convertValue:c,isVisitable:Fc});if(!kc.isObject(t))throw new TypeError("data must be an object");return function t(o,p){if(!kc.isUndefined(o)){if(-1!==i.indexOf(o))throw Error("Circular reference detected in "+p.join("."));i.push(o),kc.forEach(o,(function(o,n){!0===(!(kc.isUndefined(o)||null===o)&&b.call(e,o,kc.isString(n)?n.trim():n,p,a))&&t(o,p?p.concat(n):[n])})),i.pop()}}(t),e};function Yc(t){const e={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(t).replace(/[!'()~]|%20|%00/g,(function(t){return e[t]}))}function Gc(t,e){this._pairs=[],t&&$c(t,this,e)}const Jc=Gc.prototype;Jc.append=function(t,e){this._pairs.push([t,e])},Jc.toString=function(t){const e=t?function(e){return t.call(this,e,Yc)}:Yc;return this._pairs.map((function(t){return e(t[0])+"="+e(t[1])}),"").join("&")};const Kc=Gc;function Qc(t){return encodeURIComponent(t).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function Zc(t,e,o){if(!e)return t;const p=o&&o.encode||Qc,b=o&&o.serialize;let n;if(n=b?b(e,o):kc.isURLSearchParams(e)?e.toString():new Kc(e,o).toString(p),n){const e=t.indexOf("#");-1!==e&&(t=t.slice(0,e)),t+=(-1===t.indexOf("?")?"?":"&")+n}return t}const tr=class{constructor(){this.handlers=[]}use(t,e,o){return this.handlers.push({fulfilled:t,rejected:e,synchronous:!!o&&o.synchronous,runWhen:o?o.runWhen:null}),this.handlers.length-1}eject(t){this.handlers[t]&&(this.handlers[t]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(t){kc.forEach(this.handlers,(function(e){null!==e&&t(e)}))}},er={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},or={isBrowser:!0,classes:{URLSearchParams:"undefined"!=typeof URLSearchParams?URLSearchParams:Kc,FormData:"undefined"!=typeof FormData?FormData:null,Blob:"undefined"!=typeof Blob?Blob:null},isStandardBrowserEnv:(()=>{let t;return("undefined"==typeof navigator||"ReactNative"!==(t=navigator.product)&&"NativeScript"!==t&&"NS"!==t)&&("undefined"!=typeof window&&"undefined"!=typeof document)})(),isStandardBrowserWebWorkerEnv:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&"function"==typeof self.importScripts,protocols:["http","https","file","blob","url","data"]};const pr=function(t){function e(t,o,p,b){let n=t[b++];const M=Number.isFinite(+n),z=b>=t.length;if(n=!n&&kc.isArray(p)?p.length:n,z)return kc.hasOwnProp(p,n)?p[n]=[p[n],o]:p[n]=o,!M;p[n]&&kc.isObject(p[n])||(p[n]=[]);return e(t,o,p[n],b)&&kc.isArray(p[n])&&(p[n]=function(t){const e={},o=Object.keys(t);let p;const b=o.length;let n;for(p=0;p{e(function(t){return kc.matchAll(/\w+|\[(\w*)]/g,t).map((t=>"[]"===t[0]?"":t[1]||t[0]))}(t),p,o,0)})),o}return null};const br={transitional:er,adapter:["xhr","http"],transformRequest:[function(t,e){const o=e.getContentType()||"",p=o.indexOf("application/json")>-1,b=kc.isObject(t);b&&kc.isHTMLForm(t)&&(t=new FormData(t));if(kc.isFormData(t))return p&&p?JSON.stringify(pr(t)):t;if(kc.isArrayBuffer(t)||kc.isBuffer(t)||kc.isStream(t)||kc.isFile(t)||kc.isBlob(t))return t;if(kc.isArrayBufferView(t))return t.buffer;if(kc.isURLSearchParams(t))return e.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),t.toString();let n;if(b){if(o.indexOf("application/x-www-form-urlencoded")>-1)return function(t,e){return $c(t,new or.classes.URLSearchParams,Object.assign({visitor:function(t,e,o,p){return or.isNode&&kc.isBuffer(t)?(this.append(e,t.toString("base64")),!1):p.defaultVisitor.apply(this,arguments)}},e))}(t,this.formSerializer).toString();if((n=kc.isFileList(t))||o.indexOf("multipart/form-data")>-1){const e=this.env&&this.env.FormData;return $c(n?{"files[]":t}:t,e&&new e,this.formSerializer)}}return b||p?(e.setContentType("application/json",!1),function(t,e,o){if(kc.isString(t))try{return(e||JSON.parse)(t),kc.trim(t)}catch(t){if("SyntaxError"!==t.name)throw t}return(o||JSON.stringify)(t)}(t)):t}],transformResponse:[function(t){const e=this.transitional||br.transitional,o=e&&e.forcedJSONParsing,p="json"===this.responseType;if(t&&kc.isString(t)&&(o&&!this.responseType||p)){const o=!(e&&e.silentJSONParsing)&&p;try{return JSON.parse(t)}catch(t){if(o){if("SyntaxError"===t.name)throw jc.from(t,jc.ERR_BAD_RESPONSE,this,null,this.response);throw t}}}return t}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:or.classes.FormData,Blob:or.classes.Blob},validateStatus:function(t){return t>=200&&t<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};kc.forEach(["delete","get","head","post","put","patch"],(t=>{br.headers[t]={}}));const nr=br,Mr=kc.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),zr=Symbol("internals");function cr(t){return t&&String(t).trim().toLowerCase()}function rr(t){return!1===t||null==t?t:kc.isArray(t)?t.map(rr):String(t)}function ir(t,e,o,p,b){return kc.isFunction(p)?p.call(this,e,o):(b&&(e=o),kc.isString(e)?kc.isString(p)?-1!==e.indexOf(p):kc.isRegExp(p)?p.test(e):void 0:void 0)}class ar{constructor(t){t&&this.set(t)}set(t,e,o){const p=this;function b(t,e,o){const b=cr(e);if(!b)throw new Error("header name must be a non-empty string");const n=kc.findKey(p,b);(!n||void 0===p[n]||!0===o||void 0===o&&!1!==p[n])&&(p[n||e]=rr(t))}const n=(t,e)=>kc.forEach(t,((t,o)=>b(t,o,e)));return kc.isPlainObject(t)||t instanceof this.constructor?n(t,e):kc.isString(t)&&(t=t.trim())&&!(t=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(t.trim()))(t)?n((t=>{const e={};let o,p,b;return t&&t.split("\n").forEach((function(t){b=t.indexOf(":"),o=t.substring(0,b).trim().toLowerCase(),p=t.substring(b+1).trim(),!o||e[o]&&Mr[o]||("set-cookie"===o?e[o]?e[o].push(p):e[o]=[p]:e[o]=e[o]?e[o]+", "+p:p)})),e})(t),e):null!=t&&b(e,t,o),this}get(t,e){if(t=cr(t)){const o=kc.findKey(this,t);if(o){const t=this[o];if(!e)return t;if(!0===e)return function(t){const e=Object.create(null),o=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let p;for(;p=o.exec(t);)e[p[1]]=p[2];return e}(t);if(kc.isFunction(e))return e.call(this,t,o);if(kc.isRegExp(e))return e.exec(t);throw new TypeError("parser must be boolean|regexp|function")}}}has(t,e){if(t=cr(t)){const o=kc.findKey(this,t);return!(!o||void 0===this[o]||e&&!ir(0,this[o],o,e))}return!1}delete(t,e){const o=this;let p=!1;function b(t){if(t=cr(t)){const b=kc.findKey(o,t);!b||e&&!ir(0,o[b],b,e)||(delete o[b],p=!0)}}return kc.isArray(t)?t.forEach(b):b(t),p}clear(t){const e=Object.keys(this);let o=e.length,p=!1;for(;o--;){const b=e[o];t&&!ir(0,this[b],b,t,!0)||(delete this[b],p=!0)}return p}normalize(t){const e=this,o={};return kc.forEach(this,((p,b)=>{const n=kc.findKey(o,b);if(n)return e[n]=rr(p),void delete e[b];const M=t?function(t){return t.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,((t,e,o)=>e.toUpperCase()+o))}(b):String(b).trim();M!==b&&delete e[b],e[M]=rr(p),o[M]=!0})),this}concat(...t){return this.constructor.concat(this,...t)}toJSON(t){const e=Object.create(null);return kc.forEach(this,((o,p)=>{null!=o&&!1!==o&&(e[p]=t&&kc.isArray(o)?o.join(", "):o)})),e}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map((([t,e])=>t+": "+e)).join("\n")}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(t){return t instanceof this?t:new this(t)}static concat(t,...e){const o=new this(t);return e.forEach((t=>o.set(t))),o}static accessor(t){const e=(this[zr]=this[zr]={accessors:{}}).accessors,o=this.prototype;function p(t){const p=cr(t);e[p]||(!function(t,e){const o=kc.toCamelCase(" "+e);["get","set","has"].forEach((p=>{Object.defineProperty(t,p+o,{value:function(t,o,b){return this[p].call(this,e,t,o,b)},configurable:!0})}))}(o,t),e[p]=!0)}return kc.isArray(t)?t.forEach(p):p(t),this}}ar.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]),kc.reduceDescriptors(ar.prototype,(({value:t},e)=>{let o=e[0].toUpperCase()+e.slice(1);return{get:()=>t,set(t){this[o]=t}}})),kc.freezeMethods(ar);const Or=ar;function sr(t,e){const o=this||nr,p=e||o,b=Or.from(p.headers);let n=p.data;return kc.forEach(t,(function(t){n=t.call(o,n,b.normalize(),e?e.status:void 0)})),b.normalize(),n}function lr(t){return!(!t||!t.__CANCEL__)}function dr(t,e,o){jc.call(this,null==t?"canceled":t,jc.ERR_CANCELED,e,o),this.name="CanceledError"}kc.inherits(dr,jc,{__CANCEL__:!0});const Ar=dr;const ur=or.isStandardBrowserEnv?{write:function(t,e,o,p,b,n){const M=[];M.push(t+"="+encodeURIComponent(e)),kc.isNumber(o)&&M.push("expires="+new Date(o).toGMTString()),kc.isString(p)&&M.push("path="+p),kc.isString(b)&&M.push("domain="+b),!0===n&&M.push("secure"),document.cookie=M.join("; ")},read:function(t){const e=document.cookie.match(new RegExp("(^|;\\s*)("+t+")=([^;]*)"));return e?decodeURIComponent(e[3]):null},remove:function(t){this.write(t,"",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}};function fr(t,e){return t&&!/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)?function(t,e){return e?t.replace(/\/+$/,"")+"/"+e.replace(/^\/+/,""):t}(t,e):e}const qr=or.isStandardBrowserEnv?function(){const t=/(msie|trident)/i.test(navigator.userAgent),e=document.createElement("a");let o;function p(o){let p=o;return t&&(e.setAttribute("href",p),p=e.href),e.setAttribute("href",p),{href:e.href,protocol:e.protocol?e.protocol.replace(/:$/,""):"",host:e.host,search:e.search?e.search.replace(/^\?/,""):"",hash:e.hash?e.hash.replace(/^#/,""):"",hostname:e.hostname,port:e.port,pathname:"/"===e.pathname.charAt(0)?e.pathname:"/"+e.pathname}}return o=p(window.location.href),function(t){const e=kc.isString(t)?p(t):t;return e.protocol===o.protocol&&e.host===o.host}}():function(){return!0};const hr=function(t,e){t=t||10;const o=new Array(t),p=new Array(t);let b,n=0,M=0;return e=void 0!==e?e:1e3,function(z){const c=Date.now(),r=p[M];b||(b=c),o[n]=z,p[n]=c;let i=M,a=0;for(;i!==n;)a+=o[i++],i%=t;if(n=(n+1)%t,n===M&&(M=(M+1)%t),c-b{const n=b.loaded,M=b.lengthComputable?b.total:void 0,z=n-o,c=p(z);o=n;const r={loaded:n,total:M,progress:M?n/M:void 0,bytes:z,rate:c||void 0,estimated:c&&M&&n<=M?(M-n)/c:void 0,event:b};r[e?"download":"upload"]=!0,t(r)}}const mr="undefined"!=typeof XMLHttpRequest&&function(t){return new Promise((function(e,o){let p=t.data;const b=Or.from(t.headers).normalize(),n=t.responseType;let M,z;function c(){t.cancelToken&&t.cancelToken.unsubscribe(M),t.signal&&t.signal.removeEventListener("abort",M)}kc.isFormData(p)&&(or.isStandardBrowserEnv||or.isStandardBrowserWebWorkerEnv?b.setContentType(!1):b.getContentType(/^\s*multipart\/form-data/)?kc.isString(z=b.getContentType())&&b.setContentType(z.replace(/^\s*(multipart\/form-data);+/,"$1")):b.setContentType("multipart/form-data"));let r=new XMLHttpRequest;if(t.auth){const e=t.auth.username||"",o=t.auth.password?unescape(encodeURIComponent(t.auth.password)):"";b.set("Authorization","Basic "+btoa(e+":"+o))}const i=fr(t.baseURL,t.url);function a(){if(!r)return;const p=Or.from("getAllResponseHeaders"in r&&r.getAllResponseHeaders());!function(t,e,o){const p=o.config.validateStatus;o.status&&p&&!p(o.status)?e(new jc("Request failed with status code "+o.status,[jc.ERR_BAD_REQUEST,jc.ERR_BAD_RESPONSE][Math.floor(o.status/100)-4],o.config,o.request,o)):t(o)}((function(t){e(t),c()}),(function(t){o(t),c()}),{data:n&&"text"!==n&&"json"!==n?r.response:r.responseText,status:r.status,statusText:r.statusText,headers:p,config:t,request:r}),r=null}if(r.open(t.method.toUpperCase(),Zc(i,t.params,t.paramsSerializer),!0),r.timeout=t.timeout,"onloadend"in r?r.onloadend=a:r.onreadystatechange=function(){r&&4===r.readyState&&(0!==r.status||r.responseURL&&0===r.responseURL.indexOf("file:"))&&setTimeout(a)},r.onabort=function(){r&&(o(new jc("Request aborted",jc.ECONNABORTED,t,r)),r=null)},r.onerror=function(){o(new jc("Network Error",jc.ERR_NETWORK,t,r)),r=null},r.ontimeout=function(){let e=t.timeout?"timeout of "+t.timeout+"ms exceeded":"timeout exceeded";const p=t.transitional||er;t.timeoutErrorMessage&&(e=t.timeoutErrorMessage),o(new jc(e,p.clarifyTimeoutError?jc.ETIMEDOUT:jc.ECONNABORTED,t,r)),r=null},or.isStandardBrowserEnv){const e=qr(i)&&t.xsrfCookieName&&ur.read(t.xsrfCookieName);e&&b.set(t.xsrfHeaderName,e)}void 0===p&&b.setContentType(null),"setRequestHeader"in r&&kc.forEach(b.toJSON(),(function(t,e){r.setRequestHeader(e,t)})),kc.isUndefined(t.withCredentials)||(r.withCredentials=!!t.withCredentials),n&&"json"!==n&&(r.responseType=t.responseType),"function"==typeof t.onDownloadProgress&&r.addEventListener("progress",Wr(t.onDownloadProgress,!0)),"function"==typeof t.onUploadProgress&&r.upload&&r.upload.addEventListener("progress",Wr(t.onUploadProgress)),(t.cancelToken||t.signal)&&(M=e=>{r&&(o(!e||e.type?new Ar(null,t,r):e),r.abort(),r=null)},t.cancelToken&&t.cancelToken.subscribe(M),t.signal&&(t.signal.aborted?M():t.signal.addEventListener("abort",M)));const O=function(t){const e=/^([-+\w]{1,25})(:?\/\/|:)/.exec(t);return e&&e[1]||""}(i);O&&-1===or.protocols.indexOf(O)?o(new jc("Unsupported protocol "+O+":",jc.ERR_BAD_REQUEST,t)):r.send(p||null)}))},gr={http:null,xhr:mr};kc.forEach(gr,((t,e)=>{if(t){try{Object.defineProperty(t,"name",{value:e})}catch(t){}Object.defineProperty(t,"adapterName",{value:e})}}));const vr=t=>`- ${t}`,Rr=t=>kc.isFunction(t)||null===t||!1===t,yr=t=>{t=kc.isArray(t)?t:[t];const{length:e}=t;let o,p;const b={};for(let n=0;n`adapter ${t} `+(!1===e?"is not supported by the environment":"is not available in the build")));let o=e?t.length>1?"since :\n"+t.map(vr).join("\n"):" "+vr(t[0]):"as no adapter specified";throw new jc("There is no suitable adapter to dispatch the request "+o,"ERR_NOT_SUPPORT")}return p};function Br(t){if(t.cancelToken&&t.cancelToken.throwIfRequested(),t.signal&&t.signal.aborted)throw new Ar(null,t)}function Lr(t){Br(t),t.headers=Or.from(t.headers),t.data=sr.call(t,t.transformRequest),-1!==["post","put","patch"].indexOf(t.method)&&t.headers.setContentType("application/x-www-form-urlencoded",!1);return yr(t.adapter||nr.adapter)(t).then((function(e){return Br(t),e.data=sr.call(t,t.transformResponse,e),e.headers=Or.from(e.headers),e}),(function(e){return lr(e)||(Br(t),e&&e.response&&(e.response.data=sr.call(t,t.transformResponse,e.response),e.response.headers=Or.from(e.response.headers))),Promise.reject(e)}))}const Xr=t=>t instanceof Or?t.toJSON():t;function _r(t,e){e=e||{};const o={};function p(t,e,o){return kc.isPlainObject(t)&&kc.isPlainObject(e)?kc.merge.call({caseless:o},t,e):kc.isPlainObject(e)?kc.merge({},e):kc.isArray(e)?e.slice():e}function b(t,e,o){return kc.isUndefined(e)?kc.isUndefined(t)?void 0:p(void 0,t,o):p(t,e,o)}function n(t,e){if(!kc.isUndefined(e))return p(void 0,e)}function M(t,e){return kc.isUndefined(e)?kc.isUndefined(t)?void 0:p(void 0,t):p(void 0,e)}function z(o,b,n){return n in e?p(o,b):n in t?p(void 0,o):void 0}const c={url:n,method:n,data:n,baseURL:M,transformRequest:M,transformResponse:M,paramsSerializer:M,timeout:M,timeoutMessage:M,withCredentials:M,adapter:M,responseType:M,xsrfCookieName:M,xsrfHeaderName:M,onUploadProgress:M,onDownloadProgress:M,decompress:M,maxContentLength:M,maxBodyLength:M,beforeRedirect:M,transport:M,httpAgent:M,httpsAgent:M,cancelToken:M,socketPath:M,responseEncoding:M,validateStatus:z,headers:(t,e)=>b(Xr(t),Xr(e),!0)};return kc.forEach(Object.keys(Object.assign({},t,e)),(function(p){const n=c[p]||b,M=n(t[p],e[p],p);kc.isUndefined(M)&&n!==z||(o[p]=M)})),o}const Nr="1.6.0",wr={};["object","boolean","number","function","string","symbol"].forEach(((t,e)=>{wr[t]=function(o){return typeof o===t||"a"+(e<1?"n ":" ")+t}}));const xr={};wr.transitional=function(t,e,o){return(p,b,n)=>{if(!1===t)throw new jc(function(t,e){return"[Axios v1.6.0] Transitional option '"+t+"'"+e+(o?". "+o:"")}(b," has been removed"+(e?" in "+e:"")),jc.ERR_DEPRECATED);return e&&!xr[b]&&(xr[b]=!0),!t||t(p,b,n)}};const Tr={assertOptions:function(t,e,o){if("object"!=typeof t)throw new jc("options must be an object",jc.ERR_BAD_OPTION_VALUE);const p=Object.keys(t);let b=p.length;for(;b-- >0;){const n=p[b],M=e[n];if(M){const e=t[n],o=void 0===e||M(e,n,t);if(!0!==o)throw new jc("option "+n+" must be "+o,jc.ERR_BAD_OPTION_VALUE)}else if(!0!==o)throw new jc("Unknown option "+n,jc.ERR_BAD_OPTION)}},validators:wr},Cr=Tr.validators;class Sr{constructor(t){this.defaults=t,this.interceptors={request:new tr,response:new tr}}request(t,e){"string"==typeof t?(e=e||{}).url=t:e=t||{},e=_r(this.defaults,e);const{transitional:o,paramsSerializer:p,headers:b}=e;void 0!==o&&Tr.assertOptions(o,{silentJSONParsing:Cr.transitional(Cr.boolean),forcedJSONParsing:Cr.transitional(Cr.boolean),clarifyTimeoutError:Cr.transitional(Cr.boolean)},!1),null!=p&&(kc.isFunction(p)?e.paramsSerializer={serialize:p}:Tr.assertOptions(p,{encode:Cr.function,serialize:Cr.function},!0)),e.method=(e.method||this.defaults.method||"get").toLowerCase();let n=b&&kc.merge(b.common,b[e.method]);b&&kc.forEach(["delete","get","head","post","put","patch","common"],(t=>{delete b[t]})),e.headers=Or.concat(n,b);const M=[];let z=!0;this.interceptors.request.forEach((function(t){"function"==typeof t.runWhen&&!1===t.runWhen(e)||(z=z&&t.synchronous,M.unshift(t.fulfilled,t.rejected))}));const c=[];let r;this.interceptors.response.forEach((function(t){c.push(t.fulfilled,t.rejected)}));let i,a=0;if(!z){const t=[Lr.bind(this),void 0];for(t.unshift.apply(t,M),t.push.apply(t,c),i=t.length,r=Promise.resolve(e);a{if(!o._listeners)return;let e=o._listeners.length;for(;e-- >0;)o._listeners[e](t);o._listeners=null})),this.promise.then=t=>{let e;const p=new Promise((t=>{o.subscribe(t),e=t})).then(t);return p.cancel=function(){o.unsubscribe(e)},p},t((function(t,p,b){o.reason||(o.reason=new Ar(t,p,b),e(o.reason))}))}throwIfRequested(){if(this.reason)throw this.reason}subscribe(t){this.reason?t(this.reason):this._listeners?this._listeners.push(t):this._listeners=[t]}unsubscribe(t){if(!this._listeners)return;const e=this._listeners.indexOf(t);-1!==e&&this._listeners.splice(e,1)}static source(){let t;return{token:new Er((function(e){t=e})),cancel:t}}}const Dr=Er;const Pr={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(Pr).forEach((([t,e])=>{Pr[e]=t}));const jr=Pr;const Ir=function t(e){const o=new kr(e),p=pc(kr.prototype.request,o);return kc.extend(p,kr.prototype,o,{allOwnKeys:!0}),kc.extend(p,o,null,{allOwnKeys:!0}),p.create=function(o){return t(_r(e,o))},p}(nr);Ir.Axios=kr,Ir.CanceledError=Ar,Ir.CancelToken=Dr,Ir.isCancel=lr,Ir.VERSION=Nr,Ir.toFormData=$c,Ir.AxiosError=jc,Ir.Cancel=Ir.CanceledError,Ir.all=function(t){return Promise.all(t)},Ir.spread=function(t){return function(e){return t.apply(null,e)}},Ir.isAxiosError=function(t){return kc.isObject(t)&&!0===t.isAxiosError},Ir.mergeConfig=_r,Ir.AxiosHeaders=Or,Ir.formToJSON=t=>pr(kc.isHTMLForm(t)?new FormData(t):t),Ir.getAdapter=yr,Ir.HttpStatusCode=jr,Ir.default=Ir;const Fr=Ir,Hr=[{path:"/",redirect:"/dashboard"},{path:"/dashboard",name:"dashboard",component:o(307).Z},{path:"/monitoring",name:"monitoring",component:o(300).Z},{path:"/monitoring/:tag",component:o(997).Z,children:[{path:"jobs",name:"monitoring-jobs",component:o(790).Z,props:{type:"jobs"}},{path:"failed",name:"monitoring-failed",component:o(790).Z,props:{type:"failed"}}]},{path:"/metrics",redirect:"/metrics/jobs"},{path:"/metrics/",component:o(20).Z,children:[{path:"jobs",name:"metrics-jobs",component:o(253).Z},{path:"queues",name:"metrics-queues",component:o(871).Z}]},{path:"/metrics/:type/:slug",name:"metrics-preview",component:o(295).Z},{path:"/jobs/:type",name:"jobs",component:o(347).Z},{path:"/jobs/pending/:jobId",name:"pending-jobs-preview",component:o(967).Z},{path:"/jobs/completed/:jobId",name:"completed-jobs-preview",component:o(967).Z},{path:"/jobs/silenced/:jobId",name:"silenced-jobs-preview",component:o(967).Z},{path:"/failed",name:"failed-jobs",component:o(404).Z},{path:"/failed/:jobId",name:"failed-jobs-preview",component:o(5).Z},{path:"/batches",name:"batches",component:o(472).Z},{path:"/batches/:batchId",name:"batches-preview",component:o(416).Z}];function Ur(t,e){for(var o in e)t[o]=e[o];return t}var Vr=/[!'()*]/g,$r=function(t){return"%"+t.charCodeAt(0).toString(16)},Yr=/%2C/g,Gr=function(t){return encodeURIComponent(t).replace(Vr,$r).replace(Yr,",")};function Jr(t){try{return decodeURIComponent(t)}catch(t){0}return t}var Kr=function(t){return null==t||"object"==typeof t?t:String(t)};function Qr(t){var e={};return(t=t.trim().replace(/^(\?|#|&)/,""))?(t.split("&").forEach((function(t){var o=t.replace(/\+/g," ").split("="),p=Jr(o.shift()),b=o.length>0?Jr(o.join("=")):null;void 0===e[p]?e[p]=b:Array.isArray(e[p])?e[p].push(b):e[p]=[e[p],b]})),e):e}function Zr(t){var e=t?Object.keys(t).map((function(e){var o=t[e];if(void 0===o)return"";if(null===o)return Gr(e);if(Array.isArray(o)){var p=[];return o.forEach((function(t){void 0!==t&&(null===t?p.push(Gr(e)):p.push(Gr(e)+"="+Gr(t)))})),p.join("&")}return Gr(e)+"="+Gr(o)})).filter((function(t){return t.length>0})).join("&"):null;return e?"?"+e:""}var ti=/\/?$/;function ei(t,e,o,p){var b=p&&p.options.stringifyQuery,n=e.query||{};try{n=oi(n)}catch(t){}var M={name:e.name||t&&t.name,meta:t&&t.meta||{},path:e.path||"/",hash:e.hash||"",query:n,params:e.params||{},fullPath:ni(e,b),matched:t?bi(t):[]};return o&&(M.redirectedFrom=ni(o,b)),Object.freeze(M)}function oi(t){if(Array.isArray(t))return t.map(oi);if(t&&"object"==typeof t){var e={};for(var o in t)e[o]=oi(t[o]);return e}return t}var pi=ei(null,{path:"/"});function bi(t){for(var e=[];t;)e.unshift(t),t=t.parent;return e}function ni(t,e){var o=t.path,p=t.query;void 0===p&&(p={});var b=t.hash;return void 0===b&&(b=""),(o||"/")+(e||Zr)(p)+b}function Mi(t,e,o){return e===pi?t===e:!!e&&(t.path&&e.path?t.path.replace(ti,"")===e.path.replace(ti,"")&&(o||t.hash===e.hash&&zi(t.query,e.query)):!(!t.name||!e.name)&&(t.name===e.name&&(o||t.hash===e.hash&&zi(t.query,e.query)&&zi(t.params,e.params))))}function zi(t,e){if(void 0===t&&(t={}),void 0===e&&(e={}),!t||!e)return t===e;var o=Object.keys(t).sort(),p=Object.keys(e).sort();return o.length===p.length&&o.every((function(o,b){var n=t[o];if(p[b]!==o)return!1;var M=e[o];return null==n||null==M?n===M:"object"==typeof n&&"object"==typeof M?zi(n,M):String(n)===String(M)}))}function ci(t){for(var e=0;e=0&&(e=t.slice(p),t=t.slice(0,p));var b=t.indexOf("?");return b>=0&&(o=t.slice(b+1),t=t.slice(0,b)),{path:t,query:o,hash:e}}(b.path||""),r=e&&e.path||"/",i=c.path?ai(c.path,r,o||b.append):r,a=function(t,e,o){void 0===e&&(e={});var p,b=o||Qr;try{p=b(t||"")}catch(t){p={}}for(var n in e){var M=e[n];p[n]=Array.isArray(M)?M.map(Kr):Kr(M)}return p}(c.query,b.query,p&&p.options.parseQuery),O=b.hash||c.hash;return O&&"#"!==O.charAt(0)&&(O="#"+O),{_normalized:!0,path:i,query:a,hash:O}}var xi,Ti=function(){},Ci={name:"RouterLink",props:{to:{type:[String,Object],required:!0},tag:{type:String,default:"a"},custom:Boolean,exact:Boolean,exactPath:Boolean,append:Boolean,replace:Boolean,activeClass:String,exactActiveClass:String,ariaCurrentValue:{type:String,default:"page"},event:{type:[String,Array],default:"click"}},render:function(t){var e=this,o=this.$router,p=this.$route,b=o.resolve(this.to,p,this.append),n=b.location,M=b.route,z=b.href,c={},r=o.options.linkActiveClass,i=o.options.linkExactActiveClass,a=null==r?"router-link-active":r,O=null==i?"router-link-exact-active":i,s=null==this.activeClass?a:this.activeClass,l=null==this.exactActiveClass?O:this.exactActiveClass,d=M.redirectedFrom?ei(null,wi(M.redirectedFrom),null,o):M;c[l]=Mi(p,d,this.exactPath),c[s]=this.exact||this.exactPath?c[l]:function(t,e){return 0===t.path.replace(ti,"/").indexOf(e.path.replace(ti,"/"))&&(!e.hash||t.hash===e.hash)&&function(t,e){for(var o in e)if(!(o in t))return!1;return!0}(t.query,e.query)}(p,d);var A=c[l]?this.ariaCurrentValue:null,u=function(t){Si(t)&&(e.replace?o.replace(n,Ti):o.push(n,Ti))},f={click:Si};Array.isArray(this.event)?this.event.forEach((function(t){f[t]=u})):f[this.event]=u;var q={class:c},h=!this.$scopedSlots.$hasNormal&&this.$scopedSlots.default&&this.$scopedSlots.default({href:z,route:M,navigate:u,isActive:c[s],isExactActive:c[l]});if(h){if(1===h.length)return h[0];if(h.length>1||!h.length)return 0===h.length?t():t("span",{},h)}if("a"===this.tag)q.on=f,q.attrs={href:z,"aria-current":A};else{var W=ki(this.$slots.default);if(W){W.isStatic=!1;var m=W.data=Ur({},W.data);for(var g in m.on=m.on||{},m.on){var v=m.on[g];g in f&&(m.on[g]=Array.isArray(v)?v:[v])}for(var R in f)R in m.on?m.on[R].push(f[R]):m.on[R]=u;var y=W.data.attrs=Ur({},W.data.attrs);y.href=z,y["aria-current"]=A}else q.on=f}return t(this.tag,q,this.$slots.default)}};function Si(t){if(!(t.metaKey||t.altKey||t.ctrlKey||t.shiftKey||t.defaultPrevented||void 0!==t.button&&0!==t.button)){if(t.currentTarget&&t.currentTarget.getAttribute){var e=t.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(e))return}return t.preventDefault&&t.preventDefault(),!0}}function ki(t){if(t)for(var e,o=0;o-1&&(z.params[O]=o.params[O]);return z.path=Ni(i.path,z.params),c(i,z,M)}if(z.path){z.params={};for(var s=0;s-1}function da(t,e){return la(t)&&t._isRouter&&(null==e||t.type===e)}function Aa(t,e,o){var p=function(b){b>=t.length?o():t[b]?e(t[b],(function(){p(b+1)})):p(b+1)};p(0)}function ua(t){return function(e,o,p){var b=!1,n=0,M=null;fa(t,(function(t,e,o,z){if("function"==typeof t&&void 0===t.cid){b=!0,n++;var c,r=Wa((function(e){var b;((b=e).__esModule||ha&&"Module"===b[Symbol.toStringTag])&&(e=e.default),t.resolved="function"==typeof e?e:xi.extend(e),o.components[z]=e,--n<=0&&p()})),i=Wa((function(t){var e="Failed to resolve async component "+z+": "+t;M||(M=la(t)?t:new Error(e),p(M))}));try{c=t(r,i)}catch(t){i(t)}if(c)if("function"==typeof c.then)c.then(r,i);else{var a=c.component;a&&"function"==typeof a.then&&a.then(r,i)}}})),b||p()}}function fa(t,e){return qa(t.map((function(t){return Object.keys(t.components).map((function(o){return e(t.components[o],t.instances[o],t,o)}))})))}function qa(t){return Array.prototype.concat.apply([],t)}var ha="function"==typeof Symbol&&"symbol"==typeof Symbol.toStringTag;function Wa(t){var e=!1;return function(){for(var o=[],p=arguments.length;p--;)o[p]=arguments[p];if(!e)return e=!0,t.apply(this,o)}}var ma=function(t,e){this.router=t,this.base=function(t){if(!t)if(Ei){var e=document.querySelector("base");t=(t=e&&e.getAttribute("href")||"/").replace(/^https?:\/\/[^\/]+/,"")}else t="/";"/"!==t.charAt(0)&&(t="/"+t);return t.replace(/\/$/,"")}(e),this.current=pi,this.pending=null,this.ready=!1,this.readyCbs=[],this.readyErrorCbs=[],this.errorCbs=[],this.listeners=[]};function ga(t,e,o,p){var b=fa(t,(function(t,p,b,n){var M=function(t,e){"function"!=typeof t&&(t=xi.extend(t));return t.options[e]}(t,e);if(M)return Array.isArray(M)?M.map((function(t){return o(t,p,b,n)})):o(M,p,b,n)}));return qa(p?b.reverse():b)}function va(t,e){if(e)return function(){return t.apply(e,arguments)}}ma.prototype.listen=function(t){this.cb=t},ma.prototype.onReady=function(t,e){this.ready?t():(this.readyCbs.push(t),e&&this.readyErrorCbs.push(e))},ma.prototype.onError=function(t){this.errorCbs.push(t)},ma.prototype.transitionTo=function(t,e,o){var p,b=this;try{p=this.router.match(t,this.current)}catch(t){throw this.errorCbs.forEach((function(e){e(t)})),t}var n=this.current;this.confirmTransition(p,(function(){b.updateRoute(p),e&&e(p),b.ensureURL(),b.router.afterHooks.forEach((function(t){t&&t(p,n)})),b.ready||(b.ready=!0,b.readyCbs.forEach((function(t){t(p)})))}),(function(t){o&&o(t),t&&!b.ready&&(da(t,ra.redirected)&&n===pi||(b.ready=!0,b.readyErrorCbs.forEach((function(e){e(t)}))))}))},ma.prototype.confirmTransition=function(t,e,o){var p=this,b=this.current;this.pending=t;var n,M,z=function(t){!da(t)&&la(t)&&p.errorCbs.length&&p.errorCbs.forEach((function(e){e(t)})),o&&o(t)},c=t.matched.length-1,r=b.matched.length-1;if(Mi(t,b)&&c===r&&t.matched[c]===b.matched[r])return this.ensureURL(),t.hash&&Ki(this.router,b,t,!1),z(((M=Oa(n=b,t,ra.duplicated,'Avoided redundant navigation to current location: "'+n.fullPath+'".')).name="NavigationDuplicated",M));var i=function(t,e){var o,p=Math.max(t.length,e.length);for(o=0;o0)){var e=this.router,o=e.options.scrollBehavior,p=Ma&&o;p&&this.listeners.push(Ji());var b=function(){var o=t.current,b=ya(t.base);t.current===pi&&b===t._startLocation||t.transitionTo(b,(function(t){p&&Ki(e,t,o,!0)}))};window.addEventListener("popstate",b),this.listeners.push((function(){window.removeEventListener("popstate",b)}))}},e.prototype.go=function(t){window.history.go(t)},e.prototype.push=function(t,e,o){var p=this,b=this.current;this.transitionTo(t,(function(t){za(Oi(p.base+t.fullPath)),Ki(p.router,t,b,!1),e&&e(t)}),o)},e.prototype.replace=function(t,e,o){var p=this,b=this.current;this.transitionTo(t,(function(t){ca(Oi(p.base+t.fullPath)),Ki(p.router,t,b,!1),e&&e(t)}),o)},e.prototype.ensureURL=function(t){if(ya(this.base)!==this.current.fullPath){var e=Oi(this.base+this.current.fullPath);t?za(e):ca(e)}},e.prototype.getCurrentLocation=function(){return ya(this.base)},e}(ma);function ya(t){var e=window.location.pathname,o=e.toLowerCase(),p=t.toLowerCase();return!t||o!==p&&0!==o.indexOf(Oi(p+"/"))||(e=e.slice(t.length)),(e||"/")+window.location.search+window.location.hash}var Ba=function(t){function e(e,o,p){t.call(this,e,o),p&&function(t){var e=ya(t);if(!/^\/#/.test(e))return window.location.replace(Oi(t+"/#"+e)),!0}(this.base)||La()}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.setupListeners=function(){var t=this;if(!(this.listeners.length>0)){var e=this.router.options.scrollBehavior,o=Ma&&e;o&&this.listeners.push(Ji());var p=function(){var e=t.current;La()&&t.transitionTo(Xa(),(function(p){o&&Ki(t.router,p,e,!0),Ma||wa(p.fullPath)}))},b=Ma?"popstate":"hashchange";window.addEventListener(b,p),this.listeners.push((function(){window.removeEventListener(b,p)}))}},e.prototype.push=function(t,e,o){var p=this,b=this.current;this.transitionTo(t,(function(t){Na(t.fullPath),Ki(p.router,t,b,!1),e&&e(t)}),o)},e.prototype.replace=function(t,e,o){var p=this,b=this.current;this.transitionTo(t,(function(t){wa(t.fullPath),Ki(p.router,t,b,!1),e&&e(t)}),o)},e.prototype.go=function(t){window.history.go(t)},e.prototype.ensureURL=function(t){var e=this.current.fullPath;Xa()!==e&&(t?Na(e):wa(e))},e.prototype.getCurrentLocation=function(){return Xa()},e}(ma);function La(){var t=Xa();return"/"===t.charAt(0)||(wa("/"+t),!1)}function Xa(){var t=window.location.href,e=t.indexOf("#");return e<0?"":t=t.slice(e+1)}function _a(t){var e=window.location.href,o=e.indexOf("#");return(o>=0?e.slice(0,o):e)+"#"+t}function Na(t){Ma?za(_a(t)):window.location.hash=t}function wa(t){Ma?ca(_a(t)):window.location.replace(_a(t))}var xa=function(t){function e(e,o){t.call(this,e,o),this.stack=[],this.index=-1}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.push=function(t,e,o){var p=this;this.transitionTo(t,(function(t){p.stack=p.stack.slice(0,p.index+1).concat(t),p.index++,e&&e(t)}),o)},e.prototype.replace=function(t,e,o){var p=this;this.transitionTo(t,(function(t){p.stack=p.stack.slice(0,p.index).concat(t),e&&e(t)}),o)},e.prototype.go=function(t){var e=this,o=this.index+t;if(!(o<0||o>=this.stack.length)){var p=this.stack[o];this.confirmTransition(p,(function(){var t=e.current;e.index=o,e.updateRoute(p),e.router.afterHooks.forEach((function(e){e&&e(p,t)}))}),(function(t){da(t,ra.duplicated)&&(e.index=o)}))}},e.prototype.getCurrentLocation=function(){var t=this.stack[this.stack.length-1];return t?t.fullPath:"/"},e.prototype.ensureURL=function(){},e}(ma),Ta=function(t){void 0===t&&(t={}),this.app=null,this.apps=[],this.options=t,this.beforeHooks=[],this.resolveHooks=[],this.afterHooks=[],this.matcher=Ii(t.routes||[],this);var e=t.mode||"hash";switch(this.fallback="history"===e&&!Ma&&!1!==t.fallback,this.fallback&&(e="hash"),Ei||(e="abstract"),this.mode=e,e){case"history":this.history=new Ra(this,t.base);break;case"hash":this.history=new Ba(this,t.base,this.fallback);break;case"abstract":this.history=new xa(this,t.base)}},Ca={currentRoute:{configurable:!0}};Ta.prototype.match=function(t,e,o){return this.matcher.match(t,e,o)},Ca.currentRoute.get=function(){return this.history&&this.history.current},Ta.prototype.init=function(t){var e=this;if(this.apps.push(t),t.$once("hook:destroyed",(function(){var o=e.apps.indexOf(t);o>-1&&e.apps.splice(o,1),e.app===t&&(e.app=e.apps[0]||null),e.app||e.history.teardown()})),!this.app){this.app=t;var o=this.history;if(o instanceof Ra||o instanceof Ba){var p=function(t){o.setupListeners(),function(t){var p=o.current,b=e.options.scrollBehavior;Ma&&b&&"fullPath"in t&&Ki(e,t,p,!1)}(t)};o.transitionTo(o.getCurrentLocation(),p,p)}o.listen((function(t){e.apps.forEach((function(e){e._route=t}))}))}},Ta.prototype.beforeEach=function(t){return ka(this.beforeHooks,t)},Ta.prototype.beforeResolve=function(t){return ka(this.resolveHooks,t)},Ta.prototype.afterEach=function(t){return ka(this.afterHooks,t)},Ta.prototype.onReady=function(t,e){this.history.onReady(t,e)},Ta.prototype.onError=function(t){this.history.onError(t)},Ta.prototype.push=function(t,e,o){var p=this;if(!e&&!o&&"undefined"!=typeof Promise)return new Promise((function(e,o){p.history.push(t,e,o)}));this.history.push(t,e,o)},Ta.prototype.replace=function(t,e,o){var p=this;if(!e&&!o&&"undefined"!=typeof Promise)return new Promise((function(e,o){p.history.replace(t,e,o)}));this.history.replace(t,e,o)},Ta.prototype.go=function(t){this.history.go(t)},Ta.prototype.back=function(){this.go(-1)},Ta.prototype.forward=function(){this.go(1)},Ta.prototype.getMatchedComponents=function(t){var e=t?t.matched?t:this.resolve(t).route:this.currentRoute;return e?[].concat.apply([],e.matched.map((function(t){return Object.keys(t.components).map((function(e){return t.components[e]}))}))):[]},Ta.prototype.resolve=function(t,e,o){var p=wi(t,e=e||this.history.current,o,this),b=this.match(p,e),n=b.redirectedFrom||b.fullPath,M=function(t,e,o){var p="hash"===o?"#"+e:e;return t?Oi(t+"/"+p):p}(this.history.base,n,this.mode);return{location:p,route:b,href:M,normalizedTo:p,resolved:b}},Ta.prototype.getRoutes=function(){return this.matcher.getRoutes()},Ta.prototype.addRoute=function(t,e){this.matcher.addRoute(t,e),this.history.current!==pi&&this.history.transitionTo(this.history.getCurrentLocation())},Ta.prototype.addRoutes=function(t){this.matcher.addRoutes(t),this.history.current!==pi&&this.history.transitionTo(this.history.getCurrentLocation())},Object.defineProperties(Ta.prototype,Ca);var Sa=Ta;function ka(t,e){return t.push(e),function(){var o=t.indexOf(e);o>-1&&t.splice(o,1)}}Ta.install=function t(e){if(!t.installed||xi!==e){t.installed=!0,xi=e;var o=function(t){return void 0!==t},p=function(t,e){var p=t.$options._parentVnode;o(p)&&o(p=p.data)&&o(p=p.registerRouteInstance)&&p(t,e)};e.mixin({beforeCreate:function(){o(this.$options.router)?(this._routerRoot=this,this._router=this.$options.router,this._router.init(this),e.util.defineReactive(this,"_route",this._router.history.current)):this._routerRoot=this.$parent&&this.$parent._routerRoot||this,p(this,this)},destroyed:function(){p(this)}}),Object.defineProperty(e.prototype,"$router",{get:function(){return this._routerRoot._router}}),Object.defineProperty(e.prototype,"$route",{get:function(){return this._routerRoot._route}}),e.component("RouterView",ri),e.component("RouterLink",Ci);var b=e.config.optionMergeStrategies;b.beforeRouteEnter=b.beforeRouteLeave=b.beforeRouteUpdate=b.created}},Ta.version="3.6.5",Ta.isNavigationFailure=da,Ta.NavigationFailureType=ra,Ta.START_LOCATION=pi,Ei&&window.Vue&&window.Vue.use(Ta);var Ea=o(566),Da=o.n(Ea);window.Popper=o(575).default;try{window.$=window.jQuery=o(755),o(734)}catch(t){}var Pa=document.head.querySelector('meta[name="csrf-token"]');Fr.defaults.headers.common["X-Requested-With"]="XMLHttpRequest",Pa&&(Fr.defaults.headers.common["X-CSRF-TOKEN"]=Pa.content),ep.use(Sa),ep.prototype.$http=Fr.create(),window.Horizon.basePath="/"+window.Horizon.path;var ja=window.Horizon.basePath+"/";""!==window.Horizon.path&&"/"!==window.Horizon.path||(ja="/",window.Horizon.basePath="");var Ia=new Sa({routes:Hr,mode:"history",base:ja});ep.component("vue-json-pretty",Da()),ep.component("alert",o(682).Z),ep.component("scheme-toggler",o(70).Z),ep.mixin(oc),ep.directive("tooltip",(function(t,e){$(t).tooltip({title:e.value,placement:e.arg,trigger:"hover"})})),new ep({el:"#horizon",router:Ia,data:function(){return{alert:{type:null,autoClose:0,message:"",confirmationProceed:null,confirmationCancel:null},autoLoadsNewEntries:"1"===localStorage.autoLoadsNewEntries}}})},742:(t,e)=>{"use strict";e.byteLength=function(t){var e=c(t),o=e[0],p=e[1];return 3*(o+p)/4-p},e.toByteArray=function(t){var e,o,n=c(t),M=n[0],z=n[1],r=new b(function(t,e,o){return 3*(e+o)/4-o}(0,M,z)),i=0,a=z>0?M-4:M;for(o=0;o>16&255,r[i++]=e>>8&255,r[i++]=255&e;2===z&&(e=p[t.charCodeAt(o)]<<2|p[t.charCodeAt(o+1)]>>4,r[i++]=255&e);1===z&&(e=p[t.charCodeAt(o)]<<10|p[t.charCodeAt(o+1)]<<4|p[t.charCodeAt(o+2)]>>2,r[i++]=e>>8&255,r[i++]=255&e);return r},e.fromByteArray=function(t){for(var e,p=t.length,b=p%3,n=[],M=16383,z=0,c=p-b;zc?c:z+M));1===b?(e=t[p-1],n.push(o[e>>2]+o[e<<4&63]+"==")):2===b&&(e=(t[p-2]<<8)+t[p-1],n.push(o[e>>10]+o[e>>4&63]+o[e<<2&63]+"="));return n.join("")};for(var o=[],p=[],b="undefined"!=typeof Uint8Array?Uint8Array:Array,n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",M=0,z=n.length;M0)throw new Error("Invalid string. Length must be a multiple of 4");var o=t.indexOf("=");return-1===o&&(o=e),[o,o===e?0:4-o%4]}function r(t,e,p){for(var b,n,M=[],z=e;z>18&63]+o[n>>12&63]+o[n>>6&63]+o[63&n]);return M.join("")}p["-".charCodeAt(0)]=62,p["_".charCodeAt(0)]=63},734:function(t,e,o){!function(t,e,o){"use strict";function p(t){return t&&"object"==typeof t&&"default"in t?t:{default:t}}var b=p(e),n=p(o);function M(t,e){for(var o=0;o=M)throw new Error("Bootstrap's JavaScript requires at least jQuery v1.9.1 but less than v4.0.0")}};f.jQueryDetection(),u();var q="alert",h="4.6.2",W="bs.alert",m="."+W,g=".data-api",v=b.default.fn[q],R="alert",y="fade",B="show",L="close"+m,X="closed"+m,_="click"+m+g,N='[data-dismiss="alert"]',w=function(){function t(t){this._element=t}var e=t.prototype;return e.close=function(t){var e=this._element;t&&(e=this._getRootElement(t)),this._triggerCloseEvent(e).isDefaultPrevented()||this._removeElement(e)},e.dispose=function(){b.default.removeData(this._element,W),this._element=null},e._getRootElement=function(t){var e=f.getSelectorFromElement(t),o=!1;return e&&(o=document.querySelector(e)),o||(o=b.default(t).closest("."+R)[0]),o},e._triggerCloseEvent=function(t){var e=b.default.Event(L);return b.default(t).trigger(e),e},e._removeElement=function(t){var e=this;if(b.default(t).removeClass(B),b.default(t).hasClass(y)){var o=f.getTransitionDurationFromElement(t);b.default(t).one(f.TRANSITION_END,(function(o){return e._destroyElement(t,o)})).emulateTransitionEnd(o)}else this._destroyElement(t)},e._destroyElement=function(t){b.default(t).detach().trigger(X).remove()},t._jQueryInterface=function(e){return this.each((function(){var o=b.default(this),p=o.data(W);p||(p=new t(this),o.data(W,p)),"close"===e&&p[e](this)}))},t._handleDismiss=function(t){return function(e){e&&e.preventDefault(),t.close(this)}},z(t,null,[{key:"VERSION",get:function(){return h}}]),t}();b.default(document).on(_,N,w._handleDismiss(new w)),b.default.fn[q]=w._jQueryInterface,b.default.fn[q].Constructor=w,b.default.fn[q].noConflict=function(){return b.default.fn[q]=v,w._jQueryInterface};var x="button",T="4.6.2",C="bs.button",S="."+C,k=".data-api",E=b.default.fn[x],D="active",P="btn",j="focus",I="click"+S+k,F="focus"+S+k+" blur"+S+k,H="load"+S+k,U='[data-toggle^="button"]',V='[data-toggle="buttons"]',$='[data-toggle="button"]',Y='[data-toggle="buttons"] .btn',G='input:not([type="hidden"])',J=".active",K=".btn",Q=function(){function t(t){this._element=t,this.shouldAvoidTriggerChange=!1}var e=t.prototype;return e.toggle=function(){var t=!0,e=!0,o=b.default(this._element).closest(V)[0];if(o){var p=this._element.querySelector(G);if(p){if("radio"===p.type)if(p.checked&&this._element.classList.contains(D))t=!1;else{var n=o.querySelector(J);n&&b.default(n).removeClass(D)}t&&("checkbox"!==p.type&&"radio"!==p.type||(p.checked=!this._element.classList.contains(D)),this.shouldAvoidTriggerChange||b.default(p).trigger("change")),p.focus(),e=!1}}this._element.hasAttribute("disabled")||this._element.classList.contains("disabled")||(e&&this._element.setAttribute("aria-pressed",!this._element.classList.contains(D)),t&&b.default(this._element).toggleClass(D))},e.dispose=function(){b.default.removeData(this._element,C),this._element=null},t._jQueryInterface=function(e,o){return this.each((function(){var p=b.default(this),n=p.data(C);n||(n=new t(this),p.data(C,n)),n.shouldAvoidTriggerChange=o,"toggle"===e&&n[e]()}))},z(t,null,[{key:"VERSION",get:function(){return T}}]),t}();b.default(document).on(I,U,(function(t){var e=t.target,o=e;if(b.default(e).hasClass(P)||(e=b.default(e).closest(K)[0]),!e||e.hasAttribute("disabled")||e.classList.contains("disabled"))t.preventDefault();else{var p=e.querySelector(G);if(p&&(p.hasAttribute("disabled")||p.classList.contains("disabled")))return void t.preventDefault();"INPUT"!==o.tagName&&"LABEL"===e.tagName||Q._jQueryInterface.call(b.default(e),"toggle","INPUT"===o.tagName)}})).on(F,U,(function(t){var e=b.default(t.target).closest(K)[0];b.default(e).toggleClass(j,/^focus(in)?$/.test(t.type))})),b.default(window).on(H,(function(){for(var t=[].slice.call(document.querySelectorAll(Y)),e=0,o=t.length;e0,this._pointerEvent=Boolean(window.PointerEvent||window.MSPointerEvent),this._addEventListeners()}var e=t.prototype;return e.next=function(){this._isSliding||this._slide(ut)},e.nextWhenVisible=function(){var t=b.default(this._element);!document.hidden&&t.is(":visible")&&"hidden"!==t.css("visibility")&&this.next()},e.prev=function(){this._isSliding||this._slide(ft)},e.pause=function(t){t||(this._isPaused=!0),this._element.querySelector(Et)&&(f.triggerTransitionEnd(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null},e.cycle=function(t){t||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config.interval&&!this._isPaused&&(this._updateInterval(),this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))},e.to=function(t){var e=this;this._activeElement=this._element.querySelector(Ct);var o=this._getItemIndex(this._activeElement);if(!(t>this._items.length-1||t<0))if(this._isSliding)b.default(this._element).one(mt,(function(){return e.to(t)}));else{if(o===t)return this.pause(),void this.cycle();var p=t>o?ut:ft;this._slide(p,this._items[t])}},e.dispose=function(){b.default(this._element).off(ot),b.default.removeData(this._element,et),this._items=null,this._config=null,this._element=null,this._interval=null,this._isPaused=null,this._isSliding=null,this._activeElement=null,this._indicatorsElement=null},e._getConfig=function(t){return t=c({},It,t),f.typeCheckConfig(Z,t,Ft),t},e._handleSwipe=function(){var t=Math.abs(this.touchDeltaX);if(!(t<=ct)){var e=t/this.touchDeltaX;this.touchDeltaX=0,e>0&&this.prev(),e<0&&this.next()}},e._addEventListeners=function(){var t=this;this._config.keyboard&&b.default(this._element).on(gt,(function(e){return t._keydown(e)})),"hover"===this._config.pause&&b.default(this._element).on(vt,(function(e){return t.pause(e)})).on(Rt,(function(e){return t.cycle(e)})),this._config.touch&&this._addTouchEventListeners()},e._addTouchEventListeners=function(){var t=this;if(this._touchSupported){var e=function(e){t._pointerEvent&&Ht[e.originalEvent.pointerType.toUpperCase()]?t.touchStartX=e.originalEvent.clientX:t._pointerEvent||(t.touchStartX=e.originalEvent.touches[0].clientX)},o=function(e){t.touchDeltaX=e.originalEvent.touches&&e.originalEvent.touches.length>1?0:e.originalEvent.touches[0].clientX-t.touchStartX},p=function(e){t._pointerEvent&&Ht[e.originalEvent.pointerType.toUpperCase()]&&(t.touchDeltaX=e.originalEvent.clientX-t.touchStartX),t._handleSwipe(),"hover"===t._config.pause&&(t.pause(),t.touchTimeout&&clearTimeout(t.touchTimeout),t.touchTimeout=setTimeout((function(e){return t.cycle(e)}),zt+t._config.interval))};b.default(this._element.querySelectorAll(kt)).on(Nt,(function(t){return t.preventDefault()})),this._pointerEvent?(b.default(this._element).on(Xt,(function(t){return e(t)})),b.default(this._element).on(_t,(function(t){return p(t)})),this._element.classList.add(At)):(b.default(this._element).on(yt,(function(t){return e(t)})),b.default(this._element).on(Bt,(function(t){return o(t)})),b.default(this._element).on(Lt,(function(t){return p(t)})))}},e._keydown=function(t){if(!/input|textarea/i.test(t.target.tagName))switch(t.which){case nt:t.preventDefault(),this.prev();break;case Mt:t.preventDefault(),this.next()}},e._getItemIndex=function(t){return this._items=t&&t.parentNode?[].slice.call(t.parentNode.querySelectorAll(St)):[],this._items.indexOf(t)},e._getItemByDirection=function(t,e){var o=t===ut,p=t===ft,b=this._getItemIndex(e),n=this._items.length-1;if((p&&0===b||o&&b===n)&&!this._config.wrap)return e;var M=(b+(t===ft?-1:1))%this._items.length;return-1===M?this._items[this._items.length-1]:this._items[M]},e._triggerSlideEvent=function(t,e){var o=this._getItemIndex(t),p=this._getItemIndex(this._element.querySelector(Ct)),n=b.default.Event(Wt,{relatedTarget:t,direction:e,from:p,to:o});return b.default(this._element).trigger(n),n},e._setActiveIndicatorElement=function(t){if(this._indicatorsElement){var e=[].slice.call(this._indicatorsElement.querySelectorAll(Tt));b.default(e).removeClass(it);var o=this._indicatorsElement.children[this._getItemIndex(t)];o&&b.default(o).addClass(it)}},e._updateInterval=function(){var t=this._activeElement||this._element.querySelector(Ct);if(t){var e=parseInt(t.getAttribute("data-interval"),10);e?(this._config.defaultInterval=this._config.defaultInterval||this._config.interval,this._config.interval=e):this._config.interval=this._config.defaultInterval||this._config.interval}},e._slide=function(t,e){var o,p,n,M=this,z=this._element.querySelector(Ct),c=this._getItemIndex(z),r=e||z&&this._getItemByDirection(t,z),i=this._getItemIndex(r),a=Boolean(this._interval);if(t===ut?(o=st,p=lt,n=qt):(o=Ot,p=dt,n=ht),r&&b.default(r).hasClass(it))this._isSliding=!1;else if(!this._triggerSlideEvent(r,n).isDefaultPrevented()&&z&&r){this._isSliding=!0,a&&this.pause(),this._setActiveIndicatorElement(r),this._activeElement=r;var O=b.default.Event(mt,{relatedTarget:r,direction:n,from:c,to:i});if(b.default(this._element).hasClass(at)){b.default(r).addClass(p),f.reflow(r),b.default(z).addClass(o),b.default(r).addClass(o);var s=f.getTransitionDurationFromElement(z);b.default(z).one(f.TRANSITION_END,(function(){b.default(r).removeClass(o+" "+p).addClass(it),b.default(z).removeClass(it+" "+p+" "+o),M._isSliding=!1,setTimeout((function(){return b.default(M._element).trigger(O)}),0)})).emulateTransitionEnd(s)}else b.default(z).removeClass(it),b.default(r).addClass(it),this._isSliding=!1,b.default(this._element).trigger(O);a&&this.cycle()}},t._jQueryInterface=function(e){return this.each((function(){var o=b.default(this).data(et),p=c({},It,b.default(this).data());"object"==typeof e&&(p=c({},p,e));var n="string"==typeof e?e:p.slide;if(o||(o=new t(this,p),b.default(this).data(et,o)),"number"==typeof e)o.to(e);else if("string"==typeof n){if(void 0===o[n])throw new TypeError('No method named "'+n+'"');o[n]()}else p.interval&&p.ride&&(o.pause(),o.cycle())}))},t._dataApiClickHandler=function(e){var o=f.getSelectorFromElement(this);if(o){var p=b.default(o)[0];if(p&&b.default(p).hasClass(rt)){var n=c({},b.default(p).data(),b.default(this).data()),M=this.getAttribute("data-slide-to");M&&(n.interval=!1),t._jQueryInterface.call(b.default(p),n),M&&b.default(p).data(et).to(M),e.preventDefault()}}},z(t,null,[{key:"VERSION",get:function(){return tt}},{key:"Default",get:function(){return It}}]),t}();b.default(document).on(xt,Pt,Ut._dataApiClickHandler),b.default(window).on(wt,(function(){for(var t=[].slice.call(document.querySelectorAll(jt)),e=0,o=t.length;e0&&(this._selector=M,this._triggerArray.push(n))}this._parent=this._config.parent?this._getParent():null,this._config.parent||this._addAriaAndCollapsedClass(this._element,this._triggerArray),this._config.toggle&&this.toggle()}var e=t.prototype;return e.toggle=function(){b.default(this._element).hasClass(Qt)?this.hide():this.show()},e.show=function(){var e,o,p=this;if(!(this._isTransitioning||b.default(this._element).hasClass(Qt)||(this._parent&&0===(e=[].slice.call(this._parent.querySelectorAll(re)).filter((function(t){return"string"==typeof p._config.parent?t.getAttribute("data-parent")===p._config.parent:t.classList.contains(Zt)}))).length&&(e=null),e&&(o=b.default(e).not(this._selector).data(Yt))&&o._isTransitioning))){var n=b.default.Event(be);if(b.default(this._element).trigger(n),!n.isDefaultPrevented()){e&&(t._jQueryInterface.call(b.default(e).not(this._selector),"hide"),o||b.default(e).data(Yt,null));var M=this._getDimension();b.default(this._element).removeClass(Zt).addClass(te),this._element.style[M]=0,this._triggerArray.length&&b.default(this._triggerArray).removeClass(ee).attr("aria-expanded",!0),this.setTransitioning(!0);var z=function(){b.default(p._element).removeClass(te).addClass(Zt+" "+Qt),p._element.style[M]="",p.setTransitioning(!1),b.default(p._element).trigger(ne)},c="scroll"+(M[0].toUpperCase()+M.slice(1)),r=f.getTransitionDurationFromElement(this._element);b.default(this._element).one(f.TRANSITION_END,z).emulateTransitionEnd(r),this._element.style[M]=this._element[c]+"px"}}},e.hide=function(){var t=this;if(!this._isTransitioning&&b.default(this._element).hasClass(Qt)){var e=b.default.Event(Me);if(b.default(this._element).trigger(e),!e.isDefaultPrevented()){var o=this._getDimension();this._element.style[o]=this._element.getBoundingClientRect()[o]+"px",f.reflow(this._element),b.default(this._element).addClass(te).removeClass(Zt+" "+Qt);var p=this._triggerArray.length;if(p>0)for(var n=0;n0},e._getOffset=function(){var t=this,e={};return"function"==typeof this._config.offset?e.fn=function(e){return e.offsets=c({},e.offsets,t._config.offset(e.offsets,t._element)),e}:e.offset=this._config.offset,e},e._getPopperConfig=function(){var t={placement:this._getPlacement(),modifiers:{offset:this._getOffset(),flip:{enabled:this._config.flip},preventOverflow:{boundariesElement:this._config.boundary}}};return"static"===this._config.display&&(t.modifiers.applyStyle={enabled:!1}),c({},t,this._config.popperConfig)},t._jQueryInterface=function(e){return this.each((function(){var o=b.default(this).data(Ae);if(o||(o=new t(this,"object"==typeof e?e:null),b.default(this).data(Ae,o)),"string"==typeof e){if(void 0===o[e])throw new TypeError('No method named "'+e+'"');o[e]()}}))},t._clearMenus=function(e){if(!e||e.which!==Re&&("keyup"!==e.type||e.which===me))for(var o=[].slice.call(document.querySelectorAll(Ie)),p=0,n=o.length;p0&&M--,e.which===ve&&Mdocument.documentElement.clientHeight;o||(this._element.style.overflowY="hidden"),this._element.classList.add(Ao);var p=f.getTransitionDurationFromElement(this._dialog);b.default(this._element).off(f.TRANSITION_END),b.default(this._element).one(f.TRANSITION_END,(function(){t._element.classList.remove(Ao),o||b.default(t._element).one(f.TRANSITION_END,(function(){t._element.style.overflowY=""})).emulateTransitionEnd(t._element,p)})).emulateTransitionEnd(p),this._element.focus()}},e._showElement=function(t){var e=this,o=b.default(this._element).hasClass(so),p=this._dialog?this._dialog.querySelector(_o):null;this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE||document.body.appendChild(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),b.default(this._dialog).hasClass(ro)&&p?p.scrollTop=0:this._element.scrollTop=0,o&&f.reflow(this._element),b.default(this._element).addClass(lo),this._config.focus&&this._enforceFocus();var n=b.default.Event(Wo,{relatedTarget:t}),M=function(){e._config.focus&&e._element.focus(),e._isTransitioning=!1,b.default(e._element).trigger(n)};if(o){var z=f.getTransitionDurationFromElement(this._dialog);b.default(this._dialog).one(f.TRANSITION_END,M).emulateTransitionEnd(z)}else M()},e._enforceFocus=function(){var t=this;b.default(document).off(mo).on(mo,(function(e){document!==e.target&&t._element!==e.target&&0===b.default(t._element).has(e.target).length&&t._element.focus()}))},e._setEscapeEvent=function(){var t=this;this._isShown?b.default(this._element).on(Ro,(function(e){t._config.keyboard&&e.which===co?(e.preventDefault(),t.hide()):t._config.keyboard||e.which!==co||t._triggerBackdropTransition()})):this._isShown||b.default(this._element).off(Ro)},e._setResizeEvent=function(){var t=this;this._isShown?b.default(window).on(go,(function(e){return t.handleUpdate(e)})):b.default(window).off(go)},e._hideModal=function(){var t=this;this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._showBackdrop((function(){b.default(document.body).removeClass(Oo),t._resetAdjustments(),t._resetScrollbar(),b.default(t._element).trigger(qo)}))},e._removeBackdrop=function(){this._backdrop&&(b.default(this._backdrop).remove(),this._backdrop=null)},e._showBackdrop=function(t){var e=this,o=b.default(this._element).hasClass(so)?so:"";if(this._isShown&&this._config.backdrop){if(this._backdrop=document.createElement("div"),this._backdrop.className=ao,o&&this._backdrop.classList.add(o),b.default(this._backdrop).appendTo(document.body),b.default(this._element).on(vo,(function(t){e._ignoreBackdropClick?e._ignoreBackdropClick=!1:t.target===t.currentTarget&&("static"===e._config.backdrop?e._triggerBackdropTransition():e.hide())})),o&&f.reflow(this._backdrop),b.default(this._backdrop).addClass(lo),!t)return;if(!o)return void t();var p=f.getTransitionDurationFromElement(this._backdrop);b.default(this._backdrop).one(f.TRANSITION_END,t).emulateTransitionEnd(p)}else if(!this._isShown&&this._backdrop){b.default(this._backdrop).removeClass(lo);var n=function(){e._removeBackdrop(),t&&t()};if(b.default(this._element).hasClass(so)){var M=f.getTransitionDurationFromElement(this._backdrop);b.default(this._backdrop).one(f.TRANSITION_END,n).emulateTransitionEnd(M)}else n()}else t&&t()},e._adjustDialog=function(){var t=this._element.scrollHeight>document.documentElement.clientHeight;!this._isBodyOverflowing&&t&&(this._element.style.paddingLeft=this._scrollbarWidth+"px"),this._isBodyOverflowing&&!t&&(this._element.style.paddingRight=this._scrollbarWidth+"px")},e._resetAdjustments=function(){this._element.style.paddingLeft="",this._element.style.paddingRight=""},e._checkScrollbar=function(){var t=document.body.getBoundingClientRect();this._isBodyOverflowing=Math.round(t.left+t.right)
    ',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:0,container:!1,fallbackPlacement:"flip",boundary:"scrollParent",customClass:"",sanitize:!0,sanitizeFn:null,whiteList:Do,popperConfig:null},ip={animation:"boolean",template:"string",title:"(string|element|function)",trigger:"string",delay:"(number|object)",html:"boolean",selector:"(string|boolean)",placement:"(string|function)",offset:"(number|string|function)",container:"(string|element|boolean)",fallbackPlacement:"(string|array)",boundary:"(string|element)",customClass:"(string|function)",sanitize:"boolean",sanitizeFn:"(null|function)",whiteList:"object",popperConfig:"(null|object)"},ap={HIDE:"hide"+$o,HIDDEN:"hidden"+$o,SHOW:"show"+$o,SHOWN:"shown"+$o,INSERTED:"inserted"+$o,CLICK:"click"+$o,FOCUSIN:"focusin"+$o,FOCUSOUT:"focusout"+$o,MOUSEENTER:"mouseenter"+$o,MOUSELEAVE:"mouseleave"+$o},Op=function(){function t(t,e){if(void 0===n.default)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this.element=t,this.config=this._getConfig(e),this.tip=null,this._setListeners()}var e=t.prototype;return e.enable=function(){this._isEnabled=!0},e.disable=function(){this._isEnabled=!1},e.toggleEnabled=function(){this._isEnabled=!this._isEnabled},e.toggle=function(t){if(this._isEnabled)if(t){var e=this.constructor.DATA_KEY,o=b.default(t.currentTarget).data(e);o||(o=new this.constructor(t.currentTarget,this._getDelegateConfig()),b.default(t.currentTarget).data(e,o)),o._activeTrigger.click=!o._activeTrigger.click,o._isWithActiveTrigger()?o._enter(null,o):o._leave(null,o)}else{if(b.default(this.getTipElement()).hasClass(Zo))return void this._leave(null,this);this._enter(null,this)}},e.dispose=function(){clearTimeout(this._timeout),b.default.removeData(this.element,this.constructor.DATA_KEY),b.default(this.element).off(this.constructor.EVENT_KEY),b.default(this.element).closest(".modal").off("hide.bs.modal",this._hideModalHandler),this.tip&&b.default(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,this._activeTrigger=null,this._popper&&this._popper.destroy(),this._popper=null,this.element=null,this.config=null,this.tip=null},e.show=function(){var t=this;if("none"===b.default(this.element).css("display"))throw new Error("Please use show on visible elements");var e=b.default.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){b.default(this.element).trigger(e);var o=f.findShadowRoot(this.element),p=b.default.contains(null!==o?o:this.element.ownerDocument.documentElement,this.element);if(e.isDefaultPrevented()||!p)return;var M=this.getTipElement(),z=f.getUID(this.constructor.NAME);M.setAttribute("id",z),this.element.setAttribute("aria-describedby",z),this.setContent(),this.config.animation&&b.default(M).addClass(Qo);var c="function"==typeof this.config.placement?this.config.placement.call(this,M,this.element):this.config.placement,r=this._getAttachment(c);this.addAttachmentClass(r);var i=this._getContainer();b.default(M).data(this.constructor.DATA_KEY,this),b.default.contains(this.element.ownerDocument.documentElement,this.tip)||b.default(M).appendTo(i),b.default(this.element).trigger(this.constructor.Event.INSERTED),this._popper=new n.default(this.element,M,this._getPopperConfig(r)),b.default(M).addClass(Zo),b.default(M).addClass(this.config.customClass),"ontouchstart"in document.documentElement&&b.default(document.body).children().on("mouseover",null,b.default.noop);var a=function(){t.config.animation&&t._fixTransition();var e=t._hoverState;t._hoverState=null,b.default(t.element).trigger(t.constructor.Event.SHOWN),e===ep&&t._leave(null,t)};if(b.default(this.tip).hasClass(Qo)){var O=f.getTransitionDurationFromElement(this.tip);b.default(this.tip).one(f.TRANSITION_END,a).emulateTransitionEnd(O)}else a()}},e.hide=function(t){var e=this,o=this.getTipElement(),p=b.default.Event(this.constructor.Event.HIDE),n=function(){e._hoverState!==tp&&o.parentNode&&o.parentNode.removeChild(o),e._cleanTipClass(),e.element.removeAttribute("aria-describedby"),b.default(e.element).trigger(e.constructor.Event.HIDDEN),null!==e._popper&&e._popper.destroy(),t&&t()};if(b.default(this.element).trigger(p),!p.isDefaultPrevented()){if(b.default(o).removeClass(Zo),"ontouchstart"in document.documentElement&&b.default(document.body).children().off("mouseover",null,b.default.noop),this._activeTrigger[Mp]=!1,this._activeTrigger[np]=!1,this._activeTrigger[bp]=!1,b.default(this.tip).hasClass(Qo)){var M=f.getTransitionDurationFromElement(o);b.default(o).one(f.TRANSITION_END,n).emulateTransitionEnd(M)}else n();this._hoverState=""}},e.update=function(){null!==this._popper&&this._popper.scheduleUpdate()},e.isWithContent=function(){return Boolean(this.getTitle())},e.addAttachmentClass=function(t){b.default(this.getTipElement()).addClass(Go+"-"+t)},e.getTipElement=function(){return this.tip=this.tip||b.default(this.config.template)[0],this.tip},e.setContent=function(){var t=this.getTipElement();this.setElementContent(b.default(t.querySelectorAll(op)),this.getTitle()),b.default(t).removeClass(Qo+" "+Zo)},e.setElementContent=function(t,e){"object"!=typeof e||!e.nodeType&&!e.jquery?this.config.html?(this.config.sanitize&&(e=Fo(e,this.config.whiteList,this.config.sanitizeFn)),t.html(e)):t.text(e):this.config.html?b.default(e).parent().is(t)||t.empty().append(e):t.text(b.default(e).text())},e.getTitle=function(){var t=this.element.getAttribute("data-original-title");return t||(t="function"==typeof this.config.title?this.config.title.call(this.element):this.config.title),t},e._getPopperConfig=function(t){var e=this;return c({},{placement:t,modifiers:{offset:this._getOffset(),flip:{behavior:this.config.fallbackPlacement},arrow:{element:pp},preventOverflow:{boundariesElement:this.config.boundary}},onCreate:function(t){t.originalPlacement!==t.placement&&e._handlePopperPlacementChange(t)},onUpdate:function(t){return e._handlePopperPlacementChange(t)}},this.config.popperConfig)},e._getOffset=function(){var t=this,e={};return"function"==typeof this.config.offset?e.fn=function(e){return e.offsets=c({},e.offsets,t.config.offset(e.offsets,t.element)),e}:e.offset=this.config.offset,e},e._getContainer=function(){return!1===this.config.container?document.body:f.isElement(this.config.container)?b.default(this.config.container):b.default(document).find(this.config.container)},e._getAttachment=function(t){return cp[t.toUpperCase()]},e._setListeners=function(){var t=this;this.config.trigger.split(" ").forEach((function(e){if("click"===e)b.default(t.element).on(t.constructor.Event.CLICK,t.config.selector,(function(e){return t.toggle(e)}));else if(e!==zp){var o=e===bp?t.constructor.Event.MOUSEENTER:t.constructor.Event.FOCUSIN,p=e===bp?t.constructor.Event.MOUSELEAVE:t.constructor.Event.FOCUSOUT;b.default(t.element).on(o,t.config.selector,(function(e){return t._enter(e)})).on(p,t.config.selector,(function(e){return t._leave(e)}))}})),this._hideModalHandler=function(){t.element&&t.hide()},b.default(this.element).closest(".modal").on("hide.bs.modal",this._hideModalHandler),this.config.selector?this.config=c({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},e._fixTitle=function(){var t=typeof this.element.getAttribute("data-original-title");(this.element.getAttribute("title")||"string"!==t)&&(this.element.setAttribute("data-original-title",this.element.getAttribute("title")||""),this.element.setAttribute("title",""))},e._enter=function(t,e){var o=this.constructor.DATA_KEY;(e=e||b.default(t.currentTarget).data(o))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),b.default(t.currentTarget).data(o,e)),t&&(e._activeTrigger["focusin"===t.type?np:bp]=!0),b.default(e.getTipElement()).hasClass(Zo)||e._hoverState===tp?e._hoverState=tp:(clearTimeout(e._timeout),e._hoverState=tp,e.config.delay&&e.config.delay.show?e._timeout=setTimeout((function(){e._hoverState===tp&&e.show()}),e.config.delay.show):e.show())},e._leave=function(t,e){var o=this.constructor.DATA_KEY;(e=e||b.default(t.currentTarget).data(o))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),b.default(t.currentTarget).data(o,e)),t&&(e._activeTrigger["focusout"===t.type?np:bp]=!1),e._isWithActiveTrigger()||(clearTimeout(e._timeout),e._hoverState=ep,e.config.delay&&e.config.delay.hide?e._timeout=setTimeout((function(){e._hoverState===ep&&e.hide()}),e.config.delay.hide):e.hide())},e._isWithActiveTrigger=function(){for(var t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1},e._getConfig=function(t){var e=b.default(this.element).data();return Object.keys(e).forEach((function(t){-1!==Ko.indexOf(t)&&delete e[t]})),"number"==typeof(t=c({},this.constructor.Default,e,"object"==typeof t&&t?t:{})).delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),f.typeCheckConfig(Ho,t,this.constructor.DefaultType),t.sanitize&&(t.template=Fo(t.template,t.whiteList,t.sanitizeFn)),t},e._getDelegateConfig=function(){var t={};if(this.config)for(var e in this.config)this.constructor.Default[e]!==this.config[e]&&(t[e]=this.config[e]);return t},e._cleanTipClass=function(){var t=b.default(this.getTipElement()),e=t.attr("class").match(Jo);null!==e&&e.length&&t.removeClass(e.join(""))},e._handlePopperPlacementChange=function(t){this.tip=t.instance.popper,this._cleanTipClass(),this.addAttachmentClass(this._getAttachment(t.placement))},e._fixTransition=function(){var t=this.getTipElement(),e=this.config.animation;null===t.getAttribute("x-placement")&&(b.default(t).removeClass(Qo),this.config.animation=!1,this.hide(),this.show(),this.config.animation=e)},t._jQueryInterface=function(e){return this.each((function(){var o=b.default(this),p=o.data(Vo),n="object"==typeof e&&e;if((p||!/dispose|hide/.test(e))&&(p||(p=new t(this,n),o.data(Vo,p)),"string"==typeof e)){if(void 0===p[e])throw new TypeError('No method named "'+e+'"');p[e]()}}))},z(t,null,[{key:"VERSION",get:function(){return Uo}},{key:"Default",get:function(){return rp}},{key:"NAME",get:function(){return Ho}},{key:"DATA_KEY",get:function(){return Vo}},{key:"Event",get:function(){return ap}},{key:"EVENT_KEY",get:function(){return $o}},{key:"DefaultType",get:function(){return ip}}]),t}();b.default.fn[Ho]=Op._jQueryInterface,b.default.fn[Ho].Constructor=Op,b.default.fn[Ho].noConflict=function(){return b.default.fn[Ho]=Yo,Op._jQueryInterface};var sp="popover",lp="4.6.2",dp="bs.popover",Ap="."+dp,up=b.default.fn[sp],fp="bs-popover",qp=new RegExp("(^|\\s)"+fp+"\\S+","g"),hp="fade",Wp="show",mp=".popover-header",gp=".popover-body",vp=c({},Op.Default,{placement:"right",trigger:"click",content:"",template:''}),Rp=c({},Op.DefaultType,{content:"(string|element|function)"}),yp={HIDE:"hide"+Ap,HIDDEN:"hidden"+Ap,SHOW:"show"+Ap,SHOWN:"shown"+Ap,INSERTED:"inserted"+Ap,CLICK:"click"+Ap,FOCUSIN:"focusin"+Ap,FOCUSOUT:"focusout"+Ap,MOUSEENTER:"mouseenter"+Ap,MOUSELEAVE:"mouseleave"+Ap},Bp=function(t){function e(){return t.apply(this,arguments)||this}r(e,t);var o=e.prototype;return o.isWithContent=function(){return this.getTitle()||this._getContent()},o.addAttachmentClass=function(t){b.default(this.getTipElement()).addClass(fp+"-"+t)},o.getTipElement=function(){return this.tip=this.tip||b.default(this.config.template)[0],this.tip},o.setContent=function(){var t=b.default(this.getTipElement());this.setElementContent(t.find(mp),this.getTitle());var e=this._getContent();"function"==typeof e&&(e=e.call(this.element)),this.setElementContent(t.find(gp),e),t.removeClass(hp+" "+Wp)},o._getContent=function(){return this.element.getAttribute("data-content")||this.config.content},o._cleanTipClass=function(){var t=b.default(this.getTipElement()),e=t.attr("class").match(qp);null!==e&&e.length>0&&t.removeClass(e.join(""))},e._jQueryInterface=function(t){return this.each((function(){var o=b.default(this).data(dp),p="object"==typeof t?t:null;if((o||!/dispose|hide/.test(t))&&(o||(o=new e(this,p),b.default(this).data(dp,o)),"string"==typeof t)){if(void 0===o[t])throw new TypeError('No method named "'+t+'"');o[t]()}}))},z(e,null,[{key:"VERSION",get:function(){return lp}},{key:"Default",get:function(){return vp}},{key:"NAME",get:function(){return sp}},{key:"DATA_KEY",get:function(){return dp}},{key:"Event",get:function(){return yp}},{key:"EVENT_KEY",get:function(){return Ap}},{key:"DefaultType",get:function(){return Rp}}]),e}(Op);b.default.fn[sp]=Bp._jQueryInterface,b.default.fn[sp].Constructor=Bp,b.default.fn[sp].noConflict=function(){return b.default.fn[sp]=up,Bp._jQueryInterface};var Lp="scrollspy",Xp="4.6.2",_p="bs.scrollspy",Np="."+_p,wp=".data-api",xp=b.default.fn[Lp],Tp="dropdown-item",Cp="active",Sp="activate"+Np,kp="scroll"+Np,Ep="load"+Np+wp,Dp="offset",Pp="position",jp='[data-spy="scroll"]',Ip=".nav, .list-group",Fp=".nav-link",Hp=".nav-item",Up=".list-group-item",Vp=".dropdown",$p=".dropdown-item",Yp=".dropdown-toggle",Gp={offset:10,method:"auto",target:""},Jp={offset:"number",method:"string",target:"(string|element)"},Kp=function(){function t(t,e){var o=this;this._element=t,this._scrollElement="BODY"===t.tagName?window:t,this._config=this._getConfig(e),this._selector=this._config.target+" "+Fp+","+this._config.target+" "+Up+","+this._config.target+" "+$p,this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,b.default(this._scrollElement).on(kp,(function(t){return o._process(t)})),this.refresh(),this._process()}var e=t.prototype;return e.refresh=function(){var t=this,e=this._scrollElement===this._scrollElement.window?Dp:Pp,o="auto"===this._config.method?e:this._config.method,p=o===Pp?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),[].slice.call(document.querySelectorAll(this._selector)).map((function(t){var e,n=f.getSelectorFromElement(t);if(n&&(e=document.querySelector(n)),e){var M=e.getBoundingClientRect();if(M.width||M.height)return[b.default(e)[o]().top+p,n]}return null})).filter(Boolean).sort((function(t,e){return t[0]-e[0]})).forEach((function(e){t._offsets.push(e[0]),t._targets.push(e[1])}))},e.dispose=function(){b.default.removeData(this._element,_p),b.default(this._scrollElement).off(Np),this._element=null,this._scrollElement=null,this._config=null,this._selector=null,this._offsets=null,this._targets=null,this._activeTarget=null,this._scrollHeight=null},e._getConfig=function(t){if("string"!=typeof(t=c({},Gp,"object"==typeof t&&t?t:{})).target&&f.isElement(t.target)){var e=b.default(t.target).attr("id");e||(e=f.getUID(Lp),b.default(t.target).attr("id",e)),t.target="#"+e}return f.typeCheckConfig(Lp,t,Jp),t},e._getScrollTop=function(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop},e._getScrollHeight=function(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)},e._getOffsetHeight=function(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height},e._process=function(){var t=this._getScrollTop()+this._config.offset,e=this._getScrollHeight(),o=this._config.offset+e-this._getOffsetHeight();if(this._scrollHeight!==e&&this.refresh(),t>=o){var p=this._targets[this._targets.length-1];this._activeTarget!==p&&this._activate(p)}else{if(this._activeTarget&&t0)return this._activeTarget=null,void this._clear();for(var b=this._offsets.length;b--;)this._activeTarget!==this._targets[b]&&t>=this._offsets[b]&&(void 0===this._offsets[b+1]||t{"use strict";var p=o(742),b=o(645),n=o(826);function M(){return c.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function z(t,e){if(M()=M())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+M().toString(16)+" bytes");return 0|t}function l(t,e){if(c.isBuffer(t))return t.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(t)||t instanceof ArrayBuffer))return t.byteLength;"string"!=typeof t&&(t=""+t);var o=t.length;if(0===o)return 0;for(var p=!1;;)switch(e){case"ascii":case"latin1":case"binary":return o;case"utf8":case"utf-8":case void 0:return j(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*o;case"hex":return o>>>1;case"base64":return I(t).length;default:if(p)return j(t).length;e=(""+e).toLowerCase(),p=!0}}function d(t,e,o){var p=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return"";if((void 0===o||o>this.length)&&(o=this.length),o<=0)return"";if((o>>>=0)<=(e>>>=0))return"";for(t||(t="utf8");;)switch(t){case"hex":return _(this,e,o);case"utf8":case"utf-8":return y(this,e,o);case"ascii":return L(this,e,o);case"latin1":case"binary":return X(this,e,o);case"base64":return R(this,e,o);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return N(this,e,o);default:if(p)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),p=!0}}function A(t,e,o){var p=t[e];t[e]=t[o],t[o]=p}function u(t,e,o,p,b){if(0===t.length)return-1;if("string"==typeof o?(p=o,o=0):o>2147483647?o=2147483647:o<-2147483648&&(o=-2147483648),o=+o,isNaN(o)&&(o=b?0:t.length-1),o<0&&(o=t.length+o),o>=t.length){if(b)return-1;o=t.length-1}else if(o<0){if(!b)return-1;o=0}if("string"==typeof e&&(e=c.from(e,p)),c.isBuffer(e))return 0===e.length?-1:f(t,e,o,p,b);if("number"==typeof e)return e&=255,c.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?b?Uint8Array.prototype.indexOf.call(t,e,o):Uint8Array.prototype.lastIndexOf.call(t,e,o):f(t,[e],o,p,b);throw new TypeError("val must be string, number or Buffer")}function f(t,e,o,p,b){var n,M=1,z=t.length,c=e.length;if(void 0!==p&&("ucs2"===(p=String(p).toLowerCase())||"ucs-2"===p||"utf16le"===p||"utf-16le"===p)){if(t.length<2||e.length<2)return-1;M=2,z/=2,c/=2,o/=2}function r(t,e){return 1===M?t[e]:t.readUInt16BE(e*M)}if(b){var i=-1;for(n=o;nz&&(o=z-c),n=o;n>=0;n--){for(var a=!0,O=0;Ob&&(p=b):p=b;var n=e.length;if(n%2!=0)throw new TypeError("Invalid hex string");p>n/2&&(p=n/2);for(var M=0;M>8,b=o%256,n.push(b),n.push(p);return n}(e,t.length-o),t,o,p)}function R(t,e,o){return 0===e&&o===t.length?p.fromByteArray(t):p.fromByteArray(t.slice(e,o))}function y(t,e,o){o=Math.min(t.length,o);for(var p=[],b=e;b239?4:r>223?3:r>191?2:1;if(b+a<=o)switch(a){case 1:r<128&&(i=r);break;case 2:128==(192&(n=t[b+1]))&&(c=(31&r)<<6|63&n)>127&&(i=c);break;case 3:n=t[b+1],M=t[b+2],128==(192&n)&&128==(192&M)&&(c=(15&r)<<12|(63&n)<<6|63&M)>2047&&(c<55296||c>57343)&&(i=c);break;case 4:n=t[b+1],M=t[b+2],z=t[b+3],128==(192&n)&&128==(192&M)&&128==(192&z)&&(c=(15&r)<<18|(63&n)<<12|(63&M)<<6|63&z)>65535&&c<1114112&&(i=c)}null===i?(i=65533,a=1):i>65535&&(i-=65536,p.push(i>>>10&1023|55296),i=56320|1023&i),p.push(i),b+=a}return function(t){var e=t.length;if(e<=B)return String.fromCharCode.apply(String,t);var o="",p=0;for(;p0&&(t=this.toString("hex",0,o).match(/.{2}/g).join(" "),this.length>o&&(t+=" ... ")),""},c.prototype.compare=function(t,e,o,p,b){if(!c.isBuffer(t))throw new TypeError("Argument must be a Buffer");if(void 0===e&&(e=0),void 0===o&&(o=t?t.length:0),void 0===p&&(p=0),void 0===b&&(b=this.length),e<0||o>t.length||p<0||b>this.length)throw new RangeError("out of range index");if(p>=b&&e>=o)return 0;if(p>=b)return-1;if(e>=o)return 1;if(this===t)return 0;for(var n=(b>>>=0)-(p>>>=0),M=(o>>>=0)-(e>>>=0),z=Math.min(n,M),r=this.slice(p,b),i=t.slice(e,o),a=0;ab)&&(o=b),t.length>0&&(o<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");p||(p="utf8");for(var n=!1;;)switch(p){case"hex":return q(this,t,e,o);case"utf8":case"utf-8":return h(this,t,e,o);case"ascii":return W(this,t,e,o);case"latin1":case"binary":return m(this,t,e,o);case"base64":return g(this,t,e,o);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return v(this,t,e,o);default:if(n)throw new TypeError("Unknown encoding: "+p);p=(""+p).toLowerCase(),n=!0}},c.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var B=4096;function L(t,e,o){var p="";o=Math.min(t.length,o);for(var b=e;bp)&&(o=p);for(var b="",n=e;no)throw new RangeError("Trying to access beyond buffer length")}function x(t,e,o,p,b,n){if(!c.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>b||et.length)throw new RangeError("Index out of range")}function T(t,e,o,p){e<0&&(e=65535+e+1);for(var b=0,n=Math.min(t.length-o,2);b>>8*(p?b:1-b)}function C(t,e,o,p){e<0&&(e=4294967295+e+1);for(var b=0,n=Math.min(t.length-o,4);b>>8*(p?b:3-b)&255}function S(t,e,o,p,b,n){if(o+p>t.length)throw new RangeError("Index out of range");if(o<0)throw new RangeError("Index out of range")}function k(t,e,o,p,n){return n||S(t,0,o,4),b.write(t,e,o,p,23,4),o+4}function E(t,e,o,p,n){return n||S(t,0,o,8),b.write(t,e,o,p,52,8),o+8}c.prototype.slice=function(t,e){var o,p=this.length;if((t=~~t)<0?(t+=p)<0&&(t=0):t>p&&(t=p),(e=void 0===e?p:~~e)<0?(e+=p)<0&&(e=0):e>p&&(e=p),e0&&(b*=256);)p+=this[t+--e]*b;return p},c.prototype.readUInt8=function(t,e){return e||w(t,1,this.length),this[t]},c.prototype.readUInt16LE=function(t,e){return e||w(t,2,this.length),this[t]|this[t+1]<<8},c.prototype.readUInt16BE=function(t,e){return e||w(t,2,this.length),this[t]<<8|this[t+1]},c.prototype.readUInt32LE=function(t,e){return e||w(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},c.prototype.readUInt32BE=function(t,e){return e||w(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},c.prototype.readIntLE=function(t,e,o){t|=0,e|=0,o||w(t,e,this.length);for(var p=this[t],b=1,n=0;++n=(b*=128)&&(p-=Math.pow(2,8*e)),p},c.prototype.readIntBE=function(t,e,o){t|=0,e|=0,o||w(t,e,this.length);for(var p=e,b=1,n=this[t+--p];p>0&&(b*=256);)n+=this[t+--p]*b;return n>=(b*=128)&&(n-=Math.pow(2,8*e)),n},c.prototype.readInt8=function(t,e){return e||w(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},c.prototype.readInt16LE=function(t,e){e||w(t,2,this.length);var o=this[t]|this[t+1]<<8;return 32768&o?4294901760|o:o},c.prototype.readInt16BE=function(t,e){e||w(t,2,this.length);var o=this[t+1]|this[t]<<8;return 32768&o?4294901760|o:o},c.prototype.readInt32LE=function(t,e){return e||w(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},c.prototype.readInt32BE=function(t,e){return e||w(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},c.prototype.readFloatLE=function(t,e){return e||w(t,4,this.length),b.read(this,t,!0,23,4)},c.prototype.readFloatBE=function(t,e){return e||w(t,4,this.length),b.read(this,t,!1,23,4)},c.prototype.readDoubleLE=function(t,e){return e||w(t,8,this.length),b.read(this,t,!0,52,8)},c.prototype.readDoubleBE=function(t,e){return e||w(t,8,this.length),b.read(this,t,!1,52,8)},c.prototype.writeUIntLE=function(t,e,o,p){(t=+t,e|=0,o|=0,p)||x(this,t,e,o,Math.pow(2,8*o)-1,0);var b=1,n=0;for(this[e]=255&t;++n=0&&(n*=256);)this[e+b]=t/n&255;return e+o},c.prototype.writeUInt8=function(t,e,o){return t=+t,e|=0,o||x(this,t,e,1,255,0),c.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),this[e]=255&t,e+1},c.prototype.writeUInt16LE=function(t,e,o){return t=+t,e|=0,o||x(this,t,e,2,65535,0),c.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):T(this,t,e,!0),e+2},c.prototype.writeUInt16BE=function(t,e,o){return t=+t,e|=0,o||x(this,t,e,2,65535,0),c.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):T(this,t,e,!1),e+2},c.prototype.writeUInt32LE=function(t,e,o){return t=+t,e|=0,o||x(this,t,e,4,4294967295,0),c.TYPED_ARRAY_SUPPORT?(this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t):C(this,t,e,!0),e+4},c.prototype.writeUInt32BE=function(t,e,o){return t=+t,e|=0,o||x(this,t,e,4,4294967295,0),c.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):C(this,t,e,!1),e+4},c.prototype.writeIntLE=function(t,e,o,p){if(t=+t,e|=0,!p){var b=Math.pow(2,8*o-1);x(this,t,e,o,b-1,-b)}var n=0,M=1,z=0;for(this[e]=255&t;++n>0)-z&255;return e+o},c.prototype.writeIntBE=function(t,e,o,p){if(t=+t,e|=0,!p){var b=Math.pow(2,8*o-1);x(this,t,e,o,b-1,-b)}var n=o-1,M=1,z=0;for(this[e+n]=255&t;--n>=0&&(M*=256);)t<0&&0===z&&0!==this[e+n+1]&&(z=1),this[e+n]=(t/M>>0)-z&255;return e+o},c.prototype.writeInt8=function(t,e,o){return t=+t,e|=0,o||x(this,t,e,1,127,-128),c.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),t<0&&(t=255+t+1),this[e]=255&t,e+1},c.prototype.writeInt16LE=function(t,e,o){return t=+t,e|=0,o||x(this,t,e,2,32767,-32768),c.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):T(this,t,e,!0),e+2},c.prototype.writeInt16BE=function(t,e,o){return t=+t,e|=0,o||x(this,t,e,2,32767,-32768),c.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):T(this,t,e,!1),e+2},c.prototype.writeInt32LE=function(t,e,o){return t=+t,e|=0,o||x(this,t,e,4,2147483647,-2147483648),c.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24):C(this,t,e,!0),e+4},c.prototype.writeInt32BE=function(t,e,o){return t=+t,e|=0,o||x(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),c.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):C(this,t,e,!1),e+4},c.prototype.writeFloatLE=function(t,e,o){return k(this,t,e,!0,o)},c.prototype.writeFloatBE=function(t,e,o){return k(this,t,e,!1,o)},c.prototype.writeDoubleLE=function(t,e,o){return E(this,t,e,!0,o)},c.prototype.writeDoubleBE=function(t,e,o){return E(this,t,e,!1,o)},c.prototype.copy=function(t,e,o,p){if(o||(o=0),p||0===p||(p=this.length),e>=t.length&&(e=t.length),e||(e=0),p>0&&p=this.length)throw new RangeError("sourceStart out of bounds");if(p<0)throw new RangeError("sourceEnd out of bounds");p>this.length&&(p=this.length),t.length-e=0;--b)t[b+e]=this[b+o];else if(n<1e3||!c.TYPED_ARRAY_SUPPORT)for(b=0;b>>=0,o=void 0===o?this.length:o>>>0,t||(t=0),"number"==typeof t)for(n=e;n55295&&o<57344){if(!b){if(o>56319){(e-=3)>-1&&n.push(239,191,189);continue}if(M+1===p){(e-=3)>-1&&n.push(239,191,189);continue}b=o;continue}if(o<56320){(e-=3)>-1&&n.push(239,191,189),b=o;continue}o=65536+(b-55296<<10|o-56320)}else b&&(e-=3)>-1&&n.push(239,191,189);if(b=null,o<128){if((e-=1)<0)break;n.push(o)}else if(o<2048){if((e-=2)<0)break;n.push(o>>6|192,63&o|128)}else if(o<65536){if((e-=3)<0)break;n.push(o>>12|224,o>>6&63|128,63&o|128)}else{if(!(o<1114112))throw new Error("Invalid code point");if((e-=4)<0)break;n.push(o>>18|240,o>>12&63|128,o>>6&63|128,63&o|128)}}return n}function I(t){return p.toByteArray(function(t){if((t=function(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")}(t).replace(D,"")).length<2)return"";for(;t.length%4!=0;)t+="=";return t}(t))}function F(t,e,o,p){for(var b=0;b=e.length||b>=t.length);++b)e[b+o]=t[b];return b}},757:function(t,e,o){t.exports=function(t){"use strict";function e(t,e){return t(e={exports:{}},e.exports),e.exports}function o(t){return t&&t.default||t}t=t&&t.hasOwnProperty("default")?t.default:t;var p={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},b=e((function(t){var e={};for(var o in p)p.hasOwnProperty(o)&&(e[p[o]]=o);var b=t.exports={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};for(var n in b)if(b.hasOwnProperty(n)){if(!("channels"in b[n]))throw new Error("missing channels property: "+n);if(!("labels"in b[n]))throw new Error("missing channel labels property: "+n);if(b[n].labels.length!==b[n].channels)throw new Error("channel and label counts mismatch: "+n);var M=b[n].channels,z=b[n].labels;delete b[n].channels,delete b[n].labels,Object.defineProperty(b[n],"channels",{value:M}),Object.defineProperty(b[n],"labels",{value:z})}function c(t,e){return Math.pow(t[0]-e[0],2)+Math.pow(t[1]-e[1],2)+Math.pow(t[2]-e[2],2)}b.rgb.hsl=function(t){var e,o,p=t[0]/255,b=t[1]/255,n=t[2]/255,M=Math.min(p,b,n),z=Math.max(p,b,n),c=z-M;return z===M?e=0:p===z?e=(b-n)/c:b===z?e=2+(n-p)/c:n===z&&(e=4+(p-b)/c),(e=Math.min(60*e,360))<0&&(e+=360),o=(M+z)/2,[e,100*(z===M?0:o<=.5?c/(z+M):c/(2-z-M)),100*o]},b.rgb.hsv=function(t){var e,o,p,b,n,M=t[0]/255,z=t[1]/255,c=t[2]/255,r=Math.max(M,z,c),i=r-Math.min(M,z,c),a=function(t){return(r-t)/6/i+.5};return 0===i?b=n=0:(n=i/r,e=a(M),o=a(z),p=a(c),M===r?b=p-o:z===r?b=1/3+e-p:c===r&&(b=2/3+o-e),b<0?b+=1:b>1&&(b-=1)),[360*b,100*n,100*r]},b.rgb.hwb=function(t){var e=t[0],o=t[1],p=t[2];return[b.rgb.hsl(t)[0],1/255*Math.min(e,Math.min(o,p))*100,100*(p=1-1/255*Math.max(e,Math.max(o,p)))]},b.rgb.cmyk=function(t){var e,o=t[0]/255,p=t[1]/255,b=t[2]/255;return[100*((1-o-(e=Math.min(1-o,1-p,1-b)))/(1-e)||0),100*((1-p-e)/(1-e)||0),100*((1-b-e)/(1-e)||0),100*e]},b.rgb.keyword=function(t){var o=e[t];if(o)return o;var b,n=1/0;for(var M in p)if(p.hasOwnProperty(M)){var z=c(t,p[M]);z.04045?Math.pow((e+.055)/1.055,2.4):e/12.92)+.3576*(o=o>.04045?Math.pow((o+.055)/1.055,2.4):o/12.92)+.1805*(p=p>.04045?Math.pow((p+.055)/1.055,2.4):p/12.92)),100*(.2126*e+.7152*o+.0722*p),100*(.0193*e+.1192*o+.9505*p)]},b.rgb.lab=function(t){var e=b.rgb.xyz(t),o=e[0],p=e[1],n=e[2];return p/=100,n/=108.883,o=(o/=95.047)>.008856?Math.pow(o,1/3):7.787*o+16/116,[116*(p=p>.008856?Math.pow(p,1/3):7.787*p+16/116)-16,500*(o-p),200*(p-(n=n>.008856?Math.pow(n,1/3):7.787*n+16/116))]},b.hsl.rgb=function(t){var e,o,p,b,n,M=t[0]/360,z=t[1]/100,c=t[2]/100;if(0===z)return[n=255*c,n,n];e=2*c-(o=c<.5?c*(1+z):c+z-c*z),b=[0,0,0];for(var r=0;r<3;r++)(p=M+1/3*-(r-1))<0&&p++,p>1&&p--,n=6*p<1?e+6*(o-e)*p:2*p<1?o:3*p<2?e+(o-e)*(2/3-p)*6:e,b[r]=255*n;return b},b.hsl.hsv=function(t){var e=t[0],o=t[1]/100,p=t[2]/100,b=o,n=Math.max(p,.01);return o*=(p*=2)<=1?p:2-p,b*=n<=1?n:2-n,[e,100*(0===p?2*b/(n+b):2*o/(p+o)),(p+o)/2*100]},b.hsv.rgb=function(t){var e=t[0]/60,o=t[1]/100,p=t[2]/100,b=Math.floor(e)%6,n=e-Math.floor(e),M=255*p*(1-o),z=255*p*(1-o*n),c=255*p*(1-o*(1-n));switch(p*=255,b){case 0:return[p,c,M];case 1:return[z,p,M];case 2:return[M,p,c];case 3:return[M,z,p];case 4:return[c,M,p];case 5:return[p,M,z]}},b.hsv.hsl=function(t){var e,o,p,b=t[0],n=t[1]/100,M=t[2]/100,z=Math.max(M,.01);return p=(2-n)*M,o=n*z,[b,100*(o=(o/=(e=(2-n)*z)<=1?e:2-e)||0),100*(p/=2)]},b.hwb.rgb=function(t){var e,o,p,b,n,M,z,c=t[0]/360,r=t[1]/100,i=t[2]/100,a=r+i;switch(a>1&&(r/=a,i/=a),p=6*c-(e=Math.floor(6*c)),0!=(1&e)&&(p=1-p),b=r+p*((o=1-i)-r),e){default:case 6:case 0:n=o,M=b,z=r;break;case 1:n=b,M=o,z=r;break;case 2:n=r,M=o,z=b;break;case 3:n=r,M=b,z=o;break;case 4:n=b,M=r,z=o;break;case 5:n=o,M=r,z=b}return[255*n,255*M,255*z]},b.cmyk.rgb=function(t){var e=t[0]/100,o=t[1]/100,p=t[2]/100,b=t[3]/100;return[255*(1-Math.min(1,e*(1-b)+b)),255*(1-Math.min(1,o*(1-b)+b)),255*(1-Math.min(1,p*(1-b)+b))]},b.xyz.rgb=function(t){var e,o,p,b=t[0]/100,n=t[1]/100,M=t[2]/100;return o=-.9689*b+1.8758*n+.0415*M,p=.0557*b+-.204*n+1.057*M,e=(e=3.2406*b+-1.5372*n+-.4986*M)>.0031308?1.055*Math.pow(e,1/2.4)-.055:12.92*e,o=o>.0031308?1.055*Math.pow(o,1/2.4)-.055:12.92*o,p=p>.0031308?1.055*Math.pow(p,1/2.4)-.055:12.92*p,[255*(e=Math.min(Math.max(0,e),1)),255*(o=Math.min(Math.max(0,o),1)),255*(p=Math.min(Math.max(0,p),1))]},b.xyz.lab=function(t){var e=t[0],o=t[1],p=t[2];return o/=100,p/=108.883,e=(e/=95.047)>.008856?Math.pow(e,1/3):7.787*e+16/116,[116*(o=o>.008856?Math.pow(o,1/3):7.787*o+16/116)-16,500*(e-o),200*(o-(p=p>.008856?Math.pow(p,1/3):7.787*p+16/116))]},b.lab.xyz=function(t){var e,o,p,b=t[0];e=t[1]/500+(o=(b+16)/116),p=o-t[2]/200;var n=Math.pow(o,3),M=Math.pow(e,3),z=Math.pow(p,3);return o=n>.008856?n:(o-16/116)/7.787,e=M>.008856?M:(e-16/116)/7.787,p=z>.008856?z:(p-16/116)/7.787,[e*=95.047,o*=100,p*=108.883]},b.lab.lch=function(t){var e,o=t[0],p=t[1],b=t[2];return(e=360*Math.atan2(b,p)/2/Math.PI)<0&&(e+=360),[o,Math.sqrt(p*p+b*b),e]},b.lch.lab=function(t){var e,o=t[0],p=t[1];return e=t[2]/360*2*Math.PI,[o,p*Math.cos(e),p*Math.sin(e)]},b.rgb.ansi16=function(t){var e=t[0],o=t[1],p=t[2],n=1 in arguments?arguments[1]:b.rgb.hsv(t)[2];if(0===(n=Math.round(n/50)))return 30;var M=30+(Math.round(p/255)<<2|Math.round(o/255)<<1|Math.round(e/255));return 2===n&&(M+=60),M},b.hsv.ansi16=function(t){return b.rgb.ansi16(b.hsv.rgb(t),t[2])},b.rgb.ansi256=function(t){var e=t[0],o=t[1],p=t[2];return e===o&&o===p?e<8?16:e>248?231:Math.round((e-8)/247*24)+232:16+36*Math.round(e/255*5)+6*Math.round(o/255*5)+Math.round(p/255*5)},b.ansi16.rgb=function(t){var e=t%10;if(0===e||7===e)return t>50&&(e+=3.5),[e=e/10.5*255,e,e];var o=.5*(1+~~(t>50));return[(1&e)*o*255,(e>>1&1)*o*255,(e>>2&1)*o*255]},b.ansi256.rgb=function(t){if(t>=232){var e=10*(t-232)+8;return[e,e,e]}var o;return t-=16,[Math.floor(t/36)/5*255,Math.floor((o=t%36)/6)/5*255,o%6/5*255]},b.rgb.hex=function(t){var e=(((255&Math.round(t[0]))<<16)+((255&Math.round(t[1]))<<8)+(255&Math.round(t[2]))).toString(16).toUpperCase();return"000000".substring(e.length)+e},b.hex.rgb=function(t){var e=t.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!e)return[0,0,0];var o=e[0];3===e[0].length&&(o=o.split("").map((function(t){return t+t})).join(""));var p=parseInt(o,16);return[p>>16&255,p>>8&255,255&p]},b.rgb.hcg=function(t){var e,o=t[0]/255,p=t[1]/255,b=t[2]/255,n=Math.max(Math.max(o,p),b),M=Math.min(Math.min(o,p),b),z=n-M;return e=z<=0?0:n===o?(p-b)/z%6:n===p?2+(b-o)/z:4+(o-p)/z+4,e/=6,[360*(e%=1),100*z,100*(z<1?M/(1-z):0)]},b.hsl.hcg=function(t){var e=t[1]/100,o=t[2]/100,p=1,b=0;return(p=o<.5?2*e*o:2*e*(1-o))<1&&(b=(o-.5*p)/(1-p)),[t[0],100*p,100*b]},b.hsv.hcg=function(t){var e=t[1]/100,o=t[2]/100,p=e*o,b=0;return p<1&&(b=(o-p)/(1-p)),[t[0],100*p,100*b]},b.hcg.rgb=function(t){var e=t[0]/360,o=t[1]/100,p=t[2]/100;if(0===o)return[255*p,255*p,255*p];var b=[0,0,0],n=e%1*6,M=n%1,z=1-M,c=0;switch(Math.floor(n)){case 0:b[0]=1,b[1]=M,b[2]=0;break;case 1:b[0]=z,b[1]=1,b[2]=0;break;case 2:b[0]=0,b[1]=1,b[2]=M;break;case 3:b[0]=0,b[1]=z,b[2]=1;break;case 4:b[0]=M,b[1]=0,b[2]=1;break;default:b[0]=1,b[1]=0,b[2]=z}return c=(1-o)*p,[255*(o*b[0]+c),255*(o*b[1]+c),255*(o*b[2]+c)]},b.hcg.hsv=function(t){var e=t[1]/100,o=e+t[2]/100*(1-e),p=0;return o>0&&(p=e/o),[t[0],100*p,100*o]},b.hcg.hsl=function(t){var e=t[1]/100,o=t[2]/100*(1-e)+.5*e,p=0;return o>0&&o<.5?p=e/(2*o):o>=.5&&o<1&&(p=e/(2*(1-o))),[t[0],100*p,100*o]},b.hcg.hwb=function(t){var e=t[1]/100,o=e+t[2]/100*(1-e);return[t[0],100*(o-e),100*(1-o)]},b.hwb.hcg=function(t){var e=t[1]/100,o=1-t[2]/100,p=o-e,b=0;return p<1&&(b=(o-p)/(1-p)),[t[0],100*p,100*b]},b.apple.rgb=function(t){return[t[0]/65535*255,t[1]/65535*255,t[2]/65535*255]},b.rgb.apple=function(t){return[t[0]/255*65535,t[1]/255*65535,t[2]/255*65535]},b.gray.rgb=function(t){return[t[0]/100*255,t[0]/100*255,t[0]/100*255]},b.gray.hsl=b.gray.hsv=function(t){return[0,0,t[0]]},b.gray.hwb=function(t){return[0,100,t[0]]},b.gray.cmyk=function(t){return[0,0,0,t[0]]},b.gray.lab=function(t){return[t[0],0,0]},b.gray.hex=function(t){var e=255&Math.round(t[0]/100*255),o=((e<<16)+(e<<8)+e).toString(16).toUpperCase();return"000000".substring(o.length)+o},b.rgb.gray=function(t){return[(t[0]+t[1]+t[2])/3/255*100]}}));function n(){for(var t={},e=Object.keys(b),o=e.length,p=0;p1&&(e=Array.prototype.slice.call(arguments)),t(e))};return"conversion"in t&&(e.conversion=t.conversion),e}function O(t){var e=function(e){if(null==e)return e;arguments.length>1&&(e=Array.prototype.slice.call(arguments));var o=t(e);if("object"==typeof o)for(var p=o.length,b=0;b=0&&e<1?w(Math.round(255*e)):"")}function g(t,e){return e<1||t[3]&&t[3]<1?v(t,e):"rgb("+t[0]+", "+t[1]+", "+t[2]+")"}function v(t,e){return void 0===e&&(e=void 0!==t[3]?t[3]:1),"rgba("+t[0]+", "+t[1]+", "+t[2]+", "+e+")"}function R(t,e){return e<1||t[3]&&t[3]<1?y(t,e):"rgb("+Math.round(t[0]/255*100)+"%, "+Math.round(t[1]/255*100)+"%, "+Math.round(t[2]/255*100)+"%)"}function y(t,e){return"rgba("+Math.round(t[0]/255*100)+"%, "+Math.round(t[1]/255*100)+"%, "+Math.round(t[2]/255*100)+"%, "+(e||t[3]||1)+")"}function B(t,e){return e<1||t[3]&&t[3]<1?L(t,e):"hsl("+t[0]+", "+t[1]+"%, "+t[2]+"%)"}function L(t,e){return void 0===e&&(e=void 0!==t[3]?t[3]:1),"hsla("+t[0]+", "+t[1]+"%, "+t[2]+"%, "+e+")"}function X(t,e){return void 0===e&&(e=void 0!==t[3]?t[3]:1),"hwb("+t[0]+", "+t[1]+"%, "+t[2]+"%"+(void 0!==e&&1!==e?", "+e:"")+")"}function _(t){return x[t.slice(0,3)]}function N(t,e,o){return Math.min(Math.max(e,t),o)}function w(t){var e=t.toString(16).toUpperCase();return e.length<2?"0"+e:e}var x={};for(var T in l)x[l[T]]=T;var C=function(t){return t instanceof C?t:this instanceof C?(this.valid=!1,this.values={rgb:[0,0,0],hsl:[0,0,0],hsv:[0,0,0],hwb:[0,0,0],cmyk:[0,0,0,0],alpha:1},void("string"==typeof t?(e=d.getRgba(t))?this.setValues("rgb",e):(e=d.getHsla(t))?this.setValues("hsl",e):(e=d.getHwb(t))&&this.setValues("hwb",e):"object"==typeof t&&(void 0!==(e=t).r||void 0!==e.red?this.setValues("rgb",e):void 0!==e.l||void 0!==e.lightness?this.setValues("hsl",e):void 0!==e.v||void 0!==e.value?this.setValues("hsv",e):void 0!==e.w||void 0!==e.whiteness?this.setValues("hwb",e):void 0===e.c&&void 0===e.cyan||this.setValues("cmyk",e)))):new C(t);var e};C.prototype={isValid:function(){return this.valid},rgb:function(){return this.setSpace("rgb",arguments)},hsl:function(){return this.setSpace("hsl",arguments)},hsv:function(){return this.setSpace("hsv",arguments)},hwb:function(){return this.setSpace("hwb",arguments)},cmyk:function(){return this.setSpace("cmyk",arguments)},rgbArray:function(){return this.values.rgb},hslArray:function(){return this.values.hsl},hsvArray:function(){return this.values.hsv},hwbArray:function(){var t=this.values;return 1!==t.alpha?t.hwb.concat([t.alpha]):t.hwb},cmykArray:function(){return this.values.cmyk},rgbaArray:function(){var t=this.values;return t.rgb.concat([t.alpha])},hslaArray:function(){var t=this.values;return t.hsl.concat([t.alpha])},alpha:function(t){return void 0===t?this.values.alpha:(this.setValues("alpha",t),this)},red:function(t){return this.setChannel("rgb",0,t)},green:function(t){return this.setChannel("rgb",1,t)},blue:function(t){return this.setChannel("rgb",2,t)},hue:function(t){return t&&(t=(t%=360)<0?360+t:t),this.setChannel("hsl",0,t)},saturation:function(t){return this.setChannel("hsl",1,t)},lightness:function(t){return this.setChannel("hsl",2,t)},saturationv:function(t){return this.setChannel("hsv",1,t)},whiteness:function(t){return this.setChannel("hwb",1,t)},blackness:function(t){return this.setChannel("hwb",2,t)},value:function(t){return this.setChannel("hsv",2,t)},cyan:function(t){return this.setChannel("cmyk",0,t)},magenta:function(t){return this.setChannel("cmyk",1,t)},yellow:function(t){return this.setChannel("cmyk",2,t)},black:function(t){return this.setChannel("cmyk",3,t)},hexString:function(){return d.hexString(this.values.rgb)},rgbString:function(){return d.rgbString(this.values.rgb,this.values.alpha)},rgbaString:function(){return d.rgbaString(this.values.rgb,this.values.alpha)},percentString:function(){return d.percentString(this.values.rgb,this.values.alpha)},hslString:function(){return d.hslString(this.values.hsl,this.values.alpha)},hslaString:function(){return d.hslaString(this.values.hsl,this.values.alpha)},hwbString:function(){return d.hwbString(this.values.hwb,this.values.alpha)},keyword:function(){return d.keyword(this.values.rgb,this.values.alpha)},rgbNumber:function(){var t=this.values.rgb;return t[0]<<16|t[1]<<8|t[2]},luminosity:function(){for(var t=this.values.rgb,e=[],o=0;oo?(e+.05)/(o+.05):(o+.05)/(e+.05)},level:function(t){var e=this.contrast(t);return e>=7.1?"AAA":e>=4.5?"AA":""},dark:function(){var t=this.values.rgb;return(299*t[0]+587*t[1]+114*t[2])/1e3<128},light:function(){return!this.dark()},negate:function(){for(var t=[],e=0;e<3;e++)t[e]=255-this.values.rgb[e];return this.setValues("rgb",t),this},lighten:function(t){var e=this.values.hsl;return e[2]+=e[2]*t,this.setValues("hsl",e),this},darken:function(t){var e=this.values.hsl;return e[2]-=e[2]*t,this.setValues("hsl",e),this},saturate:function(t){var e=this.values.hsl;return e[1]+=e[1]*t,this.setValues("hsl",e),this},desaturate:function(t){var e=this.values.hsl;return e[1]-=e[1]*t,this.setValues("hsl",e),this},whiten:function(t){var e=this.values.hwb;return e[1]+=e[1]*t,this.setValues("hwb",e),this},blacken:function(t){var e=this.values.hwb;return e[2]+=e[2]*t,this.setValues("hwb",e),this},greyscale:function(){var t=this.values.rgb,e=.3*t[0]+.59*t[1]+.11*t[2];return this.setValues("rgb",[e,e,e]),this},clearer:function(t){var e=this.values.alpha;return this.setValues("alpha",e-e*t),this},opaquer:function(t){var e=this.values.alpha;return this.setValues("alpha",e+e*t),this},rotate:function(t){var e=this.values.hsl,o=(e[0]+t)%360;return e[0]=o<0?360+o:o,this.setValues("hsl",e),this},mix:function(t,e){var o=this,p=t,b=void 0===e?.5:e,n=2*b-1,M=o.alpha()-p.alpha(),z=((n*M==-1?n:(n+M)/(1+n*M))+1)/2,c=1-z;return this.rgb(z*o.red()+c*p.red(),z*o.green()+c*p.green(),z*o.blue()+c*p.blue()).alpha(o.alpha()*b+p.alpha()*(1-b))},toJSON:function(){return this.rgb()},clone:function(){var t,e,o=new C,p=this.values,b=o.values;for(var n in p)p.hasOwnProperty(n)&&(t=p[n],"[object Array]"===(e={}.toString.call(t))?b[n]=t.slice(0):"[object Number]"===e&&(b[n]=t));return o}},C.prototype.spaces={rgb:["red","green","blue"],hsl:["hue","saturation","lightness"],hsv:["hue","saturation","value"],hwb:["hue","whiteness","blackness"],cmyk:["cyan","magenta","yellow","black"]},C.prototype.maxes={rgb:[255,255,255],hsl:[360,100,100],hsv:[360,100,100],hwb:[360,100,100],cmyk:[100,100,100,100]},C.prototype.getValues=function(t){for(var e=this.values,o={},p=0;p=0;b--)e.call(o,t[b],b);else for(b=0;b=1?t:-(Math.sqrt(1-t*t)-1)},easeOutCirc:function(t){return Math.sqrt(1-(t-=1)*t)},easeInOutCirc:function(t){return(t/=.5)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)},easeInElastic:function(t){var e=1.70158,o=0,p=1;return 0===t?0:1===t?1:(o||(o=.3),p<1?(p=1,e=o/4):e=o/(2*Math.PI)*Math.asin(1/p),-p*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/o))},easeOutElastic:function(t){var e=1.70158,o=0,p=1;return 0===t?0:1===t?1:(o||(o=.3),p<1?(p=1,e=o/4):e=o/(2*Math.PI)*Math.asin(1/p),p*Math.pow(2,-10*t)*Math.sin((t-e)*(2*Math.PI)/o)+1)},easeInOutElastic:function(t){var e=1.70158,o=0,p=1;return 0===t?0:2==(t/=.5)?1:(o||(o=.45),p<1?(p=1,e=o/4):e=o/(2*Math.PI)*Math.asin(1/p),t<1?p*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/o)*-.5:p*Math.pow(2,-10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/o)*.5+1)},easeInBack:function(t){var e=1.70158;return t*t*((e+1)*t-e)},easeOutBack:function(t){var e=1.70158;return(t-=1)*t*((e+1)*t+e)+1},easeInOutBack:function(t){var e=1.70158;return(t/=.5)<1?t*t*((1+(e*=1.525))*t-e)*.5:.5*((t-=2)*t*((1+(e*=1.525))*t+e)+2)},easeInBounce:function(t){return 1-j.easeOutBounce(1-t)},easeOutBounce:function(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375},easeInOutBounce:function(t){return t<.5?.5*j.easeInBounce(2*t):.5*j.easeOutBounce(2*t-1)+.5}},I={effects:j};P.easingEffects=j;var F=Math.PI,H=F/180,U=2*F,V=F/2,$=F/4,Y=2*F/3,G={clear:function(t){t.ctx.clearRect(0,0,t.width,t.height)},roundedRect:function(t,e,o,p,b,n){if(n){var M=Math.min(n,b/2,p/2),z=e+M,c=o+M,r=e+p-M,i=o+b-M;t.moveTo(e,c),ze.left-o&&t.xe.top-o&&t.y0&&t.requestAnimationFrame()},advance:function(){for(var t,e,o,p,b=this.animations,n=0;n=o?(zt.callback(t.onAnimationComplete,[t],e),e.animating=!1,b.splice(n,1)):++n}},qt=zt.options.resolve,ht=["push","pop","shift","splice","unshift"];function Wt(t,e){t._chartjs?t._chartjs.listeners.push(e):(Object.defineProperty(t,"_chartjs",{configurable:!0,enumerable:!1,value:{listeners:[e]}}),ht.forEach((function(e){var o="onData"+e.charAt(0).toUpperCase()+e.slice(1),p=t[e];Object.defineProperty(t,e,{configurable:!0,enumerable:!1,value:function(){var e=Array.prototype.slice.call(arguments),b=p.apply(this,e);return zt.each(t._chartjs.listeners,(function(t){"function"==typeof t[o]&&t[o].apply(t,e)})),b}})})))}function mt(t,e){var o=t._chartjs;if(o){var p=o.listeners,b=p.indexOf(e);-1!==b&&p.splice(b,1),p.length>0||(ht.forEach((function(e){delete t[e]})),delete t._chartjs)}}var gt=function(t,e){this.initialize(t,e)};zt.extend(gt.prototype,{datasetElementType:null,dataElementType:null,_datasetElementOptions:["backgroundColor","borderCapStyle","borderColor","borderDash","borderDashOffset","borderJoinStyle","borderWidth"],_dataElementOptions:["backgroundColor","borderColor","borderWidth","pointStyle"],initialize:function(t,e){var o=this;o.chart=t,o.index=e,o.linkScales(),o.addElements(),o._type=o.getMeta().type},updateIndex:function(t){this.index=t},linkScales:function(){var t=this,e=t.getMeta(),o=t.chart,p=o.scales,b=t.getDataset(),n=o.options.scales;null!==e.xAxisID&&e.xAxisID in p&&!b.xAxisID||(e.xAxisID=b.xAxisID||n.xAxes[0].id),null!==e.yAxisID&&e.yAxisID in p&&!b.yAxisID||(e.yAxisID=b.yAxisID||n.yAxes[0].id)},getDataset:function(){return this.chart.data.datasets[this.index]},getMeta:function(){return this.chart.getDatasetMeta(this.index)},getScaleForId:function(t){return this.chart.scales[t]},_getValueScaleId:function(){return this.getMeta().yAxisID},_getIndexScaleId:function(){return this.getMeta().xAxisID},_getValueScale:function(){return this.getScaleForId(this._getValueScaleId())},_getIndexScale:function(){return this.getScaleForId(this._getIndexScaleId())},reset:function(){this._update(!0)},destroy:function(){this._data&&mt(this._data,this)},createMetaDataset:function(){var t=this,e=t.datasetElementType;return e&&new e({_chart:t.chart,_datasetIndex:t.index})},createMetaData:function(t){var e=this,o=e.dataElementType;return o&&new o({_chart:e.chart,_datasetIndex:e.index,_index:t})},addElements:function(){var t,e,o=this,p=o.getMeta(),b=o.getDataset().data||[],n=p.data;for(t=0,e=b.length;tp&&t.insertElements(p,b-p)},insertElements:function(t,e){for(var o=0;ob?(n=b/e.innerRadius,t.arc(M,z,e.innerRadius-b,p+n,o-n,!0)):t.arc(M,z,b,p+Math.PI/2,o-Math.PI/2),t.closePath(),t.clip()}function Bt(t,e,o,p){var b,n=o.endAngle;for(p&&(o.endAngle=o.startAngle+Rt,yt(t,o),o.endAngle=n,o.endAngle===o.startAngle&&o.fullCircles&&(o.endAngle+=Rt,o.fullCircles--)),t.beginPath(),t.arc(o.x,o.y,o.innerRadius,o.startAngle+Rt,o.startAngle,!0),b=0;bz;)b-=Rt;for(;b=M&&b<=z,r=n>=o.innerRadius&&n<=o.outerRadius;return c&&r}return!1},getCenterPoint:function(){var t=this._view,e=(t.startAngle+t.endAngle)/2,o=(t.innerRadius+t.outerRadius)/2;return{x:t.x+Math.cos(e)*o,y:t.y+Math.sin(e)*o}},getArea:function(){var t=this._view;return Math.PI*((t.endAngle-t.startAngle)/(2*Math.PI))*(Math.pow(t.outerRadius,2)-Math.pow(t.innerRadius,2))},tooltipPosition:function(){var t=this._view,e=t.startAngle+(t.endAngle-t.startAngle)/2,o=(t.outerRadius-t.innerRadius)/2+t.innerRadius;return{x:t.x+Math.cos(e)*o,y:t.y+Math.sin(e)*o}},draw:function(){var t,e=this._chart.ctx,o=this._view,p="inner"===o.borderAlign?.33:0,b={x:o.x,y:o.y,innerRadius:o.innerRadius,outerRadius:Math.max(o.outerRadius-p,0),pixelMargin:p,startAngle:o.startAngle,endAngle:o.endAngle,fullCircles:Math.floor(o.circumference/Rt)};if(e.save(),e.fillStyle=o.backgroundColor,e.strokeStyle=o.borderColor,b.fullCircles){for(b.endAngle=b.startAngle+Rt,e.beginPath(),e.arc(b.x,b.y,b.outerRadius,b.startAngle,b.endAngle),e.arc(b.x,b.y,b.innerRadius,b.endAngle,b.startAngle,!0),e.closePath(),t=0;tt.x&&(e=jt(e,"left","right")):t.baseo?o:p,r:c.right||b<0?0:b>e?e:b,b:c.bottom||n<0?0:n>o?o:n,l:c.left||M<0?0:M>e?e:M}}function Ht(t){var e=Pt(t),o=e.right-e.left,p=e.bottom-e.top,b=Ft(t,o/2,p/2);return{outer:{x:e.left,y:e.top,w:o,h:p},inner:{x:e.left+b.l,y:e.top+b.t,w:o-b.l-b.r,h:p-b.t-b.b}}}function Ut(t,e,o){var p=null===e,b=null===o,n=!(!t||p&&b)&&Pt(t);return n&&(p||e>=n.left&&e<=n.right)&&(b||o>=n.top&&o<=n.bottom)}Q._set("global",{elements:{rectangle:{backgroundColor:Et,borderColor:Et,borderSkipped:"bottom",borderWidth:0}}});var Vt=dt.extend({_type:"rectangle",draw:function(){var t=this._chart.ctx,e=this._view,o=Ht(e),p=o.outer,b=o.inner;t.fillStyle=e.backgroundColor,t.fillRect(p.x,p.y,p.w,p.h),p.w===b.w&&p.h===b.h||(t.save(),t.beginPath(),t.rect(p.x,p.y,p.w,p.h),t.clip(),t.fillStyle=e.borderColor,t.rect(b.x,b.y,b.w,b.h),t.fill("evenodd"),t.restore())},height:function(){var t=this._view;return t.base-t.y},inRange:function(t,e){return Ut(this._view,t,e)},inLabelRange:function(t,e){var o=this._view;return Dt(o)?Ut(o,t,null):Ut(o,null,e)},inXRange:function(t){return Ut(this._view,t,null)},inYRange:function(t){return Ut(this._view,null,t)},getCenterPoint:function(){var t,e,o=this._view;return Dt(o)?(t=o.x,e=(o.y+o.base)/2):(t=(o.x+o.base)/2,e=o.y),{x:t,y:e}},getArea:function(){var t=this._view;return Dt(t)?t.width*Math.abs(t.y-t.base):t.height*Math.abs(t.x-t.base)},tooltipPosition:function(){var t=this._view;return{x:t.x,y:t.y}}}),$t={},Yt=Xt,Gt=wt,Jt=kt,Kt=Vt;$t.Arc=Yt,$t.Line=Gt,$t.Point=Jt,$t.Rectangle=Kt;var Qt=zt._deprecated,Zt=zt.valueOrDefault;function te(t,e){var o,p,b,n,M=t._length;for(b=1,n=e.length;b0?Math.min(M,Math.abs(p-o)):M,o=p;return M}function ee(t,e,o){var p,b,n=o.barThickness,M=e.stackCount,z=e.pixels[t],c=zt.isNullOrUndef(n)?te(e.scale,e.pixels):-1;return zt.isNullOrUndef(n)?(p=c*o.categoryPercentage,b=o.barPercentage):(p=n*M,b=1),{chunk:p/M,ratio:b,start:z-p/2}}function oe(t,e,o){var p,b=e.pixels,n=b[t],M=t>0?b[t-1]:null,z=t=0&&A.min>=0?A.min:A.max,W=void 0===A.start?A.end:A.max>=0&&A.min>=0?A.max-A.min:A.min-A.max,m=d.length;if(f||void 0===f&&void 0!==q)for(p=0;p=0&&r.max>=0?r.max:r.min,(A.min<0&&n<0||A.max>=0&&n>0)&&(h+=n));return M=O.getPixelForValue(h),c=(z=O.getPixelForValue(h+W))-M,void 0!==u&&Math.abs(c)=0&&!s||W<0&&s?M-u:M+u),{size:c,base:M,head:z,center:z+c/2}},calculateBarIndexPixels:function(t,e,o,p){var b=this,n="flex"===p.barThickness?oe(e,o,p):ee(e,o,p),M=b.getStackIndex(t,b.getMeta().stack),z=n.start+n.chunk*M+n.chunk/2,c=Math.min(Zt(p.maxBarThickness,1/0),n.chunk*n.ratio);return{base:z-c/2,head:z+c/2,center:z,size:c}},draw:function(){var t=this,e=t.chart,o=t._getValueScale(),p=t.getMeta().data,b=t.getDataset(),n=p.length,M=0;for(zt.canvas.clipArea(e.ctx,e.chartArea);M=ce?-re:f<-ce?re:0)+A,h=Math.cos(f),W=Math.sin(f),m=Math.cos(q),g=Math.sin(q),v=f<=0&&q>=0||q>=re,R=f<=ie&&q>=ie||q>=re+ie,y=f<=-ie&&q>=-ie||q>=ce+ie,B=f===-ce||q>=ce?-1:Math.min(h,h*d,m,m*d),L=y?-1:Math.min(W,W*d,g,g*d),X=v?1:Math.max(h,h*d,m,m*d),_=R?1:Math.max(W,W*d,g,g*d);r=(X-B)/2,i=(_-L)/2,a=-(X+B)/2,O=-(_+L)/2}for(p=0,b=l.length;p0&&!isNaN(t)?re*(Math.abs(t)/e):0},getMaxBorderWidth:function(t){var e,o,p,b,n,M,z,c,r=this,i=0,a=r.chart;if(!t)for(e=0,o=a.data.datasets.length;e(i=z>i?z:i)?c:i);return i},setHoverStyle:function(t){var e=t._model,o=t._options,p=zt.getHoverColor;t.$previousStyle={backgroundColor:e.backgroundColor,borderColor:e.borderColor,borderWidth:e.borderWidth},e.backgroundColor=ze(o.hoverBackgroundColor,p(o.backgroundColor)),e.borderColor=ze(o.hoverBorderColor,p(o.borderColor)),e.borderWidth=ze(o.hoverBorderWidth,o.borderWidth)},_getRingWeightOffset:function(t){for(var e=0,o=0;o0&&de(r[t-1]._model,c)&&(o.controlPointPreviousX=i(o.controlPointPreviousX,c.left,c.right),o.controlPointPreviousY=i(o.controlPointPreviousY,c.top,c.bottom)),t0&&(n=t.getDatasetMeta(n[0]._datasetIndex).data),n},"x-axis":function(t,e){return Ne(t,e,{intersect:!1})},point:function(t,e){return Le(t,ye(e,t))},nearest:function(t,e,o){var p=ye(e,t);o.axis=o.axis||"xy";var b=_e(o.axis);return Xe(t,p,o.intersect,b)},x:function(t,e,o){var p=ye(e,t),b=[],n=!1;return Be(t,(function(t){t.inXRange(p.x)&&b.push(t),t.inRange(p.x,p.y)&&(n=!0)})),o.intersect&&!n&&(b=[]),b},y:function(t,e,o){var p=ye(e,t),b=[],n=!1;return Be(t,(function(t){t.inYRange(p.y)&&b.push(t),t.inRange(p.x,p.y)&&(n=!0)})),o.intersect&&!n&&(b=[]),b}}},xe=zt.extend;function Te(t,e){return zt.where(t,(function(t){return t.pos===e}))}function Ce(t,e){return t.sort((function(t,o){var p=e?o:t,b=e?t:o;return p.weight===b.weight?p.index-b.index:p.weight-b.weight}))}function Se(t){var e,o,p,b=[];for(e=0,o=(t||[]).length;e div {\r\n\tposition: absolute;\r\n\twidth: 1000000px;\r\n\theight: 1000000px;\r\n\tleft: 0;\r\n\ttop: 0;\r\n}\r\n\r\n.chartjs-size-monitor-shrink > div {\r\n\tposition: absolute;\r\n\twidth: 200%;\r\n\theight: 200%;\r\n\tleft: 0;\r\n\ttop: 0;\r\n}\r\n",Ye=o(Object.freeze({__proto__:null,default:$e})),Ge="$chartjs",Je="chartjs-",Ke=Je+"size-monitor",Qe=Je+"render-monitor",Ze=Je+"render-animation",to=["animationstart","webkitAnimationStart"],eo={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"};function oo(t,e){var o=zt.getStyle(t,e),p=o&&o.match(/^(\d+)(\.\d+)?px$/);return p?Number(p[1]):void 0}function po(t,e){var o=t.style,p=t.getAttribute("height"),b=t.getAttribute("width");if(t[Ge]={initial:{height:p,width:b,style:{display:o.display,height:o.height,width:o.width}}},o.display=o.display||"block",null===b||""===b){var n=oo(t,"width");void 0!==n&&(t.width=n)}if(null===p||""===p)if(""===t.style.height)t.height=t.width/(e.options.aspectRatio||2);else{var M=oo(t,"height");void 0!==n&&(t.height=M)}return t}var bo=function(){var t=!1;try{var e=Object.defineProperty({},"passive",{get:function(){t=!0}});window.addEventListener("e",null,e)}catch(t){}return t}(),no=!!bo&&{passive:!0};function Mo(t,e,o){t.addEventListener(e,o,no)}function zo(t,e,o){t.removeEventListener(e,o,no)}function co(t,e,o,p,b){return{type:t,chart:e,native:b||null,x:void 0!==o?o:null,y:void 0!==p?p:null}}function ro(t,e){var o=eo[t.type]||t.type,p=zt.getRelativePosition(t,e);return co(o,e,p.x,p.y,t)}function io(t,e){var o=!1,p=[];return function(){p=Array.prototype.slice.call(arguments),e=e||this,o||(o=!0,zt.requestAnimFrame.call(window,(function(){o=!1,t.apply(e,p)})))}}function ao(t){var e=document.createElement("div");return e.className=t||"",e}function Oo(t){var e=1e6,o=ao(Ke),p=ao(Ke+"-expand"),b=ao(Ke+"-shrink");p.appendChild(ao()),b.appendChild(ao()),o.appendChild(p),o.appendChild(b),o._reset=function(){p.scrollLeft=e,p.scrollTop=e,b.scrollLeft=e,b.scrollTop=e};var n=function(){o._reset(),t()};return Mo(p,"scroll",n.bind(p,"expand")),Mo(b,"scroll",n.bind(b,"shrink")),o}function so(t,e){var o=t[Ge]||(t[Ge]={}),p=o.renderProxy=function(t){t.animationName===Ze&&e()};zt.each(to,(function(e){Mo(t,e,p)})),o.reflow=!!t.offsetParent,t.classList.add(Qe)}function lo(t){var e=t[Ge]||{},o=e.renderProxy;o&&(zt.each(to,(function(e){zo(t,e,o)})),delete e.renderProxy),t.classList.remove(Qe)}function Ao(t,e,o){var p=t[Ge]||(t[Ge]={}),b=p.resizer=Oo(io((function(){if(p.resizer){var b=o.options.maintainAspectRatio&&t.parentNode,n=b?b.clientWidth:0;e(co("resize",o)),b&&b.clientWidth0){var n=t[0];n.label?o=n.label:n.xLabel?o=n.xLabel:b>0&&n.index-1?t.split("\n"):t}function Xo(t){var e=t._xScale,o=t._yScale||t._scale,p=t._index,b=t._datasetIndex,n=t._chart.getDatasetMeta(b).controller,M=n._getIndexScale(),z=n._getValueScale();return{xLabel:e?e.getLabelForIndex(p,b):"",yLabel:o?o.getLabelForIndex(p,b):"",label:M?""+M.getLabelForIndex(p,b):"",value:z?""+z.getLabelForIndex(p,b):"",index:p,datasetIndex:b,x:t._model.x,y:t._model.y}}function _o(t){var e=Q.global;return{xPadding:t.xPadding,yPadding:t.yPadding,xAlign:t.xAlign,yAlign:t.yAlign,rtl:t.rtl,textDirection:t.textDirection,bodyFontColor:t.bodyFontColor,_bodyFontFamily:vo(t.bodyFontFamily,e.defaultFontFamily),_bodyFontStyle:vo(t.bodyFontStyle,e.defaultFontStyle),_bodyAlign:t.bodyAlign,bodyFontSize:vo(t.bodyFontSize,e.defaultFontSize),bodySpacing:t.bodySpacing,titleFontColor:t.titleFontColor,_titleFontFamily:vo(t.titleFontFamily,e.defaultFontFamily),_titleFontStyle:vo(t.titleFontStyle,e.defaultFontStyle),titleFontSize:vo(t.titleFontSize,e.defaultFontSize),_titleAlign:t.titleAlign,titleSpacing:t.titleSpacing,titleMarginBottom:t.titleMarginBottom,footerFontColor:t.footerFontColor,_footerFontFamily:vo(t.footerFontFamily,e.defaultFontFamily),_footerFontStyle:vo(t.footerFontStyle,e.defaultFontStyle),footerFontSize:vo(t.footerFontSize,e.defaultFontSize),_footerAlign:t.footerAlign,footerSpacing:t.footerSpacing,footerMarginTop:t.footerMarginTop,caretSize:t.caretSize,cornerRadius:t.cornerRadius,backgroundColor:t.backgroundColor,opacity:0,legendColorBackground:t.multiKeyBackground,displayColors:t.displayColors,borderColor:t.borderColor,borderWidth:t.borderWidth}}function No(t,e){var o=t._chart.ctx,p=2*e.yPadding,b=0,n=e.body,M=n.reduce((function(t,e){return t+e.before.length+e.lines.length+e.after.length}),0);M+=e.beforeBody.length+e.afterBody.length;var z=e.title.length,c=e.footer.length,r=e.titleFontSize,i=e.bodyFontSize,a=e.footerFontSize;p+=z*r,p+=z?(z-1)*e.titleSpacing:0,p+=z?e.titleMarginBottom:0,p+=M*i,p+=M?(M-1)*e.bodySpacing:0,p+=c?e.footerMarginTop:0,p+=c*a,p+=c?(c-1)*e.footerSpacing:0;var O=0,s=function(t){b=Math.max(b,o.measureText(t).width+O)};return o.font=zt.fontString(r,e._titleFontStyle,e._titleFontFamily),zt.each(e.title,s),o.font=zt.fontString(i,e._bodyFontStyle,e._bodyFontFamily),zt.each(e.beforeBody.concat(e.afterBody),s),O=e.displayColors?i+2:0,zt.each(n,(function(t){zt.each(t.before,s),zt.each(t.lines,s),zt.each(t.after,s)})),O=0,o.font=zt.fontString(a,e._footerFontStyle,e._footerFontFamily),zt.each(e.footer,s),{width:b+=2*e.xPadding,height:p}}function wo(t,e){var o,p,b,n,M,z=t._model,c=t._chart,r=t._chart.chartArea,i="center",a="center";z.yc.height-e.height&&(a="bottom");var O=(r.left+r.right)/2,s=(r.top+r.bottom)/2;"center"===a?(o=function(t){return t<=O},p=function(t){return t>O}):(o=function(t){return t<=e.width/2},p=function(t){return t>=c.width-e.width/2}),b=function(t){return t+e.width+z.caretSize+z.caretPadding>c.width},n=function(t){return t-e.width-z.caretSize-z.caretPadding<0},M=function(t){return t<=s?"top":"bottom"},o(z.x)?(i="left",b(z.x)&&(i="center",a=M(z.y))):p(z.x)&&(i="right",n(z.x)&&(i="center",a=M(z.y)));var l=t._options;return{xAlign:l.xAlign?l.xAlign:i,yAlign:l.yAlign?l.yAlign:a}}function xo(t,e,o,p){var b=t.x,n=t.y,M=t.caretSize,z=t.caretPadding,c=t.cornerRadius,r=o.xAlign,i=o.yAlign,a=M+z,O=c+z;return"right"===r?b-=e.width:"center"===r&&((b-=e.width/2)+e.width>p.width&&(b=p.width-e.width),b<0&&(b=0)),"top"===i?n+=a:n-="bottom"===i?e.height+a:e.height/2,"center"===i?"left"===r?b+=a:"right"===r&&(b-=a):"left"===r?b-=O:"right"===r&&(b+=O),{x:b,y:n}}function To(t,e){return"center"===e?t.x+t.width/2:"right"===e?t.x+t.width-t.xPadding:t.x+t.xPadding}function Co(t){return Bo([],Lo(t))}var So=dt.extend({initialize:function(){this._model=_o(this._options),this._lastActive=[]},getTitle:function(){var t=this,e=t._options.callbacks,o=e.beforeTitle.apply(t,arguments),p=e.title.apply(t,arguments),b=e.afterTitle.apply(t,arguments),n=[];return n=Bo(n,Lo(o)),n=Bo(n,Lo(p)),n=Bo(n,Lo(b))},getBeforeBody:function(){return Co(this._options.callbacks.beforeBody.apply(this,arguments))},getBody:function(t,e){var o=this,p=o._options.callbacks,b=[];return zt.each(t,(function(t){var n={before:[],lines:[],after:[]};Bo(n.before,Lo(p.beforeLabel.call(o,t,e))),Bo(n.lines,p.label.call(o,t,e)),Bo(n.after,Lo(p.afterLabel.call(o,t,e))),b.push(n)})),b},getAfterBody:function(){return Co(this._options.callbacks.afterBody.apply(this,arguments))},getFooter:function(){var t=this,e=t._options.callbacks,o=e.beforeFooter.apply(t,arguments),p=e.footer.apply(t,arguments),b=e.afterFooter.apply(t,arguments),n=[];return n=Bo(n,Lo(o)),n=Bo(n,Lo(p)),n=Bo(n,Lo(b))},update:function(t){var e,o,p=this,b=p._options,n=p._model,M=p._model=_o(b),z=p._active,c=p._data,r={xAlign:n.xAlign,yAlign:n.yAlign},i={x:n.x,y:n.y},a={width:n.width,height:n.height},O={x:n.caretX,y:n.caretY};if(z.length){M.opacity=1;var s=[],l=[];O=yo[b.position].call(p,z,p._eventPosition);var d=[];for(e=0,o=z.length;e0&&o.stroke()},draw:function(){var t=this._chart.ctx,e=this._view;if(0!==e.opacity){var o={width:e.width,height:e.height},p={x:e.x,y:e.y},b=Math.abs(e.opacity<.001)?0:e.opacity,n=e.title.length||e.beforeBody.length||e.body.length||e.afterBody.length||e.footer.length;this._options.enabled&&n&&(t.save(),t.globalAlpha=b,this.drawBackground(p,e,t,o),p.y+=e.yPadding,zt.rtl.overrideTextDirection(t,e.textDirection),this.drawTitle(p,e,t),this.drawBody(p,e,t),this.drawFooter(p,e,t),zt.rtl.restoreTextDirection(t,e.textDirection),t.restore())}},handleEvent:function(t){var e=this,o=e._options,p=!1;return e._lastActive=e._lastActive||[],"mouseout"===t.type?e._active=[]:(e._active=e._chart.getElementsAtEventForMode(t,o.mode,o),o.reverse&&e._active.reverse()),(p=!zt.arrayEquals(e._active,e._lastActive))&&(e._lastActive=e._active,(o.enabled||o.custom)&&(e._eventPosition={x:t.x,y:t.y},e.update(!0),e.pivot())),p}}),ko=yo,Eo=So;Eo.positioners=ko;var Do=zt.valueOrDefault;function Po(){return zt.merge(Object.create(null),[].slice.call(arguments),{merger:function(t,e,o,p){if("xAxes"===t||"yAxes"===t){var b,n,M,z=o[t].length;for(e[t]||(e[t]=[]),b=0;b=e[t].length&&e[t].push({}),!e[t][b].type||M.type&&M.type!==e[t][b].type?zt.merge(e[t][b],[go.getScaleDefaults(n),M]):zt.merge(e[t][b],M)}else zt._merger(t,e,o,p)}})}function jo(){return zt.merge(Object.create(null),[].slice.call(arguments),{merger:function(t,e,o,p){var b=e[t]||Object.create(null),n=o[t];"scales"===t?e[t]=Po(b,n):"scale"===t?e[t]=zt.merge(b,[go.getScaleDefaults(n.type),n]):zt._merger(t,e,o,p)}})}function Io(t){var e=(t=t||Object.create(null)).data=t.data||{};return e.datasets=e.datasets||[],e.labels=e.labels||[],t.options=jo(Q.global,Q[t.type],t.options||{}),t}function Fo(t){var e=t.options;zt.each(t.scales,(function(e){Ue.removeBox(t,e)})),e=jo(Q.global,Q[t.config.type],e),t.options=t.config.options=e,t.ensureScalesHaveIDs(),t.buildOrUpdateScales(),t.tooltip._options=e.tooltips,t.tooltip.initialize()}function Ho(t,e,o){var p,b=function(t){return t.id===p};do{p=e+o++}while(zt.findIndex(t,b)>=0);return p}function Uo(t){return"top"===t||"bottom"===t}function Vo(t,e){return function(o,p){return o[t]===p[t]?o[e]-p[e]:o[t]-p[t]}}Q._set("global",{elements:{},events:["mousemove","mouseout","click","touchstart","touchmove"],hover:{onHover:null,mode:"nearest",intersect:!0,animationDuration:400},onClick:null,maintainAspectRatio:!0,responsive:!0,responsiveAnimationDuration:0});var $o=function(t,e){return this.construct(t,e),this};zt.extend($o.prototype,{construct:function(t,e){var o=this;e=Io(e);var p=Wo.acquireContext(t,e),b=p&&p.canvas,n=b&&b.height,M=b&&b.width;o.id=zt.uid(),o.ctx=p,o.canvas=b,o.config=e,o.width=M,o.height=n,o.aspectRatio=n?M/n:null,o.options=e.options,o._bufferedRender=!1,o._layers=[],o.chart=o,o.controller=o,$o.instances[o.id]=o,Object.defineProperty(o,"data",{get:function(){return o.config.data},set:function(t){o.config.data=t}}),p&&b&&(o.initialize(),o.update())},initialize:function(){var t=this;return mo.notify(t,"beforeInit"),zt.retinaScale(t,t.options.devicePixelRatio),t.bindEvents(),t.options.responsive&&t.resize(!0),t.initToolTip(),mo.notify(t,"afterInit"),t},clear:function(){return zt.canvas.clear(this),this},stop:function(){return ft.cancelAnimation(this),this},resize:function(t){var e=this,o=e.options,p=e.canvas,b=o.maintainAspectRatio&&e.aspectRatio||null,n=Math.max(0,Math.floor(zt.getMaximumWidth(p))),M=Math.max(0,Math.floor(b?n/b:zt.getMaximumHeight(p)));if((e.width!==n||e.height!==M)&&(p.width=e.width=n,p.height=e.height=M,p.style.width=n+"px",p.style.height=M+"px",zt.retinaScale(e,o.devicePixelRatio),!t)){var z={width:n,height:M};mo.notify(e,"resize",[z]),o.onResize&&o.onResize(e,z),e.stop(),e.update({duration:o.responsiveAnimationDuration})}},ensureScalesHaveIDs:function(){var t=this.options,e=t.scales||{},o=t.scale;zt.each(e.xAxes,(function(t,o){t.id||(t.id=Ho(e.xAxes,"x-axis-",o))})),zt.each(e.yAxes,(function(t,o){t.id||(t.id=Ho(e.yAxes,"y-axis-",o))})),o&&(o.id=o.id||"scale")},buildOrUpdateScales:function(){var t=this,e=t.options,o=t.scales||{},p=[],b=Object.keys(o).reduce((function(t,e){return t[e]=!1,t}),{});e.scales&&(p=p.concat((e.scales.xAxes||[]).map((function(t){return{options:t,dtype:"category",dposition:"bottom"}})),(e.scales.yAxes||[]).map((function(t){return{options:t,dtype:"linear",dposition:"left"}})))),e.scale&&p.push({options:e.scale,dtype:"radialLinear",isDefault:!0,dposition:"chartArea"}),zt.each(p,(function(e){var p=e.options,n=p.id,M=Do(p.type,e.dtype);Uo(p.position)!==Uo(e.dposition)&&(p.position=e.dposition),b[n]=!0;var z=null;if(n in o&&o[n].type===M)(z=o[n]).options=p,z.ctx=t.ctx,z.chart=t;else{var c=go.getScaleConstructor(M);if(!c)return;z=new c({id:n,type:M,options:p,ctx:t.ctx,chart:t}),o[z.id]=z}z.mergeTicksOptions(),e.isDefault&&(t.scale=z)})),zt.each(b,(function(t,e){t||delete o[e]})),t.scales=o,go.addScalesToLayout(this)},buildOrUpdateControllers:function(){var t,e,o=this,p=[],b=o.data.datasets;for(t=0,e=b.length;t=0;--o)p.drawDataset(e[o],t);mo.notify(p,"afterDatasetsDraw",[t])}},drawDataset:function(t,e){var o=this,p={meta:t,index:t.index,easingValue:e};!1!==mo.notify(o,"beforeDatasetDraw",[p])&&(t.controller.draw(e),mo.notify(o,"afterDatasetDraw",[p]))},_drawTooltip:function(t){var e=this,o=e.tooltip,p={tooltip:o,easingValue:t};!1!==mo.notify(e,"beforeTooltipDraw",[p])&&(o.draw(),mo.notify(e,"afterTooltipDraw",[p]))},getElementAtEvent:function(t){return we.modes.single(this,t)},getElementsAtEvent:function(t){return we.modes.label(this,t,{intersect:!0})},getElementsAtXAxis:function(t){return we.modes["x-axis"](this,t,{intersect:!0})},getElementsAtEventForMode:function(t,e,o){var p=we.modes[e];return"function"==typeof p?p(this,t,o):[]},getDatasetAtEvent:function(t){return we.modes.dataset(this,t,{intersect:!0})},getDatasetMeta:function(t){var e=this,o=e.data.datasets[t];o._meta||(o._meta={});var p=o._meta[e.id];return p||(p=o._meta[e.id]={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:o.order||0,index:t}),p},getVisibleDatasetCount:function(){for(var t=0,e=0,o=this.data.datasets.length;e=0;p--){var b=t[p];if(e(b))return b}},zt.isNumber=function(t){return!isNaN(parseFloat(t))&&isFinite(t)},zt.almostEquals=function(t,e,o){return Math.abs(t-e)=t},zt.max=function(t){return t.reduce((function(t,e){return isNaN(e)?t:Math.max(t,e)}),Number.NEGATIVE_INFINITY)},zt.min=function(t){return t.reduce((function(t,e){return isNaN(e)?t:Math.min(t,e)}),Number.POSITIVE_INFINITY)},zt.sign=Math.sign?function(t){return Math.sign(t)}:function(t){return 0==(t=+t)||isNaN(t)?t:t>0?1:-1},zt.toRadians=function(t){return t*(Math.PI/180)},zt.toDegrees=function(t){return t*(180/Math.PI)},zt._decimalPlaces=function(t){if(zt.isFinite(t)){for(var e=1,o=0;Math.round(t*e)/e!==t;)e*=10,o++;return o}},zt.getAngleFromPoint=function(t,e){var o=e.x-t.x,p=e.y-t.y,b=Math.sqrt(o*o+p*p),n=Math.atan2(p,o);return n<-.5*Math.PI&&(n+=2*Math.PI),{angle:n,distance:b}},zt.distanceBetweenPoints=function(t,e){return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))},zt.aliasPixel=function(t){return t%2==0?0:.5},zt._alignPixel=function(t,e,o){var p=t.currentDevicePixelRatio,b=o/2;return Math.round((e-b)*p)/p+b},zt.splineCurve=function(t,e,o,p){var b=t.skip?e:t,n=e,M=o.skip?e:o,z=Math.sqrt(Math.pow(n.x-b.x,2)+Math.pow(n.y-b.y,2)),c=Math.sqrt(Math.pow(M.x-n.x,2)+Math.pow(M.y-n.y,2)),r=z/(z+c),i=c/(z+c),a=p*(r=isNaN(r)?0:r),O=p*(i=isNaN(i)?0:i);return{previous:{x:n.x-a*(M.x-b.x),y:n.y-a*(M.y-b.y)},next:{x:n.x+O*(M.x-b.x),y:n.y+O*(M.y-b.y)}}},zt.EPSILON=Number.EPSILON||1e-14,zt.splineCurveMonotone=function(t){var e,o,p,b,n,M,z,c,r,i=(t||[]).map((function(t){return{model:t._model,deltaK:0,mK:0}})),a=i.length;for(e=0;e0?i[e-1]:null,(b=e0?i[e-1]:null,b=e=t.length-1?t[0]:t[e+1]:e>=t.length-1?t[t.length-1]:t[e+1]},zt.previousItem=function(t,e,o){return o?e<=0?t[t.length-1]:t[e-1]:e<=0?t[0]:t[e-1]},zt.niceNum=function(t,e){var o=Math.floor(zt.log10(t)),p=t/Math.pow(10,o);return(e?p<1.5?1:p<3?2:p<7?5:10:p<=1?1:p<=2?2:p<=5?5:10)*Math.pow(10,o)},zt.requestAnimFrame="undefined"==typeof window?function(t){t()}:window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){return window.setTimeout(t,1e3/60)},zt.getRelativePosition=function(t,e){var o,p,b=t.originalEvent||t,n=t.target||t.srcElement,M=n.getBoundingClientRect(),z=b.touches;z&&z.length>0?(o=z[0].clientX,p=z[0].clientY):(o=b.clientX,p=b.clientY);var c=parseFloat(zt.getStyle(n,"padding-left")),r=parseFloat(zt.getStyle(n,"padding-top")),i=parseFloat(zt.getStyle(n,"padding-right")),a=parseFloat(zt.getStyle(n,"padding-bottom")),O=M.right-M.left-c-i,s=M.bottom-M.top-r-a;return{x:o=Math.round((o-M.left-c)/O*n.width/e.currentDevicePixelRatio),y:p=Math.round((p-M.top-r)/s*n.height/e.currentDevicePixelRatio)}},zt.getConstraintWidth=function(t){return o(t,"max-width","clientWidth")},zt.getConstraintHeight=function(t){return o(t,"max-height","clientHeight")},zt._calculatePadding=function(t,e,o){return(e=zt.getStyle(t,e)).indexOf("%")>-1?o*parseInt(e,10)/100:parseInt(e,10)},zt._getParentNode=function(t){var e=t.parentNode;return e&&"[object ShadowRoot]"===e.toString()&&(e=e.host),e},zt.getMaximumWidth=function(t){var e=zt._getParentNode(t);if(!e)return t.clientWidth;var o=e.clientWidth,p=o-zt._calculatePadding(e,"padding-left",o)-zt._calculatePadding(e,"padding-right",o),b=zt.getConstraintWidth(t);return isNaN(b)?p:Math.min(p,b)},zt.getMaximumHeight=function(t){var e=zt._getParentNode(t);if(!e)return t.clientHeight;var o=e.clientHeight,p=o-zt._calculatePadding(e,"padding-top",o)-zt._calculatePadding(e,"padding-bottom",o),b=zt.getConstraintHeight(t);return isNaN(b)?p:Math.min(p,b)},zt.getStyle=function(t,e){return t.currentStyle?t.currentStyle[e]:document.defaultView.getComputedStyle(t,null).getPropertyValue(e)},zt.retinaScale=function(t,e){var o=t.currentDevicePixelRatio=e||"undefined"!=typeof window&&window.devicePixelRatio||1;if(1!==o){var p=t.canvas,b=t.height,n=t.width;p.height=b*o,p.width=n*o,t.ctx.scale(o,o),p.style.height||p.style.width||(p.style.height=b+"px",p.style.width=n+"px")}},zt.fontString=function(t,e,o){return e+" "+t+"px "+o},zt.longestText=function(t,e,o,p){var b=(p=p||{}).data=p.data||{},n=p.garbageCollect=p.garbageCollect||[];p.font!==e&&(b=p.data={},n=p.garbageCollect=[],p.font=e),t.font=e;var M,z,c,r,i,a=0,O=o.length;for(M=0;Mo.length){for(M=0;Mp&&(p=n),p},zt.numberOfLabelLines=function(t){var e=1;return zt.each(t,(function(t){zt.isArray(t)&&t.length>e&&(e=t.length)})),e},zt.color=S?function(t){return t instanceof CanvasGradient&&(t=Q.global.defaultColor),S(t)}:function(t){return t},zt.getHoverColor=function(t){return t instanceof CanvasPattern||t instanceof CanvasGradient?t:zt.color(t).saturate(.5).darken(.1).rgbString()}};function Jo(){throw new Error("This method is not implemented: either no adapter can be found or an incomplete integration was provided.")}function Ko(t){this.options=t||{}}zt.extend(Ko.prototype,{formats:Jo,parse:Jo,format:Jo,add:Jo,diff:Jo,startOf:Jo,endOf:Jo,_create:function(t){return t}}),Ko.override=function(t){zt.extend(Ko.prototype,t)};var Qo={_date:Ko},Zo={formatters:{values:function(t){return zt.isArray(t)?t:""+t},linear:function(t,e,o){var p=o.length>3?o[2]-o[1]:o[1]-o[0];Math.abs(p)>1&&t!==Math.floor(t)&&(p=t-Math.floor(t));var b=zt.log10(Math.abs(p)),n="";if(0!==t)if(Math.max(Math.abs(o[0]),Math.abs(o[o.length-1]))<1e-4){var M=zt.log10(Math.abs(t)),z=Math.floor(M)-Math.floor(b);z=Math.max(Math.min(z,20),0),n=t.toExponential(z)}else{var c=-1*Math.floor(b);c=Math.max(Math.min(c,20),0),n=t.toFixed(c)}else n="0";return n},logarithmic:function(t,e,o){var p=t/Math.pow(10,Math.floor(zt.log10(t)));return 0===t?"0":1===p||2===p||5===p||0===e||e===o.length-1?t.toExponential():""}}},tp=zt.isArray,ep=zt.isNullOrUndef,op=zt.valueOrDefault,pp=zt.valueAtIndexOrDefault;function bp(t,e){for(var o=[],p=t.length/e,b=0,n=t.length;bc+r)))return M}function Mp(t,e){zt.each(t,(function(t){var o,p=t.gc,b=p.length/2;if(b>e){for(o=0;or)return n;return Math.max(r,1)}function dp(t){var e,o,p=[];for(e=0,o=t.length;e=O||i<=1||!z.isHorizontal()?z.labelRotation=a:(e=(t=z._getLabelSizes()).widest.width,o=t.highest.height-t.highest.offset,p=Math.min(z.maxWidth,z.chart.width-e),e+6>(b=c.offset?z.maxWidth/i:p/(i-1))&&(b=p/(i-(c.offset?.5:1)),n=z.maxHeight-cp(c.gridLines)-r.padding-rp(c.scaleLabel),M=Math.sqrt(e*e+o*o),s=zt.toDegrees(Math.min(Math.asin(Math.min((t.highest.height+6)/b,1)),Math.asin(Math.min(n/M,1))-Math.asin(o/M))),s=Math.max(a,Math.min(O,s))),z.labelRotation=s)},afterCalculateTickRotation:function(){zt.callback(this.options.afterCalculateTickRotation,[this])},beforeFit:function(){zt.callback(this.options.beforeFit,[this])},fit:function(){var t=this,e=t.minSize={width:0,height:0},o=t.chart,p=t.options,b=p.ticks,n=p.scaleLabel,M=p.gridLines,z=t._isVisible(),c="bottom"===p.position,r=t.isHorizontal();if(r?e.width=t.maxWidth:z&&(e.width=cp(M)+rp(n)),r?z&&(e.height=cp(M)+rp(n)):e.height=t.maxHeight,b.display&&z){var i=ap(b),a=t._getLabelSizes(),O=a.first,s=a.last,l=a.widest,d=a.highest,A=.4*i.minor.lineHeight,u=b.padding;if(r){var f=0!==t.labelRotation,q=zt.toRadians(t.labelRotation),h=Math.cos(q),W=Math.sin(q),m=W*l.width+h*(d.height-(f?d.offset:0))+(f?0:A);e.height=Math.min(t.maxHeight,e.height+m+u);var g,v,R=t.getPixelForTick(0)-t.left,y=t.right-t.getPixelForTick(t.getTicks().length-1);f?(g=c?h*O.width+W*O.offset:W*(O.height-O.offset),v=c?W*(s.height-s.offset):h*s.width+W*s.offset):(g=O.width/2,v=s.width/2),t.paddingLeft=Math.max((g-R)*t.width/(t.width-R),0)+3,t.paddingRight=Math.max((v-y)*t.width/(t.width-y),0)+3}else{var B=b.mirror?0:l.width+u+A;e.width=Math.min(t.maxWidth,e.width+B),t.paddingTop=O.height/2,t.paddingBottom=s.height/2}}t.handleMargins(),r?(t.width=t._length=o.width-t.margins.left-t.margins.right,t.height=e.height):(t.width=e.width,t.height=t._length=o.height-t.margins.top-t.margins.bottom)},handleMargins:function(){var t=this;t.margins&&(t.margins.left=Math.max(t.paddingLeft,t.margins.left),t.margins.top=Math.max(t.paddingTop,t.margins.top),t.margins.right=Math.max(t.paddingRight,t.margins.right),t.margins.bottom=Math.max(t.paddingBottom,t.margins.bottom))},afterFit:function(){zt.callback(this.options.afterFit,[this])},isHorizontal:function(){var t=this.options.position;return"top"===t||"bottom"===t},isFullWidth:function(){return this.options.fullWidth},getRightValue:function(t){if(ep(t))return NaN;if(("number"==typeof t||t instanceof Number)&&!isFinite(t))return NaN;if(t)if(this.isHorizontal()){if(void 0!==t.x)return this.getRightValue(t.x)}else if(void 0!==t.y)return this.getRightValue(t.y);return t},_convertTicksToLabels:function(t){var e,o,p,b=this;for(b.ticks=t.map((function(t){return t.value})),b.beforeTickToLabelConversion(),e=b.convertTicksToLabels(t)||b.ticks,b.afterTickToLabelConversion(),o=0,p=t.length;op-1?null:e.getPixelForDecimal(t*b+(o?b/2:0))},getPixelForDecimal:function(t){var e=this;return e._reversePixels&&(t=1-t),e._startPixel+t*e._length},getDecimalForPixel:function(t){var e=(t-this._startPixel)/this._length;return this._reversePixels?1-e:e},getBasePixel:function(){return this.getPixelForValue(this.getBaseValue())},getBaseValue:function(){var t=this,e=t.min,o=t.max;return t.beginAtZero?0:e<0&&o<0?o:e>0&&o>0?e:0},_autoSkip:function(t){var e,o,p,b,n=this,M=n.options.ticks,z=n._length,c=M.maxTicksLimit||z/n._tickSize()+1,r=M.major.enabled?dp(t):[],i=r.length,a=r[0],O=r[i-1];if(i>c)return Ap(t,r,i/c),Op(t);if(p=lp(r,t,z,c),i>0){for(e=0,o=i-1;e1?(O-a)/(i-1):null,up(t,p,zt.isNullOrUndef(b)?0:a-b,a),up(t,p,O,zt.isNullOrUndef(b)?t.length:O+b),Op(t)}return up(t,p),Op(t)},_tickSize:function(){var t=this,e=t.options.ticks,o=zt.toRadians(t.labelRotation),p=Math.abs(Math.cos(o)),b=Math.abs(Math.sin(o)),n=t._getLabelSizes(),M=e.autoSkipPadding||0,z=n?n.widest.width+M:0,c=n?n.highest.height+M:0;return t.isHorizontal()?c*p>z*b?z/p:c/b:c*b=0&&(M=t),void 0!==n&&(t=o.indexOf(n))>=0&&(z=t),e.minIndex=M,e.maxIndex=z,e.min=o[M],e.max=o[z]},buildTicks:function(){var t=this,e=t._getLabels(),o=t.minIndex,p=t.maxIndex;t.ticks=0===o&&p===e.length-1?e:e.slice(o,p+1)},getLabelForIndex:function(t,e){var o=this,p=o.chart;return p.getDatasetMeta(e).controller._getValueScaleId()===o.id?o.getRightValue(p.data.datasets[e].data[t]):o._getLabels()[t]},_configure:function(){var t=this,e=t.options.offset,o=t.ticks;qp.prototype._configure.call(t),t.isHorizontal()||(t._reversePixels=!t._reversePixels),o&&(t._startValue=t.minIndex-(e?.5:0),t._valueRange=Math.max(o.length-(e?0:1),1))},getPixelForValue:function(t,e,o){var p,b,n,M=this;return hp(e)||hp(o)||(t=M.chart.data.datasets[o].data[e]),hp(t)||(p=M.isHorizontal()?t.x:t.y),(void 0!==p||void 0!==t&&isNaN(e))&&(b=M._getLabels(),t=zt.valueOrDefault(p,t),e=-1!==(n=b.indexOf(t))?n:e,isNaN(e)&&(e=t)),M.getPixelForDecimal((e-M._startValue)/M._valueRange)},getPixelForTick:function(t){var e=this.ticks;return t<0||t>e.length-1?null:this.getPixelForValue(e[t],t+this.minIndex)},getValueForPixel:function(t){var e=this,o=Math.round(e._startValue+e.getDecimalForPixel(t)*e._valueRange);return Math.min(Math.max(o,0),e.ticks.length-1)},getBasePixel:function(){return this.bottom}}),gp=Wp;mp._defaults=gp;var vp=zt.noop,Rp=zt.isNullOrUndef;function yp(t,e){var o,p,b,n,M=[],z=1e-14,c=t.stepSize,r=c||1,i=t.maxTicks-1,a=t.min,O=t.max,s=t.precision,l=e.min,d=e.max,A=zt.niceNum((d-l)/i/r)*r;if(Ai&&(A=zt.niceNum(n*A/i/r)*r),c||Rp(s)?o=Math.pow(10,zt._decimalPlaces(A)):(o=Math.pow(10,s),A=Math.ceil(A*o)/o),p=Math.floor(l/A)*A,b=Math.ceil(d/A)*A,c&&(!Rp(a)&&zt.almostWhole(a/A,A/1e3)&&(p=a),!Rp(O)&&zt.almostWhole(O/A,A/1e3)&&(b=O)),n=(b-p)/A,n=zt.almostEquals(n,Math.round(n),A/1e3)?Math.round(n):Math.ceil(n),p=Math.round(p*o)/o,b=Math.round(b*o)/o,M.push(Rp(a)?p:a);for(var u=1;u0&&p>0&&(t.min=0)}var b=void 0!==e.min||void 0!==e.suggestedMin,n=void 0!==e.max||void 0!==e.suggestedMax;void 0!==e.min?t.min=e.min:void 0!==e.suggestedMin&&(null===t.min?t.min=e.suggestedMin:t.min=Math.min(t.min,e.suggestedMin)),void 0!==e.max?t.max=e.max:void 0!==e.suggestedMax&&(null===t.max?t.max=e.suggestedMax:t.max=Math.max(t.max,e.suggestedMax)),b!==n&&t.min>=t.max&&(b?t.max=t.min+1:t.min=t.max-1),t.min===t.max&&(t.max++,e.beginAtZero||t.min--)},getTickLimit:function(){var t,e=this,o=e.options.ticks,p=o.stepSize,b=o.maxTicksLimit;return p?t=Math.ceil(e.max/p)-Math.floor(e.min/p)+1:(t=e._computeTickLimit(),b=b||11),b&&(t=Math.min(b,t)),t},_computeTickLimit:function(){return Number.POSITIVE_INFINITY},handleDirectionalChanges:vp,buildTicks:function(){var t=this,e=t.options.ticks,o=t.getTickLimit(),p={maxTicks:o=Math.max(2,o),min:e.min,max:e.max,precision:e.precision,stepSize:zt.valueOrDefault(e.fixedStepSize,e.stepSize)},b=t.ticks=yp(p,t);t.handleDirectionalChanges(),t.max=zt.max(b),t.min=zt.min(b),e.reverse?(b.reverse(),t.start=t.max,t.end=t.min):(t.start=t.min,t.end=t.max)},convertTicksToLabels:function(){var t=this;t.ticksAsNumbers=t.ticks.slice(),t.zeroLineIndex=t.ticks.indexOf(0),qp.prototype.convertTicksToLabels.call(t)},_configure:function(){var t,e=this,o=e.getTicks(),p=e.min,b=e.max;qp.prototype._configure.call(e),e.options.offset&&o.length&&(p-=t=(b-p)/Math.max(o.length-1,1)/2,b+=t),e._startValue=p,e._endValue=b,e._valueRange=b-p}}),Lp={position:"left",ticks:{callback:Zo.formatters.linear}},Xp=0,_p=1;function Np(t,e,o){var p=[o.type,void 0===e&&void 0===o.stack?o.index:"",o.stack].join(".");return void 0===t[p]&&(t[p]={pos:[],neg:[]}),t[p]}function wp(t,e,o,p){var b,n,M=t.options,z=Np(e,M.stacked,o),c=z.pos,r=z.neg,i=p.length;for(b=0;be.length-1?null:this.getPixelForValue(e[t])}}),Cp=Lp;Tp._defaults=Cp;var Sp=zt.valueOrDefault,kp=zt.math.log10;function Ep(t,e){var o,p,b=[],n=Sp(t.min,Math.pow(10,Math.floor(kp(e.min)))),M=Math.floor(kp(e.max)),z=Math.ceil(e.max/Math.pow(10,M));0===n?(o=Math.floor(kp(e.minNotZero)),p=Math.floor(e.minNotZero/Math.pow(10,o)),b.push(n),n=p*Math.pow(10,o)):(o=Math.floor(kp(n)),p=Math.floor(n/Math.pow(10,o)));var c=o<0?Math.pow(10,Math.abs(o)):1;do{b.push(n),10==++p&&(p=1,c=++o>=0?1:c),n=Math.round(p*Math.pow(10,o)*c)/c}while(o=0?t:e}var jp=qp.extend({determineDataLimits:function(){var t,e,o,p,b,n,M=this,z=M.options,c=M.chart,r=c.data.datasets,i=M.isHorizontal();function a(t){return i?t.xAxisID===M.id:t.yAxisID===M.id}M.min=Number.POSITIVE_INFINITY,M.max=Number.NEGATIVE_INFINITY,M.minNotZero=Number.POSITIVE_INFINITY;var O=z.stacked;if(void 0===O)for(t=0;t0){var e=zt.min(t),o=zt.max(t);M.min=Math.min(M.min,e),M.max=Math.max(M.max,o)}}))}else for(t=0;t0?t.minNotZero=t.min:t.max<1?t.minNotZero=Math.pow(10,Math.floor(kp(t.max))):t.minNotZero=o)},buildTicks:function(){var t=this,e=t.options.ticks,o=!t.isHorizontal(),p={min:Pp(e.min),max:Pp(e.max)},b=t.ticks=Ep(p,t);t.max=zt.max(b),t.min=zt.min(b),e.reverse?(o=!o,t.start=t.max,t.end=t.min):(t.start=t.min,t.end=t.max),o&&b.reverse()},convertTicksToLabels:function(){this.tickValues=this.ticks.slice(),qp.prototype.convertTicksToLabels.call(this)},getLabelForIndex:function(t,e){return this._getScaleLabel(this.chart.data.datasets[e].data[t])},getPixelForTick:function(t){var e=this.tickValues;return t<0||t>e.length-1?null:this.getPixelForValue(e[t])},_getFirstTickValue:function(t){var e=Math.floor(kp(t));return Math.floor(t/Math.pow(10,e))*Math.pow(10,e)},_configure:function(){var t=this,e=t.min,o=0;qp.prototype._configure.call(t),0===e&&(e=t._getFirstTickValue(t.minNotZero),o=Sp(t.options.ticks.fontSize,Q.global.defaultFontSize)/t._length),t._startValue=kp(e),t._valueOffset=o,t._valueRange=(kp(t.max)-kp(e))/(1-o)},getPixelForValue:function(t){var e=this,o=0;return(t=+e.getRightValue(t))>e.min&&t>0&&(o=(kp(t)-e._startValue)/e._valueRange+e._valueOffset),e.getPixelForDecimal(o)},getValueForPixel:function(t){var e=this,o=e.getDecimalForPixel(t);return 0===o&&0===e.min?0:Math.pow(10,e._startValue+(o-e._valueOffset)*e._valueRange)}}),Ip=Dp;jp._defaults=Ip;var Fp=zt.valueOrDefault,Hp=zt.valueAtIndexOrDefault,Up=zt.options.resolve,Vp={display:!0,animate:!0,position:"chartArea",angleLines:{display:!0,color:"rgba(0,0,0,0.1)",lineWidth:1,borderDash:[],borderDashOffset:0},gridLines:{circular:!1},ticks:{showLabelBackdrop:!0,backdropColor:"rgba(255,255,255,0.75)",backdropPaddingY:2,backdropPaddingX:2,callback:Zo.formatters.linear},pointLabels:{display:!0,fontSize:10,callback:function(t){return t}}};function $p(t){var e=t.ticks;return e.display&&t.display?Fp(e.fontSize,Q.global.defaultFontSize)+2*e.backdropPaddingY:0}function Yp(t,e,o){return zt.isArray(o)?{w:zt.longestText(t,t.font,o),h:o.length*e}:{w:t.measureText(o).width,h:e}}function Gp(t,e,o,p,b){return t===p||t===b?{start:e-o/2,end:e+o/2}:tb?{start:e-o,end:e}:{start:e,end:e+o}}function Jp(t){var e,o,p,b=zt.options._parseFont(t.options.pointLabels),n={l:0,r:t.width,t:0,b:t.height-t.paddingTop},M={};t.ctx.font=b.string,t._pointLabelSizes=[];var z=t.chart.data.labels.length;for(e=0;en.r&&(n.r=i.end,M.r=c),a.startn.b&&(n.b=a.end,M.b=c)}t.setReductions(t.drawingArea,n,M)}function Kp(t){return 0===t||180===t?"center":t<180?"left":"right"}function Qp(t,e,o,p){var b,n,M=o.y+p/2;if(zt.isArray(e))for(b=0,n=e.length;b270||t<90)&&(o.y-=e.h)}function tb(t){var e=t.ctx,o=t.options,p=o.pointLabels,b=$p(o),n=t.getDistanceFromCenterForValue(o.ticks.reverse?t.min:t.max),M=zt.options._parseFont(p);e.save(),e.font=M.string,e.textBaseline="middle";for(var z=t.chart.data.labels.length-1;z>=0;z--){var c=0===z?b/2:0,r=t.getPointPosition(z,n+c+5),i=Hp(p.fontColor,z,Q.global.defaultFontColor);e.fillStyle=i;var a=t.getIndexAngle(z),O=zt.toDegrees(a);e.textAlign=Kp(O),Zp(O,t._pointLabelSizes[z],r),Qp(e,t.pointLabels[z],r,M.lineHeight)}e.restore()}function eb(t,e,o,p){var b,n=t.ctx,M=e.circular,z=t.chart.data.labels.length,c=Hp(e.color,p-1),r=Hp(e.lineWidth,p-1);if((M||z)&&c&&r){if(n.save(),n.strokeStyle=c,n.lineWidth=r,n.setLineDash&&(n.setLineDash(e.borderDash||[]),n.lineDashOffset=e.borderDashOffset||0),n.beginPath(),M)n.arc(t.xCenter,t.yCenter,o,0,2*Math.PI);else{b=t.getPointPosition(0,o),n.moveTo(b.x,b.y);for(var i=1;i0&&p>0?o:0)},_drawGrid:function(){var t,e,o,p=this,b=p.ctx,n=p.options,M=n.gridLines,z=n.angleLines,c=Fp(z.lineWidth,M.lineWidth),r=Fp(z.color,M.color);if(n.pointLabels.display&&tb(p),M.display&&zt.each(p.ticks,(function(t,o){0!==o&&(e=p.getDistanceFromCenterForValue(p.ticksAsNumbers[o]),eb(p,M,e,o))})),z.display&&c&&r){for(b.save(),b.lineWidth=c,b.strokeStyle=r,b.setLineDash&&(b.setLineDash(Up([z.borderDash,M.borderDash,[]])),b.lineDashOffset=Up([z.borderDashOffset,M.borderDashOffset,0])),t=p.chart.data.labels.length-1;t>=0;t--)e=p.getDistanceFromCenterForValue(n.ticks.reverse?p.min:p.max),o=p.getPointPosition(t,e),b.beginPath(),b.moveTo(p.xCenter,p.yCenter),b.lineTo(o.x,o.y),b.stroke();b.restore()}},_drawLabels:function(){var t=this,e=t.ctx,o=t.options.ticks;if(o.display){var p,b,n=t.getIndexAngle(0),M=zt.options._parseFont(o),z=Fp(o.fontColor,Q.global.defaultFontColor);e.save(),e.font=M.string,e.translate(t.xCenter,t.yCenter),e.rotate(n),e.textAlign="center",e.textBaseline="middle",zt.each(t.ticks,(function(n,c){(0!==c||o.reverse)&&(p=t.getDistanceFromCenterForValue(t.ticksAsNumbers[c]),o.showLabelBackdrop&&(b=e.measureText(n).width,e.fillStyle=o.backdropColor,e.fillRect(-b/2-o.backdropPaddingX,-p-M.size/2-o.backdropPaddingY,b+2*o.backdropPaddingX,M.size+2*o.backdropPaddingY)),e.fillStyle=z,e.fillText(n,0,-p))})),e.restore()}},_drawTitle:zt.noop}),bb=Vp;pb._defaults=bb;var nb=zt._deprecated,Mb=zt.options.resolve,zb=zt.valueOrDefault,cb=Number.MIN_SAFE_INTEGER||-9007199254740991,rb=Number.MAX_SAFE_INTEGER||9007199254740991,ib={millisecond:{common:!0,size:1,steps:1e3},second:{common:!0,size:1e3,steps:60},minute:{common:!0,size:6e4,steps:60},hour:{common:!0,size:36e5,steps:24},day:{common:!0,size:864e5,steps:30},week:{common:!1,size:6048e5,steps:4},month:{common:!0,size:2628e6,steps:12},quarter:{common:!1,size:7884e6,steps:4},year:{common:!0,size:3154e7}},ab=Object.keys(ib);function Ob(t,e){return t-e}function sb(t){var e,o,p,b={},n=[];for(e=0,o=t.length;ee&&z=0&&M<=z;){if(b=t[(p=M+z>>1)-1]||null,n=t[p],!b)return{lo:null,hi:n};if(n[e]o))return{lo:b,hi:n};z=p-1}}return{lo:n,hi:null}}function fb(t,e,o,p){var b=ub(t,e,o),n=b.lo?b.hi?b.lo:t[t.length-2]:t[0],M=b.lo?b.hi?b.hi:t[t.length-1]:t[1],z=M[e]-n[e],c=z?(o-n[e])/z:0,r=(M[p]-n[p])*c;return n[p]+r}function qb(t,e){var o=t._adapter,p=t.options.time,b=p.parser,n=b||p.format,M=e;return"function"==typeof b&&(M=b(M)),zt.isFinite(M)||(M="string"==typeof n?o.parse(M,n):o.parse(M)),null!==M?+M:(b||"function"!=typeof n||(M=n(e),zt.isFinite(M)||(M=o.parse(M))),M)}function hb(t,e){if(zt.isNullOrUndef(e))return null;var o=t.options.time,p=qb(t,t.getRightValue(e));return null===p||o.round&&(p=+t._adapter.startOf(p,o.round)),p}function Wb(t,e,o,p){var b,n,M,z=ab.length;for(b=ab.indexOf(t);b=ab.indexOf(o);n--)if(M=ab[n],ib[M].common&&t._adapter.diff(b,p,M)>=e-1)return M;return ab[o?ab.indexOf(o):0]}function gb(t){for(var e=ab.indexOf(t)+1,o=ab.length;e1e5*r)throw e+" and "+o+" are too far apart with stepSize of "+r+" "+c;for(b=a;b=0&&(e[n].major=!0);return e}function Bb(t,e,o){var p,b,n=[],M={},z=e.length;for(p=0;p1?sb(l).sort(Ob):l.sort(Ob),O=Math.min(O,l[0]),s=Math.max(s,l[l.length-1])),O=hb(z,lb(i))||O,s=hb(z,db(i))||s,O=O===rb?+r.startOf(Date.now(),a):O,s=s===cb?+r.endOf(Date.now(),a)+1:s,z.min=Math.min(O,s),z.max=Math.max(O+1,s),z._table=[],z._timestamps={data:l,datasets:d,labels:A}},buildTicks:function(){var t,e,o,p=this,b=p.min,n=p.max,M=p.options,z=M.ticks,c=M.time,r=p._timestamps,i=[],a=p.getLabelCapacity(b),O=z.source,s=M.distribution;for(r="data"===O||"auto"===O&&"series"===s?r.data:"labels"===O?r.labels:vb(p,b,n,a),"ticks"===M.bounds&&r.length&&(b=r[0],n=r[r.length-1]),b=hb(p,lb(M))||b,n=hb(p,db(M))||n,t=0,e=r.length;t=b&&o<=n&&i.push(o);return p.min=b,p.max=n,p._unit=c.unit||(z.autoSkip?Wb(c.minUnit,p.min,p.max,a):mb(p,i.length,c.minUnit,p.min,p.max)),p._majorUnit=z.major.enabled&&"year"!==p._unit?gb(p._unit):void 0,p._table=Ab(p._timestamps.data,b,n,s),p._offsets=Rb(p._table,i,b,n,M),z.reverse&&i.reverse(),Bb(p,i,p._majorUnit)},getLabelForIndex:function(t,e){var o=this,p=o._adapter,b=o.chart.data,n=o.options.time,M=b.labels&&t=0&&t0?z:1}}),_b=Lb;Xb._defaults=_b;var Nb={category:mp,linear:Tp,logarithmic:jp,radialLinear:pb,time:Xb},wb={datetime:"MMM D, YYYY, h:mm:ss a",millisecond:"h:mm:ss.SSS a",second:"h:mm:ss a",minute:"h:mm a",hour:"hA",day:"MMM D",week:"ll",month:"MMM YYYY",quarter:"[Q]Q - YYYY",year:"YYYY"};Qo._date.override("function"==typeof t?{_id:"moment",formats:function(){return wb},parse:function(e,o){return"string"==typeof e&&"string"==typeof o?e=t(e,o):e instanceof t||(e=t(e)),e.isValid()?e.valueOf():null},format:function(e,o){return t(e).format(o)},add:function(e,o,p){return t(e).add(o,p).valueOf()},diff:function(e,o,p){return t(e).diff(t(o),p)},startOf:function(e,o,p){return e=t(e),"isoWeek"===o?e.isoWeekday(p).valueOf():e.startOf(o).valueOf()},endOf:function(e,o){return t(e).endOf(o).valueOf()},_create:function(e){return t(e)}}:{}),Q._set("global",{plugins:{filler:{propagate:!0}}});var xb={dataset:function(t){var e=t.fill,o=t.chart,p=o.getDatasetMeta(e),b=p&&o.isDatasetVisible(e)&&p.dataset._children||[],n=b.length||0;return n?function(t,e){return e=o)&&p;switch(n){case"bottom":return"start";case"top":return"end";case"zero":return"origin";case"origin":case"start":case"end":return n;default:return!1}}function Cb(t){var e,o=t.el._model||{},p=t.el._scale||{},b=t.fill,n=null;if(isFinite(b))return null;if("start"===b?n=void 0===o.scaleBottom?p.bottom:o.scaleBottom:"end"===b?n=void 0===o.scaleTop?p.top:o.scaleTop:void 0!==o.scaleZero?n=o.scaleZero:p.getBasePixel&&(n=p.getBasePixel()),null!=n){if(void 0!==n.x&&void 0!==n.y)return n;if(zt.isFinite(n))return{x:(e=p.isHorizontal())?n:null,y:e?null:n}}return null}function Sb(t){var e,o,p,b,n,M=t.el._scale,z=M.options,c=M.chart.data.labels.length,r=t.fill,i=[];if(!c)return null;for(e=z.ticks.reverse?M.max:M.min,o=z.ticks.reverse?M.min:M.max,p=M.getPointPositionForValue(0,e),b=0;b0;--n)zt.canvas.lineTo(t,o[n],o[n-1],!0);else for(M=o[0].cx,z=o[0].cy,c=Math.sqrt(Math.pow(o[0].x-M,2)+Math.pow(o[0].y-z,2)),n=b-1;n>0;--n)t.arc(M,z,c,o[n].angle,o[n-1].angle,!0)}}function Ib(t,e,o,p,b,n){var M,z,c,r,i,a,O,s,l=e.length,d=p.spanGaps,A=[],u=[],f=0,q=0;for(t.beginPath(),M=0,z=l;M=0;--o)(e=c[o].$filler)&&e.visible&&(b=(p=e.el)._view,n=p._children||[],M=e.mapper,z=b.backgroundColor||Q.global.defaultColor,M&&z&&n.length&&(zt.canvas.clipArea(r,t.chartArea),Ib(r,n,M,b,z,p._loop),zt.canvas.unclipArea(r)))}},Hb=zt.rtl.getRtlAdapter,Ub=zt.noop,Vb=zt.valueOrDefault;function $b(t,e){return t.usePointStyle&&t.boxWidth>e?e:t.boxWidth}Q._set("global",{legend:{display:!0,position:"top",align:"center",fullWidth:!0,reverse:!1,weight:1e3,onClick:function(t,e){var o=e.datasetIndex,p=this.chart,b=p.getDatasetMeta(o);b.hidden=null===b.hidden?!p.data.datasets[o].hidden:null,p.update()},onHover:null,onLeave:null,labels:{boxWidth:40,padding:10,generateLabels:function(t){var e=t.data.datasets,o=t.options.legend||{},p=o.labels&&o.labels.usePointStyle;return t._getSortedDatasetMetas().map((function(o){var b=o.controller.getStyle(p?0:void 0);return{text:e[o.index].label,fillStyle:b.backgroundColor,hidden:!t.isDatasetVisible(o.index),lineCap:b.borderCapStyle,lineDash:b.borderDash,lineDashOffset:b.borderDashOffset,lineJoin:b.borderJoinStyle,lineWidth:b.borderWidth,strokeStyle:b.borderColor,pointStyle:b.pointStyle,rotation:b.rotation,datasetIndex:o.index}}),this)}}},legendCallback:function(t){var e,o,p,b=document.createElement("ul"),n=t.data.datasets;for(b.setAttribute("class",t.id+"-legend"),e=0,o=n.length;ec.width)&&(a+=M+o.padding,i[i.length-(e>0?0:1)]=0),z[e]={left:0,top:0,width:p,height:M},i[i.length-1]+=p+o.padding})),c.height+=a}else{var O=o.padding,s=t.columnWidths=[],l=t.columnHeights=[],d=o.padding,A=0,u=0;zt.each(t.legendItems,(function(t,e){var p=$b(o,M)+M/2+b.measureText(t.text).width;e>0&&u+M+2*O>c.height&&(d+=A+o.padding,s.push(A),l.push(u),A=0,u=0),A=Math.max(A,p),u+=M+O,z[e]={left:0,top:0,width:p,height:M}})),d+=A,s.push(A),l.push(u),c.width+=d}t.width=c.width,t.height=c.height}else t.width=c.width=t.height=c.height=0},afterFit:Ub,isHorizontal:function(){return"top"===this.options.position||"bottom"===this.options.position},draw:function(){var t=this,e=t.options,o=e.labels,p=Q.global,b=p.defaultColor,n=p.elements.line,M=t.height,z=t.columnHeights,c=t.width,r=t.lineWidths;if(e.display){var i,a=Hb(e.rtl,t.left,t.minSize.width),O=t.ctx,s=Vb(o.fontColor,p.defaultFontColor),l=zt.options._parseFont(o),d=l.size;O.textAlign=a.textAlign("left"),O.textBaseline="middle",O.lineWidth=.5,O.strokeStyle=s,O.fillStyle=s,O.font=l.string;var A=$b(o,d),u=t.legendHitBoxes,f=function(t,e,p){if(!(isNaN(A)||A<=0)){O.save();var M=Vb(p.lineWidth,n.borderWidth);if(O.fillStyle=Vb(p.fillStyle,b),O.lineCap=Vb(p.lineCap,n.borderCapStyle),O.lineDashOffset=Vb(p.lineDashOffset,n.borderDashOffset),O.lineJoin=Vb(p.lineJoin,n.borderJoinStyle),O.lineWidth=M,O.strokeStyle=Vb(p.strokeStyle,b),O.setLineDash&&O.setLineDash(Vb(p.lineDash,n.borderDash)),o&&o.usePointStyle){var z=A*Math.SQRT2/2,c=a.xPlus(t,A/2),r=e+d/2;zt.canvas.drawPoint(O,p.pointStyle,z,c,r,p.rotation)}else O.fillRect(a.leftForLtr(t,A),e,A,d),0!==M&&O.strokeRect(a.leftForLtr(t,A),e,A,d);O.restore()}},q=function(t,e,o,p){var b=d/2,n=a.xPlus(t,A+b),M=e+b;O.fillText(o.text,n,M),o.hidden&&(O.beginPath(),O.lineWidth=2,O.moveTo(n,M),O.lineTo(a.xPlus(n,p),M),O.stroke())},h=function(t,p){switch(e.align){case"start":return o.padding;case"end":return t-p;default:return(t-p+o.padding)/2}},W=t.isHorizontal();i=W?{x:t.left+h(c,r[0]),y:t.top+o.padding,line:0}:{x:t.left+o.padding,y:t.top+h(M,z[0]),line:0},zt.rtl.overrideTextDirection(t.ctx,e.textDirection);var m=d+o.padding;zt.each(t.legendItems,(function(e,p){var b=O.measureText(e.text).width,n=A+d/2+b,s=i.x,l=i.y;a.setWidth(t.minSize.width),W?p>0&&s+n+o.padding>t.left+t.minSize.width&&(l=i.y+=m,i.line++,s=i.x=t.left+h(c,r[i.line])):p>0&&l+m>t.top+t.minSize.height&&(s=i.x=s+t.columnWidths[i.line]+o.padding,i.line++,l=i.y=t.top+h(M,z[i.line]));var g=a.x(s);f(g,l,e),u[p].left=a.leftForLtr(g,u[p].width),u[p].top=l,q(g,l,e,b),W?i.x+=n+o.padding:i.y+=m})),zt.rtl.restoreTextDirection(t.ctx,e.textDirection)}},_getLegendItemAt:function(t,e){var o,p,b,n=this;if(t>=n.left&&t<=n.right&&e>=n.top&&e<=n.bottom)for(b=n.legendHitBoxes,o=0;o=(p=b[o]).left&&t<=p.left+p.width&&e>=p.top&&e<=p.top+p.height)return n.legendItems[o];return null},handleEvent:function(t){var e,o=this,p=o.options,b="mouseup"===t.type?"click":t.type;if("mousemove"===b){if(!p.onHover&&!p.onLeave)return}else{if("click"!==b)return;if(!p.onClick)return}e=o._getLegendItemAt(t.x,t.y),"click"===b?e&&p.onClick&&p.onClick.call(o,t.native,e):(p.onLeave&&e!==o._hoveredItem&&(o._hoveredItem&&p.onLeave.call(o,t.native,o._hoveredItem),o._hoveredItem=e),p.onHover&&e&&p.onHover.call(o,t.native,e))}});function Gb(t,e){var o=new Yb({ctx:t.ctx,options:e,chart:t});Ue.configure(t,o,e),Ue.addBox(t,o),t.legend=o}var Jb={id:"legend",_element:Yb,beforeInit:function(t){var e=t.options.legend;e&&Gb(t,e)},beforeUpdate:function(t){var e=t.options.legend,o=t.legend;e?(zt.mergeIf(e,Q.global.legend),o?(Ue.configure(t,o,e),o.options=e):Gb(t,e)):o&&(Ue.removeBox(t,o),delete t.legend)},afterEvent:function(t,e){var o=t.legend;o&&o.handleEvent(e)}},Kb=zt.noop;Q._set("global",{title:{display:!1,fontStyle:"bold",fullWidth:!0,padding:10,position:"top",text:"",weight:2e3}});var Qb=dt.extend({initialize:function(t){var e=this;zt.extend(e,t),e.legendHitBoxes=[]},beforeUpdate:Kb,update:function(t,e,o){var p=this;return p.beforeUpdate(),p.maxWidth=t,p.maxHeight=e,p.margins=o,p.beforeSetDimensions(),p.setDimensions(),p.afterSetDimensions(),p.beforeBuildLabels(),p.buildLabels(),p.afterBuildLabels(),p.beforeFit(),p.fit(),p.afterFit(),p.afterUpdate(),p.minSize},afterUpdate:Kb,beforeSetDimensions:Kb,setDimensions:function(){var t=this;t.isHorizontal()?(t.width=t.maxWidth,t.left=0,t.right=t.width):(t.height=t.maxHeight,t.top=0,t.bottom=t.height),t.paddingLeft=0,t.paddingTop=0,t.paddingRight=0,t.paddingBottom=0,t.minSize={width:0,height:0}},afterSetDimensions:Kb,beforeBuildLabels:Kb,buildLabels:Kb,afterBuildLabels:Kb,beforeFit:Kb,fit:function(){var t,e=this,o=e.options,p=e.minSize={},b=e.isHorizontal();o.display?(t=(zt.isArray(o.text)?o.text.length:1)*zt.options._parseFont(o).lineHeight+2*o.padding,e.width=p.width=b?e.maxWidth:t,e.height=p.height=b?t:e.maxHeight):e.width=p.width=e.height=p.height=0},afterFit:Kb,isHorizontal:function(){var t=this.options.position;return"top"===t||"bottom"===t},draw:function(){var t=this,e=t.ctx,o=t.options;if(o.display){var p,b,n,M=zt.options._parseFont(o),z=M.lineHeight,c=z/2+o.padding,r=0,i=t.top,a=t.left,O=t.bottom,s=t.right;e.fillStyle=zt.valueOrDefault(o.fontColor,Q.global.defaultFontColor),e.font=M.string,t.isHorizontal()?(b=a+(s-a)/2,n=i+c,p=s-a):(b="left"===o.position?a+c:s-c,n=i+(O-i)/2,p=O-i,r=Math.PI*("left"===o.position?-.5:.5)),e.save(),e.translate(b,n),e.rotate(r),e.textAlign="center",e.textBaseline="middle";var l=o.text;if(zt.isArray(l))for(var d=0,A=0;A{e.read=function(t,e,o,p,b){var n,M,z=8*b-p-1,c=(1<>1,i=-7,a=o?b-1:0,O=o?-1:1,s=t[e+a];for(a+=O,n=s&(1<<-i)-1,s>>=-i,i+=z;i>0;n=256*n+t[e+a],a+=O,i-=8);for(M=n&(1<<-i)-1,n>>=-i,i+=p;i>0;M=256*M+t[e+a],a+=O,i-=8);if(0===n)n=1-r;else{if(n===c)return M?NaN:1/0*(s?-1:1);M+=Math.pow(2,p),n-=r}return(s?-1:1)*M*Math.pow(2,n-p)},e.write=function(t,e,o,p,b,n){var M,z,c,r=8*n-b-1,i=(1<>1,O=23===b?Math.pow(2,-24)-Math.pow(2,-77):0,s=p?0:n-1,l=p?1:-1,d=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(z=isNaN(e)?1:0,M=i):(M=Math.floor(Math.log(e)/Math.LN2),e*(c=Math.pow(2,-M))<1&&(M--,c*=2),(e+=M+a>=1?O/c:O*Math.pow(2,1-a))*c>=2&&(M++,c/=2),M+a>=i?(z=0,M=i):M+a>=1?(z=(e*c-1)*Math.pow(2,b),M+=a):(z=e*Math.pow(2,a-1)*Math.pow(2,b),M=0));b>=8;t[o+s]=255&z,s+=l,z/=256,b-=8);for(M=M<0;t[o+s]=255&M,s+=l,M/=256,r-=8);t[o+s-l]|=128*d}},826:t=>{var e={}.toString;t.exports=Array.isArray||function(t){return"[object Array]"==e.call(t)}},755:function(t,e){var o;!function(e,o){"use strict";"object"==typeof t.exports?t.exports=e.document?o(e,!0):function(t){if(!t.document)throw new Error("jQuery requires a window with a document");return o(t)}:o(e)}("undefined"!=typeof window?window:this,(function(p,b){"use strict";var n=[],M=Object.getPrototypeOf,z=n.slice,c=n.flat?function(t){return n.flat.call(t)}:function(t){return n.concat.apply([],t)},r=n.push,i=n.indexOf,a={},O=a.toString,s=a.hasOwnProperty,l=s.toString,d=l.call(Object),A={},u=function(t){return"function"==typeof t&&"number"!=typeof t.nodeType&&"function"!=typeof t.item},f=function(t){return null!=t&&t===t.window},q=p.document,h={type:!0,src:!0,nonce:!0,noModule:!0};function W(t,e,o){var p,b,n=(o=o||q).createElement("script");if(n.text=t,e)for(p in h)(b=e[p]||e.getAttribute&&e.getAttribute(p))&&n.setAttribute(p,b);o.head.appendChild(n).parentNode.removeChild(n)}function m(t){return null==t?t+"":"object"==typeof t||"function"==typeof t?a[O.call(t)]||"object":typeof t}var g="3.6.1",v=function(t,e){return new v.fn.init(t,e)};function R(t){var e=!!t&&"length"in t&&t.length,o=m(t);return!u(t)&&!f(t)&&("array"===o||0===e||"number"==typeof e&&e>0&&e-1 in t)}v.fn=v.prototype={jquery:g,constructor:v,length:0,toArray:function(){return z.call(this)},get:function(t){return null==t?z.call(this):t<0?this[t+this.length]:this[t]},pushStack:function(t){var e=v.merge(this.constructor(),t);return e.prevObject=this,e},each:function(t){return v.each(this,t)},map:function(t){return this.pushStack(v.map(this,(function(e,o){return t.call(e,o,e)})))},slice:function(){return this.pushStack(z.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(v.grep(this,(function(t,e){return(e+1)%2})))},odd:function(){return this.pushStack(v.grep(this,(function(t,e){return e%2})))},eq:function(t){var e=this.length,o=+t+(t<0?e:0);return this.pushStack(o>=0&&o+~]|[\\x20\\t\\r\\n\\f])[\\x20\\t\\r\\n\\f]*"),U=new RegExp(k+"|>"),V=new RegExp(P),$=new RegExp("^"+E+"$"),Y={ID:new RegExp("^#("+E+")"),CLASS:new RegExp("^\\.("+E+")"),TAG:new RegExp("^("+E+"|[*])"),ATTR:new RegExp("^"+D),PSEUDO:new RegExp("^"+P),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\([\\x20\\t\\r\\n\\f]*(even|odd|(([+-]|)(\\d*)n|)[\\x20\\t\\r\\n\\f]*(?:([+-]|)[\\x20\\t\\r\\n\\f]*(\\d+)|))[\\x20\\t\\r\\n\\f]*\\)|)","i"),bool:new RegExp("^(?:"+S+")$","i"),needsContext:new RegExp("^[\\x20\\t\\r\\n\\f]*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\([\\x20\\t\\r\\n\\f]*((?:-\\d)?\\d*)[\\x20\\t\\r\\n\\f]*\\)|)(?=[^-]|$)","i")},G=/HTML$/i,J=/^(?:input|select|textarea|button)$/i,K=/^h\d$/i,Q=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,tt=/[+~]/,et=new RegExp("\\\\[\\da-fA-F]{1,6}[\\x20\\t\\r\\n\\f]?|\\\\([^\\r\\n\\f])","g"),ot=function(t,e){var o="0x"+t.slice(1)-65536;return e||(o<0?String.fromCharCode(o+65536):String.fromCharCode(o>>10|55296,1023&o|56320))},pt=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,bt=function(t,e){return e?"\0"===t?"�":t.slice(0,-1)+"\\"+t.charCodeAt(t.length-1).toString(16)+" ":"\\"+t},nt=function(){O()},Mt=ht((function(t){return!0===t.disabled&&"fieldset"===t.nodeName.toLowerCase()}),{dir:"parentNode",next:"legend"});try{x.apply(_=T.call(W.childNodes),W.childNodes),_[W.childNodes.length].nodeType}catch(t){x={apply:_.length?function(t,e){w.apply(t,T.call(e))}:function(t,e){for(var o=t.length,p=0;t[o++]=e[p++];);t.length=o-1}}}function zt(t,e,p,b){var n,z,r,i,a,l,u,f=e&&e.ownerDocument,W=e?e.nodeType:9;if(p=p||[],"string"!=typeof t||!t||1!==W&&9!==W&&11!==W)return p;if(!b&&(O(e),e=e||s,d)){if(11!==W&&(a=Z.exec(t)))if(n=a[1]){if(9===W){if(!(r=e.getElementById(n)))return p;if(r.id===n)return p.push(r),p}else if(f&&(r=f.getElementById(n))&&q(e,r)&&r.id===n)return p.push(r),p}else{if(a[2])return x.apply(p,e.getElementsByTagName(t)),p;if((n=a[3])&&o.getElementsByClassName&&e.getElementsByClassName)return x.apply(p,e.getElementsByClassName(n)),p}if(o.qsa&&!B[t+" "]&&(!A||!A.test(t))&&(1!==W||"object"!==e.nodeName.toLowerCase())){if(u=t,f=e,1===W&&(U.test(t)||H.test(t))){for((f=tt.test(t)&&ut(e.parentNode)||e)===e&&o.scope||((i=e.getAttribute("id"))?i=i.replace(pt,bt):e.setAttribute("id",i=h)),z=(l=M(t)).length;z--;)l[z]=(i?"#"+i:":scope")+" "+qt(l[z]);u=l.join(",")}try{return x.apply(p,f.querySelectorAll(u)),p}catch(e){B(t,!0)}finally{i===h&&e.removeAttribute("id")}}}return c(t.replace(I,"$1"),e,p,b)}function ct(){var t=[];return function e(o,b){return t.push(o+" ")>p.cacheLength&&delete e[t.shift()],e[o+" "]=b}}function rt(t){return t[h]=!0,t}function it(t){var e=s.createElement("fieldset");try{return!!t(e)}catch(t){return!1}finally{e.parentNode&&e.parentNode.removeChild(e),e=null}}function at(t,e){for(var o=t.split("|"),b=o.length;b--;)p.attrHandle[o[b]]=e}function Ot(t,e){var o=e&&t,p=o&&1===t.nodeType&&1===e.nodeType&&t.sourceIndex-e.sourceIndex;if(p)return p;if(o)for(;o=o.nextSibling;)if(o===e)return-1;return t?1:-1}function st(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function lt(t){return function(e){var o=e.nodeName.toLowerCase();return("input"===o||"button"===o)&&e.type===t}}function dt(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&Mt(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function At(t){return rt((function(e){return e=+e,rt((function(o,p){for(var b,n=t([],o.length,e),M=n.length;M--;)o[b=n[M]]&&(o[b]=!(p[b]=o[b]))}))}))}function ut(t){return t&&void 0!==t.getElementsByTagName&&t}for(e in o=zt.support={},n=zt.isXML=function(t){var e=t&&t.namespaceURI,o=t&&(t.ownerDocument||t).documentElement;return!G.test(e||o&&o.nodeName||"HTML")},O=zt.setDocument=function(t){var e,b,M=t?t.ownerDocument||t:W;return M!=s&&9===M.nodeType&&M.documentElement?(l=(s=M).documentElement,d=!n(s),W!=s&&(b=s.defaultView)&&b.top!==b&&(b.addEventListener?b.addEventListener("unload",nt,!1):b.attachEvent&&b.attachEvent("onunload",nt)),o.scope=it((function(t){return l.appendChild(t).appendChild(s.createElement("div")),void 0!==t.querySelectorAll&&!t.querySelectorAll(":scope fieldset div").length})),o.attributes=it((function(t){return t.className="i",!t.getAttribute("className")})),o.getElementsByTagName=it((function(t){return t.appendChild(s.createComment("")),!t.getElementsByTagName("*").length})),o.getElementsByClassName=Q.test(s.getElementsByClassName),o.getById=it((function(t){return l.appendChild(t).id=h,!s.getElementsByName||!s.getElementsByName(h).length})),o.getById?(p.filter.ID=function(t){var e=t.replace(et,ot);return function(t){return t.getAttribute("id")===e}},p.find.ID=function(t,e){if(void 0!==e.getElementById&&d){var o=e.getElementById(t);return o?[o]:[]}}):(p.filter.ID=function(t){var e=t.replace(et,ot);return function(t){var o=void 0!==t.getAttributeNode&&t.getAttributeNode("id");return o&&o.value===e}},p.find.ID=function(t,e){if(void 0!==e.getElementById&&d){var o,p,b,n=e.getElementById(t);if(n){if((o=n.getAttributeNode("id"))&&o.value===t)return[n];for(b=e.getElementsByName(t),p=0;n=b[p++];)if((o=n.getAttributeNode("id"))&&o.value===t)return[n]}return[]}}),p.find.TAG=o.getElementsByTagName?function(t,e){return void 0!==e.getElementsByTagName?e.getElementsByTagName(t):o.qsa?e.querySelectorAll(t):void 0}:function(t,e){var o,p=[],b=0,n=e.getElementsByTagName(t);if("*"===t){for(;o=n[b++];)1===o.nodeType&&p.push(o);return p}return n},p.find.CLASS=o.getElementsByClassName&&function(t,e){if(void 0!==e.getElementsByClassName&&d)return e.getElementsByClassName(t)},u=[],A=[],(o.qsa=Q.test(s.querySelectorAll))&&(it((function(t){var e;l.appendChild(t).innerHTML="",t.querySelectorAll("[msallowcapture^='']").length&&A.push("[*^$]=[\\x20\\t\\r\\n\\f]*(?:''|\"\")"),t.querySelectorAll("[selected]").length||A.push("\\[[\\x20\\t\\r\\n\\f]*(?:value|"+S+")"),t.querySelectorAll("[id~="+h+"-]").length||A.push("~="),(e=s.createElement("input")).setAttribute("name",""),t.appendChild(e),t.querySelectorAll("[name='']").length||A.push("\\[[\\x20\\t\\r\\n\\f]*name[\\x20\\t\\r\\n\\f]*=[\\x20\\t\\r\\n\\f]*(?:''|\"\")"),t.querySelectorAll(":checked").length||A.push(":checked"),t.querySelectorAll("a#"+h+"+*").length||A.push(".#.+[+~]"),t.querySelectorAll("\\\f"),A.push("[\\r\\n\\f]")})),it((function(t){t.innerHTML="";var e=s.createElement("input");e.setAttribute("type","hidden"),t.appendChild(e).setAttribute("name","D"),t.querySelectorAll("[name=d]").length&&A.push("name[\\x20\\t\\r\\n\\f]*[*^$|!~]?="),2!==t.querySelectorAll(":enabled").length&&A.push(":enabled",":disabled"),l.appendChild(t).disabled=!0,2!==t.querySelectorAll(":disabled").length&&A.push(":enabled",":disabled"),t.querySelectorAll("*,:x"),A.push(",.*:")}))),(o.matchesSelector=Q.test(f=l.matches||l.webkitMatchesSelector||l.mozMatchesSelector||l.oMatchesSelector||l.msMatchesSelector))&&it((function(t){o.disconnectedMatch=f.call(t,"*"),f.call(t,"[s!='']:x"),u.push("!=",P)})),A=A.length&&new RegExp(A.join("|")),u=u.length&&new RegExp(u.join("|")),e=Q.test(l.compareDocumentPosition),q=e||Q.test(l.contains)?function(t,e){var o=9===t.nodeType?t.documentElement:t,p=e&&e.parentNode;return t===p||!(!p||1!==p.nodeType||!(o.contains?o.contains(p):t.compareDocumentPosition&&16&t.compareDocumentPosition(p)))}:function(t,e){if(e)for(;e=e.parentNode;)if(e===t)return!0;return!1},L=e?function(t,e){if(t===e)return a=!0,0;var p=!t.compareDocumentPosition-!e.compareDocumentPosition;return p||(1&(p=(t.ownerDocument||t)==(e.ownerDocument||e)?t.compareDocumentPosition(e):1)||!o.sortDetached&&e.compareDocumentPosition(t)===p?t==s||t.ownerDocument==W&&q(W,t)?-1:e==s||e.ownerDocument==W&&q(W,e)?1:i?C(i,t)-C(i,e):0:4&p?-1:1)}:function(t,e){if(t===e)return a=!0,0;var o,p=0,b=t.parentNode,n=e.parentNode,M=[t],z=[e];if(!b||!n)return t==s?-1:e==s?1:b?-1:n?1:i?C(i,t)-C(i,e):0;if(b===n)return Ot(t,e);for(o=t;o=o.parentNode;)M.unshift(o);for(o=e;o=o.parentNode;)z.unshift(o);for(;M[p]===z[p];)p++;return p?Ot(M[p],z[p]):M[p]==W?-1:z[p]==W?1:0},s):s},zt.matches=function(t,e){return zt(t,null,null,e)},zt.matchesSelector=function(t,e){if(O(t),o.matchesSelector&&d&&!B[e+" "]&&(!u||!u.test(e))&&(!A||!A.test(e)))try{var p=f.call(t,e);if(p||o.disconnectedMatch||t.document&&11!==t.document.nodeType)return p}catch(t){B(e,!0)}return zt(e,s,null,[t]).length>0},zt.contains=function(t,e){return(t.ownerDocument||t)!=s&&O(t),q(t,e)},zt.attr=function(t,e){(t.ownerDocument||t)!=s&&O(t);var b=p.attrHandle[e.toLowerCase()],n=b&&X.call(p.attrHandle,e.toLowerCase())?b(t,e,!d):void 0;return void 0!==n?n:o.attributes||!d?t.getAttribute(e):(n=t.getAttributeNode(e))&&n.specified?n.value:null},zt.escape=function(t){return(t+"").replace(pt,bt)},zt.error=function(t){throw new Error("Syntax error, unrecognized expression: "+t)},zt.uniqueSort=function(t){var e,p=[],b=0,n=0;if(a=!o.detectDuplicates,i=!o.sortStable&&t.slice(0),t.sort(L),a){for(;e=t[n++];)e===t[n]&&(b=p.push(n));for(;b--;)t.splice(p[b],1)}return i=null,t},b=zt.getText=function(t){var e,o="",p=0,n=t.nodeType;if(n){if(1===n||9===n||11===n){if("string"==typeof t.textContent)return t.textContent;for(t=t.firstChild;t;t=t.nextSibling)o+=b(t)}else if(3===n||4===n)return t.nodeValue}else for(;e=t[p++];)o+=b(e);return o},p=zt.selectors={cacheLength:50,createPseudo:rt,match:Y,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(t){return t[1]=t[1].replace(et,ot),t[3]=(t[3]||t[4]||t[5]||"").replace(et,ot),"~="===t[2]&&(t[3]=" "+t[3]+" "),t.slice(0,4)},CHILD:function(t){return t[1]=t[1].toLowerCase(),"nth"===t[1].slice(0,3)?(t[3]||zt.error(t[0]),t[4]=+(t[4]?t[5]+(t[6]||1):2*("even"===t[3]||"odd"===t[3])),t[5]=+(t[7]+t[8]||"odd"===t[3])):t[3]&&zt.error(t[0]),t},PSEUDO:function(t){var e,o=!t[6]&&t[2];return Y.CHILD.test(t[0])?null:(t[3]?t[2]=t[4]||t[5]||"":o&&V.test(o)&&(e=M(o,!0))&&(e=o.indexOf(")",o.length-e)-o.length)&&(t[0]=t[0].slice(0,e),t[2]=o.slice(0,e)),t.slice(0,3))}},filter:{TAG:function(t){var e=t.replace(et,ot).toLowerCase();return"*"===t?function(){return!0}:function(t){return t.nodeName&&t.nodeName.toLowerCase()===e}},CLASS:function(t){var e=v[t+" "];return e||(e=new RegExp("(^|[\\x20\\t\\r\\n\\f])"+t+"("+k+"|$)"))&&v(t,(function(t){return e.test("string"==typeof t.className&&t.className||void 0!==t.getAttribute&&t.getAttribute("class")||"")}))},ATTR:function(t,e,o){return function(p){var b=zt.attr(p,t);return null==b?"!="===e:!e||(b+="","="===e?b===o:"!="===e?b!==o:"^="===e?o&&0===b.indexOf(o):"*="===e?o&&b.indexOf(o)>-1:"$="===e?o&&b.slice(-o.length)===o:"~="===e?(" "+b.replace(j," ")+" ").indexOf(o)>-1:"|="===e&&(b===o||b.slice(0,o.length+1)===o+"-"))}},CHILD:function(t,e,o,p,b){var n="nth"!==t.slice(0,3),M="last"!==t.slice(-4),z="of-type"===e;return 1===p&&0===b?function(t){return!!t.parentNode}:function(e,o,c){var r,i,a,O,s,l,d=n!==M?"nextSibling":"previousSibling",A=e.parentNode,u=z&&e.nodeName.toLowerCase(),f=!c&&!z,q=!1;if(A){if(n){for(;d;){for(O=e;O=O[d];)if(z?O.nodeName.toLowerCase()===u:1===O.nodeType)return!1;l=d="only"===t&&!l&&"nextSibling"}return!0}if(l=[M?A.firstChild:A.lastChild],M&&f){for(q=(s=(r=(i=(a=(O=A)[h]||(O[h]={}))[O.uniqueID]||(a[O.uniqueID]={}))[t]||[])[0]===m&&r[1])&&r[2],O=s&&A.childNodes[s];O=++s&&O&&O[d]||(q=s=0)||l.pop();)if(1===O.nodeType&&++q&&O===e){i[t]=[m,s,q];break}}else if(f&&(q=s=(r=(i=(a=(O=e)[h]||(O[h]={}))[O.uniqueID]||(a[O.uniqueID]={}))[t]||[])[0]===m&&r[1]),!1===q)for(;(O=++s&&O&&O[d]||(q=s=0)||l.pop())&&((z?O.nodeName.toLowerCase()!==u:1!==O.nodeType)||!++q||(f&&((i=(a=O[h]||(O[h]={}))[O.uniqueID]||(a[O.uniqueID]={}))[t]=[m,q]),O!==e)););return(q-=b)===p||q%p==0&&q/p>=0}}},PSEUDO:function(t,e){var o,b=p.pseudos[t]||p.setFilters[t.toLowerCase()]||zt.error("unsupported pseudo: "+t);return b[h]?b(e):b.length>1?(o=[t,t,"",e],p.setFilters.hasOwnProperty(t.toLowerCase())?rt((function(t,o){for(var p,n=b(t,e),M=n.length;M--;)t[p=C(t,n[M])]=!(o[p]=n[M])})):function(t){return b(t,0,o)}):b}},pseudos:{not:rt((function(t){var e=[],o=[],p=z(t.replace(I,"$1"));return p[h]?rt((function(t,e,o,b){for(var n,M=p(t,null,b,[]),z=t.length;z--;)(n=M[z])&&(t[z]=!(e[z]=n))})):function(t,b,n){return e[0]=t,p(e,null,n,o),e[0]=null,!o.pop()}})),has:rt((function(t){return function(e){return zt(t,e).length>0}})),contains:rt((function(t){return t=t.replace(et,ot),function(e){return(e.textContent||b(e)).indexOf(t)>-1}})),lang:rt((function(t){return $.test(t||"")||zt.error("unsupported lang: "+t),t=t.replace(et,ot).toLowerCase(),function(e){var o;do{if(o=d?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(o=o.toLowerCase())===t||0===o.indexOf(t+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}})),target:function(e){var o=t.location&&t.location.hash;return o&&o.slice(1)===e.id},root:function(t){return t===l},focus:function(t){return t===s.activeElement&&(!s.hasFocus||s.hasFocus())&&!!(t.type||t.href||~t.tabIndex)},enabled:dt(!1),disabled:dt(!0),checked:function(t){var e=t.nodeName.toLowerCase();return"input"===e&&!!t.checked||"option"===e&&!!t.selected},selected:function(t){return t.parentNode&&t.parentNode.selectedIndex,!0===t.selected},empty:function(t){for(t=t.firstChild;t;t=t.nextSibling)if(t.nodeType<6)return!1;return!0},parent:function(t){return!p.pseudos.empty(t)},header:function(t){return K.test(t.nodeName)},input:function(t){return J.test(t.nodeName)},button:function(t){var e=t.nodeName.toLowerCase();return"input"===e&&"button"===t.type||"button"===e},text:function(t){var e;return"input"===t.nodeName.toLowerCase()&&"text"===t.type&&(null==(e=t.getAttribute("type"))||"text"===e.toLowerCase())},first:At((function(){return[0]})),last:At((function(t,e){return[e-1]})),eq:At((function(t,e,o){return[o<0?o+e:o]})),even:At((function(t,e){for(var o=0;oe?e:o;--p>=0;)t.push(p);return t})),gt:At((function(t,e,o){for(var p=o<0?o+e:o;++p1?function(e,o,p){for(var b=t.length;b--;)if(!t[b](e,o,p))return!1;return!0}:t[0]}function mt(t,e,o,p,b){for(var n,M=[],z=0,c=t.length,r=null!=e;z-1&&(n[r]=!(M[r]=a))}}else u=mt(u===M?u.splice(l,u.length):u),b?b(null,M,u,c):x.apply(M,u)}))}function vt(t){for(var e,o,b,n=t.length,M=p.relative[t[0].type],z=M||p.relative[" "],c=M?1:0,i=ht((function(t){return t===e}),z,!0),a=ht((function(t){return C(e,t)>-1}),z,!0),O=[function(t,o,p){var b=!M&&(p||o!==r)||((e=o).nodeType?i(t,o,p):a(t,o,p));return e=null,b}];c1&&Wt(O),c>1&&qt(t.slice(0,c-1).concat({value:" "===t[c-2].type?"*":""})).replace(I,"$1"),o,c0,b=t.length>0,n=function(n,M,z,c,i){var a,l,A,u=0,f="0",q=n&&[],h=[],W=r,g=n||b&&p.find.TAG("*",i),v=m+=null==W?1:Math.random()||.1,R=g.length;for(i&&(r=M==s||M||i);f!==R&&null!=(a=g[f]);f++){if(b&&a){for(l=0,M||a.ownerDocument==s||(O(a),z=!d);A=t[l++];)if(A(a,M||s,z)){c.push(a);break}i&&(m=v)}o&&((a=!A&&a)&&u--,n&&q.push(a))}if(u+=f,o&&f!==u){for(l=0;A=e[l++];)A(q,h,M,z);if(n){if(u>0)for(;f--;)q[f]||h[f]||(h[f]=N.call(c));h=mt(h)}x.apply(c,h),i&&!n&&h.length>0&&u+e.length>1&&zt.uniqueSort(c)}return i&&(m=v,r=W),q};return o?rt(n):n}(n,b)),z.selector=t}return z},c=zt.select=function(t,e,o,b){var n,c,r,i,a,O="function"==typeof t&&t,s=!b&&M(t=O.selector||t);if(o=o||[],1===s.length){if((c=s[0]=s[0].slice(0)).length>2&&"ID"===(r=c[0]).type&&9===e.nodeType&&d&&p.relative[c[1].type]){if(!(e=(p.find.ID(r.matches[0].replace(et,ot),e)||[])[0]))return o;O&&(e=e.parentNode),t=t.slice(c.shift().value.length)}for(n=Y.needsContext.test(t)?0:c.length;n--&&(r=c[n],!p.relative[i=r.type]);)if((a=p.find[i])&&(b=a(r.matches[0].replace(et,ot),tt.test(c[0].type)&&ut(e.parentNode)||e))){if(c.splice(n,1),!(t=b.length&&qt(c)))return x.apply(o,b),o;break}}return(O||z(t,s))(b,e,!d,o,!e||tt.test(t)&&ut(e.parentNode)||e),o},o.sortStable=h.split("").sort(L).join("")===h,o.detectDuplicates=!!a,O(),o.sortDetached=it((function(t){return 1&t.compareDocumentPosition(s.createElement("fieldset"))})),it((function(t){return t.innerHTML="","#"===t.firstChild.getAttribute("href")}))||at("type|href|height|width",(function(t,e,o){if(!o)return t.getAttribute(e,"type"===e.toLowerCase()?1:2)})),o.attributes&&it((function(t){return t.innerHTML="",t.firstChild.setAttribute("value",""),""===t.firstChild.getAttribute("value")}))||at("value",(function(t,e,o){if(!o&&"input"===t.nodeName.toLowerCase())return t.defaultValue})),it((function(t){return null==t.getAttribute("disabled")}))||at(S,(function(t,e,o){var p;if(!o)return!0===t[e]?e.toLowerCase():(p=t.getAttributeNode(e))&&p.specified?p.value:null})),zt}(p);v.find=y,v.expr=y.selectors,v.expr[":"]=v.expr.pseudos,v.uniqueSort=v.unique=y.uniqueSort,v.text=y.getText,v.isXMLDoc=y.isXML,v.contains=y.contains,v.escapeSelector=y.escape;var B=function(t,e,o){for(var p=[],b=void 0!==o;(t=t[e])&&9!==t.nodeType;)if(1===t.nodeType){if(b&&v(t).is(o))break;p.push(t)}return p},L=function(t,e){for(var o=[];t;t=t.nextSibling)1===t.nodeType&&t!==e&&o.push(t);return o},X=v.expr.match.needsContext;function _(t,e){return t.nodeName&&t.nodeName.toLowerCase()===e.toLowerCase()}var N=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function w(t,e,o){return u(e)?v.grep(t,(function(t,p){return!!e.call(t,p,t)!==o})):e.nodeType?v.grep(t,(function(t){return t===e!==o})):"string"!=typeof e?v.grep(t,(function(t){return i.call(e,t)>-1!==o})):v.filter(e,t,o)}v.filter=function(t,e,o){var p=e[0];return o&&(t=":not("+t+")"),1===e.length&&1===p.nodeType?v.find.matchesSelector(p,t)?[p]:[]:v.find.matches(t,v.grep(e,(function(t){return 1===t.nodeType})))},v.fn.extend({find:function(t){var e,o,p=this.length,b=this;if("string"!=typeof t)return this.pushStack(v(t).filter((function(){for(e=0;e1?v.uniqueSort(o):o},filter:function(t){return this.pushStack(w(this,t||[],!1))},not:function(t){return this.pushStack(w(this,t||[],!0))},is:function(t){return!!w(this,"string"==typeof t&&X.test(t)?v(t):t||[],!1).length}});var x,T=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(v.fn.init=function(t,e,o){var p,b;if(!t)return this;if(o=o||x,"string"==typeof t){if(!(p="<"===t[0]&&">"===t[t.length-1]&&t.length>=3?[null,t,null]:T.exec(t))||!p[1]&&e)return!e||e.jquery?(e||o).find(t):this.constructor(e).find(t);if(p[1]){if(e=e instanceof v?e[0]:e,v.merge(this,v.parseHTML(p[1],e&&e.nodeType?e.ownerDocument||e:q,!0)),N.test(p[1])&&v.isPlainObject(e))for(p in e)u(this[p])?this[p](e[p]):this.attr(p,e[p]);return this}return(b=q.getElementById(p[2]))&&(this[0]=b,this.length=1),this}return t.nodeType?(this[0]=t,this.length=1,this):u(t)?void 0!==o.ready?o.ready(t):t(v):v.makeArray(t,this)}).prototype=v.fn,x=v(q);var C=/^(?:parents|prev(?:Until|All))/,S={children:!0,contents:!0,next:!0,prev:!0};function k(t,e){for(;(t=t[e])&&1!==t.nodeType;);return t}v.fn.extend({has:function(t){var e=v(t,this),o=e.length;return this.filter((function(){for(var t=0;t-1:1===o.nodeType&&v.find.matchesSelector(o,t))){n.push(o);break}return this.pushStack(n.length>1?v.uniqueSort(n):n)},index:function(t){return t?"string"==typeof t?i.call(v(t),this[0]):i.call(this,t.jquery?t[0]:t):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(t,e){return this.pushStack(v.uniqueSort(v.merge(this.get(),v(t,e))))},addBack:function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}}),v.each({parent:function(t){var e=t.parentNode;return e&&11!==e.nodeType?e:null},parents:function(t){return B(t,"parentNode")},parentsUntil:function(t,e,o){return B(t,"parentNode",o)},next:function(t){return k(t,"nextSibling")},prev:function(t){return k(t,"previousSibling")},nextAll:function(t){return B(t,"nextSibling")},prevAll:function(t){return B(t,"previousSibling")},nextUntil:function(t,e,o){return B(t,"nextSibling",o)},prevUntil:function(t,e,o){return B(t,"previousSibling",o)},siblings:function(t){return L((t.parentNode||{}).firstChild,t)},children:function(t){return L(t.firstChild)},contents:function(t){return null!=t.contentDocument&&M(t.contentDocument)?t.contentDocument:(_(t,"template")&&(t=t.content||t),v.merge([],t.childNodes))}},(function(t,e){v.fn[t]=function(o,p){var b=v.map(this,e,o);return"Until"!==t.slice(-5)&&(p=o),p&&"string"==typeof p&&(b=v.filter(p,b)),this.length>1&&(S[t]||v.uniqueSort(b),C.test(t)&&b.reverse()),this.pushStack(b)}}));var E=/[^\x20\t\r\n\f]+/g;function D(t){return t}function P(t){throw t}function j(t,e,o,p){var b;try{t&&u(b=t.promise)?b.call(t).done(e).fail(o):t&&u(b=t.then)?b.call(t,e,o):e.apply(void 0,[t].slice(p))}catch(t){o.apply(void 0,[t])}}v.Callbacks=function(t){t="string"==typeof t?function(t){var e={};return v.each(t.match(E)||[],(function(t,o){e[o]=!0})),e}(t):v.extend({},t);var e,o,p,b,n=[],M=[],z=-1,c=function(){for(b=b||t.once,p=e=!0;M.length;z=-1)for(o=M.shift();++z-1;)n.splice(o,1),o<=z&&z--})),this},has:function(t){return t?v.inArray(t,n)>-1:n.length>0},empty:function(){return n&&(n=[]),this},disable:function(){return b=M=[],n=o="",this},disabled:function(){return!n},lock:function(){return b=M=[],o||e||(n=o=""),this},locked:function(){return!!b},fireWith:function(t,o){return b||(o=[t,(o=o||[]).slice?o.slice():o],M.push(o),e||c()),this},fire:function(){return r.fireWith(this,arguments),this},fired:function(){return!!p}};return r},v.extend({Deferred:function(t){var e=[["notify","progress",v.Callbacks("memory"),v.Callbacks("memory"),2],["resolve","done",v.Callbacks("once memory"),v.Callbacks("once memory"),0,"resolved"],["reject","fail",v.Callbacks("once memory"),v.Callbacks("once memory"),1,"rejected"]],o="pending",b={state:function(){return o},always:function(){return n.done(arguments).fail(arguments),this},catch:function(t){return b.then(null,t)},pipe:function(){var t=arguments;return v.Deferred((function(o){v.each(e,(function(e,p){var b=u(t[p[4]])&&t[p[4]];n[p[1]]((function(){var t=b&&b.apply(this,arguments);t&&u(t.promise)?t.promise().progress(o.notify).done(o.resolve).fail(o.reject):o[p[0]+"With"](this,b?[t]:arguments)}))})),t=null})).promise()},then:function(t,o,b){var n=0;function M(t,e,o,b){return function(){var z=this,c=arguments,r=function(){var p,r;if(!(t=n&&(o!==P&&(z=void 0,c=[p]),e.rejectWith(z,c))}};t?i():(v.Deferred.getStackHook&&(i.stackTrace=v.Deferred.getStackHook()),p.setTimeout(i))}}return v.Deferred((function(p){e[0][3].add(M(0,p,u(b)?b:D,p.notifyWith)),e[1][3].add(M(0,p,u(t)?t:D)),e[2][3].add(M(0,p,u(o)?o:P))})).promise()},promise:function(t){return null!=t?v.extend(t,b):b}},n={};return v.each(e,(function(t,p){var M=p[2],z=p[5];b[p[1]]=M.add,z&&M.add((function(){o=z}),e[3-t][2].disable,e[3-t][3].disable,e[0][2].lock,e[0][3].lock),M.add(p[3].fire),n[p[0]]=function(){return n[p[0]+"With"](this===n?void 0:this,arguments),this},n[p[0]+"With"]=M.fireWith})),b.promise(n),t&&t.call(n,n),n},when:function(t){var e=arguments.length,o=e,p=Array(o),b=z.call(arguments),n=v.Deferred(),M=function(t){return function(o){p[t]=this,b[t]=arguments.length>1?z.call(arguments):o,--e||n.resolveWith(p,b)}};if(e<=1&&(j(t,n.done(M(o)).resolve,n.reject,!e),"pending"===n.state()||u(b[o]&&b[o].then)))return n.then();for(;o--;)j(b[o],M(o),n.reject);return n.promise()}});var I=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;v.Deferred.exceptionHook=function(t,e){p.console&&p.console.warn&&t&&I.test(t.name)&&p.console.warn("jQuery.Deferred exception: "+t.message,t.stack,e)},v.readyException=function(t){p.setTimeout((function(){throw t}))};var F=v.Deferred();function H(){q.removeEventListener("DOMContentLoaded",H),p.removeEventListener("load",H),v.ready()}v.fn.ready=function(t){return F.then(t).catch((function(t){v.readyException(t)})),this},v.extend({isReady:!1,readyWait:1,ready:function(t){(!0===t?--v.readyWait:v.isReady)||(v.isReady=!0,!0!==t&&--v.readyWait>0||F.resolveWith(q,[v]))}}),v.ready.then=F.then,"complete"===q.readyState||"loading"!==q.readyState&&!q.documentElement.doScroll?p.setTimeout(v.ready):(q.addEventListener("DOMContentLoaded",H),p.addEventListener("load",H));var U=function(t,e,o,p,b,n,M){var z=0,c=t.length,r=null==o;if("object"===m(o))for(z in b=!0,o)U(t,e,z,o[z],!0,n,M);else if(void 0!==p&&(b=!0,u(p)||(M=!0),r&&(M?(e.call(t,p),e=null):(r=e,e=function(t,e,o){return r.call(v(t),o)})),e))for(;z1,null,!0)},removeData:function(t){return this.each((function(){Z.remove(this,t)}))}}),v.extend({queue:function(t,e,o){var p;if(t)return e=(e||"fx")+"queue",p=Q.get(t,e),o&&(!p||Array.isArray(o)?p=Q.access(t,e,v.makeArray(o)):p.push(o)),p||[]},dequeue:function(t,e){e=e||"fx";var o=v.queue(t,e),p=o.length,b=o.shift(),n=v._queueHooks(t,e);"inprogress"===b&&(b=o.shift(),p--),b&&("fx"===e&&o.unshift("inprogress"),delete n.stop,b.call(t,(function(){v.dequeue(t,e)}),n)),!p&&n&&n.empty.fire()},_queueHooks:function(t,e){var o=e+"queueHooks";return Q.get(t,o)||Q.access(t,o,{empty:v.Callbacks("once memory").add((function(){Q.remove(t,[e+"queue",o])}))})}}),v.fn.extend({queue:function(t,e){var o=2;return"string"!=typeof t&&(e=t,t="fx",o--),arguments.length\x20\t\r\n\f]*)/i,ft=/^$|^module$|\/(?:java|ecma)script/i;lt=q.createDocumentFragment().appendChild(q.createElement("div")),(dt=q.createElement("input")).setAttribute("type","radio"),dt.setAttribute("checked","checked"),dt.setAttribute("name","t"),lt.appendChild(dt),A.checkClone=lt.cloneNode(!0).cloneNode(!0).lastChild.checked,lt.innerHTML="",A.noCloneChecked=!!lt.cloneNode(!0).lastChild.defaultValue,lt.innerHTML="",A.option=!!lt.lastChild;var qt={thead:[1,"","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};function ht(t,e){var o;return o=void 0!==t.getElementsByTagName?t.getElementsByTagName(e||"*"):void 0!==t.querySelectorAll?t.querySelectorAll(e||"*"):[],void 0===e||e&&_(t,e)?v.merge([t],o):o}function Wt(t,e){for(var o=0,p=t.length;o",""]);var mt=/<|&#?\w+;/;function gt(t,e,o,p,b){for(var n,M,z,c,r,i,a=e.createDocumentFragment(),O=[],s=0,l=t.length;s-1)b&&b.push(n);else if(r=zt(n),M=ht(a.appendChild(n),"script"),r&&Wt(M),o)for(i=0;n=M[i++];)ft.test(n.type||"")&&o.push(n);return a}var vt=/^([^.]*)(?:\.(.+)|)/;function Rt(){return!0}function yt(){return!1}function Bt(t,e){return t===function(){try{return q.activeElement}catch(t){}}()==("focus"===e)}function Lt(t,e,o,p,b,n){var M,z;if("object"==typeof e){for(z in"string"!=typeof o&&(p=p||o,o=void 0),e)Lt(t,z,o,p,e[z],n);return t}if(null==p&&null==b?(b=o,p=o=void 0):null==b&&("string"==typeof o?(b=p,p=void 0):(b=p,p=o,o=void 0)),!1===b)b=yt;else if(!b)return t;return 1===n&&(M=b,b=function(t){return v().off(t),M.apply(this,arguments)},b.guid=M.guid||(M.guid=v.guid++)),t.each((function(){v.event.add(this,e,b,p,o)}))}function Xt(t,e,o){o?(Q.set(t,e,!1),v.event.add(t,e,{namespace:!1,handler:function(t){var p,b,n=Q.get(this,e);if(1&t.isTrigger&&this[e]){if(n.length)(v.event.special[e]||{}).delegateType&&t.stopPropagation();else if(n=z.call(arguments),Q.set(this,e,n),p=o(this,e),this[e](),n!==(b=Q.get(this,e))||p?Q.set(this,e,!1):b={},n!==b)return t.stopImmediatePropagation(),t.preventDefault(),b&&b.value}else n.length&&(Q.set(this,e,{value:v.event.trigger(v.extend(n[0],v.Event.prototype),n.slice(1),this)}),t.stopImmediatePropagation())}})):void 0===Q.get(t,e)&&v.event.add(t,e,Rt)}v.event={global:{},add:function(t,e,o,p,b){var n,M,z,c,r,i,a,O,s,l,d,A=Q.get(t);if(J(t))for(o.handler&&(o=(n=o).handler,b=n.selector),b&&v.find.matchesSelector(Mt,b),o.guid||(o.guid=v.guid++),(c=A.events)||(c=A.events=Object.create(null)),(M=A.handle)||(M=A.handle=function(e){return void 0!==v&&v.event.triggered!==e.type?v.event.dispatch.apply(t,arguments):void 0}),r=(e=(e||"").match(E)||[""]).length;r--;)s=d=(z=vt.exec(e[r])||[])[1],l=(z[2]||"").split(".").sort(),s&&(a=v.event.special[s]||{},s=(b?a.delegateType:a.bindType)||s,a=v.event.special[s]||{},i=v.extend({type:s,origType:d,data:p,handler:o,guid:o.guid,selector:b,needsContext:b&&v.expr.match.needsContext.test(b),namespace:l.join(".")},n),(O=c[s])||((O=c[s]=[]).delegateCount=0,a.setup&&!1!==a.setup.call(t,p,l,M)||t.addEventListener&&t.addEventListener(s,M)),a.add&&(a.add.call(t,i),i.handler.guid||(i.handler.guid=o.guid)),b?O.splice(O.delegateCount++,0,i):O.push(i),v.event.global[s]=!0)},remove:function(t,e,o,p,b){var n,M,z,c,r,i,a,O,s,l,d,A=Q.hasData(t)&&Q.get(t);if(A&&(c=A.events)){for(r=(e=(e||"").match(E)||[""]).length;r--;)if(s=d=(z=vt.exec(e[r])||[])[1],l=(z[2]||"").split(".").sort(),s){for(a=v.event.special[s]||{},O=c[s=(p?a.delegateType:a.bindType)||s]||[],z=z[2]&&new RegExp("(^|\\.)"+l.join("\\.(?:.*\\.|)")+"(\\.|$)"),M=n=O.length;n--;)i=O[n],!b&&d!==i.origType||o&&o.guid!==i.guid||z&&!z.test(i.namespace)||p&&p!==i.selector&&("**"!==p||!i.selector)||(O.splice(n,1),i.selector&&O.delegateCount--,a.remove&&a.remove.call(t,i));M&&!O.length&&(a.teardown&&!1!==a.teardown.call(t,l,A.handle)||v.removeEvent(t,s,A.handle),delete c[s])}else for(s in c)v.event.remove(t,s+e[r],o,p,!0);v.isEmptyObject(c)&&Q.remove(t,"handle events")}},dispatch:function(t){var e,o,p,b,n,M,z=new Array(arguments.length),c=v.event.fix(t),r=(Q.get(this,"events")||Object.create(null))[c.type]||[],i=v.event.special[c.type]||{};for(z[0]=c,e=1;e=1))for(;r!==this;r=r.parentNode||this)if(1===r.nodeType&&("click"!==t.type||!0!==r.disabled)){for(n=[],M={},o=0;o-1:v.find(b,this,null,[r]).length),M[b]&&n.push(p);n.length&&z.push({elem:r,handlers:n})}return r=this,c\s*$/g;function xt(t,e){return _(t,"table")&&_(11!==e.nodeType?e:e.firstChild,"tr")&&v(t).children("tbody")[0]||t}function Tt(t){return t.type=(null!==t.getAttribute("type"))+"/"+t.type,t}function Ct(t){return"true/"===(t.type||"").slice(0,5)?t.type=t.type.slice(5):t.removeAttribute("type"),t}function St(t,e){var o,p,b,n,M,z;if(1===e.nodeType){if(Q.hasData(t)&&(z=Q.get(t).events))for(b in Q.remove(e,"handle events"),z)for(o=0,p=z[b].length;o1&&"string"==typeof l&&!A.checkClone&&Nt.test(l))return t.each((function(b){var n=t.eq(b);d&&(e[0]=l.call(this,b,n.html())),Et(n,e,o,p)}));if(O&&(n=(b=gt(e,t[0].ownerDocument,!1,t,p)).firstChild,1===b.childNodes.length&&(b=n),n||p)){for(z=(M=v.map(ht(b,"script"),Tt)).length;a0&&Wt(M,!c&&ht(t,"script")),z},cleanData:function(t){for(var e,o,p,b=v.event.special,n=0;void 0!==(o=t[n]);n++)if(J(o)){if(e=o[Q.expando]){if(e.events)for(p in e.events)b[p]?v.event.remove(o,p):v.removeEvent(o,p,e.handle);o[Q.expando]=void 0}o[Z.expando]&&(o[Z.expando]=void 0)}}}),v.fn.extend({detach:function(t){return Dt(this,t,!0)},remove:function(t){return Dt(this,t)},text:function(t){return U(this,(function(t){return void 0===t?v.text(this):this.empty().each((function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=t)}))}),null,t,arguments.length)},append:function(){return Et(this,arguments,(function(t){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||xt(this,t).appendChild(t)}))},prepend:function(){return Et(this,arguments,(function(t){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var e=xt(this,t);e.insertBefore(t,e.firstChild)}}))},before:function(){return Et(this,arguments,(function(t){this.parentNode&&this.parentNode.insertBefore(t,this)}))},after:function(){return Et(this,arguments,(function(t){this.parentNode&&this.parentNode.insertBefore(t,this.nextSibling)}))},empty:function(){for(var t,e=0;null!=(t=this[e]);e++)1===t.nodeType&&(v.cleanData(ht(t,!1)),t.textContent="");return this},clone:function(t,e){return t=null!=t&&t,e=null==e?t:e,this.map((function(){return v.clone(this,t,e)}))},html:function(t){return U(this,(function(t){var e=this[0]||{},o=0,p=this.length;if(void 0===t&&1===e.nodeType)return e.innerHTML;if("string"==typeof t&&!_t.test(t)&&!qt[(ut.exec(t)||["",""])[1].toLowerCase()]){t=v.htmlPrefilter(t);try{for(;o=0&&(c+=Math.max(0,Math.ceil(t["offset"+e[0].toUpperCase()+e.slice(1)]-n-c-z-.5))||0),c}function pe(t,e,o){var p=It(t),b=(!A.boxSizingReliable()||o)&&"border-box"===v.css(t,"boxSizing",!1,p),n=b,M=Vt(t,e,p),z="offset"+e[0].toUpperCase()+e.slice(1);if(Pt.test(M)){if(!o)return M;M="auto"}return(!A.boxSizingReliable()&&b||!A.reliableTrDimensions()&&_(t,"tr")||"auto"===M||!parseFloat(M)&&"inline"===v.css(t,"display",!1,p))&&t.getClientRects().length&&(b="border-box"===v.css(t,"boxSizing",!1,p),(n=z in t)&&(M=t[z])),(M=parseFloat(M)||0)+oe(t,e,o||(b?"border":"content"),n,p,M)+"px"}function be(t,e,o,p,b){return new be.prototype.init(t,e,o,p,b)}v.extend({cssHooks:{opacity:{get:function(t,e){if(e){var o=Vt(t,"opacity");return""===o?"1":o}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(t,e,o,p){if(t&&3!==t.nodeType&&8!==t.nodeType&&t.style){var b,n,M,z=G(e),c=jt.test(e),r=t.style;if(c||(e=Kt(z)),M=v.cssHooks[e]||v.cssHooks[z],void 0===o)return M&&"get"in M&&void 0!==(b=M.get(t,!1,p))?b:r[e];"string"===(n=typeof o)&&(b=bt.exec(o))&&b[1]&&(o=it(t,e,b),n="number"),null!=o&&o==o&&("number"!==n||c||(o+=b&&b[3]||(v.cssNumber[z]?"":"px")),A.clearCloneStyle||""!==o||0!==e.indexOf("background")||(r[e]="inherit"),M&&"set"in M&&void 0===(o=M.set(t,o,p))||(c?r.setProperty(e,o):r[e]=o))}},css:function(t,e,o,p){var b,n,M,z=G(e);return jt.test(e)||(e=Kt(z)),(M=v.cssHooks[e]||v.cssHooks[z])&&"get"in M&&(b=M.get(t,!0,o)),void 0===b&&(b=Vt(t,e,p)),"normal"===b&&e in te&&(b=te[e]),""===o||o?(n=parseFloat(b),!0===o||isFinite(n)?n||0:b):b}}),v.each(["height","width"],(function(t,e){v.cssHooks[e]={get:function(t,o,p){if(o)return!Qt.test(v.css(t,"display"))||t.getClientRects().length&&t.getBoundingClientRect().width?pe(t,e,p):Ft(t,Zt,(function(){return pe(t,e,p)}))},set:function(t,o,p){var b,n=It(t),M=!A.scrollboxSize()&&"absolute"===n.position,z=(M||p)&&"border-box"===v.css(t,"boxSizing",!1,n),c=p?oe(t,e,p,z,n):0;return z&&M&&(c-=Math.ceil(t["offset"+e[0].toUpperCase()+e.slice(1)]-parseFloat(n[e])-oe(t,e,"border",!1,n)-.5)),c&&(b=bt.exec(o))&&"px"!==(b[3]||"px")&&(t.style[e]=o,o=v.css(t,e)),ee(0,o,c)}}})),v.cssHooks.marginLeft=$t(A.reliableMarginLeft,(function(t,e){if(e)return(parseFloat(Vt(t,"marginLeft"))||t.getBoundingClientRect().left-Ft(t,{marginLeft:0},(function(){return t.getBoundingClientRect().left})))+"px"})),v.each({margin:"",padding:"",border:"Width"},(function(t,e){v.cssHooks[t+e]={expand:function(o){for(var p=0,b={},n="string"==typeof o?o.split(" "):[o];p<4;p++)b[t+nt[p]+e]=n[p]||n[p-2]||n[0];return b}},"margin"!==t&&(v.cssHooks[t+e].set=ee)})),v.fn.extend({css:function(t,e){return U(this,(function(t,e,o){var p,b,n={},M=0;if(Array.isArray(e)){for(p=It(t),b=e.length;M1)}}),v.Tween=be,be.prototype={constructor:be,init:function(t,e,o,p,b,n){this.elem=t,this.prop=o,this.easing=b||v.easing._default,this.options=e,this.start=this.now=this.cur(),this.end=p,this.unit=n||(v.cssNumber[o]?"":"px")},cur:function(){var t=be.propHooks[this.prop];return t&&t.get?t.get(this):be.propHooks._default.get(this)},run:function(t){var e,o=be.propHooks[this.prop];return this.options.duration?this.pos=e=v.easing[this.easing](t,this.options.duration*t,0,1,this.options.duration):this.pos=e=t,this.now=(this.end-this.start)*e+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),o&&o.set?o.set(this):be.propHooks._default.set(this),this}},be.prototype.init.prototype=be.prototype,be.propHooks={_default:{get:function(t){var e;return 1!==t.elem.nodeType||null!=t.elem[t.prop]&&null==t.elem.style[t.prop]?t.elem[t.prop]:(e=v.css(t.elem,t.prop,""))&&"auto"!==e?e:0},set:function(t){v.fx.step[t.prop]?v.fx.step[t.prop](t):1!==t.elem.nodeType||!v.cssHooks[t.prop]&&null==t.elem.style[Kt(t.prop)]?t.elem[t.prop]=t.now:v.style(t.elem,t.prop,t.now+t.unit)}}},be.propHooks.scrollTop=be.propHooks.scrollLeft={set:function(t){t.elem.nodeType&&t.elem.parentNode&&(t.elem[t.prop]=t.now)}},v.easing={linear:function(t){return t},swing:function(t){return.5-Math.cos(t*Math.PI)/2},_default:"swing"},v.fx=be.prototype.init,v.fx.step={};var ne,Me,ze=/^(?:toggle|show|hide)$/,ce=/queueHooks$/;function re(){Me&&(!1===q.hidden&&p.requestAnimationFrame?p.requestAnimationFrame(re):p.setTimeout(re,v.fx.interval),v.fx.tick())}function ie(){return p.setTimeout((function(){ne=void 0})),ne=Date.now()}function ae(t,e){var o,p=0,b={height:t};for(e=e?1:0;p<4;p+=2-e)b["margin"+(o=nt[p])]=b["padding"+o]=t;return e&&(b.opacity=b.width=t),b}function Oe(t,e,o){for(var p,b=(se.tweeners[e]||[]).concat(se.tweeners["*"]),n=0,M=b.length;n1)},removeAttr:function(t){return this.each((function(){v.removeAttr(this,t)}))}}),v.extend({attr:function(t,e,o){var p,b,n=t.nodeType;if(3!==n&&8!==n&&2!==n)return void 0===t.getAttribute?v.prop(t,e,o):(1===n&&v.isXMLDoc(t)||(b=v.attrHooks[e.toLowerCase()]||(v.expr.match.bool.test(e)?le:void 0)),void 0!==o?null===o?void v.removeAttr(t,e):b&&"set"in b&&void 0!==(p=b.set(t,o,e))?p:(t.setAttribute(e,o+""),o):b&&"get"in b&&null!==(p=b.get(t,e))?p:null==(p=v.find.attr(t,e))?void 0:p)},attrHooks:{type:{set:function(t,e){if(!A.radioValue&&"radio"===e&&_(t,"input")){var o=t.value;return t.setAttribute("type",e),o&&(t.value=o),e}}}},removeAttr:function(t,e){var o,p=0,b=e&&e.match(E);if(b&&1===t.nodeType)for(;o=b[p++];)t.removeAttribute(o)}}),le={set:function(t,e,o){return!1===e?v.removeAttr(t,o):t.setAttribute(o,o),o}},v.each(v.expr.match.bool.source.match(/\w+/g),(function(t,e){var o=de[e]||v.find.attr;de[e]=function(t,e,p){var b,n,M=e.toLowerCase();return p||(n=de[M],de[M]=b,b=null!=o(t,e,p)?M:null,de[M]=n),b}}));var Ae=/^(?:input|select|textarea|button)$/i,ue=/^(?:a|area)$/i;function fe(t){return(t.match(E)||[]).join(" ")}function qe(t){return t.getAttribute&&t.getAttribute("class")||""}function he(t){return Array.isArray(t)?t:"string"==typeof t&&t.match(E)||[]}v.fn.extend({prop:function(t,e){return U(this,v.prop,t,e,arguments.length>1)},removeProp:function(t){return this.each((function(){delete this[v.propFix[t]||t]}))}}),v.extend({prop:function(t,e,o){var p,b,n=t.nodeType;if(3!==n&&8!==n&&2!==n)return 1===n&&v.isXMLDoc(t)||(e=v.propFix[e]||e,b=v.propHooks[e]),void 0!==o?b&&"set"in b&&void 0!==(p=b.set(t,o,e))?p:t[e]=o:b&&"get"in b&&null!==(p=b.get(t,e))?p:t[e]},propHooks:{tabIndex:{get:function(t){var e=v.find.attr(t,"tabindex");return e?parseInt(e,10):Ae.test(t.nodeName)||ue.test(t.nodeName)&&t.href?0:-1}}},propFix:{for:"htmlFor",class:"className"}}),A.optSelected||(v.propHooks.selected={get:function(t){var e=t.parentNode;return e&&e.parentNode&&e.parentNode.selectedIndex,null},set:function(t){var e=t.parentNode;e&&(e.selectedIndex,e.parentNode&&e.parentNode.selectedIndex)}}),v.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],(function(){v.propFix[this.toLowerCase()]=this})),v.fn.extend({addClass:function(t){var e,o,p,b,n,M;return u(t)?this.each((function(e){v(this).addClass(t.call(this,e,qe(this)))})):(e=he(t)).length?this.each((function(){if(p=qe(this),o=1===this.nodeType&&" "+fe(p)+" "){for(n=0;n-1;)o=o.replace(" "+b+" "," ");M=fe(o),p!==M&&this.setAttribute("class",M)}})):this:this.attr("class","")},toggleClass:function(t,e){var o,p,b,n,M=typeof t,z="string"===M||Array.isArray(t);return u(t)?this.each((function(o){v(this).toggleClass(t.call(this,o,qe(this),e),e)})):"boolean"==typeof e&&z?e?this.addClass(t):this.removeClass(t):(o=he(t),this.each((function(){if(z)for(n=v(this),b=0;b-1)return!0;return!1}});var We=/\r/g;v.fn.extend({val:function(t){var e,o,p,b=this[0];return arguments.length?(p=u(t),this.each((function(o){var b;1===this.nodeType&&(null==(b=p?t.call(this,o,v(this).val()):t)?b="":"number"==typeof b?b+="":Array.isArray(b)&&(b=v.map(b,(function(t){return null==t?"":t+""}))),(e=v.valHooks[this.type]||v.valHooks[this.nodeName.toLowerCase()])&&"set"in e&&void 0!==e.set(this,b,"value")||(this.value=b))}))):b?(e=v.valHooks[b.type]||v.valHooks[b.nodeName.toLowerCase()])&&"get"in e&&void 0!==(o=e.get(b,"value"))?o:"string"==typeof(o=b.value)?o.replace(We,""):null==o?"":o:void 0}}),v.extend({valHooks:{option:{get:function(t){var e=v.find.attr(t,"value");return null!=e?e:fe(v.text(t))}},select:{get:function(t){var e,o,p,b=t.options,n=t.selectedIndex,M="select-one"===t.type,z=M?null:[],c=M?n+1:b.length;for(p=n<0?c:M?n:0;p-1)&&(o=!0);return o||(t.selectedIndex=-1),n}}}}),v.each(["radio","checkbox"],(function(){v.valHooks[this]={set:function(t,e){if(Array.isArray(e))return t.checked=v.inArray(v(t).val(),e)>-1}},A.checkOn||(v.valHooks[this].get=function(t){return null===t.getAttribute("value")?"on":t.value})})),A.focusin="onfocusin"in p;var me=/^(?:focusinfocus|focusoutblur)$/,ge=function(t){t.stopPropagation()};v.extend(v.event,{trigger:function(t,e,o,b){var n,M,z,c,r,i,a,O,l=[o||q],d=s.call(t,"type")?t.type:t,A=s.call(t,"namespace")?t.namespace.split("."):[];if(M=O=z=o=o||q,3!==o.nodeType&&8!==o.nodeType&&!me.test(d+v.event.triggered)&&(d.indexOf(".")>-1&&(A=d.split("."),d=A.shift(),A.sort()),r=d.indexOf(":")<0&&"on"+d,(t=t[v.expando]?t:new v.Event(d,"object"==typeof t&&t)).isTrigger=b?2:3,t.namespace=A.join("."),t.rnamespace=t.namespace?new RegExp("(^|\\.)"+A.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=o),e=null==e?[t]:v.makeArray(e,[t]),a=v.event.special[d]||{},b||!a.trigger||!1!==a.trigger.apply(o,e))){if(!b&&!a.noBubble&&!f(o)){for(c=a.delegateType||d,me.test(c+d)||(M=M.parentNode);M;M=M.parentNode)l.push(M),z=M;z===(o.ownerDocument||q)&&l.push(z.defaultView||z.parentWindow||p)}for(n=0;(M=l[n++])&&!t.isPropagationStopped();)O=M,t.type=n>1?c:a.bindType||d,(i=(Q.get(M,"events")||Object.create(null))[t.type]&&Q.get(M,"handle"))&&i.apply(M,e),(i=r&&M[r])&&i.apply&&J(M)&&(t.result=i.apply(M,e),!1===t.result&&t.preventDefault());return t.type=d,b||t.isDefaultPrevented()||a._default&&!1!==a._default.apply(l.pop(),e)||!J(o)||r&&u(o[d])&&!f(o)&&((z=o[r])&&(o[r]=null),v.event.triggered=d,t.isPropagationStopped()&&O.addEventListener(d,ge),o[d](),t.isPropagationStopped()&&O.removeEventListener(d,ge),v.event.triggered=void 0,z&&(o[r]=z)),t.result}},simulate:function(t,e,o){var p=v.extend(new v.Event,o,{type:t,isSimulated:!0});v.event.trigger(p,null,e)}}),v.fn.extend({trigger:function(t,e){return this.each((function(){v.event.trigger(t,e,this)}))},triggerHandler:function(t,e){var o=this[0];if(o)return v.event.trigger(t,e,o,!0)}}),A.focusin||v.each({focus:"focusin",blur:"focusout"},(function(t,e){var o=function(t){v.event.simulate(e,t.target,v.event.fix(t))};v.event.special[e]={setup:function(){var p=this.ownerDocument||this.document||this,b=Q.access(p,e);b||p.addEventListener(t,o,!0),Q.access(p,e,(b||0)+1)},teardown:function(){var p=this.ownerDocument||this.document||this,b=Q.access(p,e)-1;b?Q.access(p,e,b):(p.removeEventListener(t,o,!0),Q.remove(p,e))}}}));var ve=p.location,Re={guid:Date.now()},ye=/\?/;v.parseXML=function(t){var e,o;if(!t||"string"!=typeof t)return null;try{e=(new p.DOMParser).parseFromString(t,"text/xml")}catch(t){}return o=e&&e.getElementsByTagName("parsererror")[0],e&&!o||v.error("Invalid XML: "+(o?v.map(o.childNodes,(function(t){return t.textContent})).join("\n"):t)),e};var Be=/\[\]$/,Le=/\r?\n/g,Xe=/^(?:submit|button|image|reset|file)$/i,_e=/^(?:input|select|textarea|keygen)/i;function Ne(t,e,o,p){var b;if(Array.isArray(e))v.each(e,(function(e,b){o||Be.test(t)?p(t,b):Ne(t+"["+("object"==typeof b&&null!=b?e:"")+"]",b,o,p)}));else if(o||"object"!==m(e))p(t,e);else for(b in e)Ne(t+"["+b+"]",e[b],o,p)}v.param=function(t,e){var o,p=[],b=function(t,e){var o=u(e)?e():e;p[p.length]=encodeURIComponent(t)+"="+encodeURIComponent(null==o?"":o)};if(null==t)return"";if(Array.isArray(t)||t.jquery&&!v.isPlainObject(t))v.each(t,(function(){b(this.name,this.value)}));else for(o in t)Ne(o,t[o],e,b);return p.join("&")},v.fn.extend({serialize:function(){return v.param(this.serializeArray())},serializeArray:function(){return this.map((function(){var t=v.prop(this,"elements");return t?v.makeArray(t):this})).filter((function(){var t=this.type;return this.name&&!v(this).is(":disabled")&&_e.test(this.nodeName)&&!Xe.test(t)&&(this.checked||!At.test(t))})).map((function(t,e){var o=v(this).val();return null==o?null:Array.isArray(o)?v.map(o,(function(t){return{name:e.name,value:t.replace(Le,"\r\n")}})):{name:e.name,value:o.replace(Le,"\r\n")}})).get()}});var we=/%20/g,xe=/#.*$/,Te=/([?&])_=[^&]*/,Ce=/^(.*?):[ \t]*([^\r\n]*)$/gm,Se=/^(?:GET|HEAD)$/,ke=/^\/\//,Ee={},De={},Pe="*/".concat("*"),je=q.createElement("a");function Ie(t){return function(e,o){"string"!=typeof e&&(o=e,e="*");var p,b=0,n=e.toLowerCase().match(E)||[];if(u(o))for(;p=n[b++];)"+"===p[0]?(p=p.slice(1)||"*",(t[p]=t[p]||[]).unshift(o)):(t[p]=t[p]||[]).push(o)}}function Fe(t,e,o,p){var b={},n=t===De;function M(z){var c;return b[z]=!0,v.each(t[z]||[],(function(t,z){var r=z(e,o,p);return"string"!=typeof r||n||b[r]?n?!(c=r):void 0:(e.dataTypes.unshift(r),M(r),!1)})),c}return M(e.dataTypes[0])||!b["*"]&&M("*")}function He(t,e){var o,p,b=v.ajaxSettings.flatOptions||{};for(o in e)void 0!==e[o]&&((b[o]?t:p||(p={}))[o]=e[o]);return p&&v.extend(!0,t,p),t}je.href=ve.href,v.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:ve.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(ve.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Pe,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":v.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(t,e){return e?He(He(t,v.ajaxSettings),e):He(v.ajaxSettings,t)},ajaxPrefilter:Ie(Ee),ajaxTransport:Ie(De),ajax:function(t,e){"object"==typeof t&&(e=t,t=void 0),e=e||{};var o,b,n,M,z,c,r,i,a,O,s=v.ajaxSetup({},e),l=s.context||s,d=s.context&&(l.nodeType||l.jquery)?v(l):v.event,A=v.Deferred(),u=v.Callbacks("once memory"),f=s.statusCode||{},h={},W={},m="canceled",g={readyState:0,getResponseHeader:function(t){var e;if(r){if(!M)for(M={};e=Ce.exec(n);)M[e[1].toLowerCase()+" "]=(M[e[1].toLowerCase()+" "]||[]).concat(e[2]);e=M[t.toLowerCase()+" "]}return null==e?null:e.join(", ")},getAllResponseHeaders:function(){return r?n:null},setRequestHeader:function(t,e){return null==r&&(t=W[t.toLowerCase()]=W[t.toLowerCase()]||t,h[t]=e),this},overrideMimeType:function(t){return null==r&&(s.mimeType=t),this},statusCode:function(t){var e;if(t)if(r)g.always(t[g.status]);else for(e in t)f[e]=[f[e],t[e]];return this},abort:function(t){var e=t||m;return o&&o.abort(e),R(0,e),this}};if(A.promise(g),s.url=((t||s.url||ve.href)+"").replace(ke,ve.protocol+"//"),s.type=e.method||e.type||s.method||s.type,s.dataTypes=(s.dataType||"*").toLowerCase().match(E)||[""],null==s.crossDomain){c=q.createElement("a");try{c.href=s.url,c.href=c.href,s.crossDomain=je.protocol+"//"+je.host!=c.protocol+"//"+c.host}catch(t){s.crossDomain=!0}}if(s.data&&s.processData&&"string"!=typeof s.data&&(s.data=v.param(s.data,s.traditional)),Fe(Ee,s,e,g),r)return g;for(a in(i=v.event&&s.global)&&0==v.active++&&v.event.trigger("ajaxStart"),s.type=s.type.toUpperCase(),s.hasContent=!Se.test(s.type),b=s.url.replace(xe,""),s.hasContent?s.data&&s.processData&&0===(s.contentType||"").indexOf("application/x-www-form-urlencoded")&&(s.data=s.data.replace(we,"+")):(O=s.url.slice(b.length),s.data&&(s.processData||"string"==typeof s.data)&&(b+=(ye.test(b)?"&":"?")+s.data,delete s.data),!1===s.cache&&(b=b.replace(Te,"$1"),O=(ye.test(b)?"&":"?")+"_="+Re.guid+++O),s.url=b+O),s.ifModified&&(v.lastModified[b]&&g.setRequestHeader("If-Modified-Since",v.lastModified[b]),v.etag[b]&&g.setRequestHeader("If-None-Match",v.etag[b])),(s.data&&s.hasContent&&!1!==s.contentType||e.contentType)&&g.setRequestHeader("Content-Type",s.contentType),g.setRequestHeader("Accept",s.dataTypes[0]&&s.accepts[s.dataTypes[0]]?s.accepts[s.dataTypes[0]]+("*"!==s.dataTypes[0]?", "+Pe+"; q=0.01":""):s.accepts["*"]),s.headers)g.setRequestHeader(a,s.headers[a]);if(s.beforeSend&&(!1===s.beforeSend.call(l,g,s)||r))return g.abort();if(m="abort",u.add(s.complete),g.done(s.success),g.fail(s.error),o=Fe(De,s,e,g)){if(g.readyState=1,i&&d.trigger("ajaxSend",[g,s]),r)return g;s.async&&s.timeout>0&&(z=p.setTimeout((function(){g.abort("timeout")}),s.timeout));try{r=!1,o.send(h,R)}catch(t){if(r)throw t;R(-1,t)}}else R(-1,"No Transport");function R(t,e,M,c){var a,O,q,h,W,m=e;r||(r=!0,z&&p.clearTimeout(z),o=void 0,n=c||"",g.readyState=t>0?4:0,a=t>=200&&t<300||304===t,M&&(h=function(t,e,o){for(var p,b,n,M,z=t.contents,c=t.dataTypes;"*"===c[0];)c.shift(),void 0===p&&(p=t.mimeType||e.getResponseHeader("Content-Type"));if(p)for(b in z)if(z[b]&&z[b].test(p)){c.unshift(b);break}if(c[0]in o)n=c[0];else{for(b in o){if(!c[0]||t.converters[b+" "+c[0]]){n=b;break}M||(M=b)}n=n||M}if(n)return n!==c[0]&&c.unshift(n),o[n]}(s,g,M)),!a&&v.inArray("script",s.dataTypes)>-1&&v.inArray("json",s.dataTypes)<0&&(s.converters["text script"]=function(){}),h=function(t,e,o,p){var b,n,M,z,c,r={},i=t.dataTypes.slice();if(i[1])for(M in t.converters)r[M.toLowerCase()]=t.converters[M];for(n=i.shift();n;)if(t.responseFields[n]&&(o[t.responseFields[n]]=e),!c&&p&&t.dataFilter&&(e=t.dataFilter(e,t.dataType)),c=n,n=i.shift())if("*"===n)n=c;else if("*"!==c&&c!==n){if(!(M=r[c+" "+n]||r["* "+n]))for(b in r)if((z=b.split(" "))[1]===n&&(M=r[c+" "+z[0]]||r["* "+z[0]])){!0===M?M=r[b]:!0!==r[b]&&(n=z[0],i.unshift(z[1]));break}if(!0!==M)if(M&&t.throws)e=M(e);else try{e=M(e)}catch(t){return{state:"parsererror",error:M?t:"No conversion from "+c+" to "+n}}}return{state:"success",data:e}}(s,h,g,a),a?(s.ifModified&&((W=g.getResponseHeader("Last-Modified"))&&(v.lastModified[b]=W),(W=g.getResponseHeader("etag"))&&(v.etag[b]=W)),204===t||"HEAD"===s.type?m="nocontent":304===t?m="notmodified":(m=h.state,O=h.data,a=!(q=h.error))):(q=m,!t&&m||(m="error",t<0&&(t=0))),g.status=t,g.statusText=(e||m)+"",a?A.resolveWith(l,[O,m,g]):A.rejectWith(l,[g,m,q]),g.statusCode(f),f=void 0,i&&d.trigger(a?"ajaxSuccess":"ajaxError",[g,s,a?O:q]),u.fireWith(l,[g,m]),i&&(d.trigger("ajaxComplete",[g,s]),--v.active||v.event.trigger("ajaxStop")))}return g},getJSON:function(t,e,o){return v.get(t,e,o,"json")},getScript:function(t,e){return v.get(t,void 0,e,"script")}}),v.each(["get","post"],(function(t,e){v[e]=function(t,o,p,b){return u(o)&&(b=b||p,p=o,o=void 0),v.ajax(v.extend({url:t,type:e,dataType:b,data:o,success:p},v.isPlainObject(t)&&t))}})),v.ajaxPrefilter((function(t){var e;for(e in t.headers)"content-type"===e.toLowerCase()&&(t.contentType=t.headers[e]||"")})),v._evalUrl=function(t,e,o){return v.ajax({url:t,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(t){v.globalEval(t,e,o)}})},v.fn.extend({wrapAll:function(t){var e;return this[0]&&(u(t)&&(t=t.call(this[0])),e=v(t,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&e.insertBefore(this[0]),e.map((function(){for(var t=this;t.firstElementChild;)t=t.firstElementChild;return t})).append(this)),this},wrapInner:function(t){return u(t)?this.each((function(e){v(this).wrapInner(t.call(this,e))})):this.each((function(){var e=v(this),o=e.contents();o.length?o.wrapAll(t):e.append(t)}))},wrap:function(t){var e=u(t);return this.each((function(o){v(this).wrapAll(e?t.call(this,o):t)}))},unwrap:function(t){return this.parent(t).not("body").each((function(){v(this).replaceWith(this.childNodes)})),this}}),v.expr.pseudos.hidden=function(t){return!v.expr.pseudos.visible(t)},v.expr.pseudos.visible=function(t){return!!(t.offsetWidth||t.offsetHeight||t.getClientRects().length)},v.ajaxSettings.xhr=function(){try{return new p.XMLHttpRequest}catch(t){}};var Ue={0:200,1223:204},Ve=v.ajaxSettings.xhr();A.cors=!!Ve&&"withCredentials"in Ve,A.ajax=Ve=!!Ve,v.ajaxTransport((function(t){var e,o;if(A.cors||Ve&&!t.crossDomain)return{send:function(b,n){var M,z=t.xhr();if(z.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(M in t.xhrFields)z[M]=t.xhrFields[M];for(M in t.mimeType&&z.overrideMimeType&&z.overrideMimeType(t.mimeType),t.crossDomain||b["X-Requested-With"]||(b["X-Requested-With"]="XMLHttpRequest"),b)z.setRequestHeader(M,b[M]);e=function(t){return function(){e&&(e=o=z.onload=z.onerror=z.onabort=z.ontimeout=z.onreadystatechange=null,"abort"===t?z.abort():"error"===t?"number"!=typeof z.status?n(0,"error"):n(z.status,z.statusText):n(Ue[z.status]||z.status,z.statusText,"text"!==(z.responseType||"text")||"string"!=typeof z.responseText?{binary:z.response}:{text:z.responseText},z.getAllResponseHeaders()))}},z.onload=e(),o=z.onerror=z.ontimeout=e("error"),void 0!==z.onabort?z.onabort=o:z.onreadystatechange=function(){4===z.readyState&&p.setTimeout((function(){e&&o()}))},e=e("abort");try{z.send(t.hasContent&&t.data||null)}catch(t){if(e)throw t}},abort:function(){e&&e()}}})),v.ajaxPrefilter((function(t){t.crossDomain&&(t.contents.script=!1)})),v.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(t){return v.globalEval(t),t}}}),v.ajaxPrefilter("script",(function(t){void 0===t.cache&&(t.cache=!1),t.crossDomain&&(t.type="GET")})),v.ajaxTransport("script",(function(t){var e,o;if(t.crossDomain||t.scriptAttrs)return{send:function(p,b){e=v("