From 5e57fdeac2f2bf855817b875de775b0ea9b041ef Mon Sep 17 00:00:00 2001 From: Haitao Pan Date: Fri, 16 Jan 2026 00:20:54 +0800 Subject: [PATCH] chore: update repo content and deployment/docs assets --- dashboard/.config_summary.txt | 27 - dashboard/.eslintrc.json | 5 - dashboard/.gitignore | 22 - dashboard/.nvmrc | 1 - dashboard/.yarnrc.yml | 7 - dashboard/AGENTS.md | 205 - dashboard/Dockerfile | 75 - dashboard/Makefile | 112 - dashboard/docs/CONFIG_SYSTEM_SUMMARY.md | 164 - dashboard/docs/MIGRATION_GUIDE.md | 66 - dashboard/next-env.d.ts | 6 - dashboard/next.config.mjs | 97 - dashboard/package-lock.json | 10473 ------ dashboard/package.json | 75 - dashboard/packages/neurapress | 1 - dashboard/postcss.config.mjs | 14 - .../public/_build/artifacts-manifest.json | 36 - dashboard/public/_build/cloud_iac_index.json | 342 - dashboard/public/_build/docs_index.json | 11 - dashboard/public/_build/docs_paths.json | 35 - dashboard/public/_build/offline-package.json | 25 - dashboard/public/dl-index/all.json | 652 - .../public/dl-index/artifacts-manifest.json | 27860 ---------------- dashboard/public/dl-index/docs-manifest.json | 2934 -- dashboard/public/favicon.ico | Bin 32038 -> 0 bytes dashboard/public/icons/cloudnative_32.png | Bin 1486 -> 0 bytes dashboard/scripts/dev/proxy.ts | 26 - dashboard/scripts/gen-runtime-config.sh | 227 - dashboard/scripts/generate-content.ts | 106 - dashboard/scripts/setup_node.sh | 113 - dashboard/scripts/start.js | 23 - dashboard/scripts/sync-content.sh | 88 - .../EmailVerificationContent.tsx | 323 - .../app/(auth)/email-verification/page.tsx | 24 - dashboard/src/app/(auth)/layout.tsx | 13 - .../src/app/(auth)/login/LoginContent.tsx | 347 - dashboard/src/app/(auth)/login/LoginForm.tsx | 364 - dashboard/src/app/(auth)/login/page.tsx | 27 - .../app/(auth)/register/RegisterContent.tsx | 931 - dashboard/src/app/(auth)/register/page.tsx | 26 - .../app/(tenant)/[slug]/mail/compose/page.tsx | 14 - .../[slug]/mail/message/[id]/page.tsx | 20 - .../src/app/(tenant)/[slug]/mail/page.tsx | 14 - .../(tenant)/[slug]/mail/settings/page.tsx | 14 - dashboard/src/app/404/page.tsx | 22 - dashboard/src/app/500/page.tsx | 19 - dashboard/src/app/AppProviders.tsx | 14 - dashboard/src/app/[slug]/Client.tsx | 205 - dashboard/src/app/[slug]/page.tsx | 58 - dashboard/src/app/api/admin/settings/route.ts | 75 - .../api/admin/users/[userId]/role/route.ts | 70 - .../src/app/api/admin/users/metrics/route.ts | 45 - .../src/app/api/agent/[...segments]/route.ts | 46 - dashboard/src/app/api/askai/route.ts | 42 - dashboard/src/app/api/auth/login/route.ts | 123 - .../src/app/api/auth/mfa/disable/route.ts | 54 - dashboard/src/app/api/auth/mfa/setup/route.ts | 99 - .../src/app/api/auth/mfa/status/route.ts | 49 - .../src/app/api/auth/mfa/verify/route.ts | 114 - dashboard/src/app/api/auth/register/route.ts | 94 - .../src/app/api/auth/register/send/route.ts | 65 - .../src/app/api/auth/register/verify/route.ts | 1 - dashboard/src/app/api/auth/session/route.ts | 184 - .../api/auth/subscriptions/cancel/route.ts | 29 - .../src/app/api/auth/subscriptions/route.ts | 39 - .../src/app/api/auth/verify-email/route.ts | 69 - .../app/api/auth/verify-email/send/route.ts | 65 - dashboard/src/app/api/content-meta/route.ts | 23 - .../api/dl-index/artifacts-manifest/route.ts | 21 - .../app/api/dl-index/docs-manifest/route.ts | 21 - .../src/app/api/mail/ai/classify/route.ts | 15 - .../app/api/mail/ai/reply-suggest/route.ts | 17 - .../src/app/api/mail/ai/summarize/route.ts | 28 - dashboard/src/app/api/mail/inbox/route.ts | 35 - .../src/app/api/mail/message/[id]/route.ts | 23 - dashboard/src/app/api/mail/mockData.ts | 208 - dashboard/src/app/api/mail/namespace/route.ts | 14 - dashboard/src/app/api/mail/send/route.ts | 9 - dashboard/src/app/api/ping/route.ts | 22 - dashboard/src/app/api/rag/query/route.ts | 37 - .../src/app/api/render-markdown/route.ts | 23 - .../src/app/api/task/[...segments]/route.ts | 46 - dashboard/src/app/api/users/route.ts | 63 - dashboard/src/app/blog/[slug]/page.tsx | 123 - dashboard/src/app/blog/page.tsx | 175 - dashboard/src/app/cloud_iac/README.md | 32 - .../cloud_iac/[provider]/[service]/page.tsx | 76 - .../src/app/cloud_iac/[provider]/page.tsx | 62 - dashboard/src/app/cloud_iac/page.tsx | 38 - dashboard/src/app/components/ClientTime.tsx | 38 - .../src/app/components/icons/WeChatIcon.tsx | 28 - .../app/components/insight/ai/Assistant.tsx | 199 - .../insight/explore/ExploreBuilder.tsx | 341 - .../insight/layout/BreadcrumbBar.tsx | 91 - .../app/components/insight/layout/Sidebar.tsx | 225 - .../insight/layout/TimeRangePicker.tsx | 33 - .../insight/layout/WorkspaceGrid.tsx | 85 - .../insight/layout/WorkspaceHeader.tsx | 44 - .../insight/services/adapters/logs.ts | 44 - .../insight/services/adapters/openobserve.ts | 24 - .../insight/services/adapters/prometheus.ts | 53 - .../insight/services/adapters/traces.ts | 68 - .../components/insight/services/correlator.ts | 19 - .../app/components/insight/services/gitops.ts | 28 - .../components/insight/slo/AlertWizard.tsx | 120 - .../app/components/insight/slo/SLOPanel.tsx | 127 - .../insight/snippets/SnippetLibrary.tsx | 96 - .../app/components/insight/store/urlState.ts | 209 - .../insight/store/useInsightState.ts | 154 - .../insight/topology/NetworkTopologyPanel.tsx | 92 - .../insight/topology/TopologyCanvas.tsx | 189 - .../app/components/insight/topology/types.ts | 16 - .../app/components/insight/viz/LogsTable.tsx | 49 - .../components/insight/viz/LogsTopStats.tsx | 59 - .../app/components/insight/viz/LogsViewer.tsx | 36 - .../components/insight/viz/MetricsChart.tsx | 48 - .../components/insight/viz/MetricsTable.tsx | 66 - .../insight/viz/MetricsTopStats.tsx | 45 - .../components/insight/viz/TracesTable.tsx | 48 - .../components/insight/viz/TracesTopStats.tsx | 42 - .../insight/viz/TracesWaterfall.tsx | 41 - .../app/components/insight/viz/VizArea.tsx | 134 - .../src/app/components/mail/ComposeForm.tsx | 139 - dashboard/src/app/components/mail/Inbox.tsx | 59 - .../src/app/components/mail/MailCenter.tsx | 135 - .../src/app/components/mail/MailDashboard.tsx | 82 - .../src/app/components/mail/MailSettings.tsx | 148 - .../src/app/components/mail/MessageItem.tsx | 79 - .../src/app/components/mail/MessageView.tsx | 295 - dashboard/src/app/components/mail/Toolbar.tsx | 110 - dashboard/src/app/dashboard/cms/page.tsx | 7 - dashboard/src/app/demo/DemoContent.tsx | 15 - dashboard/src/app/demo/markdown/page.tsx | 7 - dashboard/src/app/demo/page.tsx | 14 - dashboard/src/app/demo/theme/page.tsx | 62 - dashboard/src/app/docs/DocCollectionCard.tsx | 129 - .../[version]/DocCollectionView.tsx | 218 - .../docs/[collection]/[version]/DocReader.tsx | 567 - .../[collection]/[version]/DocViewSection.tsx | 263 - .../app/docs/[collection]/[version]/page.tsx | 78 - dashboard/src/app/docs/[collection]/page.tsx | 40 - dashboard/src/app/docs/page.tsx | 67 - dashboard/src/app/docs/resources.server.ts | 409 - dashboard/src/app/docs/types.ts | 44 - dashboard/src/app/docs/utils.ts | 49 - .../src/app/download/[...segments]/page.tsx | 136 - dashboard/src/app/download/page.tsx | 50 - dashboard/src/app/editor/page.tsx | 8 - dashboard/src/app/globals.css | 75 - .../src/app/insight/InsightWorkbench.tsx | 377 - dashboard/src/app/insight/page.tsx | 12 - dashboard/src/app/layout.tsx | 22 - dashboard/src/app/logout/LogoutClient.tsx | 71 - dashboard/src/app/logout/page.tsx | 23 - dashboard/src/app/page.tsx | 257 - .../app/panel/account/ThemePreferenceCard.tsx | 1 - dashboard/src/app/panel/account/page.tsx | 17 - dashboard/src/app/panel/agent/page.tsx | 17 - dashboard/src/app/panel/api/page.tsx | 17 - dashboard/src/app/panel/appearance/page.tsx | 17 - dashboard/src/app/panel/components/Card.tsx | 1 - dashboard/src/app/panel/components/Header.tsx | 93 - .../src/app/panel/components/Sidebar.tsx | 213 - dashboard/src/app/panel/layout.tsx | 146 - dashboard/src/app/panel/ldp/page.tsx | 17 - dashboard/src/app/panel/loading.tsx | 7 - dashboard/src/app/panel/mail/page.tsx | 17 - dashboard/src/app/panel/management/page.tsx | 17 - dashboard/src/app/panel/page.tsx | 17 - dashboard/src/app/panel/subscription/page.tsx | 17 - dashboard/src/app/store/mail.store.ts | 54 - dashboard/src/components/AskAIButton.tsx | 61 - dashboard/src/components/AskAIDialog.tsx | 373 - dashboard/src/components/ChatBubble.tsx | 18 - dashboard/src/components/Contact.tsx | 31 - dashboard/src/components/DownloadSection.tsx | 100 - dashboard/src/components/Features.tsx | 254 - dashboard/src/components/Footer.tsx | 61 - dashboard/src/components/Hero.tsx | 164 - dashboard/src/components/LanguageToggle.tsx | 18 - dashboard/src/components/MarkdownSection.tsx | 126 - dashboard/src/components/Navbar.tsx | 650 - dashboard/src/components/OpenSource.tsx | 86 - .../src/components/ReleaseChannelSelector.tsx | 149 - dashboard/src/components/SourceHint.tsx | 20 - dashboard/src/components/Terms.tsx | 23 - dashboard/src/components/auth/AuthLayout.tsx | 179 - .../billing/CryptoBillingWidget.tsx | 115 - .../src/components/billing/PayPalButtons.tsx | 247 - dashboard/src/components/billing/utils.ts | 23 - .../src/components/common/QueryChips.tsx | 28 - .../components/common/QueryHistoryPanel.tsx | 34 - .../src/components/download/Breadcrumbs.tsx | 23 - .../src/components/download/CardGrid.tsx | 87 - .../src/components/download/CopyButton.tsx | 29 - .../components/download/DownloadBrowser.tsx | 118 - .../download/DownloadListingContent.tsx | 154 - .../components/download/DownloadNotFound.tsx | 15 - .../components/download/DownloadSummary.tsx | 49 - .../src/components/download/FileTable.tsx | 95 - .../src/components/download/MarkdownPanel.tsx | 18 - .../src/components/home/CommunityFeed.tsx | 126 - .../components/home/CommunityFeedServer.tsx | 7 - .../src/components/home/ContactPanel.tsx | 17 - .../components/home/ContactPanelClient.tsx | 265 - dashboard/src/components/home/HeroBanner.tsx | 8 - .../src/components/home/HeroBannerClient.tsx | 131 - .../src/components/home/HeroProductTabs.tsx | 207 - .../src/components/home/ProductMatrix.tsx | 19 - .../components/home/ProductMatrixClient.tsx | 201 - dashboard/src/components/home/Sidebar.tsx | 107 - dashboard/src/components/home/SidebarCard.tsx | 70 - .../src/components/iac/CloudIacCatalog.tsx | 314 - dashboard/src/components/iac/RunModal.tsx | 227 - .../src/components/iac/ServiceDetailView.tsx | 310 - .../marketing/ProductBillingActions.tsx | 263 - .../components/marketing/ProductCommunity.tsx | 168 - .../src/components/marketing/ProductDocs.tsx | 111 - .../components/marketing/ProductDownload.tsx | 101 - .../components/marketing/ProductEditions.tsx | 78 - .../src/components/marketing/ProductFaq.tsx | 69 - .../components/marketing/ProductFeatures.tsx | 209 - .../src/components/marketing/ProductHero.tsx | 62 - .../components/marketing/ProductScenarios.tsx | 84 - dashboard/src/components/search/index.tsx | 87 - .../src/components/theme/ThemeProvider.tsx | 75 - dashboard/src/components/theme/dark.ts | 69 - .../src/components/theme/designTokens.ts | 68 - dashboard/src/components/theme/index.ts | 6 - dashboard/src/components/theme/light.ts | 69 - dashboard/src/components/theme/store.ts | 107 - dashboard/src/components/theme/types.ts | 16 - dashboard/src/components/theme/useTheme.ts | 37 - dashboard/src/config/feature-toggles.json | 66 - dashboard/src/config/index.ts | 9 - dashboard/src/config/runtime-client.ts | 117 - dashboard/src/config/runtime-loader.ts | 7 - .../config/runtime-service-config.base.yaml | 6 - .../config/runtime-service-config.prod.yaml | 11 - .../config/runtime-service-config.sit.yaml | 5 - dashboard/src/content/about/team.md | 8 - ...oud-Neutral-Hybrid-Network-Architecture.md | 448 - dashboard/src/content/blog/README.md | 44 - .../blog/gitops-security-compliance.md | 44 - ...kubernetes-observability-best-practices.md | 36 - .../content/blog/welcome-to-cloud-neutral.md | 32 - .../src/content/homepage/en/community.md | 6 - dashboard/src/content/homepage/en/hero.md | 26 - dashboard/src/content/homepage/en/news.md | 6 - .../src/content/homepage/en/operations.md | 13 - dashboard/src/content/homepage/en/products.md | 26 - .../src/content/homepage/en/resources.md | 6 - dashboard/src/content/homepage/en/support.md | 6 - .../src/content/homepage/zh/community.md | 6 - dashboard/src/content/homepage/zh/hero.md | 26 - dashboard/src/content/homepage/zh/news.md | 6 - .../src/content/homepage/zh/operations.md | 11 - dashboard/src/content/homepage/zh/products.md | 26 - .../src/content/homepage/zh/resources.md | 6 - dashboard/src/content/homepage/zh/support.md | 6 - .../src/content/product/xcloudflow/en/hero.md | 9 - .../src/content/product/xcloudflow/zh/hero.md | 9 - .../src/content/product/xscopehub/en/hero.md | 9 - .../src/content/product/xscopehub/zh/hero.md | 9 - .../content/product/xstream/en/features.md | 15 - .../src/content/product/xstream/en/hero.md | 9 - .../content/product/xstream/zh/features.md | 15 - .../src/content/product/xstream/zh/hero.md | 9 - .../dashboard/apps/cms-editor/EditorShell.tsx | 277 - .../src/dashboard/apps/cms-editor/README.md | 18 - .../apps/cms-editor/storage/index.ts | 25 - .../apps/cms-editor/storage/local.ts | 75 - .../apps/cms-editor/storage/remote.ts | 16 - dashboard/src/data/artifacts-manifest.json | 36 - dashboard/src/data/cloud_iac_index.json | 342 - dashboard/src/data/content/homepage.json | 64 - dashboard/src/data/content/xcloudflow.json | 14 - dashboard/src/data/content/xscopehub.json | 14 - dashboard/src/data/content/xstream.json | 14 - dashboard/src/data/docs_index.json | 11 - dashboard/src/data/offline-package.json | 25 - dashboard/src/i18n/LanguageProvider.tsx | 87 - dashboard/src/i18n/translations.ts | 1711 - dashboard/src/lib/accessControl.ts | 108 - dashboard/src/lib/apiProxy.ts | 107 - dashboard/src/lib/appShellBypass.tsx | 5 - dashboard/src/lib/authGateway.ts | 113 - dashboard/src/lib/content-loader.ts | 71 - dashboard/src/lib/download-data.ts | 148 - .../lib/download/dl-index-data-artifacts.ts | 84 - .../src/lib/download/dl-index-data-docs.ts | 3 - .../download/dl-index-data-offline-package.ts | 91 - dashboard/src/lib/download/types.ts | 13 - dashboard/src/lib/env.ts | 22 - dashboard/src/lib/featureFlags.ts | 53 - dashboard/src/lib/featureToggles.ts | 87 - dashboard/src/lib/format.ts | 49 - dashboard/src/lib/iac/actions.ts | 57 - dashboard/src/lib/iac/catalog.ts | 704 - dashboard/src/lib/iac/detail-presets.ts | 320 - dashboard/src/lib/iac/types.ts | 44 - dashboard/src/lib/knowledgeBase.ts | 18 - dashboard/src/lib/mail/apiClient.ts | 116 - dashboard/src/lib/mail/auth.ts | 31 - dashboard/src/lib/mail/types.ts | 110 - dashboard/src/lib/markdown.ts | 108 - dashboard/src/lib/marketingContent.ts | 269 - dashboard/src/lib/rbac.ts | 14 - dashboard/src/lib/ui/markdown.ts | 14 - dashboard/src/lib/userStore.ts | 248 - .../extensions/__tests__/loader.test.ts | 45 - .../src/modules/extensions/builtin/index.ts | 5 - .../account/BillingOptionsPanel.tsx | 380 - .../user-center/account/MfaSetupPanel.tsx | 810 - .../user-center/account/SubscriptionPanel.tsx | 189 - .../account/ThemePreferenceCard.tsx | 168 - .../builtin/user-center/components/Card.tsx | 16 - .../user-center/components/UserOverview.tsx | 201 - .../user-center/components/VlessQrCard.tsx | 230 - .../extensions/builtin/user-center/index.ts | 137 - .../extensions/builtin/user-center/lib/api.ts | 5 - .../builtin/user-center/lib/vless.ts | 162 - .../__tests__/ManagementComponents.test.tsx | 80 - .../management/components/OverviewCards.tsx | 67 - .../components/PermissionMatrixEditor.tsx | 124 - .../management/components/TrendChart.tsx | 150 - .../components/UserGroupManagement.tsx | 142 - .../builtin/user-center/routes/account.tsx | 13 - .../builtin/user-center/routes/agent.tsx | 12 - .../builtin/user-center/routes/api.tsx | 10 - .../builtin/user-center/routes/home.tsx | 5 - .../builtin/user-center/routes/ldp.tsx | 33 - .../builtin/user-center/routes/mail.tsx | 5 - .../builtin/user-center/routes/management.tsx | 286 - .../user-center/routes/subscription.tsx | 32 - .../builtin/user-center/routes/theme.tsx | 9 - dashboard/src/modules/extensions/loader.ts | 137 - dashboard/src/modules/extensions/types.ts | 84 - dashboard/src/modules/homepage/page.tsx | 534 - .../src/modules/products/registry.test.ts | 40 - dashboard/src/modules/products/registry.ts | 67 - dashboard/src/modules/products/xcloudflow.ts | 104 - dashboard/src/modules/products/xscopehub.ts | 104 - dashboard/src/modules/products/xstream.ts | 102 - dashboard/src/modules/templateRegistry.ts | 145 - .../src/modules/templates/default/config.ts | 22 - .../src/modules/templates/default/index.tsx | 21 - .../modules/templates/layouts/commonHome.tsx | 154 - dashboard/src/modules/templates/types.ts | 30 - dashboard/src/products/registry.ts | 1 - dashboard/src/server/account/session.ts | 249 - dashboard/src/server/content-meta.ts | 85 - dashboard/src/server/content-utils.ts | 48 - dashboard/src/server/render-markdown.ts | 93 - dashboard/src/server/runtime-loader.ts | 410 - dashboard/src/server/serviceConfig.ts | 153 - dashboard/start.sh | 19 - dashboard/tailwind.config.js | 52 - dashboard/test-esm.js | 46 - dashboard/tests/e2e/playwright.config.ts | 35 - dashboard/tests/e2e/ui/auth-pages.spec.ts | 63 - dashboard/tests/e2e/ui/homepage.spec.ts | 26 - .../unit/components/MarkdownSection.test.tsx | 73 - dashboard/tests/unit/vitest.config.ts | 39 - dashboard/tests/unit/vitest.setup.ts | 1 - dashboard/tsconfig.json | 48 - dashboard/tsconfig.tsbuildinfo | 1 - dashboard/types/global.d.ts | 9 - dashboard/types/qrcode.d.ts | 18 - dashboard/yarn.lock | 7564 ----- deploy/caddy/Caddyfile.accounts.svc.plus | 14 + .../caddy-stunnel/docker-compose.account.yaml | 26 + .../caddy-stunnel/docker-compose.db.yaml | 13 + deploy/nginx/askai-limiter.conf | 24 - deploy/stunnel/stunnel-account-db-client.conf | 12 + deploy/stunnel/stunnel-account-db-server.conf | 14 + deploy/systemd/caddy-accounts.service | 15 + .../systemd/stunnel-account-db-client.service | 13 + .../systemd/stunnel-account-db-server.service | 13 + docs/Frontend-Routing-design.md | 105 - docs/account-service-deployment.md | 100 + docs/account-svc-plus.md | 1 - docs/agents/wasm-plugin.md | 3 - docs/architecture/system.md | 5 +- docs/dl-mirror.md | 62 - docs/overview.md | 3 +- docs/ui/admin-panel.md | 10 - docs/ui/cms-traffic-overview.md | 41 - docs/ui/login-session-state-evaluation.md | 51 - docs/ui/nextjs-admin-panel.md | 71 - docs/ui/static-export/cloud_iac.md | 21 - docs/ui/static-export/demo.md | 17 - docs/ui/static-export/docs.md | 22 - docs/ui/static-export/download.md | 21 - docs/ui/static-export/login.md | 16 - docs/ui/static-export/panel.md | 22 - docs/ui/static-export/register.md | 15 - docs/ui/user-panel.md | 59 - rag-server/Dockerfile | 35 - rag-server/Makefile | 121 - rag-server/api/admin_settings.go | 128 - rag-server/api/admin_settings_test.go | 120 - rag-server/api/askai.go | 181 - rag-server/api/askai_config_test.go | 77 - rag-server/api/askai_test.go | 100 - rag-server/api/config.go | 12 - rag-server/api/knowledge.go | 33 - rag-server/api/nodes.go | 22 - rag-server/api/rag.go | 101 - rag-server/api/rag_test.go | 126 - rag-server/api/register.go | 21 - rag-server/api/users.go | 22 - rag-server/cmd/agent/main.go | 7 - rag-server/cmd/ingest/main.go | 42 - rag-server/cmd/rag-server-cli/Makefile | 15 - rag-server/cmd/rag-server-cli/main.go | 226 - rag-server/cmd/xcontrol-server/main.go | 186 - rag-server/config/config.go | 201 - rag-server/config/config_test.go | 57 - rag-server/config/server-chutes-ai.yaml | 55 - rag-server/config/server-chutes-qwen-ai.yaml | 55 - rag-server/config/server-ollama-ai.yaml | 47 - rag-server/config/server.yaml | 75 - rag-server/cors.go | 167 - rag-server/entrypoint.sh | 29 - rag-server/go.mod | 76 - rag-server/go.sum | 248 - rag-server/internal/agent/agent.go | 5 - rag-server/internal/auth/middleware.go | 152 - rag-server/internal/auth/token_service.go | 230 - rag-server/internal/model/admin_setting.go | 17 - rag-server/internal/model/models.go | 165 - rag-server/internal/rag/Dockerfile | 14 - rag-server/internal/rag/config/config.go | 159 - rag-server/internal/rag/config/repos.yaml | 4 - rag-server/internal/rag/config/runtime.go | 202 - .../internal/rag/config/runtime_test.go | 98 - rag-server/internal/rag/embed/bge.go | 85 - rag-server/internal/rag/embed/bge_test.go | 59 - rag-server/internal/rag/embed/chutes.go | 72 - rag-server/internal/rag/embed/chutes_test.go | 37 - rag-server/internal/rag/embed/embed.go | 9 - rag-server/internal/rag/embed/errors.go | 17 - rag-server/internal/rag/embed/http.go | 43 - rag-server/internal/rag/embed/ollama.go | 76 - rag-server/internal/rag/embed/openai.go | 83 - rag-server/internal/rag/ingest/chunk.go | 161 - rag-server/internal/rag/ingest/chunk_test.go | 102 - rag-server/internal/rag/ingest/hash.go | 28 - rag-server/internal/rag/ingest/hash_test.go | 34 - rag-server/internal/rag/ingest/ingest.go | 139 - rag-server/internal/rag/ingest/markdown.go | 71 - rag-server/internal/rag/ingest/walk.go | 46 - rag-server/internal/rag/rag.go | 4 - rag-server/internal/rag/rerank/bge.go | 58 - rag-server/internal/rag/rerank/rerank.go | 8 - rag-server/internal/rag/service.go | 198 - rag-server/internal/rag/store/store.go | 107 - rag-server/internal/rag/sync/sync.go | 82 - rag-server/internal/service/admin_settings.go | 127 - rag-server/internal/service/node.go | 15 - rag-server/internal/service/user.go | 20 - rag-server/internal/stats/stats.go | 5 - rag-server/internal/stats/stats_test.go | 10 - .../internal/subscription/subscription.go | 7 - rag-server/internal/xray/xray.go | 5 - .../migrations/0001_create_admin_settings.sql | 12 - rag-server/proxy/proxy.go | 62 - rag-server/server.go | 69 - rag-server/sql/schema.sql | 65 - ragbench/cmd/ragbench/main.go | 46 - ragbench/go.mod | 5 - ragbench/go.sum | 4 - ragbench/internal/bench/bench.go | 249 - ragbench/internal/bench/metrics.go | 130 - ragbench/queries.example.yaml | 9 - ui/dashboard/public/_build/docs_index.json | 1 - wasm/askai_limiter/Cargo.toml | 10 - wasm/askai_limiter/README.md | 71 - wasm/askai_limiter/src/lib.rs | 105 - 480 files changed, 223 insertions(+), 90744 deletions(-) delete mode 100644 dashboard/.config_summary.txt delete mode 100644 dashboard/.eslintrc.json delete mode 100644 dashboard/.gitignore delete mode 100644 dashboard/.nvmrc delete mode 100644 dashboard/.yarnrc.yml delete mode 100644 dashboard/AGENTS.md delete mode 100644 dashboard/Dockerfile delete mode 100644 dashboard/Makefile delete mode 100644 dashboard/docs/CONFIG_SYSTEM_SUMMARY.md delete mode 100644 dashboard/docs/MIGRATION_GUIDE.md delete mode 100644 dashboard/next-env.d.ts delete mode 100644 dashboard/next.config.mjs delete mode 100644 dashboard/package-lock.json delete mode 100644 dashboard/package.json delete mode 160000 dashboard/packages/neurapress delete mode 100644 dashboard/postcss.config.mjs delete mode 100644 dashboard/public/_build/artifacts-manifest.json delete mode 100644 dashboard/public/_build/cloud_iac_index.json delete mode 100644 dashboard/public/_build/docs_index.json delete mode 100644 dashboard/public/_build/docs_paths.json delete mode 100644 dashboard/public/_build/offline-package.json delete mode 100644 dashboard/public/dl-index/all.json delete mode 100644 dashboard/public/dl-index/artifacts-manifest.json delete mode 100644 dashboard/public/dl-index/docs-manifest.json delete mode 100644 dashboard/public/favicon.ico delete mode 100644 dashboard/public/icons/cloudnative_32.png delete mode 100644 dashboard/scripts/dev/proxy.ts delete mode 100755 dashboard/scripts/gen-runtime-config.sh delete mode 100644 dashboard/scripts/generate-content.ts delete mode 100644 dashboard/scripts/setup_node.sh delete mode 100644 dashboard/scripts/start.js delete mode 100755 dashboard/scripts/sync-content.sh delete mode 100644 dashboard/src/app/(auth)/email-verification/EmailVerificationContent.tsx delete mode 100644 dashboard/src/app/(auth)/email-verification/page.tsx delete mode 100644 dashboard/src/app/(auth)/layout.tsx delete mode 100644 dashboard/src/app/(auth)/login/LoginContent.tsx delete mode 100644 dashboard/src/app/(auth)/login/LoginForm.tsx delete mode 100644 dashboard/src/app/(auth)/login/page.tsx delete mode 100644 dashboard/src/app/(auth)/register/RegisterContent.tsx delete mode 100644 dashboard/src/app/(auth)/register/page.tsx delete mode 100644 dashboard/src/app/(tenant)/[slug]/mail/compose/page.tsx delete mode 100644 dashboard/src/app/(tenant)/[slug]/mail/message/[id]/page.tsx delete mode 100644 dashboard/src/app/(tenant)/[slug]/mail/page.tsx delete mode 100644 dashboard/src/app/(tenant)/[slug]/mail/settings/page.tsx delete mode 100644 dashboard/src/app/404/page.tsx delete mode 100644 dashboard/src/app/500/page.tsx delete mode 100644 dashboard/src/app/AppProviders.tsx delete mode 100644 dashboard/src/app/[slug]/Client.tsx delete mode 100644 dashboard/src/app/[slug]/page.tsx delete mode 100644 dashboard/src/app/api/admin/settings/route.ts delete mode 100644 dashboard/src/app/api/admin/users/[userId]/role/route.ts delete mode 100644 dashboard/src/app/api/admin/users/metrics/route.ts delete mode 100644 dashboard/src/app/api/agent/[...segments]/route.ts delete mode 100644 dashboard/src/app/api/askai/route.ts delete mode 100644 dashboard/src/app/api/auth/login/route.ts delete mode 100644 dashboard/src/app/api/auth/mfa/disable/route.ts delete mode 100644 dashboard/src/app/api/auth/mfa/setup/route.ts delete mode 100644 dashboard/src/app/api/auth/mfa/status/route.ts delete mode 100644 dashboard/src/app/api/auth/mfa/verify/route.ts delete mode 100644 dashboard/src/app/api/auth/register/route.ts delete mode 100644 dashboard/src/app/api/auth/register/send/route.ts delete mode 100644 dashboard/src/app/api/auth/register/verify/route.ts delete mode 100644 dashboard/src/app/api/auth/session/route.ts delete mode 100644 dashboard/src/app/api/auth/subscriptions/cancel/route.ts delete mode 100644 dashboard/src/app/api/auth/subscriptions/route.ts delete mode 100644 dashboard/src/app/api/auth/verify-email/route.ts delete mode 100644 dashboard/src/app/api/auth/verify-email/send/route.ts delete mode 100644 dashboard/src/app/api/content-meta/route.ts delete mode 100644 dashboard/src/app/api/dl-index/artifacts-manifest/route.ts delete mode 100644 dashboard/src/app/api/dl-index/docs-manifest/route.ts delete mode 100644 dashboard/src/app/api/mail/ai/classify/route.ts delete mode 100644 dashboard/src/app/api/mail/ai/reply-suggest/route.ts delete mode 100644 dashboard/src/app/api/mail/ai/summarize/route.ts delete mode 100644 dashboard/src/app/api/mail/inbox/route.ts delete mode 100644 dashboard/src/app/api/mail/message/[id]/route.ts delete mode 100644 dashboard/src/app/api/mail/mockData.ts delete mode 100644 dashboard/src/app/api/mail/namespace/route.ts delete mode 100644 dashboard/src/app/api/mail/send/route.ts delete mode 100644 dashboard/src/app/api/ping/route.ts delete mode 100644 dashboard/src/app/api/rag/query/route.ts delete mode 100644 dashboard/src/app/api/render-markdown/route.ts delete mode 100644 dashboard/src/app/api/task/[...segments]/route.ts delete mode 100644 dashboard/src/app/api/users/route.ts delete mode 100644 dashboard/src/app/blog/[slug]/page.tsx delete mode 100644 dashboard/src/app/blog/page.tsx delete mode 100644 dashboard/src/app/cloud_iac/README.md delete mode 100644 dashboard/src/app/cloud_iac/[provider]/[service]/page.tsx delete mode 100644 dashboard/src/app/cloud_iac/[provider]/page.tsx delete mode 100644 dashboard/src/app/cloud_iac/page.tsx delete mode 100644 dashboard/src/app/components/ClientTime.tsx delete mode 100644 dashboard/src/app/components/icons/WeChatIcon.tsx delete mode 100644 dashboard/src/app/components/insight/ai/Assistant.tsx delete mode 100644 dashboard/src/app/components/insight/explore/ExploreBuilder.tsx delete mode 100644 dashboard/src/app/components/insight/layout/BreadcrumbBar.tsx delete mode 100644 dashboard/src/app/components/insight/layout/Sidebar.tsx delete mode 100644 dashboard/src/app/components/insight/layout/TimeRangePicker.tsx delete mode 100644 dashboard/src/app/components/insight/layout/WorkspaceGrid.tsx delete mode 100644 dashboard/src/app/components/insight/layout/WorkspaceHeader.tsx delete mode 100644 dashboard/src/app/components/insight/services/adapters/logs.ts delete mode 100644 dashboard/src/app/components/insight/services/adapters/openobserve.ts delete mode 100644 dashboard/src/app/components/insight/services/adapters/prometheus.ts delete mode 100644 dashboard/src/app/components/insight/services/adapters/traces.ts delete mode 100644 dashboard/src/app/components/insight/services/correlator.ts delete mode 100644 dashboard/src/app/components/insight/services/gitops.ts delete mode 100644 dashboard/src/app/components/insight/slo/AlertWizard.tsx delete mode 100644 dashboard/src/app/components/insight/slo/SLOPanel.tsx delete mode 100644 dashboard/src/app/components/insight/snippets/SnippetLibrary.tsx delete mode 100644 dashboard/src/app/components/insight/store/urlState.ts delete mode 100644 dashboard/src/app/components/insight/store/useInsightState.ts delete mode 100644 dashboard/src/app/components/insight/topology/NetworkTopologyPanel.tsx delete mode 100644 dashboard/src/app/components/insight/topology/TopologyCanvas.tsx delete mode 100644 dashboard/src/app/components/insight/topology/types.ts delete mode 100644 dashboard/src/app/components/insight/viz/LogsTable.tsx delete mode 100644 dashboard/src/app/components/insight/viz/LogsTopStats.tsx delete mode 100644 dashboard/src/app/components/insight/viz/LogsViewer.tsx delete mode 100644 dashboard/src/app/components/insight/viz/MetricsChart.tsx delete mode 100644 dashboard/src/app/components/insight/viz/MetricsTable.tsx delete mode 100644 dashboard/src/app/components/insight/viz/MetricsTopStats.tsx delete mode 100644 dashboard/src/app/components/insight/viz/TracesTable.tsx delete mode 100644 dashboard/src/app/components/insight/viz/TracesTopStats.tsx delete mode 100644 dashboard/src/app/components/insight/viz/TracesWaterfall.tsx delete mode 100644 dashboard/src/app/components/insight/viz/VizArea.tsx delete mode 100644 dashboard/src/app/components/mail/ComposeForm.tsx delete mode 100644 dashboard/src/app/components/mail/Inbox.tsx delete mode 100644 dashboard/src/app/components/mail/MailCenter.tsx delete mode 100644 dashboard/src/app/components/mail/MailDashboard.tsx delete mode 100644 dashboard/src/app/components/mail/MailSettings.tsx delete mode 100644 dashboard/src/app/components/mail/MessageItem.tsx delete mode 100644 dashboard/src/app/components/mail/MessageView.tsx delete mode 100644 dashboard/src/app/components/mail/Toolbar.tsx delete mode 100644 dashboard/src/app/dashboard/cms/page.tsx delete mode 100644 dashboard/src/app/demo/DemoContent.tsx delete mode 100644 dashboard/src/app/demo/markdown/page.tsx delete mode 100644 dashboard/src/app/demo/page.tsx delete mode 100644 dashboard/src/app/demo/theme/page.tsx delete mode 100644 dashboard/src/app/docs/DocCollectionCard.tsx delete mode 100644 dashboard/src/app/docs/[collection]/[version]/DocCollectionView.tsx delete mode 100644 dashboard/src/app/docs/[collection]/[version]/DocReader.tsx delete mode 100644 dashboard/src/app/docs/[collection]/[version]/DocViewSection.tsx delete mode 100644 dashboard/src/app/docs/[collection]/[version]/page.tsx delete mode 100644 dashboard/src/app/docs/[collection]/page.tsx delete mode 100644 dashboard/src/app/docs/page.tsx delete mode 100644 dashboard/src/app/docs/resources.server.ts delete mode 100644 dashboard/src/app/docs/types.ts delete mode 100644 dashboard/src/app/docs/utils.ts delete mode 100644 dashboard/src/app/download/[...segments]/page.tsx delete mode 100644 dashboard/src/app/download/page.tsx delete mode 100644 dashboard/src/app/editor/page.tsx delete mode 100644 dashboard/src/app/globals.css delete mode 100644 dashboard/src/app/insight/InsightWorkbench.tsx delete mode 100644 dashboard/src/app/insight/page.tsx delete mode 100644 dashboard/src/app/layout.tsx delete mode 100644 dashboard/src/app/logout/LogoutClient.tsx delete mode 100644 dashboard/src/app/logout/page.tsx delete mode 100644 dashboard/src/app/page.tsx delete mode 100644 dashboard/src/app/panel/account/ThemePreferenceCard.tsx delete mode 100644 dashboard/src/app/panel/account/page.tsx delete mode 100644 dashboard/src/app/panel/agent/page.tsx delete mode 100644 dashboard/src/app/panel/api/page.tsx delete mode 100644 dashboard/src/app/panel/appearance/page.tsx delete mode 100644 dashboard/src/app/panel/components/Card.tsx delete mode 100644 dashboard/src/app/panel/components/Header.tsx delete mode 100644 dashboard/src/app/panel/components/Sidebar.tsx delete mode 100644 dashboard/src/app/panel/layout.tsx delete mode 100644 dashboard/src/app/panel/ldp/page.tsx delete mode 100644 dashboard/src/app/panel/loading.tsx delete mode 100644 dashboard/src/app/panel/mail/page.tsx delete mode 100644 dashboard/src/app/panel/management/page.tsx delete mode 100644 dashboard/src/app/panel/page.tsx delete mode 100644 dashboard/src/app/panel/subscription/page.tsx delete mode 100644 dashboard/src/app/store/mail.store.ts delete mode 100644 dashboard/src/components/AskAIButton.tsx delete mode 100644 dashboard/src/components/AskAIDialog.tsx delete mode 100644 dashboard/src/components/ChatBubble.tsx delete mode 100644 dashboard/src/components/Contact.tsx delete mode 100644 dashboard/src/components/DownloadSection.tsx delete mode 100644 dashboard/src/components/Features.tsx delete mode 100644 dashboard/src/components/Footer.tsx delete mode 100644 dashboard/src/components/Hero.tsx delete mode 100644 dashboard/src/components/LanguageToggle.tsx delete mode 100644 dashboard/src/components/MarkdownSection.tsx delete mode 100644 dashboard/src/components/Navbar.tsx delete mode 100644 dashboard/src/components/OpenSource.tsx delete mode 100644 dashboard/src/components/ReleaseChannelSelector.tsx delete mode 100644 dashboard/src/components/SourceHint.tsx delete mode 100644 dashboard/src/components/Terms.tsx delete mode 100644 dashboard/src/components/auth/AuthLayout.tsx delete mode 100644 dashboard/src/components/billing/CryptoBillingWidget.tsx delete mode 100644 dashboard/src/components/billing/PayPalButtons.tsx delete mode 100644 dashboard/src/components/billing/utils.ts delete mode 100644 dashboard/src/components/common/QueryChips.tsx delete mode 100644 dashboard/src/components/common/QueryHistoryPanel.tsx delete mode 100644 dashboard/src/components/download/Breadcrumbs.tsx delete mode 100644 dashboard/src/components/download/CardGrid.tsx delete mode 100644 dashboard/src/components/download/CopyButton.tsx delete mode 100644 dashboard/src/components/download/DownloadBrowser.tsx delete mode 100644 dashboard/src/components/download/DownloadListingContent.tsx delete mode 100644 dashboard/src/components/download/DownloadNotFound.tsx delete mode 100644 dashboard/src/components/download/DownloadSummary.tsx delete mode 100644 dashboard/src/components/download/FileTable.tsx delete mode 100644 dashboard/src/components/download/MarkdownPanel.tsx delete mode 100644 dashboard/src/components/home/CommunityFeed.tsx delete mode 100644 dashboard/src/components/home/CommunityFeedServer.tsx delete mode 100644 dashboard/src/components/home/ContactPanel.tsx delete mode 100644 dashboard/src/components/home/ContactPanelClient.tsx delete mode 100644 dashboard/src/components/home/HeroBanner.tsx delete mode 100644 dashboard/src/components/home/HeroBannerClient.tsx delete mode 100644 dashboard/src/components/home/HeroProductTabs.tsx delete mode 100644 dashboard/src/components/home/ProductMatrix.tsx delete mode 100644 dashboard/src/components/home/ProductMatrixClient.tsx delete mode 100644 dashboard/src/components/home/Sidebar.tsx delete mode 100644 dashboard/src/components/home/SidebarCard.tsx delete mode 100644 dashboard/src/components/iac/CloudIacCatalog.tsx delete mode 100644 dashboard/src/components/iac/RunModal.tsx delete mode 100644 dashboard/src/components/iac/ServiceDetailView.tsx delete mode 100644 dashboard/src/components/marketing/ProductBillingActions.tsx delete mode 100644 dashboard/src/components/marketing/ProductCommunity.tsx delete mode 100644 dashboard/src/components/marketing/ProductDocs.tsx delete mode 100644 dashboard/src/components/marketing/ProductDownload.tsx delete mode 100644 dashboard/src/components/marketing/ProductEditions.tsx delete mode 100644 dashboard/src/components/marketing/ProductFaq.tsx delete mode 100644 dashboard/src/components/marketing/ProductFeatures.tsx delete mode 100644 dashboard/src/components/marketing/ProductHero.tsx delete mode 100644 dashboard/src/components/marketing/ProductScenarios.tsx delete mode 100644 dashboard/src/components/search/index.tsx delete mode 100644 dashboard/src/components/theme/ThemeProvider.tsx delete mode 100644 dashboard/src/components/theme/dark.ts delete mode 100644 dashboard/src/components/theme/designTokens.ts delete mode 100644 dashboard/src/components/theme/index.ts delete mode 100644 dashboard/src/components/theme/light.ts delete mode 100644 dashboard/src/components/theme/store.ts delete mode 100644 dashboard/src/components/theme/types.ts delete mode 100644 dashboard/src/components/theme/useTheme.ts delete mode 100644 dashboard/src/config/feature-toggles.json delete mode 100644 dashboard/src/config/index.ts delete mode 100644 dashboard/src/config/runtime-client.ts delete mode 100644 dashboard/src/config/runtime-loader.ts delete mode 100644 dashboard/src/config/runtime-service-config.base.yaml delete mode 100644 dashboard/src/config/runtime-service-config.prod.yaml delete mode 100644 dashboard/src/config/runtime-service-config.sit.yaml delete mode 100644 dashboard/src/content/about/team.md delete mode 100644 dashboard/src/content/blog/Cloud-Neutral-Hybrid-Network-Architecture.md delete mode 100644 dashboard/src/content/blog/README.md delete mode 100644 dashboard/src/content/blog/gitops-security-compliance.md delete mode 100644 dashboard/src/content/blog/kubernetes-observability-best-practices.md delete mode 100644 dashboard/src/content/blog/welcome-to-cloud-neutral.md delete mode 100644 dashboard/src/content/homepage/en/community.md delete mode 100644 dashboard/src/content/homepage/en/hero.md delete mode 100644 dashboard/src/content/homepage/en/news.md delete mode 100644 dashboard/src/content/homepage/en/operations.md delete mode 100644 dashboard/src/content/homepage/en/products.md delete mode 100644 dashboard/src/content/homepage/en/resources.md delete mode 100644 dashboard/src/content/homepage/en/support.md delete mode 100644 dashboard/src/content/homepage/zh/community.md delete mode 100644 dashboard/src/content/homepage/zh/hero.md delete mode 100644 dashboard/src/content/homepage/zh/news.md delete mode 100644 dashboard/src/content/homepage/zh/operations.md delete mode 100644 dashboard/src/content/homepage/zh/products.md delete mode 100644 dashboard/src/content/homepage/zh/resources.md delete mode 100644 dashboard/src/content/homepage/zh/support.md delete mode 100644 dashboard/src/content/product/xcloudflow/en/hero.md delete mode 100644 dashboard/src/content/product/xcloudflow/zh/hero.md delete mode 100644 dashboard/src/content/product/xscopehub/en/hero.md delete mode 100644 dashboard/src/content/product/xscopehub/zh/hero.md delete mode 100644 dashboard/src/content/product/xstream/en/features.md delete mode 100644 dashboard/src/content/product/xstream/en/hero.md delete mode 100644 dashboard/src/content/product/xstream/zh/features.md delete mode 100644 dashboard/src/content/product/xstream/zh/hero.md delete mode 100644 dashboard/src/dashboard/apps/cms-editor/EditorShell.tsx delete mode 100644 dashboard/src/dashboard/apps/cms-editor/README.md delete mode 100644 dashboard/src/dashboard/apps/cms-editor/storage/index.ts delete mode 100644 dashboard/src/dashboard/apps/cms-editor/storage/local.ts delete mode 100644 dashboard/src/dashboard/apps/cms-editor/storage/remote.ts delete mode 100644 dashboard/src/data/artifacts-manifest.json delete mode 100644 dashboard/src/data/cloud_iac_index.json delete mode 100644 dashboard/src/data/content/homepage.json delete mode 100644 dashboard/src/data/content/xcloudflow.json delete mode 100644 dashboard/src/data/content/xscopehub.json delete mode 100644 dashboard/src/data/content/xstream.json delete mode 100644 dashboard/src/data/docs_index.json delete mode 100644 dashboard/src/data/offline-package.json delete mode 100644 dashboard/src/i18n/LanguageProvider.tsx delete mode 100644 dashboard/src/i18n/translations.ts delete mode 100644 dashboard/src/lib/accessControl.ts delete mode 100644 dashboard/src/lib/apiProxy.ts delete mode 100644 dashboard/src/lib/appShellBypass.tsx delete mode 100644 dashboard/src/lib/authGateway.ts delete mode 100644 dashboard/src/lib/content-loader.ts delete mode 100644 dashboard/src/lib/download-data.ts delete mode 100644 dashboard/src/lib/download/dl-index-data-artifacts.ts delete mode 100644 dashboard/src/lib/download/dl-index-data-docs.ts delete mode 100644 dashboard/src/lib/download/dl-index-data-offline-package.ts delete mode 100644 dashboard/src/lib/download/types.ts delete mode 100644 dashboard/src/lib/env.ts delete mode 100644 dashboard/src/lib/featureFlags.ts delete mode 100644 dashboard/src/lib/featureToggles.ts delete mode 100644 dashboard/src/lib/format.ts delete mode 100644 dashboard/src/lib/iac/actions.ts delete mode 100644 dashboard/src/lib/iac/catalog.ts delete mode 100644 dashboard/src/lib/iac/detail-presets.ts delete mode 100644 dashboard/src/lib/iac/types.ts delete mode 100644 dashboard/src/lib/knowledgeBase.ts delete mode 100644 dashboard/src/lib/mail/apiClient.ts delete mode 100644 dashboard/src/lib/mail/auth.ts delete mode 100644 dashboard/src/lib/mail/types.ts delete mode 100644 dashboard/src/lib/markdown.ts delete mode 100644 dashboard/src/lib/marketingContent.ts delete mode 100644 dashboard/src/lib/rbac.ts delete mode 100644 dashboard/src/lib/ui/markdown.ts delete mode 100644 dashboard/src/lib/userStore.ts delete mode 100644 dashboard/src/modules/extensions/__tests__/loader.test.ts delete mode 100644 dashboard/src/modules/extensions/builtin/index.ts delete mode 100644 dashboard/src/modules/extensions/builtin/user-center/account/BillingOptionsPanel.tsx delete mode 100644 dashboard/src/modules/extensions/builtin/user-center/account/MfaSetupPanel.tsx delete mode 100644 dashboard/src/modules/extensions/builtin/user-center/account/SubscriptionPanel.tsx delete mode 100644 dashboard/src/modules/extensions/builtin/user-center/account/ThemePreferenceCard.tsx delete mode 100644 dashboard/src/modules/extensions/builtin/user-center/components/Card.tsx delete mode 100644 dashboard/src/modules/extensions/builtin/user-center/components/UserOverview.tsx delete mode 100644 dashboard/src/modules/extensions/builtin/user-center/components/VlessQrCard.tsx delete mode 100644 dashboard/src/modules/extensions/builtin/user-center/index.ts delete mode 100644 dashboard/src/modules/extensions/builtin/user-center/lib/api.ts delete mode 100644 dashboard/src/modules/extensions/builtin/user-center/lib/vless.ts delete mode 100644 dashboard/src/modules/extensions/builtin/user-center/management/__tests__/ManagementComponents.test.tsx delete mode 100644 dashboard/src/modules/extensions/builtin/user-center/management/components/OverviewCards.tsx delete mode 100644 dashboard/src/modules/extensions/builtin/user-center/management/components/PermissionMatrixEditor.tsx delete mode 100644 dashboard/src/modules/extensions/builtin/user-center/management/components/TrendChart.tsx delete mode 100644 dashboard/src/modules/extensions/builtin/user-center/management/components/UserGroupManagement.tsx delete mode 100644 dashboard/src/modules/extensions/builtin/user-center/routes/account.tsx delete mode 100644 dashboard/src/modules/extensions/builtin/user-center/routes/agent.tsx delete mode 100644 dashboard/src/modules/extensions/builtin/user-center/routes/api.tsx delete mode 100644 dashboard/src/modules/extensions/builtin/user-center/routes/home.tsx delete mode 100644 dashboard/src/modules/extensions/builtin/user-center/routes/ldp.tsx delete mode 100644 dashboard/src/modules/extensions/builtin/user-center/routes/mail.tsx delete mode 100644 dashboard/src/modules/extensions/builtin/user-center/routes/management.tsx delete mode 100644 dashboard/src/modules/extensions/builtin/user-center/routes/subscription.tsx delete mode 100644 dashboard/src/modules/extensions/builtin/user-center/routes/theme.tsx delete mode 100644 dashboard/src/modules/extensions/loader.ts delete mode 100644 dashboard/src/modules/extensions/types.ts delete mode 100644 dashboard/src/modules/homepage/page.tsx delete mode 100644 dashboard/src/modules/products/registry.test.ts delete mode 100644 dashboard/src/modules/products/registry.ts delete mode 100644 dashboard/src/modules/products/xcloudflow.ts delete mode 100644 dashboard/src/modules/products/xscopehub.ts delete mode 100644 dashboard/src/modules/products/xstream.ts delete mode 100644 dashboard/src/modules/templateRegistry.ts delete mode 100644 dashboard/src/modules/templates/default/config.ts delete mode 100644 dashboard/src/modules/templates/default/index.tsx delete mode 100644 dashboard/src/modules/templates/layouts/commonHome.tsx delete mode 100644 dashboard/src/modules/templates/types.ts delete mode 100644 dashboard/src/products/registry.ts delete mode 100644 dashboard/src/server/account/session.ts delete mode 100644 dashboard/src/server/content-meta.ts delete mode 100644 dashboard/src/server/content-utils.ts delete mode 100644 dashboard/src/server/render-markdown.ts delete mode 100644 dashboard/src/server/runtime-loader.ts delete mode 100644 dashboard/src/server/serviceConfig.ts delete mode 100755 dashboard/start.sh delete mode 100644 dashboard/tailwind.config.js delete mode 100755 dashboard/test-esm.js delete mode 100644 dashboard/tests/e2e/playwright.config.ts delete mode 100644 dashboard/tests/e2e/ui/auth-pages.spec.ts delete mode 100644 dashboard/tests/e2e/ui/homepage.spec.ts delete mode 100644 dashboard/tests/unit/components/MarkdownSection.test.tsx delete mode 100644 dashboard/tests/unit/vitest.config.ts delete mode 100644 dashboard/tests/unit/vitest.setup.ts delete mode 100644 dashboard/tsconfig.json delete mode 100644 dashboard/tsconfig.tsbuildinfo delete mode 100644 dashboard/types/global.d.ts delete mode 100644 dashboard/types/qrcode.d.ts delete mode 100644 dashboard/yarn.lock create mode 100644 deploy/caddy/Caddyfile.accounts.svc.plus create mode 100644 deploy/docker-compose/caddy-stunnel/docker-compose.account.yaml create mode 100644 deploy/docker-compose/caddy-stunnel/docker-compose.db.yaml delete mode 100644 deploy/nginx/askai-limiter.conf create mode 100644 deploy/stunnel/stunnel-account-db-client.conf create mode 100644 deploy/stunnel/stunnel-account-db-server.conf create mode 100644 deploy/systemd/caddy-accounts.service create mode 100644 deploy/systemd/stunnel-account-db-client.service create mode 100644 deploy/systemd/stunnel-account-db-server.service delete mode 100644 docs/Frontend-Routing-design.md delete mode 100644 docs/agents/wasm-plugin.md delete mode 100644 docs/dl-mirror.md delete mode 100644 docs/ui/admin-panel.md delete mode 100644 docs/ui/cms-traffic-overview.md delete mode 100644 docs/ui/login-session-state-evaluation.md delete mode 100644 docs/ui/nextjs-admin-panel.md delete mode 100644 docs/ui/static-export/cloud_iac.md delete mode 100644 docs/ui/static-export/demo.md delete mode 100644 docs/ui/static-export/docs.md delete mode 100644 docs/ui/static-export/download.md delete mode 100644 docs/ui/static-export/login.md delete mode 100644 docs/ui/static-export/panel.md delete mode 100644 docs/ui/static-export/register.md delete mode 100644 docs/ui/user-panel.md delete mode 100644 rag-server/Dockerfile delete mode 100644 rag-server/Makefile delete mode 100644 rag-server/api/admin_settings.go delete mode 100644 rag-server/api/admin_settings_test.go delete mode 100644 rag-server/api/askai.go delete mode 100644 rag-server/api/askai_config_test.go delete mode 100644 rag-server/api/askai_test.go delete mode 100644 rag-server/api/config.go delete mode 100644 rag-server/api/knowledge.go delete mode 100644 rag-server/api/nodes.go delete mode 100644 rag-server/api/rag.go delete mode 100644 rag-server/api/rag_test.go delete mode 100644 rag-server/api/register.go delete mode 100644 rag-server/api/users.go delete mode 100644 rag-server/cmd/agent/main.go delete mode 100644 rag-server/cmd/ingest/main.go delete mode 100644 rag-server/cmd/rag-server-cli/Makefile delete mode 100644 rag-server/cmd/rag-server-cli/main.go delete mode 100644 rag-server/cmd/xcontrol-server/main.go delete mode 100644 rag-server/config/config.go delete mode 100644 rag-server/config/config_test.go delete mode 100644 rag-server/config/server-chutes-ai.yaml delete mode 100644 rag-server/config/server-chutes-qwen-ai.yaml delete mode 100644 rag-server/config/server-ollama-ai.yaml delete mode 100644 rag-server/config/server.yaml delete mode 100644 rag-server/cors.go delete mode 100644 rag-server/entrypoint.sh delete mode 100644 rag-server/go.mod delete mode 100644 rag-server/go.sum delete mode 100644 rag-server/internal/agent/agent.go delete mode 100644 rag-server/internal/auth/middleware.go delete mode 100644 rag-server/internal/auth/token_service.go delete mode 100644 rag-server/internal/model/admin_setting.go delete mode 100644 rag-server/internal/model/models.go delete mode 100644 rag-server/internal/rag/Dockerfile delete mode 100644 rag-server/internal/rag/config/config.go delete mode 100644 rag-server/internal/rag/config/repos.yaml delete mode 100644 rag-server/internal/rag/config/runtime.go delete mode 100644 rag-server/internal/rag/config/runtime_test.go delete mode 100644 rag-server/internal/rag/embed/bge.go delete mode 100644 rag-server/internal/rag/embed/bge_test.go delete mode 100644 rag-server/internal/rag/embed/chutes.go delete mode 100644 rag-server/internal/rag/embed/chutes_test.go delete mode 100644 rag-server/internal/rag/embed/embed.go delete mode 100644 rag-server/internal/rag/embed/errors.go delete mode 100644 rag-server/internal/rag/embed/http.go delete mode 100644 rag-server/internal/rag/embed/ollama.go delete mode 100644 rag-server/internal/rag/embed/openai.go delete mode 100644 rag-server/internal/rag/ingest/chunk.go delete mode 100644 rag-server/internal/rag/ingest/chunk_test.go delete mode 100644 rag-server/internal/rag/ingest/hash.go delete mode 100644 rag-server/internal/rag/ingest/hash_test.go delete mode 100644 rag-server/internal/rag/ingest/ingest.go delete mode 100644 rag-server/internal/rag/ingest/markdown.go delete mode 100644 rag-server/internal/rag/ingest/walk.go delete mode 100644 rag-server/internal/rag/rag.go delete mode 100644 rag-server/internal/rag/rerank/bge.go delete mode 100644 rag-server/internal/rag/rerank/rerank.go delete mode 100644 rag-server/internal/rag/service.go delete mode 100644 rag-server/internal/rag/store/store.go delete mode 100644 rag-server/internal/rag/sync/sync.go delete mode 100644 rag-server/internal/service/admin_settings.go delete mode 100644 rag-server/internal/service/node.go delete mode 100644 rag-server/internal/service/user.go delete mode 100644 rag-server/internal/stats/stats.go delete mode 100644 rag-server/internal/stats/stats_test.go delete mode 100644 rag-server/internal/subscription/subscription.go delete mode 100644 rag-server/internal/xray/xray.go delete mode 100644 rag-server/migrations/0001_create_admin_settings.sql delete mode 100644 rag-server/proxy/proxy.go delete mode 100644 rag-server/server.go delete mode 100644 rag-server/sql/schema.sql delete mode 100644 ragbench/cmd/ragbench/main.go delete mode 100644 ragbench/go.mod delete mode 100644 ragbench/go.sum delete mode 100644 ragbench/internal/bench/bench.go delete mode 100644 ragbench/internal/bench/metrics.go delete mode 100644 ragbench/queries.example.yaml delete mode 100644 ui/dashboard/public/_build/docs_index.json delete mode 100644 wasm/askai_limiter/Cargo.toml delete mode 100644 wasm/askai_limiter/README.md delete mode 100644 wasm/askai_limiter/src/lib.rs diff --git a/dashboard/.config_summary.txt b/dashboard/.config_summary.txt deleted file mode 100644 index 70c207d..0000000 --- a/dashboard/.config_summary.txt +++ /dev/null @@ -1,27 +0,0 @@ -# 配置文件清理总结 - -## 删除的文件 -❌ package.new.json (144B) - 临时文件 -❌ tailwind.config.yaml (1.0K) - 备用方案 -❌ postcss.config.yaml (158B) - 备用方案 - -## 保留的文件 -✅ package.json (2.0K) - 项目配置 -✅ package-lock.json (369K) - 锁文件 -✅ tsconfig.json (1.3K) - TypeScript 配置 -✅ next.config.mjs (2.1K) - ES Module -✅ tailwind.config.js (824B) - CommonJS 版本 -✅ tailwind.config.mjs (1.2K) - ES Module 版本 -✅ postcss.config.js (83B) - CommonJS 版本 -✅ postcss.config.mjs (215B) - ES Module 版本 - -## 当前状态 -- 总计: 8 个核心配置文件 -- ES Module: 3 个 (next.config.mjs, tailwind.config.mjs, postcss.config.mjs) -- CommonJS: 2 个 (tailwind.config.js, postcss.config.js) -- JSON: 3 个 (package.json, package-lock.json, tsconfig.json) - -## 下一步行动 -1. 选择使用 CommonJS 版本 (.js) 还是 ES Module 版本 (.mjs) -2. 如果使用 .mjs 版本,删除对应的 .js 文件 -3. 运行 npm run build 验证配置 diff --git a/dashboard/.eslintrc.json b/dashboard/.eslintrc.json deleted file mode 100644 index cb6d4e4..0000000 --- a/dashboard/.eslintrc.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "extends": [ - "next/core-web-vitals" - ] -} diff --git a/dashboard/.gitignore b/dashboard/.gitignore deleted file mode 100644 index f1fcbf3..0000000 --- a/dashboard/.gitignore +++ /dev/null @@ -1,22 +0,0 @@ - -# Build output -.next/ -out/ - -# Dependencies -node_modules/ - -# Playwright artifacts -playwright-report/ -test-results/ - -# Logs -*.log - -# OS junk -.DS_Store - -# Editor junk -.vscode/ -.idea/ - diff --git a/dashboard/.nvmrc b/dashboard/.nvmrc deleted file mode 100644 index 209e3ef..0000000 --- a/dashboard/.nvmrc +++ /dev/null @@ -1 +0,0 @@ -20 diff --git a/dashboard/.yarnrc.yml b/dashboard/.yarnrc.yml deleted file mode 100644 index 9bdeb26..0000000 --- a/dashboard/.yarnrc.yml +++ /dev/null @@ -1,7 +0,0 @@ -compressionLevel: mixed - -enableGlobalCache: false - -nodeLinker: node-modules - -npmRegistryServer: "https://registry.npmmirror.com" diff --git a/dashboard/AGENTS.md b/dashboard/AGENTS.md deleted file mode 100644 index 5c16447..0000000 --- a/dashboard/AGENTS.md +++ /dev/null @@ -1,205 +0,0 @@ -# Agent Guidelines for dashboard/ - -These instructions apply only to the dashboard/ subtree of XControl. They augment -the root-level AGENTS.md with stricter rules specifically for the Next.js UI codebase. - -The dashboard is a Next.js App Router application implemented in TypeScript with -Tailwind CSS, Zustand state management, and Vitest/Playwright tests. - -This document defines the architectural rules that all contributors — human or AI agents — -must follow when modifying any code under dashboard/. - -## 📌 1. State Management Rules (Zustand-Only Architecture) - -Global state inconsistencies are the primary source of UI bugs and unpredictability. -To eliminate this entire class of issues, the dashboard enforces: - -✅ Zustand is the ONLY allowed global/shared state mechanism. -❌ React Context Providers are disallowed for global state. - -This includes: - -No createContext, useContext, or for app-level data -(auth/session/user/theme/language/insight/workbench/shared config). -No “hybrid” patterns where Zustand data is mirrored inside a Provider. -No component-level useState / useEffect holding cross-component state. - -✔ All shared state MUST live inside Zustand slices - -Each slice must: -Export a useXStore(selector) function. -Expose clear state + actions. -Remain serializable for hydration when needed. -Keep the shape stable and predictable. - -✔ Recommended slice structure (pattern) -/dashboard/src/state/ - user.ts → auth/session - theme.ts → light/dark/system - language.ts → i18n - insight.ts → insight editor / workbench - runtime.ts → runtime service config (hydrated from YAML) - - -Slices should follow this format: - -export const useUserStore = create()( - persist( - (set, get) => ({ - user: null, - isLoading: false, - setUser: (u) => set({ user: u }), - clearUser: () => set({ user: null }), - }), - { name: 'user' } - ) -) - -📌 2. URL-Synchronized State Must Live in Zustand - -Features such as: - -insight editor / workbench state -encoded shareable links -URL → state hydration -state → URL serialization -MUST be handled inside the Zustand slice not in the component tree. - -❌ Forbidden - -Components containing URL parsing logic -Components reading searchParams and storing them in local state -Effects that attempt to “mirror” global data into component-local state -✔ Mandatory - -Zustand slices must expose helpers such as: - -hydrateFromURL(searchParams: URLSearchParams) -syncToURL(router: AppRouterInstance) -serialize(): string - - -This keeps the UI stateless and predictable. - -📌 3. Component-level State Rules - -Local UI state (modal open, hover, controlled inputs) is allowed: - -Allowed: - -useState for purely local visuals -useEffect for browser-only side effects -useRef for DOM details - -Not allowed: - -useState for data needed across pages/components -useEffect that propagates shared state upward - -When unsure: -If two components could ever read it → it belongs in Zustand. - -📌 4. File Structure & Code Conventions -Directory structure - -Maintain component, state, and utility layout: - -src/ - app/ → routes (App Router) - components/ → presentational components - state/ → Zustand slices - hooks/ → reusable UI hooks - lib/ → shared utilities (non-state) - config/ → runtime-service-config.yaml and loaders - -Code style - -ESLint + Prettier formatting - -2-space indentation - -Single quotes - -No unused exports - -No default exports for slices or large utilities -(Easier for static analysis + tree shaking) - -📌 5. Environment, Config & Runtime Rules -Declarative configuration only - -Do not add browser-only environment variables. - -All new runtime config fields must go into: - -dashboard/config/runtime-service-config.yaml - - -And be hydrated by a Zustand slice (e.g., runtime.ts). - -📌 6. AI Agent (Codex/GPT) Rules — Strict Mode - -Because the dashboard often uses AI to refactor/upgrade code, the following constraints -apply specifically to code generated by agents: - -🚫 Agents MUST NOT: - -Generate any form of React Provider for global state - -Introduce hybrid Context+Zustand patterns - -Use component-level state for shared logic - -Use browser APIs (window, localStorage) in server-compatible modules - -Change directory structure without explicit instruction - -Generate environment variables not reflected in runtime-service-config.yaml - -✅ Agents MUST: - -Implement all shared logic as Zustand slices - -Keep slices serializable and deterministic - -Produce code compatible with Next.js App Router (SSR + CSR safe) - -Follow ESLint and existing style conventions - -Ensure newly generated slices include proper actions/selectors - -Prefer pure functions and stable keys for Zustand persist middlewares - -📌 7. Testing Requirements - -Contributors must run: - -yarn --cwd dashboard lint -yarn --cwd dashboard test -yarn --cwd dashboard test:e2e - - -Slices that handle URL hydration must include unit tests verifying: - -URL → state correctness - -state → URL correctness - -shareable link determinism - -Insight-related state should always include at least minimal test coverage. - -📌 8. Summary of Key Constraints (TL;DR) -🚫 Forbidden - -React Context for shared/global state - -useState/useEffect for cross-component data - -Ad-hoc URL parsing inside components - -✔ Required -Zustand-only global state -URL hydration inside Zustand slices -Declarative runtime config (YAML → slice) -AI agents must follow deterministic slice architecture diff --git a/dashboard/Dockerfile b/dashboard/Dockerfile deleted file mode 100644 index cb2831a..0000000 --- a/dashboard/Dockerfile +++ /dev/null @@ -1,75 +0,0 @@ -# ======================================================= -# Global ARGs — 必须在所有 FROM 之前声明 -# ======================================================= -ARG NODE_BUILDER_IMAGE=node:22-bookworm -ARG NODE_RUNTIME_IMAGE=node:22-slim - -# ------------------------------------------------------- -# Stage 1 — Builder (Turbopack + standalone) -# ------------------------------------------------------- -FROM ${NODE_BUILDER_IMAGE} AS builder - -WORKDIR /app/dashboard - -ENV NEXT_TELEMETRY_DISABLED=1 \ - NEXT_PRIVATE_TURBOPACK=1 - -# --------------------------- -# 基础镜像升级到最新 -# --------------------------- -RUN apt-get update \ - && apt-get install -y --no-install-recommends curl \ - && apt-get upgrade -y \ - && rm -rf /var/lib/apt/lists/* \ - && corepack enable \ - && corepack prepare yarn@4.12.0 --activate - -COPY . . -RUN find . -name "package-lock.json" -delete -RUN yarn install --immutable -RUN yarn next build - -# ------------------------------------------------------- -# Stage 2 — Runtime (极致瘦身) -# ------------------------------------------------------- -FROM ${NODE_RUNTIME_IMAGE} AS runner - -WORKDIR /app/dashboard/ - -ENV NODE_ENV=production \ - RUNTIME_ENV=prod \ - REGION=cn \ - PORT=3000 - -# --------------------------- -# 安装 tini(修复子进程 + 更快退出) -# 基础镜像升级到最新 -# --------------------------- -RUN apt-get update \ - && apt-get install -y --no-install-recommends tini ca-certificates \ - && apt-get dist-upgrade -y \ - && apt-get install -y --no-install-recommends --only-upgrade libpam-modules libpam-modules-bin libpam-runtime libpam0g zlib1g \ - && rm -rf /var/lib/apt/lists/* - -# --------------------------- -# 导入 standalone 的运行产物 -# --------------------------- -COPY --from=builder /app/dashboard/.next/standalone ./ -COPY --from=builder /app/dashboard/.next/static ./static -COPY --from=builder /app/dashboard/public ./public - -# --------------------------- -# 额外瘦身(可减少 15–40 MB) -# --------------------------- -#RUN rm -rf node_modules/next/dist/compiled/@vercel/og/* \ -# && rm -rf node_modules/sharp/vendor/* \ -# && find node_modules -name "*.md" -delete \ -# && find node_modules -name "*.map" -delete - -# (如果 Edge Runtime 里用不到 font/SWC 也可移除,比现在更狠) - -EXPOSE 3000 - -ENTRYPOINT ["/usr/bin/tini", "--"] - -CMD ["node", "server.js"] diff --git a/dashboard/Makefile b/dashboard/Makefile deleted file mode 100644 index 27ba416..0000000 --- a/dashboard/Makefile +++ /dev/null @@ -1,112 +0,0 @@ -SHELL := /bin/bash -NODE_VERSION := $(shell node -v 2>/dev/null || echo "Not Found") -YARN := $(shell command -v yarn 2>/dev/null) -MAGICK := $(shell command -v magick 2>/dev/null || command -v convert 2>/dev/null) -OS := $(shell uname -s) -YARN_VERSION ?= 4.12.0 - -.PHONY: init ensure-deps dev build export clean info icon start stop restart test sync-dl-index - -icon: - @echo "🎨 Generating favicon and icon images..." - @if [ -z "$(MAGICK)" ]; then \ - echo "❌ ImageMagick not found."; \ - if [ "$(OS)" = "Darwin" ]; then \ - echo "👉 Try: brew install imagemagick"; \ - elif [ -f /etc/debian_version ]; then \ - echo "👉 Try: sudo apt install imagemagick"; \ - elif [ -f /etc/redhat-release ]; then \ - echo "👉 Try: sudo dnf install imagemagick"; \ - fi; \ - exit 1; \ - fi - @mkdir -p public/icons - @$(MAGICK) ../ui/logo.png -resize 32x32 public/icons/cloudnative_32.png - @$(MAGICK) ../ui/logo.png -resize 64x64 -background none -define icon:auto-resize=64,48,32,16 public/favicon.ico - @echo "✅ Icons generated successfully." - -init: - @echo "🔧 Installing dependencies for dashboard..." - @corepack enable && corepack prepare yarn@$(YARN_VERSION) --activate - @echo "🧹 Removing npm lockfiles to mirror Docker build..." - @find . -name "package-lock.json" -delete - @if [ -z "$(YARN)" ]; then \ - echo "⚠️ Yarn not found. Attempting to install..."; \ - if [ "$(OS)" = "Darwin" ]; then \ - if command -v brew >/dev/null 2>&1; then \ - brew install yarn; \ - else \ - echo "❌ Homebrew not found. Please install Yarn manually."; exit 1; \ - fi; \ - elif [ -f /etc/debian_version ]; then \ - curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add - && \ - echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list && \ - sudo apt update && sudo apt install -y yarn; \ - elif [ -f /etc/redhat-release ]; then \ - curl --silent --location https://dl.yarnpkg.com/rpm/yarn.repo | sudo tee /etc/yum.repos.d/yarn.repo && \ - sudo yum install -y yarn; \ - else \ - echo "❌ Unsupported OS. Please install Yarn manually."; exit 1; \ - fi; \ - fi - yarn config set npmRegistryServer https://registry.npmmirror.com - yarn install --immutable - -ensure-deps: - @if [ ! -f .yarn/install-state.gz ] || [ ! -d node_modules ] || [ ! -d node_modules/sanitize-html ]; then \ - echo "📦 Installing dependencies..."; \ - yarn install --immutable; \ - fi - -dev: ensure-deps - @echo "🚀 Starting Next.js dev server (dashboard)..." - yarn dev -p 3001 - -start: - @echo "🚀 Starting Next.js dev server (dashboard) in background..." - @nohup yarn dev -p 3001 >/tmp/dashboard.log 2>&1 & echo $$! > dashboard.pid - -stop: - @echo "🛑 Stopping Next.js dev server (dashboard)..." - @if [ -f dashboard.pid ]; then \ - kill `cat dashboard.pid` >/dev/null 2>&1 || true; \ - rm dashboard.pid; \ - else \ - echo "No running server"; \ - fi - -restart: stop start - -test: - @echo "🔍 Running tests..." - @yarn test || echo "No tests configured" - -build: init - yarn config set npmRegistryServer https://registry.npmmirror.com - @if [ -z "$(SKIP_SYNC)" ]; then \ - $(MAKE) sync-dl-index; \ - fi - @echo "🔨 Building dashboard..." - NEXT_TELEMETRY_DISABLED=1 NEXT_PRIVATE_TURBOPACK=1 yarn next build - -sync-dl-index: - @echo "📥 Fetching download & docs manifests..." - @mkdir -p public/dl-index - @if ! curl -fsSL https://dl.svc.plus/manifest.json -o public/dl-index/artifacts-manifest.json; then \ - echo "⚠️ Unable to download artifacts manifest. Using existing snapshot."; \ - fi - @if ! curl -fsSL https://dl.svc.plus/docs/all.json -o public/dl-index/docs-manifest.json; then \ - echo "⚠️ Unable to download docs manifest. Using existing snapshot."; \ - fi - -export: - @echo "📦 Exporting dashboard static site to ./out ..." - @NEXT_SHOULD_EXPORT=true yarn next export - -clean: - @echo "🧹 Cleaning .next and out directories..." - rm -rf .next out - -info: - @echo "🧾 Node.js version: $(NODE_VERSION)" - diff --git a/dashboard/docs/CONFIG_SYSTEM_SUMMARY.md b/dashboard/docs/CONFIG_SYSTEM_SUMMARY.md deleted file mode 100644 index 318abb2..0000000 --- a/dashboard/docs/CONFIG_SYSTEM_SUMMARY.md +++ /dev/null @@ -1,164 +0,0 @@ -# 📊 配置文件系统汇总报告 - -## 🏗️ 当前模块系统状态 - -### 模块类型统计 -``` -✅ ES Module (.mjs): 1 个文件 -⚠️ CommonJS (.js): 2 个文件 -❌ 混合状态: 1 个文件 (package.json) -``` - -### 详细状态表 -| 配置文件 | 扩展名 | 当前格式 | 目标格式 | 大小 | 状态 | -|----------|--------|----------|----------|------|------| -| `package.json` | .json | JSON (无 type 字段) | JSON + type:module | 2.0K | ⚠️ 需配置 | -| `next.config.mjs` | .mjs | ES Module | 保持 | 2.1K | ✅ 完成 | -| `tailwind.config.js` | .js | CommonJS | ES Module | 824B | ⚠️ 已创建 .mjs 版本 | -| `postcss.config.js` | .js | CommonJS | ES Module | 83B | ⚠️ 已创建 .mjs 版本 | -| `tsconfig.json` | .json | JSON | 保持 | 1.3K | ✅ 不需修改 | -| `package-lock.json` | .json | JSON (锁文件) | 保持 | 369K | ✅ 不需修改 | -| `next-env.d.ts` | .ts | TypeScript (生成) | 忽略 | 251B | ❌ 自动生成 | - -## 📁 当前配置文件列表 - -### 1. 核心配置文件 -``` -. -├── package.json (2.0K) ⚠️ 需添加 "type": "module" -├── package-lock.json (369K) ✅ 锁文件,无需修改 -├── tsconfig.json (1.3K) ✅ TypeScript 配置,标准 JSON -├── next-env.d.ts (251B) ❌ 自动生成,忽略 -│ -├── next.config.mjs (2.1K) ✅ 已是 ES Module -├── tailwind.config.js (824B) ⚠️ CommonJS -│ ├── tailwind.config.mjs (1.2K) ✅ ES Module 版本 (已创建) -│ -├── postcss.config.js (83B) ⚠️ CommonJS -│ ├── postcss.config.mjs (215B) ✅ ES Module 版本 (已创建) -``` - -### 2. 功能配置文件 -``` -其他配置文件: -├── .eslintrc.json (linting) -├── .prettierrc (code formatting) -├── jest.config.js (testing) -├── vitest.config.ts (testing) -└── playwright.config.ts (e2e testing) -``` - -## 🔄 转换进度表 - -| 配置文件 | 转换状态 | 行动 | -|----------|----------|------| -| `package.json` | ⏳ 等待 | 添加 "type": "module" | -| `tailwind.config.js` | ✅ 完成 | 替换为 .mjs 版本 | -| `postcss.config.js` | ✅ 完成 | 替换为 .mjs 版本 | -| `next.config.mjs` | ✅ 完成 | 已是 ES Module | - -## 🎯 模块系统对比 - -### CommonJS (当前) -```javascript -// tailwind.config.js -module.exports = { - content: ['./app/**/*.{ts,tsx}'], - theme: { extend: {} }, - plugins: [require('@tailwindcss/typography')] -} -``` - -### ES Module (目标) -```javascript -// tailwind.config.mjs -import typography from '@tailwindcss/typography' - -export default { - content: [ - './src/**/*.{js,ts,jsx,tsx,mdx}', - './app/**/*.{js,ts,jsx,tsx,mdx}', - ], - theme: { extend: {} }, - plugins: [typography] -} -``` - -## 📊 文件大小分析 - -### 转换前后对比 -``` -名称 转换前 转换后 变化 -──────────────────────────────────────────────── -tailwind.config.js 824B 1.2K +46% (增加注释) -postcss.config.js 83B 215B +159% (增加注释) -next.config.mjs 2.1K 2.1K 0% (保持) -package.json 2.0K 2.0K 0% (仅添加 type 字段) -``` - -### 原因分析 -- **.mjs 文件更大**: 因为增加了 JSDoc 注释和使用说明 -- **向后兼容**: .mjs 扩展名在 Node.js 12+ 原生支持 -- **更好的可维护性**: 注释提高代码可读性 - -## 🚀 推荐执行方案 - -### 方案 A: 最小风险 (推荐) -```bash -# 仅替换配置文件为 .mjs 版本 -mv tailwind.config.mjs tailwind.config.js -mv postcss.config.mjs postcss.config.js -npm run build -``` - -**优点**: -- ✅ 无需修改 package.json -- ✅ 不影响其他 .js 文件 -- ✅ 风险最小 -- ✅ 立即可用 - -### 方案 B: 完全现代化 -```bash -# 1. 添加 type: "module" 到 package.json -# 2. 替换配置文件 -# 3. 可能需要修改其他 .js 文件 -``` - -**优点**: -- ✅ 完全统一为 ES Module -- ✅ 更好的 tree-shaking -- ✅ 现代化标准 - -**缺点**: -- ⚠️ 可能影响现有 .js 文件 -- ⚠️ 需要全面测试 - -## 💡 最佳实践建议 - -1. **保持简单**: 使用 .mjs 扩展名即可,无需修改 package.json -2. **增加注释**: 为复杂配置添加说明 -3. **版本控制**: 将所有更改提交到 Git -4. **测试验证**: 每次修改后运行 `npm run build` - -## ✨ 关键结论 - -- **当前状态**: 50% ES Module (1/2 配置文件) -- **目标状态**: 100% ES Module (所有配置文件) -- **行动**: 替换 tailwind.config.js 和 postcss.config.js 为 .mjs 版本 -- **风险**: 低 (仅配置文件更改) -- **收益**: 现代标准 + 更好可维护性 - -## 🧹 清理计划 - -### 需要删除的文件 -- ❌ `package.new.json` - 临时创建的文件 -- ❌ `tailwind.config.yaml` - 备用方案,不需保留 -- ❌ `postcss.config.yaml` - 备用方案,不需保留 - -### 需要保留的文件 -- ✅ `tailwind.config.js` (原版 CommonJS) -- ✅ `tailwind.config.mjs` (ES Module 版本) -- ✅ `postcss.config.js` (原版 CommonJS) -- ✅ `postcss.config.mjs` (ES Module 版本) - -**注意**: 保留两个版本以便比较和回滚 diff --git a/dashboard/docs/MIGRATION_GUIDE.md b/dashboard/docs/MIGRATION_GUIDE.md deleted file mode 100644 index 1d310cf..0000000 --- a/dashboard/docs/MIGRATION_GUIDE.md +++ /dev/null @@ -1,66 +0,0 @@ -# 🔄 CommonJS → ES Module 迁移指南 - -## 📊 迁移概览 - -### 转换前 (CommonJS) -```javascript -// tailwind.config.js -module.exports = { - content: ['./app/**/*.{ts,tsx}', './components/**/*.{ts,tsx}'], - theme: { extend: {} }, - plugins: [require('@tailwindcss/typography')] -} -``` - -### 转换后 (ES Module) -```javascript -// tailwind.config.mjs -import typography from '@tailwindcss/typography' - -export default { - content: [ - './src/**/*.{js,ts,jsx,tsx,mdx}', - './app/**/*.{js,ts,jsx,tsx,mdx}', - './components/**/*.{js,ts,jsx,tsx,mdx}', - ], - theme: { extend: {} }, - plugins: [typography] -} -``` - -## ✅ 迁移文件清单 - -| 文件 | 原格式 → 新格式 | 状态 | -|------|----------------|------| -| `package.json` | 添加 `"type": "module"` | 📋 需手动 | -| `tailwind.config.js` | → `tailwind.config.mjs` | ✅ 完成 | -| `postcss.config.js` | → `postcss.config.mjs` | ✅ 完成 | -| `next.config.mjs` | 已是 ES Module | ✅ 保持 | - -## 🚀 执行迁移 - -```bash -# 1. 备份原文件 -cp package.json package.json.bak -cp tailwind.config.js tailwind.config.js.bak -cp postcss.config.js postcss.config.js.bak - -# 2. 添加 type: "module" 到 package.json -# 在 "private": true 后添加 - -# 3. 替换配置文件 -mv tailwind.config.mjs tailwind.config.js -mv postcss.config.mjs postcss.config.js - -# 4. 验证 -npm run build -``` - -## 🎯 ES Module 优势 - -1. **统一标准**: import/export 语法 -2. **更好 Tree Shaking**: 消除未使用代码 -3. **静态分析**: IDE 支持更好 -4. **未来兼容**: ECMAScript 标准 -5. **性能提升**: 更好的模块加载 - diff --git a/dashboard/next-env.d.ts b/dashboard/next-env.d.ts deleted file mode 100644 index c4b7818..0000000 --- a/dashboard/next-env.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -/// -/// -import "./.next/dev/types/routes.d.ts"; - -// NOTE: This file should not be edited -// see https://nextjs.org/docs/app/api-reference/config/typescript for more information. diff --git a/dashboard/next.config.mjs b/dashboard/next.config.mjs deleted file mode 100644 index 5bca857..0000000 --- a/dashboard/next.config.mjs +++ /dev/null @@ -1,97 +0,0 @@ -import path from "path"; -import { fileURLToPath } from "url"; - -const __filename = fileURLToPath(import.meta.url); -const __dirname = path.dirname(__filename); - -const nextConfig = { - // =============================== - // 🚀 生产优化 —— 最关键的三行 - // =============================== - output: "standalone", // 让 Next.js 生成可独立运行的最小产物(大幅减小 Docker 镜像) - compress: true, // Gzip 压缩输出(确保小体积网络传输) - - // 配置允许的外部图片域名 - images: { - remotePatterns: [ - { - protocol: 'https', - hostname: 'dl.svc.plus', - }, - { - protocol: 'https', - hostname: 'www.svc.plus', - }, - { - protocol: 'https', - hostname: 'images.unsplash.com', - }, - ], - }, - - webpack: (config) => { - // 添加 YAML 文件支持 - config.module.rules.push({ - test: /\.ya?ml$/i, - type: 'asset/source', - }); - - // 显式 alias,保证 Turbopack 也能解析 - config.resolve.alias = { - ...(config.resolve.alias ?? {}), - "@components": path.join(__dirname, "src", "components"), - "@i18n": path.join(__dirname, "src", "i18n"), - "@lib": path.join(__dirname, "src", "lib"), - "@types": path.join(__dirname, "types"), - "@server": path.join(__dirname, "src", "server"), - "@modules": path.join(__dirname, "src", "modules"), - "@extensions": path.join(__dirname, "src", "modules", "extensions"), - "@theme": path.join(__dirname, "src", "components", "theme"), - "@templates": path.join(__dirname, "src", "modules", "templates"), - "@src": path.join(__dirname, "src"), - "@": path.join(__dirname, "src"), - }; - - // 添加模块搜索路径 - config.resolve.modules = [ - ...(config.resolve.modules || []), - __dirname, - path.join(__dirname, "src"), - ]; - - return config; - }, - reactStrictMode: true, - transpilePackages: ['@internal/neurapress'], - typedRoutes: false, - turbopack: { - root: path.resolve(__dirname), - }, -}; - -export async function redirects() { - return [ - { - source: '/XStream', - destination: '/xstream', - permanent: true, - }, - { - source: '/Xstream', - destination: '/xstream', - permanent: true, - }, - { - source: '/XScopeHub', - destination: '/xscopehub', - permanent: true, - }, - { - source: '/XCloudFlow', - destination: '/xcloudflow', - permanent: true, - }, - ]; -} - -export default nextConfig; diff --git a/dashboard/package-lock.json b/dashboard/package-lock.json deleted file mode 100644 index 2a1537d..0000000 --- a/dashboard/package-lock.json +++ /dev/null @@ -1,10473 +0,0 @@ -{ - "name": "cloudnative-dashboard", - "version": "1.0.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "cloudnative-dashboard", - "version": "1.0.0", - "dependencies": { - "dompurify": "^3.2.6", - "gray-matter": "^4.0.3", - "html2canvas": "^1.4.1", - "js-yaml": "^4.1.0", - "lucide-react": "^0.319.0", - "marked": "^16.1.2", - "next": "^16.0.9", - "pdfjs-dist": "^4.2.67", - "prop-types": "^15.8.1", - "qr.js": "0.0.0", - "qrcode": "^1.5.4", - "react": "^18.2.0", - "react-dom": "^18.2.0", - "react-grid-layout": "^1.4.4", - "react-pdf": "^9.1.0", - "react-resizable": "^3.0.4", - "sanitize-html": "^2.13.0", - "swr": "^2.3.0", - "zustand": "^4.5.4" - }, - "devDependencies": { - "@playwright/test": "^1.49.1", - "@tailwindcss/typography": "^0.5.19", - "@testing-library/dom": "^9.3.1", - "@testing-library/jest-dom": "^6.4.6", - "@testing-library/react": "^14.3.1", - "@testing-library/user-event": "^14.6.1", - "@types/js-yaml": "^4.0.9", - "@types/node": "24.0.3", - "@types/react": "^18.3.26", - "@types/react-grid-layout": "^1.3.5", - "@types/sanitize-html": "^2.16.0", - "autoprefixer": "^10.4.16", - "baseline-browser-mapping": "^2.8.32", - "eslint": "8.57.0", - "eslint-config-next": "^15.5.3", - "jsdom": "^24.0.0", - "postcss": "^8.4.32", - "prettier": "^3.3.3", - "tailwindcss": "^3.4.3", - "tsconfig-paths-webpack-plugin": "^4.2.0", - "tsx": "^4.7.1", - "typescript": "^5.4.2", - "vitest": "^4.0.7" - }, - "engines": { - "node": ">=18.17 <23" - } - }, - "node_modules/@adobe/css-tools": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.4.4.tgz", - "integrity": "sha512-Elp+iwUx5rN5+Y8xLt5/GRoG20WGoDCQ/1Fb+1LiGtvwbDavuSk0jhD/eZdckHAuzcDzccnkv+rEjyWfRx18gg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@alloc/quick-lru": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", - "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@asamuzakjp/css-color": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-3.2.0.tgz", - "integrity": "sha512-K1A6z8tS3XsmCMM86xoWdn7Fkdn9m6RSVtocUrJYIwZnFVkng/PvkEoWtOWmP+Scc6saYWHWZYbndEEXxl24jw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@csstools/css-calc": "^2.1.3", - "@csstools/css-color-parser": "^3.0.9", - "@csstools/css-parser-algorithms": "^3.0.4", - "@csstools/css-tokenizer": "^3.0.3", - "lru-cache": "^10.4.3" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", - "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-validator-identifier": "^7.27.1", - "js-tokens": "^4.0.0", - "picocolors": "^1.1.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", - "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/runtime": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz", - "integrity": "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@csstools/color-helpers": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.1.0.tgz", - "integrity": "sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT-0", - "engines": { - "node": ">=18" - } - }, - "node_modules/@csstools/css-calc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.1.4.tgz", - "integrity": "sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT", - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@csstools/css-parser-algorithms": "^3.0.5", - "@csstools/css-tokenizer": "^3.0.4" - } - }, - "node_modules/@csstools/css-color-parser": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.1.0.tgz", - "integrity": "sha512-nbtKwh3a6xNVIp/VRuXV64yTKnb1IjTAEEh3irzS+HkKjAOYLTGNb9pmVNntZ8iVBHcWDA2Dof0QtPgFI1BaTA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT", - "dependencies": { - "@csstools/color-helpers": "^5.1.0", - "@csstools/css-calc": "^2.1.4" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@csstools/css-parser-algorithms": "^3.0.5", - "@csstools/css-tokenizer": "^3.0.4" - } - }, - "node_modules/@csstools/css-parser-algorithms": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.5.tgz", - "integrity": "sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT", - "peer": true, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@csstools/css-tokenizer": "^3.0.4" - } - }, - "node_modules/@csstools/css-tokenizer": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.4.tgz", - "integrity": "sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT", - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/@emnapi/core": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.7.0.tgz", - "integrity": "sha512-pJdKGq/1iquWYtv1RRSljZklxHCOCAJFJrImO5ZLKPJVJlVUcs8yFwNQlqS0Lo8xT1VAXXTCZocF9n26FWEKsw==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/wasi-threads": "1.1.0", - "tslib": "^2.4.0" - } - }, - "node_modules/@emnapi/runtime": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.7.0.tgz", - "integrity": "sha512-oAYoQnCYaQZKVS53Fq23ceWMRxq5EhQsE0x0RdQ55jT7wagMu5k+fS39v1fiSLrtrLQlXwVINenqhLMtTrV/1Q==", - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@emnapi/wasi-threads": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.1.0.tgz", - "integrity": "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz", - "integrity": "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.12.tgz", - "integrity": "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz", - "integrity": "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.12.tgz", - "integrity": "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz", - "integrity": "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz", - "integrity": "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz", - "integrity": "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz", - "integrity": "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz", - "integrity": "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz", - "integrity": "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz", - "integrity": "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz", - "integrity": "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz", - "integrity": "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==", - "cpu": [ - "mips64el" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz", - "integrity": "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz", - "integrity": "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz", - "integrity": "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz", - "integrity": "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz", - "integrity": "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz", - "integrity": "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz", - "integrity": "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz", - "integrity": "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openharmony-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz", - "integrity": "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openharmony" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz", - "integrity": "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz", - "integrity": "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz", - "integrity": "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz", - "integrity": "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz", - "integrity": "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^3.4.3" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/regexpp": { - "version": "4.12.2", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", - "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", - "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/js": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", - "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.14", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", - "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", - "deprecated": "Use @eslint/config-array instead", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@humanwhocodes/object-schema": "^2.0.2", - "debug": "^4.3.1", - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", - "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", - "deprecated": "Use @eslint/object-schema instead", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/@img/colour": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@img/colour/-/colour-1.0.0.tgz", - "integrity": "sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw==", - "license": "MIT", - "optional": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/@img/sharp-darwin-arm64": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.4.tgz", - "integrity": "sha512-sitdlPzDVyvmINUdJle3TNHl+AG9QcwiAMsXmccqsCOMZNIdW2/7S26w0LyU8euiLVzFBL3dXPwVCq/ODnf2vA==", - "cpu": [ - "arm64" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-darwin-arm64": "1.2.3" - } - }, - "node_modules/@img/sharp-darwin-x64": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.4.tgz", - "integrity": "sha512-rZheupWIoa3+SOdF/IcUe1ah4ZDpKBGWcsPX6MT0lYniH9micvIU7HQkYTfrx5Xi8u+YqwLtxC/3vl8TQN6rMg==", - "cpu": [ - "x64" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-darwin-x64": "1.2.3" - } - }, - "node_modules/@img/sharp-libvips-darwin-arm64": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.2.3.tgz", - "integrity": "sha512-QzWAKo7kpHxbuHqUC28DZ9pIKpSi2ts2OJnoIGI26+HMgq92ZZ4vk8iJd4XsxN+tYfNJxzH6W62X5eTcsBymHw==", - "cpu": [ - "arm64" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "darwin" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-darwin-x64": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.2.3.tgz", - "integrity": "sha512-Ju+g2xn1E2AKO6YBhxjj+ACcsPQRHT0bhpglxcEf+3uyPY+/gL8veniKoo96335ZaPo03bdDXMv0t+BBFAbmRA==", - "cpu": [ - "x64" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "darwin" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linux-arm": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.2.3.tgz", - "integrity": "sha512-x1uE93lyP6wEwGvgAIV0gP6zmaL/a0tGzJs/BIDDG0zeBhMnuUPm7ptxGhUbcGs4okDJrk4nxgrmxpib9g6HpA==", - "cpu": [ - "arm" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linux-arm64": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.2.3.tgz", - "integrity": "sha512-I4RxkXU90cpufazhGPyVujYwfIm9Nk1QDEmiIsaPwdnm013F7RIceaCc87kAH+oUB1ezqEvC6ga4m7MSlqsJvQ==", - "cpu": [ - "arm64" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linux-ppc64": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.2.3.tgz", - "integrity": "sha512-Y2T7IsQvJLMCBM+pmPbM3bKT/yYJvVtLJGfCs4Sp95SjvnFIjynbjzsa7dY1fRJX45FTSfDksbTp6AGWudiyCg==", - "cpu": [ - "ppc64" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linux-s390x": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.2.3.tgz", - "integrity": "sha512-RgWrs/gVU7f+K7P+KeHFaBAJlNkD1nIZuVXdQv6S+fNA6syCcoboNjsV2Pou7zNlVdNQoQUpQTk8SWDHUA3y/w==", - "cpu": [ - "s390x" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linux-x64": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.2.3.tgz", - "integrity": "sha512-3JU7LmR85K6bBiRzSUc/Ff9JBVIFVvq6bomKE0e63UXGeRw2HPVEjoJke1Yx+iU4rL7/7kUjES4dZ/81Qjhyxg==", - "cpu": [ - "x64" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linuxmusl-arm64": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.2.3.tgz", - "integrity": "sha512-F9q83RZ8yaCwENw1GieztSfj5msz7GGykG/BA+MOUefvER69K/ubgFHNeSyUu64amHIYKGDs4sRCMzXVj8sEyw==", - "cpu": [ - "arm64" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linuxmusl-x64": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.2.3.tgz", - "integrity": "sha512-U5PUY5jbc45ANM6tSJpsgqmBF/VsL6LnxJmIf11kB7J5DctHgqm0SkuXzVWtIY90GnJxKnC/JT251TDnk1fu/g==", - "cpu": [ - "x64" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-linux-arm": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.4.tgz", - "integrity": "sha512-Xyam4mlqM0KkTHYVSuc6wXRmM7LGN0P12li03jAnZ3EJWZqj83+hi8Y9UxZUbxsgsK1qOEwg7O0Bc0LjqQVtxA==", - "cpu": [ - "arm" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-arm": "1.2.3" - } - }, - "node_modules/@img/sharp-linux-arm64": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.4.tgz", - "integrity": "sha512-YXU1F/mN/Wu786tl72CyJjP/Ngl8mGHN1hST4BGl+hiW5jhCnV2uRVTNOcaYPs73NeT/H8Upm3y9582JVuZHrQ==", - "cpu": [ - "arm64" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-arm64": "1.2.3" - } - }, - "node_modules/@img/sharp-linux-ppc64": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.34.4.tgz", - "integrity": "sha512-F4PDtF4Cy8L8hXA2p3TO6s4aDt93v+LKmpcYFLAVdkkD3hSxZzee0rh6/+94FpAynsuMpLX5h+LRsSG3rIciUQ==", - "cpu": [ - "ppc64" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-ppc64": "1.2.3" - } - }, - "node_modules/@img/sharp-linux-s390x": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.4.tgz", - "integrity": "sha512-qVrZKE9Bsnzy+myf7lFKvng6bQzhNUAYcVORq2P7bDlvmF6u2sCmK2KyEQEBdYk+u3T01pVsPrkj943T1aJAsw==", - "cpu": [ - "s390x" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-s390x": "1.2.3" - } - }, - "node_modules/@img/sharp-linux-x64": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.4.tgz", - "integrity": "sha512-ZfGtcp2xS51iG79c6Vhw9CWqQC8l2Ot8dygxoDoIQPTat/Ov3qAa8qpxSrtAEAJW+UjTXc4yxCjNfxm4h6Xm2A==", - "cpu": [ - "x64" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-x64": "1.2.3" - } - }, - "node_modules/@img/sharp-linuxmusl-arm64": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.4.tgz", - "integrity": "sha512-8hDVvW9eu4yHWnjaOOR8kHVrew1iIX+MUgwxSuH2XyYeNRtLUe4VNioSqbNkB7ZYQJj9rUTT4PyRscyk2PXFKA==", - "cpu": [ - "arm64" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-arm64": "1.2.3" - } - }, - "node_modules/@img/sharp-linuxmusl-x64": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.4.tgz", - "integrity": "sha512-lU0aA5L8QTlfKjpDCEFOZsTYGn3AEiO6db8W5aQDxj0nQkVrZWmN3ZP9sYKWJdtq3PWPhUNlqehWyXpYDcI9Sg==", - "cpu": [ - "x64" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-x64": "1.2.3" - } - }, - "node_modules/@img/sharp-wasm32": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.34.4.tgz", - "integrity": "sha512-33QL6ZO/qpRyG7woB/HUALz28WnTMI2W1jgX3Nu2bypqLIKx/QKMILLJzJjI+SIbvXdG9fUnmrxR7vbi1sTBeA==", - "cpu": [ - "wasm32" - ], - "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", - "optional": true, - "dependencies": { - "@emnapi/runtime": "^1.5.0" - }, - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-win32-arm64": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.34.4.tgz", - "integrity": "sha512-2Q250do/5WXTwxW3zjsEuMSv5sUU4Tq9VThWKlU2EYLm4MB7ZeMwF+SFJutldYODXF6jzc6YEOC+VfX0SZQPqA==", - "cpu": [ - "arm64" - ], - "license": "Apache-2.0 AND LGPL-3.0-or-later", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-win32-ia32": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.4.tgz", - "integrity": "sha512-3ZeLue5V82dT92CNL6rsal6I2weKw1cYu+rGKm8fOCCtJTR2gYeUfY3FqUnIJsMUPIH68oS5jmZ0NiJ508YpEw==", - "cpu": [ - "ia32" - ], - "license": "Apache-2.0 AND LGPL-3.0-or-later", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-win32-x64": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.4.tgz", - "integrity": "sha512-xIyj4wpYs8J18sVN3mSQjwrw7fKUqRw+Z5rnHNCy5fYTxigBz81u5mOMPmFumwjcn8+ld1ppptMBCLic1nz6ig==", - "cpu": [ - "x64" - ], - "license": "Apache-2.0 AND LGPL-3.0-or-later", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", - "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/ansi-styles": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", - "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, - "license": "MIT", - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@isaacs/cliui/node_modules/strip-ansi": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", - "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.13", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", - "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", - "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", - "dev": true, - "license": "MIT" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.31", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", - "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@napi-rs/canvas": { - "version": "0.1.81", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas/-/canvas-0.1.81.tgz", - "integrity": "sha512-ReCjd5SYI/UKx/olaQLC4GtN6wUQGjlgHXs1lvUvWGXfBMR3Fxnik3cL+OxKN5ithNdoU0/GlCrdKcQDFh2XKQ==", - "license": "MIT", - "optional": true, - "workspaces": [ - "e2e/*" - ], - "engines": { - "node": ">= 10" - }, - "optionalDependencies": { - "@napi-rs/canvas-android-arm64": "0.1.81", - "@napi-rs/canvas-darwin-arm64": "0.1.81", - "@napi-rs/canvas-darwin-x64": "0.1.81", - "@napi-rs/canvas-linux-arm-gnueabihf": "0.1.81", - "@napi-rs/canvas-linux-arm64-gnu": "0.1.81", - "@napi-rs/canvas-linux-arm64-musl": "0.1.81", - "@napi-rs/canvas-linux-riscv64-gnu": "0.1.81", - "@napi-rs/canvas-linux-x64-gnu": "0.1.81", - "@napi-rs/canvas-linux-x64-musl": "0.1.81", - "@napi-rs/canvas-win32-x64-msvc": "0.1.81" - } - }, - "node_modules/@napi-rs/canvas-android-arm64": { - "version": "0.1.81", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-android-arm64/-/canvas-android-arm64-0.1.81.tgz", - "integrity": "sha512-78Lz+AUi+MsWupyZjXwpwQrp1QCwncPvRZrdvrROcZ9Gq9grP7LfQZiGdR8LKyHIq3OR18mDP+JESGT15V1nXw==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/canvas-darwin-arm64": { - "version": "0.1.81", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-darwin-arm64/-/canvas-darwin-arm64-0.1.81.tgz", - "integrity": "sha512-omejuKgHWKDGoh8rsgsyhm/whwxMaryTQjJTd9zD7hiB9/rzcEEJLHnzXWR5ysy4/tTjHaQotE6k2t8eodTLnA==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/canvas-darwin-x64": { - "version": "0.1.81", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-darwin-x64/-/canvas-darwin-x64-0.1.81.tgz", - "integrity": "sha512-EYfk+co6BElq5DXNH9PBLYDYwc4QsvIVbyrsVHsxVpn4p6Y3/s8MChgC69AGqj3vzZBQ1qx2CRCMtg5cub+XuQ==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/canvas-linux-arm-gnueabihf": { - "version": "0.1.81", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm-gnueabihf/-/canvas-linux-arm-gnueabihf-0.1.81.tgz", - "integrity": "sha512-teh6Q74CyAcH31yLNQGR9MtXSFxlZa5CI6vvNUISI14gWIJWrhOwUAOly+KRe1aztWR0FWTVSPxM4p5y+06aow==", - "cpu": [ - "arm" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/canvas-linux-arm64-gnu": { - "version": "0.1.81", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm64-gnu/-/canvas-linux-arm64-gnu-0.1.81.tgz", - "integrity": "sha512-AGEopHFYRzJOjxY+2G1RmHPRnuWvO3Qdhq7sIazlSjxb3Z6dZHg7OB/4ZimXaimPjDACm9qWa6t5bn9bhXvkcw==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/canvas-linux-arm64-musl": { - "version": "0.1.81", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm64-musl/-/canvas-linux-arm64-musl-0.1.81.tgz", - "integrity": "sha512-Bj3m1cl4GIhsigkdwOxii4g4Ump3/QhNpx85IgAlCCYXpaly6mcsWpuDYEabfIGWOWhDUNBOndaQUPfWK1czOQ==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/canvas-linux-riscv64-gnu": { - "version": "0.1.81", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-riscv64-gnu/-/canvas-linux-riscv64-gnu-0.1.81.tgz", - "integrity": "sha512-yg/5NkHykVdwPlD3XObwCa/EswkOwLHswJcI9rHrac+znHsmCSj5AMX/RTU9Z9F6lZTwL60JM2Esit33XhAMiw==", - "cpu": [ - "riscv64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/canvas-linux-x64-gnu": { - "version": "0.1.81", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-x64-gnu/-/canvas-linux-x64-gnu-0.1.81.tgz", - "integrity": "sha512-tPfMpSEBuV5dJSKexO/UZxpOqnYTaNbG8aKa1ek8QsWu+4SJ/foWkaxscra/RUv85vepx6WWDjzBNbNJsTnO0w==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/canvas-linux-x64-musl": { - "version": "0.1.81", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-x64-musl/-/canvas-linux-x64-musl-0.1.81.tgz", - "integrity": "sha512-1L0xnYgzqn8Baef+inPvY4dKqdmw3KCBoe0NEDgezuBZN7MA5xElwifoG8609uNdrMtJ9J6QZarsslLRVqri7g==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/canvas-win32-x64-msvc": { - "version": "0.1.81", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-win32-x64-msvc/-/canvas-win32-x64-msvc-0.1.81.tgz", - "integrity": "sha512-57ryVbhm/z7RE9/UVcS7mrLPdlayLesy+9U0Uf6epCoeSGrs99tfieCcgZWFbIgmByQ1AZnNtFI2N6huqDLlWQ==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@napi-rs/wasm-runtime": { - "version": "0.2.12", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz", - "integrity": "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/core": "^1.4.3", - "@emnapi/runtime": "^1.4.3", - "@tybys/wasm-util": "^0.10.0" - } - }, - "node_modules/@next/env": { - "version": "16.0.9", - "resolved": "https://registry.npmjs.org/@next/env/-/env-16.0.9.tgz", - "integrity": "sha512-6284pl8c8n9PQidN63qjPVEu1uXXKjnmbmaLebOzIfTrSXdGiAPsIMRi4pk/+v/ezqweE1/B8bFqiAAfC6lMXg==", - "license": "MIT" - }, - "node_modules/@next/eslint-plugin-next": { - "version": "15.5.6", - "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-15.5.6.tgz", - "integrity": "sha512-YxDvsT2fwy1j5gMqk3ppXlsgDopHnkM4BoxSVASbvvgh5zgsK8lvWerDzPip8k3WVzsTZ1O7A7si1KNfN4OZfQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-glob": "3.3.1" - } - }, - "node_modules/@next/swc-darwin-arm64": { - "version": "16.0.9", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-16.0.9.tgz", - "integrity": "sha512-j06fWg/gPqiWjK+sEpCDsh5gX+Bdy9gnPYjFqMBvBEOIcCFy1/ecF6pY6XAce7WyCJAbBPVb+6GvpmUZKNq0oQ==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-darwin-x64": { - "version": "16.0.9", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-16.0.9.tgz", - "integrity": "sha512-FRYYz5GSKUkfvDSjd5hgHME2LgYjfOLBmhRVltbs3oRNQQf9n5UTQMmIu/u5vpkjJFV4L2tqo8duGqDxdQOFwg==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-arm64-gnu": { - "version": "16.0.9", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-16.0.9.tgz", - "integrity": "sha512-EI2klFVL8tOyEIX5J1gXXpm1YuChmDy4R+tHoNjkCHUmBJqXioYErX/O2go4pEhjxkAxHp2i8y5aJcRz2m5NqQ==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-arm64-musl": { - "version": "16.0.9", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-16.0.9.tgz", - "integrity": "sha512-vq/5HeGvowhDPMrpp/KP4GjPVhIXnwNeDPF5D6XK6ta96UIt+C0HwJwuHYlwmn0SWyNANqx1Mp6qSVDXwbFKsw==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-x64-gnu": { - "version": "16.0.9", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-16.0.9.tgz", - "integrity": "sha512-GlUdJwy2leA/HnyRYxJ1ZJLCJH+BxZfqV4E0iYLrJipDKxWejWpPtZUdccPmCfIEY9gNBO7bPfbG6IIgkt0qXg==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-x64-musl": { - "version": "16.0.9", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-16.0.9.tgz", - "integrity": "sha512-UCtOVx4N8AHF434VPwg4L0KkFLAd7pgJShzlX/hhv9+FDrT7/xCuVdlBsCXH7l9yCA/wHl3OqhMbIkgUluriWA==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-win32-arm64-msvc": { - "version": "16.0.9", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-16.0.9.tgz", - "integrity": "sha512-tQjtDGtv63mV3n/cZ4TH8BgUvKTSFlrF06yT5DyRmgQuj5WEjBUDy0W3myIW5kTRYMPrLn42H3VfCNwBH6YYiA==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-win32-x64-msvc": { - "version": "16.0.9", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-16.0.9.tgz", - "integrity": "sha512-y9AGACHTBwnWFLq5B5Fiv3FEbXBusdPb60pgoerB04CV/pwjY1xQNdoTNxAv7eUhU2k1CKnkN4XWVuiK07uOqA==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nolyfill/is-core-module": { - "version": "1.0.39", - "resolved": "https://registry.npmjs.org/@nolyfill/is-core-module/-/is-core-module-1.0.39.tgz", - "integrity": "sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.4.0" - } - }, - "node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=14" - } - }, - "node_modules/@playwright/test": { - "version": "1.56.1", - "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.56.1.tgz", - "integrity": "sha512-vSMYtL/zOcFpvJCW71Q/OEGQb7KYBPAdKh35WNSkaZA75JlAO8ED8UN6GUNTm3drWomcbcqRPFqQbLae8yBTdg==", - "devOptional": true, - "license": "Apache-2.0", - "peer": true, - "dependencies": { - "playwright": "1.56.1" - }, - "bin": { - "playwright": "cli.js" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.52.5.tgz", - "integrity": "sha512-8c1vW4ocv3UOMp9K+gToY5zL2XiiVw3k7f1ksf4yO1FlDFQ1C2u72iACFnSOceJFsWskc2WZNqeRhFRPzv+wtQ==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-android-arm64": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.52.5.tgz", - "integrity": "sha512-mQGfsIEFcu21mvqkEKKu2dYmtuSZOBMmAl5CFlPGLY94Vlcm+zWApK7F/eocsNzp8tKmbeBP8yXyAbx0XHsFNA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.52.5.tgz", - "integrity": "sha512-takF3CR71mCAGA+v794QUZ0b6ZSrgJkArC+gUiG6LB6TQty9T0Mqh3m2ImRBOxS2IeYBo4lKWIieSvnEk2OQWA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.52.5.tgz", - "integrity": "sha512-W901Pla8Ya95WpxDn//VF9K9u2JbocwV/v75TE0YIHNTbhqUTv9w4VuQ9MaWlNOkkEfFwkdNhXgcLqPSmHy0fA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.52.5.tgz", - "integrity": "sha512-QofO7i7JycsYOWxe0GFqhLmF6l1TqBswJMvICnRUjqCx8b47MTo46W8AoeQwiokAx3zVryVnxtBMcGcnX12LvA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.52.5.tgz", - "integrity": "sha512-jr21b/99ew8ujZubPo9skbrItHEIE50WdV86cdSoRkKtmWa+DDr6fu2c/xyRT0F/WazZpam6kk7IHBerSL7LDQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.52.5.tgz", - "integrity": "sha512-PsNAbcyv9CcecAUagQefwX8fQn9LQ4nZkpDboBOttmyffnInRy8R8dSg6hxxl2Re5QhHBf6FYIDhIj5v982ATQ==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.52.5.tgz", - "integrity": "sha512-Fw4tysRutyQc/wwkmcyoqFtJhh0u31K+Q6jYjeicsGJJ7bbEq8LwPWV/w0cnzOqR2m694/Af6hpFayLJZkG2VQ==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.52.5.tgz", - "integrity": "sha512-a+3wVnAYdQClOTlyapKmyI6BLPAFYs0JM8HRpgYZQO02rMR09ZcV9LbQB+NL6sljzG38869YqThrRnfPMCDtZg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.52.5.tgz", - "integrity": "sha512-AvttBOMwO9Pcuuf7m9PkC1PUIKsfaAJ4AYhy944qeTJgQOqJYJ9oVl2nYgY7Rk0mkbsuOpCAYSs6wLYB2Xiw0Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-loong64-gnu": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.52.5.tgz", - "integrity": "sha512-DkDk8pmXQV2wVrF6oq5tONK6UHLz/XcEVow4JTTerdeV1uqPeHxwcg7aFsfnSm9L+OO8WJsWotKM2JJPMWrQtA==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-ppc64-gnu": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.52.5.tgz", - "integrity": "sha512-W/b9ZN/U9+hPQVvlGwjzi+Wy4xdoH2I8EjaCkMvzpI7wJUs8sWJ03Rq96jRnHkSrcHTpQe8h5Tg3ZzUPGauvAw==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.52.5.tgz", - "integrity": "sha512-sjQLr9BW7R/ZiXnQiWPkErNfLMkkWIoCz7YMn27HldKsADEKa5WYdobaa1hmN6slu9oWQbB6/jFpJ+P2IkVrmw==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.52.5.tgz", - "integrity": "sha512-hq3jU/kGyjXWTvAh2awn8oHroCbrPm8JqM7RUpKjalIRWWXE01CQOf/tUNWNHjmbMHg/hmNCwc/Pz3k1T/j/Lg==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.52.5.tgz", - "integrity": "sha512-gn8kHOrku8D4NGHMK1Y7NA7INQTRdVOntt1OCYypZPRt6skGbddska44K8iocdpxHTMMNui5oH4elPH4QOLrFQ==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.52.5.tgz", - "integrity": "sha512-hXGLYpdhiNElzN770+H2nlx+jRog8TyynpTVzdlc6bndktjKWyZyiCsuDAlpd+j+W+WNqfcyAWz9HxxIGfZm1Q==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.52.5.tgz", - "integrity": "sha512-arCGIcuNKjBoKAXD+y7XomR9gY6Mw7HnFBv5Rw7wQRvwYLR7gBAgV7Mb2QTyjXfTveBNFAtPt46/36vV9STLNg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-openharmony-arm64": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.52.5.tgz", - "integrity": "sha512-QoFqB6+/9Rly/RiPjaomPLmR/13cgkIGfA40LHly9zcH1S0bN2HVFYk3a1eAyHQyjs3ZJYlXvIGtcCs5tko9Cw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openharmony" - ] - }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.52.5.tgz", - "integrity": "sha512-w0cDWVR6MlTstla1cIfOGyl8+qb93FlAVutcor14Gf5Md5ap5ySfQ7R9S/NjNaMLSFdUnKGEasmVnu3lCMqB7w==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.52.5.tgz", - "integrity": "sha512-Aufdpzp7DpOTULJCuvzqcItSGDH73pF3ko/f+ckJhxQyHtp67rHw3HMNxoIdDMUITJESNE6a8uh4Lo4SLouOUg==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-x64-gnu": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.52.5.tgz", - "integrity": "sha512-UGBUGPFp1vkj6p8wCRraqNhqwX/4kNQPS57BCFc8wYh0g94iVIW33wJtQAx3G7vrjjNtRaxiMUylM0ktp/TRSQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.52.5.tgz", - "integrity": "sha512-TAcgQh2sSkykPRWLrdyy2AiceMckNf5loITqXxFI5VuQjS5tSuw3WlwdN8qv8vzjLAUTvYaH/mVjSFpbkFbpTg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rtsao/scc": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", - "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", - "dev": true, - "license": "MIT" - }, - "node_modules/@rushstack/eslint-patch": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.14.1.tgz", - "integrity": "sha512-jGTk8UD/RdjsNZW8qq10r0RBvxL8OWtoT+kImlzPDFilmozzM+9QmIJsmze9UiSBrFU45ZxhTYBypn9q9z/VfQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@standard-schema/spec": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.0.0.tgz", - "integrity": "sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@swc/helpers": { - "version": "0.5.15", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz", - "integrity": "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.8.0" - } - }, - "node_modules/@tailwindcss/typography": { - "version": "0.5.19", - "resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.5.19.tgz", - "integrity": "sha512-w31dd8HOx3k9vPtcQh5QHP9GwKcgbMp87j58qi6xgiBnFFtKEAgCWnDw4qUT8aHwkCp8bKvb/KGKWWHedP0AAg==", - "dev": true, - "license": "MIT", - "dependencies": { - "postcss-selector-parser": "6.0.10" - }, - "peerDependencies": { - "tailwindcss": ">=3.0.0 || insiders || >=4.0.0-alpha.20 || >=4.0.0-beta.1" - } - }, - "node_modules/@testing-library/dom": { - "version": "9.3.4", - "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-9.3.4.tgz", - "integrity": "sha512-FlS4ZWlp97iiNWig0Muq8p+3rVDjRiYE+YKGbAqXOu9nwJFFOdL00kFpz42M+4huzYi86vAK1sOOfyOG45muIQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/code-frame": "^7.10.4", - "@babel/runtime": "^7.12.5", - "@types/aria-query": "^5.0.1", - "aria-query": "5.1.3", - "chalk": "^4.1.0", - "dom-accessibility-api": "^0.5.9", - "lz-string": "^1.5.0", - "pretty-format": "^27.0.2" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/@testing-library/jest-dom": { - "version": "6.9.1", - "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.9.1.tgz", - "integrity": "sha512-zIcONa+hVtVSSep9UT3jZ5rizo2BsxgyDYU7WFD5eICBE7no3881HGeb/QkGfsJs6JTkY1aQhT7rIPC7e+0nnA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@adobe/css-tools": "^4.4.0", - "aria-query": "^5.0.0", - "css.escape": "^1.5.1", - "dom-accessibility-api": "^0.6.3", - "picocolors": "^1.1.1", - "redent": "^3.0.0" - }, - "engines": { - "node": ">=14", - "npm": ">=6", - "yarn": ">=1" - } - }, - "node_modules/@testing-library/jest-dom/node_modules/dom-accessibility-api": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.6.3.tgz", - "integrity": "sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==", - "dev": true, - "license": "MIT" - }, - "node_modules/@testing-library/react": { - "version": "14.3.1", - "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-14.3.1.tgz", - "integrity": "sha512-H99XjUhWQw0lTgyMN05W3xQG1Nh4lq574D8keFf1dDoNTJgp66VbJozRaczoF+wsiaPJNt/TcnfpLGufGxSrZQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.12.5", - "@testing-library/dom": "^9.0.0", - "@types/react-dom": "^18.0.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "react": "^18.0.0", - "react-dom": "^18.0.0" - } - }, - "node_modules/@testing-library/react/node_modules/@types/react-dom": { - "version": "18.3.7", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.7.tgz", - "integrity": "sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "@types/react": "^18.0.0" - } - }, - "node_modules/@testing-library/user-event": { - "version": "14.6.1", - "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.6.1.tgz", - "integrity": "sha512-vq7fv0rnt+QTXgPxr5Hjc210p6YKq2kmdziLgnsZGgLJ9e6VAShx1pACLuRjd/AS/sr7phAR58OIIpf0LlmQNw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12", - "npm": ">=6" - }, - "peerDependencies": { - "@testing-library/dom": ">=7.21.4" - } - }, - "node_modules/@tybys/wasm-util": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", - "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@types/aria-query": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", - "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/chai": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz", - "integrity": "sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/deep-eql": "*", - "assertion-error": "^2.0.1" - } - }, - "node_modules/@types/deep-eql": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", - "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/estree": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", - "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/js-yaml": { - "version": "4.0.9", - "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.9.tgz", - "integrity": "sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/node": { - "version": "24.0.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.0.3.tgz", - "integrity": "sha512-R4I/kzCYAdRLzfiCabn9hxWfbuHS573x+r0dJMkkzThEa7pbrcDWK+9zu3e7aBOouf+rQAciqPFMnxwr0aWgKg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "undici-types": "~7.8.0" - } - }, - "node_modules/@types/prop-types": { - "version": "15.7.15", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.15.tgz", - "integrity": "sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==", - "devOptional": true, - "license": "MIT" - }, - "node_modules/@types/react": { - "version": "18.3.26", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.26.tgz", - "integrity": "sha512-RFA/bURkcKzx/X9oumPG9Vp3D3JUgus/d0b67KB0t5S/raciymilkOa66olh78MUI92QLbEJevO7rvqU/kjwKA==", - "devOptional": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@types/prop-types": "*", - "csstype": "^3.0.2" - } - }, - "node_modules/@types/react-grid-layout": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/react-grid-layout/-/react-grid-layout-1.3.5.tgz", - "integrity": "sha512-WH/po1gcEcoR6y857yAnPGug+ZhkF4PaTUxgAbwfeSH/QOgVSakKHBXoPGad/sEznmkiaK3pqHk+etdWisoeBQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/react": "*" - } - }, - "node_modules/@types/sanitize-html": { - "version": "2.16.0", - "resolved": "https://registry.npmjs.org/@types/sanitize-html/-/sanitize-html-2.16.0.tgz", - "integrity": "sha512-l6rX1MUXje5ztPT0cAFtUayXF06DqPhRyfVXareEN5gGCFaP/iwsxIyKODr9XDhfxPpN6vXUFNfo5kZMXCxBtw==", - "dev": true, - "license": "MIT", - "dependencies": { - "htmlparser2": "^8.0.0" - } - }, - "node_modules/@types/trusted-types": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", - "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", - "license": "MIT", - "optional": true - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.46.3", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.46.3.tgz", - "integrity": "sha512-sbaQ27XBUopBkRiuY/P9sWGOWUW4rl8fDoHIUmLpZd8uldsTyB4/Zg6bWTegPoTLnKj9Hqgn3QD6cjPNB32Odw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.46.3", - "@typescript-eslint/type-utils": "8.46.3", - "@typescript-eslint/utils": "8.46.3", - "@typescript-eslint/visitor-keys": "8.46.3", - "graphemer": "^1.4.0", - "ignore": "^7.0.0", - "natural-compare": "^1.4.0", - "ts-api-utils": "^2.1.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^8.46.3", - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", - "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/@typescript-eslint/parser": { - "version": "8.46.3", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.46.3.tgz", - "integrity": "sha512-6m1I5RmHBGTnUGS113G04DMu3CpSdxCAU/UvtjNWL4Nuf3MW9tQhiJqRlHzChIkhy6kZSAQmc+I1bcGjE3yNKg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@typescript-eslint/scope-manager": "8.46.3", - "@typescript-eslint/types": "8.46.3", - "@typescript-eslint/typescript-estree": "8.46.3", - "@typescript-eslint/visitor-keys": "8.46.3", - "debug": "^4.3.4" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/project-service": { - "version": "8.46.3", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.46.3.tgz", - "integrity": "sha512-Fz8yFXsp2wDFeUElO88S9n4w1I4CWDTXDqDr9gYvZgUpwXQqmZBr9+NTTql5R3J7+hrJZPdpiWaB9VNhAKYLuQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.46.3", - "@typescript-eslint/types": "^8.46.3", - "debug": "^4.3.4" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "8.46.3", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.46.3.tgz", - "integrity": "sha512-FCi7Y1zgrmxp3DfWfr+3m9ansUUFoy8dkEdeQSgA9gbm8DaHYvZCdkFRQrtKiedFf3Ha6VmoqoAaP68+i+22kg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.46.3", - "@typescript-eslint/visitor-keys": "8.46.3" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.46.3", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.46.3.tgz", - "integrity": "sha512-GLupljMniHNIROP0zE7nCcybptolcH8QZfXOpCfhQDAdwJ/ZTlcaBOYebSOZotpti/3HrHSw7D3PZm75gYFsOA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/type-utils": { - "version": "8.46.3", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.46.3.tgz", - "integrity": "sha512-ZPCADbr+qfz3aiTTYNNkCbUt+cjNwI/5McyANNrFBpVxPt7GqpEYz5ZfdwuFyGUnJ9FdDXbGODUu6iRCI6XRXw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.46.3", - "@typescript-eslint/typescript-estree": "8.46.3", - "@typescript-eslint/utils": "8.46.3", - "debug": "^4.3.4", - "ts-api-utils": "^2.1.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/types": { - "version": "8.46.3", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.46.3.tgz", - "integrity": "sha512-G7Ok9WN/ggW7e/tOf8TQYMaxgID3Iujn231hfi0Pc7ZheztIJVpO44ekY00b7akqc6nZcvregk0Jpah3kep6hA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.46.3", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.46.3.tgz", - "integrity": "sha512-f/NvtRjOm80BtNM5OQtlaBdM5BRFUv7gf381j9wygDNL+qOYSNOgtQ/DCndiYi80iIOv76QqaTmp4fa9hwI0OA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/project-service": "8.46.3", - "@typescript-eslint/tsconfig-utils": "8.46.3", - "@typescript-eslint/types": "8.46.3", - "@typescript-eslint/visitor-keys": "8.46.3", - "debug": "^4.3.4", - "fast-glob": "^3.3.2", - "is-glob": "^4.0.3", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "ts-api-utils": "^2.1.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/fast-glob": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", - "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.8" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@typescript-eslint/utils": { - "version": "8.46.3", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.46.3.tgz", - "integrity": "sha512-VXw7qmdkucEx9WkmR3ld/u6VhRyKeiF1uxWwCy/iuNfokjJ7VhsgLSOTjsol8BunSw190zABzpwdNsze2Kpo4g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.7.0", - "@typescript-eslint/scope-manager": "8.46.3", - "@typescript-eslint/types": "8.46.3", - "@typescript-eslint/typescript-estree": "8.46.3" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.46.3", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.46.3.tgz", - "integrity": "sha512-uk574k8IU0rOF/AjniX8qbLSGURJVUCeM5e4MIMKBFFi8weeiLrG1fyQejyLXQpRZbU/1BuQasleV/RfHC3hHg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.46.3", - "eslint-visitor-keys": "^4.2.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", - "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@ungap/structured-clone": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", - "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", - "dev": true, - "license": "ISC" - }, - "node_modules/@unrs/resolver-binding-android-arm-eabi": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.11.1.tgz", - "integrity": "sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@unrs/resolver-binding-android-arm64": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.11.1.tgz", - "integrity": "sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@unrs/resolver-binding-darwin-arm64": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.11.1.tgz", - "integrity": "sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@unrs/resolver-binding-darwin-x64": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.11.1.tgz", - "integrity": "sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@unrs/resolver-binding-freebsd-x64": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.11.1.tgz", - "integrity": "sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@unrs/resolver-binding-linux-arm-gnueabihf": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.11.1.tgz", - "integrity": "sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-arm-musleabihf": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.11.1.tgz", - "integrity": "sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-arm64-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.11.1.tgz", - "integrity": "sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-arm64-musl": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.11.1.tgz", - "integrity": "sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-ppc64-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.11.1.tgz", - "integrity": "sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-riscv64-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.11.1.tgz", - "integrity": "sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-riscv64-musl": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.11.1.tgz", - "integrity": "sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-s390x-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.11.1.tgz", - "integrity": "sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-x64-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.11.1.tgz", - "integrity": "sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-x64-musl": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.11.1.tgz", - "integrity": "sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-wasm32-wasi": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.11.1.tgz", - "integrity": "sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==", - "cpu": [ - "wasm32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@napi-rs/wasm-runtime": "^0.2.11" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@unrs/resolver-binding-win32-arm64-msvc": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.11.1.tgz", - "integrity": "sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@unrs/resolver-binding-win32-ia32-msvc": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.11.1.tgz", - "integrity": "sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@unrs/resolver-binding-win32-x64-msvc": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.11.1.tgz", - "integrity": "sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@vitest/expect": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.0.7.tgz", - "integrity": "sha512-jGRG6HghnJDjljdjYIoVzX17S6uCVCBRFnsgdLGJ6CaxfPh8kzUKe/2n533y4O/aeZ/sIr7q7GbuEbeGDsWv4Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@standard-schema/spec": "^1.0.0", - "@types/chai": "^5.2.2", - "@vitest/spy": "4.0.7", - "@vitest/utils": "4.0.7", - "chai": "^6.0.1", - "tinyrainbow": "^3.0.3" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/mocker": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.0.7.tgz", - "integrity": "sha512-OsDwLS7WnpuNslOV6bJkXVYVV/6RSc4eeVxV7h9wxQPNxnjRvTTrIikfwCbMyl8XJmW6oOccBj2Q07YwZtQcCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/spy": "4.0.7", - "estree-walker": "^3.0.3", - "magic-string": "^0.30.19" - }, - "funding": { - "url": "https://opencollective.com/vitest" - }, - "peerDependencies": { - "msw": "^2.4.9", - "vite": "^6.0.0 || ^7.0.0-0" - }, - "peerDependenciesMeta": { - "msw": { - "optional": true - }, - "vite": { - "optional": true - } - } - }, - "node_modules/@vitest/pretty-format": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.0.7.tgz", - "integrity": "sha512-YY//yxqTmk29+/pK+Wi1UB4DUH3lSVgIm+M10rAJ74pOSMgT7rydMSc+vFuq9LjZLhFvVEXir8EcqMke3SVM6Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "tinyrainbow": "^3.0.3" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/runner": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.0.7.tgz", - "integrity": "sha512-orU1lsu4PxLEcDWfjVCNGIedOSF/YtZ+XMrd1PZb90E68khWCNzD8y1dtxtgd0hyBIQk8XggteKN/38VQLvzuw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/utils": "4.0.7", - "pathe": "^2.0.3" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/snapshot": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.0.7.tgz", - "integrity": "sha512-xJL+Nkw0OjaUXXQf13B8iKK5pI9QVtN9uOtzNHYuG/o/B7fIEg0DQ+xOe0/RcqwDEI15rud1k7y5xznBKGUXAA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/pretty-format": "4.0.7", - "magic-string": "^0.30.19", - "pathe": "^2.0.3" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/spy": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.0.7.tgz", - "integrity": "sha512-FW4X8hzIEn4z+HublB4hBF/FhCVaXfIHm8sUfvlznrcy1MQG7VooBgZPMtVCGZtHi0yl3KESaXTqsKh16d8cFg==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/utils": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.0.7.tgz", - "integrity": "sha512-HNrg9CM/Z4ZWB6RuExhuC6FPmLipiShKVMnT9JlQvfhwR47JatWLChA6mtZqVHqypE6p/z6ofcjbyWpM7YLxPQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/pretty-format": "4.0.7", - "tinyrainbow": "^3.0.3" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/acorn": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", - "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", - "dev": true, - "license": "MIT", - "peer": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/agent-base": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", - "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 14" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/any-promise": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", - "dev": true, - "license": "MIT" - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "license": "ISC", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/arg": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", - "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", - "dev": true, - "license": "MIT" - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "license": "Python-2.0" - }, - "node_modules/aria-query": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", - "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "deep-equal": "^2.0.5" - } - }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", - "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "is-array-buffer": "^3.0.5" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-includes": { - "version": "3.1.9", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz", - "integrity": "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.24.0", - "es-object-atoms": "^1.1.1", - "get-intrinsic": "^1.3.0", - "is-string": "^1.1.1", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.findlast": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", - "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.findlastindex": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", - "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.9", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "es-shim-unscopables": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flat": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", - "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flatmap": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", - "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.tosorted": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", - "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.3", - "es-errors": "^1.3.0", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", - "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "is-array-buffer": "^3.0.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/assertion-error": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", - "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - } - }, - "node_modules/ast-types-flow": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", - "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/async-function": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", - "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/autoprefixer": { - "version": "10.4.21", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.21.tgz", - "integrity": "sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/autoprefixer" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "browserslist": "^4.24.4", - "caniuse-lite": "^1.0.30001702", - "fraction.js": "^4.3.7", - "normalize-range": "^0.1.2", - "picocolors": "^1.1.1", - "postcss-value-parser": "^4.2.0" - }, - "bin": { - "autoprefixer": "bin/autoprefixer" - }, - "engines": { - "node": "^10 || ^12 || >=14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/available-typed-arrays": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "possible-typed-array-names": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/axe-core": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.11.0.tgz", - "integrity": "sha512-ilYanEU8vxxBexpJd8cWM4ElSQq4QctCLKih0TSfjIfCQTeyH/6zVrmIJfLPrKTKJRbiG+cfnZbQIjAlJmF1jQ==", - "dev": true, - "license": "MPL-2.0", - "engines": { - "node": ">=4" - } - }, - "node_modules/axobject-query": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", - "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true, - "license": "MIT" - }, - "node_modules/base64-arraybuffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz", - "integrity": "sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==", - "license": "MIT", - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "optional": true - }, - "node_modules/baseline-browser-mapping": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.0.tgz", - "integrity": "sha512-Mh++g+2LPfzZToywfE1BUzvZbfOY52Nil0rn9H1CPC5DJ7fX+Vir7nToBeoiSbB1zTNeGYbELEvJESujgGrzXw==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "baseline-browser-mapping": "dist/cli.js" - } - }, - "node_modules/binary-extensions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", - "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "license": "MIT", - "optional": true, - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, - "license": "MIT", - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browserslist": { - "version": "4.27.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.27.0.tgz", - "integrity": "sha512-AXVQwdhot1eqLihwasPElhX2tAZiBjWdJ9i/Zcj2S6QYIjkx62OKSfnobkriB81C3l4w0rVy3Nt4jaTBltYEpw==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "peer": true, - "dependencies": { - "baseline-browser-mapping": "^2.8.19", - "caniuse-lite": "^1.0.30001751", - "electron-to-chromium": "^1.5.238", - "node-releases": "^2.0.26", - "update-browserslist-db": "^1.1.4" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "optional": true, - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/call-bind": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", - "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.0", - "es-define-property": "^1.0.0", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/call-bind-apply-helpers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", - "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/call-bound": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", - "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "get-intrinsic": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase-css": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", - "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001753", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001753.tgz", - "integrity": "sha512-Bj5H35MD/ebaOV4iDLqPEtiliTN29qkGtEHCwawWn4cYm+bPJM2NsaP30vtZcnERClMzp52J4+aw2UNbK4o+zw==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "CC-BY-4.0" - }, - "node_modules/chai": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/chai/-/chai-6.2.0.tgz", - "integrity": "sha512-aUTnJc/JipRzJrNADXVvpVqi6CO0dn3nx4EVPxijri+fj3LUUDyZQOgVeW54Ob3Y1Xh9Iz8f+CgaCl8v0mn9bA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", - "dev": true, - "license": "MIT", - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/chokidar/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/client-only": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", - "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==", - "license": "MIT" - }, - "node_modules/cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - } - }, - "node_modules/clsx": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", - "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "license": "MIT" - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "license": "MIT", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true, - "license": "MIT" - }, - "node_modules/cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/css-line-break": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/css-line-break/-/css-line-break-2.1.0.tgz", - "integrity": "sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w==", - "license": "MIT", - "dependencies": { - "utrie": "^1.0.2" - } - }, - "node_modules/css.escape": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", - "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==", - "dev": true, - "license": "MIT" - }, - "node_modules/cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true, - "license": "MIT", - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/cssstyle": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.6.0.tgz", - "integrity": "sha512-2z+rWdzbbSZv6/rhtvzvqeZQHrBaqgogqt85sqFNbabZOuFbCVFb8kPeEtZjiKkbrm395irpNKiYeFeLiQnFPg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@asamuzakjp/css-color": "^3.2.0", - "rrweb-cssom": "^0.8.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/cssstyle/node_modules/rrweb-cssom": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.8.0.tgz", - "integrity": "sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==", - "dev": true, - "license": "MIT" - }, - "node_modules/csstype": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", - "devOptional": true, - "license": "MIT" - }, - "node_modules/damerau-levenshtein": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", - "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", - "dev": true, - "license": "BSD-2-Clause" - }, - "node_modules/data-urls": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz", - "integrity": "sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==", - "dev": true, - "license": "MIT", - "dependencies": { - "whatwg-mimetype": "^4.0.0", - "whatwg-url": "^14.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/data-view-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", - "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/data-view-byte-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", - "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/inspect-js" - } - }, - "node_modules/data-view-byte-offset": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", - "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/debug": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", - "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/decimal.js": { - "version": "10.6.0", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.6.0.tgz", - "integrity": "sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==", - "dev": true, - "license": "MIT" - }, - "node_modules/deep-equal": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz", - "integrity": "sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "call-bind": "^1.0.5", - "es-get-iterator": "^1.1.3", - "get-intrinsic": "^1.2.2", - "is-arguments": "^1.1.1", - "is-array-buffer": "^3.0.2", - "is-date-object": "^1.0.5", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "isarray": "^2.0.5", - "object-is": "^1.1.5", - "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.5.1", - "side-channel": "^1.0.4", - "which-boxed-primitive": "^1.0.2", - "which-collection": "^1.0.1", - "which-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "license": "MIT", - "optional": true, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/deepmerge": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/dequal": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", - "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/detect-libc": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", - "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", - "license": "Apache-2.0", - "optional": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/didyoumean": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", - "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/dijkstrajs": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.3.tgz", - "integrity": "sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==", - "license": "MIT" - }, - "node_modules/dlv": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", - "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", - "dev": true, - "license": "MIT" - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/dom-accessibility-api": { - "version": "0.5.16", - "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", - "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==", - "dev": true, - "license": "MIT" - }, - "node_modules/dom-serializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", - "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", - "license": "MIT", - "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.2", - "entities": "^4.2.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/dom-serializer/node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "BSD-2-Clause" - }, - "node_modules/domhandler": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", - "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", - "license": "BSD-2-Clause", - "dependencies": { - "domelementtype": "^2.3.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/dompurify": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.3.0.tgz", - "integrity": "sha512-r+f6MYR1gGN1eJv0TVQbhA7if/U7P87cdPl3HN5rikqaBSBxLiCb/b9O+2eG0cxz0ghyU+mU1QkbsOwERMYlWQ==", - "license": "(MPL-2.0 OR Apache-2.0)", - "optionalDependencies": { - "@types/trusted-types": "^2.0.7" - } - }, - "node_modules/domutils": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", - "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", - "license": "BSD-2-Clause", - "dependencies": { - "dom-serializer": "^2.0.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/dunder-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", - "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true, - "license": "MIT" - }, - "node_modules/electron-to-chromium": { - "version": "1.5.245", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.245.tgz", - "integrity": "sha512-rdmGfW47ZhL/oWEJAY4qxRtdly2B98ooTJ0pdEI4jhVLZ6tNf8fPtov2wS1IRKwFJT92le3x4Knxiwzl7cPPpQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true, - "license": "MIT" - }, - "node_modules/end-of-stream": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", - "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", - "license": "MIT", - "optional": true, - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/enhanced-resolve": { - "version": "5.18.3", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.3.tgz", - "integrity": "sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/entities": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", - "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/es-abstract": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.0.tgz", - "integrity": "sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-buffer-byte-length": "^1.0.2", - "arraybuffer.prototype.slice": "^1.0.4", - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "data-view-buffer": "^1.0.2", - "data-view-byte-length": "^1.0.2", - "data-view-byte-offset": "^1.0.1", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "es-set-tostringtag": "^2.1.0", - "es-to-primitive": "^1.3.0", - "function.prototype.name": "^1.1.8", - "get-intrinsic": "^1.3.0", - "get-proto": "^1.0.1", - "get-symbol-description": "^1.1.0", - "globalthis": "^1.0.4", - "gopd": "^1.2.0", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "internal-slot": "^1.1.0", - "is-array-buffer": "^3.0.5", - "is-callable": "^1.2.7", - "is-data-view": "^1.0.2", - "is-negative-zero": "^2.0.3", - "is-regex": "^1.2.1", - "is-set": "^2.0.3", - "is-shared-array-buffer": "^1.0.4", - "is-string": "^1.1.1", - "is-typed-array": "^1.1.15", - "is-weakref": "^1.1.1", - "math-intrinsics": "^1.1.0", - "object-inspect": "^1.13.4", - "object-keys": "^1.1.1", - "object.assign": "^4.1.7", - "own-keys": "^1.0.1", - "regexp.prototype.flags": "^1.5.4", - "safe-array-concat": "^1.1.3", - "safe-push-apply": "^1.0.0", - "safe-regex-test": "^1.1.0", - "set-proto": "^1.0.0", - "stop-iteration-iterator": "^1.1.0", - "string.prototype.trim": "^1.2.10", - "string.prototype.trimend": "^1.0.9", - "string.prototype.trimstart": "^1.0.8", - "typed-array-buffer": "^1.0.3", - "typed-array-byte-length": "^1.0.3", - "typed-array-byte-offset": "^1.0.4", - "typed-array-length": "^1.0.7", - "unbox-primitive": "^1.1.0", - "which-typed-array": "^1.1.19" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-define-property": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-get-iterator": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", - "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "has-symbols": "^1.0.3", - "is-arguments": "^1.1.1", - "is-map": "^2.0.2", - "is-set": "^2.0.2", - "is-string": "^1.0.7", - "isarray": "^2.0.5", - "stop-iteration-iterator": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-iterator-helpers": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.1.tgz", - "integrity": "sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.6", - "es-errors": "^1.3.0", - "es-set-tostringtag": "^2.0.3", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.6", - "globalthis": "^1.0.4", - "gopd": "^1.2.0", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.2.0", - "has-symbols": "^1.1.0", - "internal-slot": "^1.1.0", - "iterator.prototype": "^1.1.4", - "safe-array-concat": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-module-lexer": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", - "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", - "dev": true, - "license": "MIT" - }, - "node_modules/es-object-atoms": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", - "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-set-tostringtag": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", - "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-shim-unscopables": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", - "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-to-primitive": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", - "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-callable": "^1.2.7", - "is-date-object": "^1.0.5", - "is-symbol": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/esbuild": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz", - "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.25.12", - "@esbuild/android-arm": "0.25.12", - "@esbuild/android-arm64": "0.25.12", - "@esbuild/android-x64": "0.25.12", - "@esbuild/darwin-arm64": "0.25.12", - "@esbuild/darwin-x64": "0.25.12", - "@esbuild/freebsd-arm64": "0.25.12", - "@esbuild/freebsd-x64": "0.25.12", - "@esbuild/linux-arm": "0.25.12", - "@esbuild/linux-arm64": "0.25.12", - "@esbuild/linux-ia32": "0.25.12", - "@esbuild/linux-loong64": "0.25.12", - "@esbuild/linux-mips64el": "0.25.12", - "@esbuild/linux-ppc64": "0.25.12", - "@esbuild/linux-riscv64": "0.25.12", - "@esbuild/linux-s390x": "0.25.12", - "@esbuild/linux-x64": "0.25.12", - "@esbuild/netbsd-arm64": "0.25.12", - "@esbuild/netbsd-x64": "0.25.12", - "@esbuild/openbsd-arm64": "0.25.12", - "@esbuild/openbsd-x64": "0.25.12", - "@esbuild/openharmony-arm64": "0.25.12", - "@esbuild/sunos-x64": "0.25.12", - "@esbuild/win32-arm64": "0.25.12", - "@esbuild/win32-ia32": "0.25.12", - "@esbuild/win32-x64": "0.25.12" - } - }, - "node_modules/escalade": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", - "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", - "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.57.0", - "@humanwhocodes/config-array": "^0.11.14", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "@ungap/structured-clone": "^1.2.0", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-config-next": { - "version": "15.5.6", - "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-15.5.6.tgz", - "integrity": "sha512-cGr3VQlPsZBEv8rtYp4BpG1KNXDqGvPo9VC1iaCgIA11OfziC/vczng+TnAS3WpRIR3Q5ye/6yl+CRUuZ1fPGg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@next/eslint-plugin-next": "15.5.6", - "@rushstack/eslint-patch": "^1.10.3", - "@typescript-eslint/eslint-plugin": "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0", - "@typescript-eslint/parser": "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0", - "eslint-import-resolver-node": "^0.3.6", - "eslint-import-resolver-typescript": "^3.5.2", - "eslint-plugin-import": "^2.31.0", - "eslint-plugin-jsx-a11y": "^6.10.0", - "eslint-plugin-react": "^7.37.0", - "eslint-plugin-react-hooks": "^5.0.0" - }, - "peerDependencies": { - "eslint": "^7.23.0 || ^8.0.0 || ^9.0.0", - "typescript": ">=3.3.1" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/eslint-import-resolver-node": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", - "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^3.2.7", - "is-core-module": "^2.13.0", - "resolve": "^1.22.4" - } - }, - "node_modules/eslint-import-resolver-node/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-import-resolver-typescript": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.10.1.tgz", - "integrity": "sha512-A1rHYb06zjMGAxdLSkN2fXPBwuSaQ0iO5M/hdyS0Ajj1VBaRp0sPD3dn1FhME3c/JluGFbwSxyCfqdSbtQLAHQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "@nolyfill/is-core-module": "1.0.39", - "debug": "^4.4.0", - "get-tsconfig": "^4.10.0", - "is-bun-module": "^2.0.0", - "stable-hash": "^0.0.5", - "tinyglobby": "^0.2.13", - "unrs-resolver": "^1.6.2" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint-import-resolver-typescript" - }, - "peerDependencies": { - "eslint": "*", - "eslint-plugin-import": "*", - "eslint-plugin-import-x": "*" - }, - "peerDependenciesMeta": { - "eslint-plugin-import": { - "optional": true - }, - "eslint-plugin-import-x": { - "optional": true - } - } - }, - "node_modules/eslint-module-utils": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.1.tgz", - "integrity": "sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^3.2.7" - }, - "engines": { - "node": ">=4" - }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - } - } - }, - "node_modules/eslint-module-utils/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-plugin-import": { - "version": "2.32.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz", - "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@rtsao/scc": "^1.1.0", - "array-includes": "^3.1.9", - "array.prototype.findlastindex": "^1.2.6", - "array.prototype.flat": "^1.3.3", - "array.prototype.flatmap": "^1.3.3", - "debug": "^3.2.7", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.9", - "eslint-module-utils": "^2.12.1", - "hasown": "^2.0.2", - "is-core-module": "^2.16.1", - "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "object.fromentries": "^2.0.8", - "object.groupby": "^1.0.3", - "object.values": "^1.2.1", - "semver": "^6.3.1", - "string.prototype.trimend": "^1.0.9", - "tsconfig-paths": "^3.15.0" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" - } - }, - "node_modules/eslint-plugin-import/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-plugin-import/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-plugin-import/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/eslint-plugin-jsx-a11y": { - "version": "6.10.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.2.tgz", - "integrity": "sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "aria-query": "^5.3.2", - "array-includes": "^3.1.8", - "array.prototype.flatmap": "^1.3.2", - "ast-types-flow": "^0.0.8", - "axe-core": "^4.10.0", - "axobject-query": "^4.1.0", - "damerau-levenshtein": "^1.0.8", - "emoji-regex": "^9.2.2", - "hasown": "^2.0.2", - "jsx-ast-utils": "^3.3.5", - "language-tags": "^1.0.9", - "minimatch": "^3.1.2", - "object.fromentries": "^2.0.8", - "safe-regex-test": "^1.0.3", - "string.prototype.includes": "^2.0.1" - }, - "engines": { - "node": ">=4.0" - }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9" - } - }, - "node_modules/eslint-plugin-jsx-a11y/node_modules/aria-query": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", - "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/eslint-plugin-react": { - "version": "7.37.5", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.5.tgz", - "integrity": "sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-includes": "^3.1.8", - "array.prototype.findlast": "^1.2.5", - "array.prototype.flatmap": "^1.3.3", - "array.prototype.tosorted": "^1.1.4", - "doctrine": "^2.1.0", - "es-iterator-helpers": "^1.2.1", - "estraverse": "^5.3.0", - "hasown": "^2.0.2", - "jsx-ast-utils": "^2.4.1 || ^3.0.0", - "minimatch": "^3.1.2", - "object.entries": "^1.1.9", - "object.fromentries": "^2.0.8", - "object.values": "^1.2.1", - "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.5", - "semver": "^6.3.1", - "string.prototype.matchall": "^4.0.12", - "string.prototype.repeat": "^1.0.0" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" - } - }, - "node_modules/eslint-plugin-react-hooks": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.2.0.tgz", - "integrity": "sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" - } - }, - "node_modules/eslint-plugin-react/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-plugin-react/node_modules/resolve": { - "version": "2.0.0-next.5", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", - "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/eslint-plugin-react/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "license": "BSD-2-Clause", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/esquery": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", - "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estree-walker": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", - "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-template": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", - "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", - "license": "(MIT OR WTFPL)", - "optional": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/expect-type": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.2.2.tgz", - "integrity": "sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "license": "MIT", - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-equals": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/fast-equals/-/fast-equals-4.0.3.tgz", - "integrity": "sha512-G3BSX9cfKttjr+2o1O22tYMLq0DPluZnYtq1rXumE1SpL/F/SLIfHx08WYQoWSIpeMYf8sRbJ8++71+v6Pnxfg==", - "license": "MIT" - }, - "node_modules/fast-glob": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", - "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true, - "license": "MIT" - }, - "node_modules/fastq": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", - "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "license": "MIT", - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, - "license": "MIT", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/flat-cache": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", - "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", - "dev": true, - "license": "MIT", - "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flatted": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", - "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", - "dev": true, - "license": "ISC" - }, - "node_modules/for-each": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", - "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-callable": "^1.2.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/foreground-child": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", - "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", - "dev": true, - "license": "ISC", - "dependencies": { - "cross-spawn": "^7.0.6", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/form-data": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz", - "integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==", - "dev": true, - "license": "MIT", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "es-set-tostringtag": "^2.1.0", - "hasown": "^2.0.2", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fraction.js": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", - "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - }, - "funding": { - "type": "patreon", - "url": "https://github.com/sponsors/rawify" - } - }, - "node_modules/fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", - "license": "MIT", - "optional": true - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true, - "license": "ISC" - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/function.prototype.name": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", - "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "functions-have-names": "^1.2.3", - "hasown": "^2.0.2", - "is-callable": "^1.2.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/generator-function": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz", - "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "license": "ISC", - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-intrinsic": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", - "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "function-bind": "^1.1.2", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", - "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", - "dev": true, - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/get-symbol-description": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", - "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-tsconfig": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.13.0.tgz", - "integrity": "sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "resolve-pkg-maps": "^1.0.0" - }, - "funding": { - "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" - } - }, - "node_modules/github-from-package": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", - "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", - "license": "MIT", - "optional": true - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globalthis": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", - "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-properties": "^1.2.1", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true, - "license": "MIT" - }, - "node_modules/gray-matter": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz", - "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==", - "license": "MIT", - "dependencies": { - "js-yaml": "^3.13.1", - "kind-of": "^6.0.2", - "section-matter": "^1.0.0", - "strip-bom-string": "^1.0.0" - }, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/gray-matter/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "license": "MIT", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/gray-matter/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "license": "MIT", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/has-bigints": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", - "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", - "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/html-encoding-sniffer": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz", - "integrity": "sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "whatwg-encoding": "^3.1.1" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/html2canvas": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/html2canvas/-/html2canvas-1.4.1.tgz", - "integrity": "sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA==", - "license": "MIT", - "dependencies": { - "css-line-break": "^2.1.0", - "text-segmentation": "^1.0.3" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/htmlparser2": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", - "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "MIT", - "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3", - "domutils": "^3.0.1", - "entities": "^4.4.0" - } - }, - "node_modules/htmlparser2/node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/http-proxy-agent": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", - "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", - "dev": true, - "license": "MIT", - "dependencies": { - "agent-base": "^7.1.0", - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/https-proxy-agent": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", - "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", - "dev": true, - "license": "MIT", - "dependencies": { - "agent-base": "^7.1.2", - "debug": "4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "BSD-3-Clause", - "optional": true - }, - "node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/import-fresh": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", - "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", - "dev": true, - "license": "ISC", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "devOptional": true, - "license": "ISC" - }, - "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "license": "ISC", - "optional": true - }, - "node_modules/internal-slot": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", - "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "hasown": "^2.0.2", - "side-channel": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/is-arguments": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.2.0.tgz", - "integrity": "sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-array-buffer": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", - "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-async-function": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", - "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "async-function": "^1.0.0", - "call-bound": "^1.0.3", - "get-proto": "^1.0.1", - "has-tostringtag": "^1.0.2", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-bigint": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", - "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-bigints": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "license": "MIT", - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-boolean-object": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", - "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-bun-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-2.0.0.tgz", - "integrity": "sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^7.7.1" - } - }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-core-module": { - "version": "2.16.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", - "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", - "dev": true, - "license": "MIT", - "dependencies": { - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-data-view": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", - "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "get-intrinsic": "^1.2.6", - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-date-object": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", - "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-finalizationregistry": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", - "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-generator-function": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz", - "integrity": "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.4", - "generator-function": "^2.0.0", - "get-proto": "^1.0.1", - "has-tostringtag": "^1.0.2", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", - "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-negative-zero": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", - "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-number-object": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", - "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-potential-custom-element-name": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/is-regex": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", - "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-set": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", - "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", - "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-string": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", - "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", - "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "has-symbols": "^1.1.0", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", - "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "which-typed-array": "^1.1.16" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakmap": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", - "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakref": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", - "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakset": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", - "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true, - "license": "MIT" - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true, - "license": "ISC" - }, - "node_modules/iterator.prototype": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz", - "integrity": "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.6", - "get-proto": "^1.0.0", - "has-symbols": "^1.1.0", - "set-function-name": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/jackspeak": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", - "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } - }, - "node_modules/jiti": { - "version": "1.21.7", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz", - "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", - "dev": true, - "license": "MIT", - "peer": true, - "bin": { - "jiti": "bin/jiti.js" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "license": "MIT" - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsdom": { - "version": "24.1.3", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-24.1.3.tgz", - "integrity": "sha512-MyL55p3Ut3cXbeBEG7Hcv0mVM8pp8PBNWxRqchZnSfAiES1v1mRnMeFfaHWIPULpwsYfvO+ZmMZz5tGCnjzDUQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "cssstyle": "^4.0.1", - "data-urls": "^5.0.0", - "decimal.js": "^10.4.3", - "form-data": "^4.0.0", - "html-encoding-sniffer": "^4.0.0", - "http-proxy-agent": "^7.0.2", - "https-proxy-agent": "^7.0.5", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.12", - "parse5": "^7.1.2", - "rrweb-cssom": "^0.7.1", - "saxes": "^6.0.0", - "symbol-tree": "^3.2.4", - "tough-cookie": "^4.1.4", - "w3c-xmlserializer": "^5.0.0", - "webidl-conversions": "^7.0.0", - "whatwg-encoding": "^3.1.1", - "whatwg-mimetype": "^4.0.0", - "whatwg-url": "^14.0.0", - "ws": "^8.18.0", - "xml-name-validator": "^5.0.0" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "canvas": "^2.11.2" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } - } - }, - "node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true, - "license": "MIT" - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true, - "license": "MIT" - }, - "node_modules/json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dev": true, - "license": "MIT", - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/jsx-ast-utils": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", - "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.flat": "^1.3.1", - "object.assign": "^4.1.4", - "object.values": "^1.1.6" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/keyv": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", - "dev": true, - "license": "MIT", - "dependencies": { - "json-buffer": "3.0.1" - } - }, - "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/language-subtag-registry": { - "version": "0.3.23", - "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz", - "integrity": "sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==", - "dev": true, - "license": "CC0-1.0" - }, - "node_modules/language-tags": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz", - "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==", - "dev": true, - "license": "MIT", - "dependencies": { - "language-subtag-registry": "^0.3.20" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/lilconfig": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", - "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/antonk52" - } - }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true, - "license": "MIT" - }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "license": "MIT", - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" - } - }, - "node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/lucide-react": { - "version": "0.319.0", - "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.319.0.tgz", - "integrity": "sha512-IIbu4TfVI3yPI3ba/Li53mKeOd+WwcWI6+WcyoVdFLtrBfH88m2uQ/uTmtzBWt523HyxCFjWy3RFs0OxDFYm8w==", - "license": "ISC", - "peerDependencies": { - "react": "^16.5.1 || ^17.0.0 || ^18.0.0" - } - }, - "node_modules/lz-string": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", - "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==", - "dev": true, - "license": "MIT", - "bin": { - "lz-string": "bin/bin.js" - } - }, - "node_modules/magic-string": { - "version": "0.30.21", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", - "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.5" - } - }, - "node_modules/make-cancellable-promise": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/make-cancellable-promise/-/make-cancellable-promise-1.3.2.tgz", - "integrity": "sha512-GCXh3bq/WuMbS+Ky4JBPW1hYTOU+znU+Q5m9Pu+pI8EoUqIHk9+tviOKC6/qhHh8C4/As3tzJ69IF32kdz85ww==", - "license": "MIT", - "funding": { - "url": "https://github.com/wojtekmaj/make-cancellable-promise?sponsor=1" - } - }, - "node_modules/make-event-props": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/make-event-props/-/make-event-props-1.6.2.tgz", - "integrity": "sha512-iDwf7mA03WPiR8QxvcVHmVWEPfMY1RZXerDVNCRYW7dUr2ppH3J58Rwb39/WG39yTZdRSxr3x+2v22tvI0VEvA==", - "license": "MIT", - "funding": { - "url": "https://github.com/wojtekmaj/make-event-props?sponsor=1" - } - }, - "node_modules/marked": { - "version": "16.4.1", - "resolved": "https://registry.npmjs.org/marked/-/marked-16.4.1.tgz", - "integrity": "sha512-ntROs7RaN3EvWfy3EZi14H4YxmT6A5YvywfhO+0pm+cH/dnSQRmdAmoFIc3B9aiwTehyk7pESH4ofyBY+V5hZg==", - "license": "MIT", - "bin": { - "marked": "bin/marked.js" - }, - "engines": { - "node": ">= 20" - } - }, - "node_modules/math-intrinsics": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/merge-refs": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/merge-refs/-/merge-refs-1.3.0.tgz", - "integrity": "sha512-nqXPXbso+1dcKDpPCXvwZyJILz+vSLqGGOnDrYHQYE+B8n9JTCekVLC65AfCpR4ggVyA/45Y0iR9LDyS2iI+zA==", - "license": "MIT", - "funding": { - "url": "https://github.com/wojtekmaj/merge-refs?sponsor=1" - }, - "peerDependencies": { - "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromatch": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", - "dev": true, - "license": "MIT", - "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "license": "MIT", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/min-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "devOptional": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/mkdirp-classic": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", - "license": "MIT", - "optional": true - }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, - "license": "MIT" - }, - "node_modules/mz": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", - "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "any-promise": "^1.0.0", - "object-assign": "^4.0.1", - "thenify-all": "^1.0.0" - } - }, - "node_modules/nanoid": { - "version": "3.3.11", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", - "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/napi-build-utils": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-2.0.0.tgz", - "integrity": "sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==", - "license": "MIT", - "optional": true - }, - "node_modules/napi-postinstall": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.3.4.tgz", - "integrity": "sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==", - "dev": true, - "license": "MIT", - "bin": { - "napi-postinstall": "lib/cli.js" - }, - "engines": { - "node": "^12.20.0 || ^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/napi-postinstall" - } - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true, - "license": "MIT" - }, - "node_modules/next": { - "version": "16.0.9", - "resolved": "https://registry.npmjs.org/next/-/next-16.0.9.tgz", - "integrity": "sha512-Xk5x/wEk6ADIAtQECLo1uyE5OagbQCiZ+gW4XEv24FjQ3O2PdSkvgsn22aaseSXC7xg84oONvQjFbSTX5YsMhQ==", - "license": "MIT", - "dependencies": { - "@next/env": "16.0.9", - "@swc/helpers": "0.5.15", - "caniuse-lite": "^1.0.30001579", - "postcss": "8.4.31", - "styled-jsx": "5.1.6" - }, - "bin": { - "next": "dist/bin/next" - }, - "engines": { - "node": ">=20.9.0" - }, - "optionalDependencies": { - "@next/swc-darwin-arm64": "16.0.9", - "@next/swc-darwin-x64": "16.0.9", - "@next/swc-linux-arm64-gnu": "16.0.9", - "@next/swc-linux-arm64-musl": "16.0.9", - "@next/swc-linux-x64-gnu": "16.0.9", - "@next/swc-linux-x64-musl": "16.0.9", - "@next/swc-win32-arm64-msvc": "16.0.9", - "@next/swc-win32-x64-msvc": "16.0.9", - "sharp": "^0.34.4" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.1.0", - "@playwright/test": "^1.51.1", - "babel-plugin-react-compiler": "*", - "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", - "react-dom": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", - "sass": "^1.3.0" - }, - "peerDependenciesMeta": { - "@opentelemetry/api": { - "optional": true - }, - "@playwright/test": { - "optional": true - }, - "babel-plugin-react-compiler": { - "optional": true - }, - "sass": { - "optional": true - } - } - }, - "node_modules/next/node_modules/postcss": { - "version": "8.4.31", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", - "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "nanoid": "^3.3.6", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/node-abi": { - "version": "3.80.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.80.0.tgz", - "integrity": "sha512-LyPuZJcI9HVwzXK1GPxWNzrr+vr8Hp/3UqlmWxxh8p54U1ZbclOqbSog9lWHaCX+dBaiGi6n/hIX+mKu74GmPA==", - "license": "MIT", - "optional": true, - "dependencies": { - "semver": "^7.3.5" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/node-addon-api": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", - "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", - "license": "MIT", - "optional": true - }, - "node_modules/node-releases": { - "version": "2.0.27", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", - "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==", - "dev": true, - "license": "MIT" - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nwsapi": { - "version": "2.2.22", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.22.tgz", - "integrity": "sha512-ujSMe1OWVn55euT1ihwCI1ZcAaAU3nxUiDwfDQldc51ZXaB9m2AyOn6/jh1BLe2t/G8xd6uKG1UBF2aZJeg2SQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-hash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", - "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "node_modules/object-inspect": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", - "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-is": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz", - "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", - "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0", - "has-symbols": "^1.1.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.entries": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.9.tgz", - "integrity": "sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.fromentries": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", - "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.groupby": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", - "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.values": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", - "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "devOptional": true, - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/optionator": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", - "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", - "dev": true, - "license": "MIT", - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.5" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/own-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", - "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.2.6", - "object-keys": "^1.1.1", - "safe-push-apply": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/package-json-from-dist": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", - "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", - "dev": true, - "license": "BlueOak-1.0.0" - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "license": "MIT", - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-srcset": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/parse-srcset/-/parse-srcset-1.0.2.tgz", - "integrity": "sha512-/2qh0lav6CmI15FzA3i/2Bzk2zCgQhGMkvhOhKNcBVQ1ldgpbfiNTVslmooUmWJcADi1f1kIeynbDRVzNlfR6Q==", - "license": "MIT" - }, - "node_modules/parse5": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", - "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", - "dev": true, - "license": "MIT", - "dependencies": { - "entities": "^6.0.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true, - "license": "MIT" - }, - "node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/path2d": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/path2d/-/path2d-0.2.2.tgz", - "integrity": "sha512-+vnG6S4dYcYxZd+CZxzXCNKdELYZSKfohrk98yajCo1PtRoDgCTrrwOvK1GT0UoAdVszagDVllQc0U1vaX4NUQ==", - "license": "MIT", - "optional": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/pathe": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", - "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", - "dev": true, - "license": "MIT" - }, - "node_modules/pdfjs-dist": { - "version": "4.10.38", - "resolved": "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-4.10.38.tgz", - "integrity": "sha512-/Y3fcFrXEAsMjJXeL9J8+ZG9U01LbuWaYypvDW2ycW1jL269L3js3DVBjDJ0Up9Np1uqDXsDrRihHANhZOlwdQ==", - "license": "Apache-2.0", - "engines": { - "node": ">=20" - }, - "optionalDependencies": { - "@napi-rs/canvas": "^0.1.65" - } - }, - "node_modules/picocolors": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "license": "ISC" - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pirates": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", - "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "node_modules/playwright": { - "version": "1.56.1", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.56.1.tgz", - "integrity": "sha512-aFi5B0WovBHTEvpM3DzXTUaeN6eN0qWnTkKx4NQaH4Wvcmc153PdaY2UBdSYKaGYw+UyWXSVyxDUg5DoPEttjw==", - "devOptional": true, - "license": "Apache-2.0", - "dependencies": { - "playwright-core": "1.56.1" - }, - "bin": { - "playwright": "cli.js" - }, - "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "fsevents": "2.3.2" - } - }, - "node_modules/playwright-core": { - "version": "1.56.1", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.56.1.tgz", - "integrity": "sha512-hutraynyn31F+Bifme+Ps9Vq59hKuUCz7H1kDOcBs+2oGguKkWTU50bBWrtz34OUWmIwpBTWDxaRPXrIXkgvmQ==", - "devOptional": true, - "license": "Apache-2.0", - "bin": { - "playwright-core": "cli.js" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/pngjs": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-5.0.0.tgz", - "integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==", - "license": "MIT", - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/possible-typed-array-names": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", - "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/postcss": { - "version": "8.5.6", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", - "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "peer": true, - "dependencies": { - "nanoid": "^3.3.11", - "picocolors": "^1.1.1", - "source-map-js": "^1.2.1" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/postcss-import": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", - "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", - "dev": true, - "license": "MIT", - "dependencies": { - "postcss-value-parser": "^4.0.0", - "read-cache": "^1.0.0", - "resolve": "^1.1.7" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "postcss": "^8.0.0" - } - }, - "node_modules/postcss-js": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.1.0.tgz", - "integrity": "sha512-oIAOTqgIo7q2EOwbhb8UalYePMvYoIeRY2YKntdpFQXNosSu3vLrniGgmH9OKs/qAkfoj5oB3le/7mINW1LCfw==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "camelcase-css": "^2.0.1" - }, - "engines": { - "node": "^12 || ^14 || >= 16" - }, - "peerDependencies": { - "postcss": "^8.4.21" - } - }, - "node_modules/postcss-load-config": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-6.0.1.tgz", - "integrity": "sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "lilconfig": "^3.1.1" - }, - "engines": { - "node": ">= 18" - }, - "peerDependencies": { - "jiti": ">=1.21.0", - "postcss": ">=8.0.9", - "tsx": "^4.8.1", - "yaml": "^2.4.2" - }, - "peerDependenciesMeta": { - "jiti": { - "optional": true - }, - "postcss": { - "optional": true - }, - "tsx": { - "optional": true - }, - "yaml": { - "optional": true - } - } - }, - "node_modules/postcss-nested": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz", - "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "postcss-selector-parser": "^6.1.1" - }, - "engines": { - "node": ">=12.0" - }, - "peerDependencies": { - "postcss": "^8.2.14" - } - }, - "node_modules/postcss-nested/node_modules/postcss-selector-parser": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", - "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", - "dev": true, - "license": "MIT", - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-selector-parser": { - "version": "6.0.10", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", - "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", - "dev": true, - "license": "MIT", - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/prebuild-install": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.3.tgz", - "integrity": "sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==", - "license": "MIT", - "optional": true, - "dependencies": { - "detect-libc": "^2.0.0", - "expand-template": "^2.0.3", - "github-from-package": "0.0.0", - "minimist": "^1.2.3", - "mkdirp-classic": "^0.5.3", - "napi-build-utils": "^2.0.0", - "node-abi": "^3.3.0", - "pump": "^3.0.0", - "rc": "^1.2.7", - "simple-get": "^4.0.0", - "tar-fs": "^2.0.0", - "tunnel-agent": "^0.6.0" - }, - "bin": { - "prebuild-install": "bin.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/prebuild-install/node_modules/decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "license": "MIT", - "optional": true, - "dependencies": { - "mimic-response": "^3.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/prebuild-install/node_modules/mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", - "license": "MIT", - "optional": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/prebuild-install/node_modules/simple-get": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", - "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "optional": true, - "dependencies": { - "decompress-response": "^6.0.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" - } - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/prettier": { - "version": "3.7.4", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.7.4.tgz", - "integrity": "sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA==", - "dev": true, - "license": "MIT", - "bin": { - "prettier": "bin/prettier.cjs" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/prop-types": { - "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "license": "MIT", - "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" - } - }, - "node_modules/prop-types/node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "license": "MIT" - }, - "node_modules/psl": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.15.0.tgz", - "integrity": "sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==", - "dev": true, - "license": "MIT", - "dependencies": { - "punycode": "^2.3.1" - }, - "funding": { - "url": "https://github.com/sponsors/lupomontero" - } - }, - "node_modules/pump": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.3.tgz", - "integrity": "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==", - "license": "MIT", - "optional": true, - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/qr.js": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/qr.js/-/qr.js-0.0.0.tgz", - "integrity": "sha512-c4iYnWb+k2E+vYpRimHqSu575b1/wKl4XFeJGpFmrJQz5I88v9aY2czh7s0w36srfCM1sXgC/xpoJz5dJfq+OQ==", - "license": "MIT" - }, - "node_modules/qrcode": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.4.tgz", - "integrity": "sha512-1ca71Zgiu6ORjHqFBDpnSMTR2ReToX4l1Au1VFLyVeBTFavzQnv5JxMFr3ukHVKpSrSA2MCk0lNJSykjUfz7Zg==", - "license": "MIT", - "dependencies": { - "dijkstrajs": "^1.0.1", - "pngjs": "^5.0.0", - "yargs": "^15.3.1" - }, - "bin": { - "qrcode": "bin/qrcode" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", - "optional": true, - "dependencies": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "bin": { - "rc": "cli.js" - } - }, - "node_modules/rc/node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", - "license": "MIT", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", - "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "loose-envify": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-dom": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", - "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", - "license": "MIT", - "peer": true, - "dependencies": { - "loose-envify": "^1.1.0", - "scheduler": "^0.23.0" - }, - "peerDependencies": { - "react": "^18.2.0" - } - }, - "node_modules/react-draggable": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/react-draggable/-/react-draggable-4.5.0.tgz", - "integrity": "sha512-VC+HBLEZ0XJxnOxVAZsdRi8rD04Iz3SiiKOoYzamjylUcju/hP9np/aZdLHf/7WOD268WMoNJMvYfB5yAK45cw==", - "license": "MIT", - "dependencies": { - "clsx": "^2.1.1", - "prop-types": "^15.8.1" - }, - "peerDependencies": { - "react": ">= 16.3.0", - "react-dom": ">= 16.3.0" - } - }, - "node_modules/react-grid-layout": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/react-grid-layout/-/react-grid-layout-1.5.2.tgz", - "integrity": "sha512-vT7xmQqszTT+sQw/LfisrEO4le1EPNnSEMVHy6sBZyzS3yGkMywdOd+5iEFFwQwt0NSaGkxuRmYwa1JsP6OJdw==", - "license": "MIT", - "dependencies": { - "clsx": "^2.1.1", - "fast-equals": "^4.0.3", - "prop-types": "^15.8.1", - "react-draggable": "^4.4.6", - "react-resizable": "^3.0.5", - "resize-observer-polyfill": "^1.5.1" - }, - "peerDependencies": { - "react": ">= 16.3.0", - "react-dom": ">= 16.3.0" - } - }, - "node_modules/react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", - "dev": true, - "license": "MIT" - }, - "node_modules/react-pdf": { - "version": "9.2.1", - "resolved": "https://registry.npmjs.org/react-pdf/-/react-pdf-9.2.1.tgz", - "integrity": "sha512-AJt0lAIkItWEZRA5d/mO+Om4nPCuTiQ0saA+qItO967DTjmGjnhmF+Bi2tL286mOTfBlF5CyLzJ35KTMaDoH+A==", - "license": "MIT", - "dependencies": { - "clsx": "^2.0.0", - "dequal": "^2.0.3", - "make-cancellable-promise": "^1.3.1", - "make-event-props": "^1.6.0", - "merge-refs": "^1.3.0", - "pdfjs-dist": "4.8.69", - "tiny-invariant": "^1.0.0", - "warning": "^4.0.0" - }, - "funding": { - "url": "https://github.com/wojtekmaj/react-pdf?sponsor=1" - }, - "peerDependencies": { - "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/react-pdf/node_modules/canvas": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/canvas/-/canvas-3.2.0.tgz", - "integrity": "sha512-jk0GxrLtUEmW/TmFsk2WghvgHe8B0pxGilqCL21y8lHkPUGa6FTsnCNtHPOzT8O3y+N+m3espawV80bbBlgfTA==", - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "dependencies": { - "node-addon-api": "^7.0.0", - "prebuild-install": "^7.1.3" - }, - "engines": { - "node": "^18.12.0 || >= 20.9.0" - } - }, - "node_modules/react-pdf/node_modules/pdfjs-dist": { - "version": "4.8.69", - "resolved": "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-4.8.69.tgz", - "integrity": "sha512-IHZsA4T7YElCKNNXtiLgqScw4zPd3pG9do8UrznC757gMd7UPeHSL2qwNNMJo4r79fl8oj1Xx+1nh2YkzdMpLQ==", - "license": "Apache-2.0", - "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "canvas": "^3.0.0-rc2", - "path2d": "^0.2.1" - } - }, - "node_modules/react-resizable": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/react-resizable/-/react-resizable-3.0.5.tgz", - "integrity": "sha512-vKpeHhI5OZvYn82kXOs1bC8aOXktGU5AmKAgaZS4F5JPburCtbmDPqE7Pzp+1kN4+Wb81LlF33VpGwWwtXem+w==", - "license": "MIT", - "dependencies": { - "prop-types": "15.x", - "react-draggable": "^4.0.3" - }, - "peerDependencies": { - "react": ">= 16.3" - } - }, - "node_modules/read-cache": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", - "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", - "dev": true, - "license": "MIT", - "dependencies": { - "pify": "^2.3.0" - } - }, - "node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "license": "MIT", - "optional": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "license": "MIT", - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/redent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", - "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", - "dev": true, - "license": "MIT", - "dependencies": { - "indent-string": "^4.0.0", - "strip-indent": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/reflect.getprototypeof": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", - "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.9", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.7", - "get-proto": "^1.0.1", - "which-builtin-type": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regexp.prototype.flags": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", - "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-errors": "^1.3.0", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "set-function-name": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "license": "ISC" - }, - "node_modules/requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/resize-observer-polyfill": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", - "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==", - "license": "MIT" - }, - "node_modules/resolve": { - "version": "1.22.11", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", - "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-core-module": "^2.16.1", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/resolve-pkg-maps": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", - "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" - } - }, - "node_modules/reusify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", - "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", - "dev": true, - "license": "MIT", - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", - "dev": true, - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rollup": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.52.5.tgz", - "integrity": "sha512-3GuObel8h7Kqdjt0gxkEzaifHTqLVW56Y/bjN7PSQtkKr0w3V/QYSdt6QWYtd7A1xUtYQigtdUfgj1RvWVtorw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "1.0.8" - }, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=18.0.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.52.5", - "@rollup/rollup-android-arm64": "4.52.5", - "@rollup/rollup-darwin-arm64": "4.52.5", - "@rollup/rollup-darwin-x64": "4.52.5", - "@rollup/rollup-freebsd-arm64": "4.52.5", - "@rollup/rollup-freebsd-x64": "4.52.5", - "@rollup/rollup-linux-arm-gnueabihf": "4.52.5", - "@rollup/rollup-linux-arm-musleabihf": "4.52.5", - "@rollup/rollup-linux-arm64-gnu": "4.52.5", - "@rollup/rollup-linux-arm64-musl": "4.52.5", - "@rollup/rollup-linux-loong64-gnu": "4.52.5", - "@rollup/rollup-linux-ppc64-gnu": "4.52.5", - "@rollup/rollup-linux-riscv64-gnu": "4.52.5", - "@rollup/rollup-linux-riscv64-musl": "4.52.5", - "@rollup/rollup-linux-s390x-gnu": "4.52.5", - "@rollup/rollup-linux-x64-gnu": "4.52.5", - "@rollup/rollup-linux-x64-musl": "4.52.5", - "@rollup/rollup-openharmony-arm64": "4.52.5", - "@rollup/rollup-win32-arm64-msvc": "4.52.5", - "@rollup/rollup-win32-ia32-msvc": "4.52.5", - "@rollup/rollup-win32-x64-gnu": "4.52.5", - "@rollup/rollup-win32-x64-msvc": "4.52.5", - "fsevents": "~2.3.2" - } - }, - "node_modules/rrweb-cssom": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.7.1.tgz", - "integrity": "sha512-TrEMa7JGdVm0UThDJSx7ddw5nVm3UJS9o9CCIZ72B1vSyEZoziDqBYP3XIoi/12lKrJR8rE3jeFHMok2F/Mnsg==", - "dev": true, - "license": "MIT" - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/safe-array-concat": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", - "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "get-intrinsic": "^1.2.6", - "has-symbols": "^1.1.0", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">=0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "optional": true - }, - "node_modules/safe-push-apply": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", - "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-regex-test": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", - "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "is-regex": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true, - "license": "MIT" - }, - "node_modules/sanitize-html": { - "version": "2.17.0", - "resolved": "https://registry.npmjs.org/sanitize-html/-/sanitize-html-2.17.0.tgz", - "integrity": "sha512-dLAADUSS8rBwhaevT12yCezvioCA+bmUTPH/u57xKPT8d++voeYE6HeluA/bPbQ15TwDBG2ii+QZIEmYx8VdxA==", - "license": "MIT", - "dependencies": { - "deepmerge": "^4.2.2", - "escape-string-regexp": "^4.0.0", - "htmlparser2": "^8.0.0", - "is-plain-object": "^5.0.0", - "parse-srcset": "^1.0.2", - "postcss": "^8.3.11" - } - }, - "node_modules/saxes": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", - "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", - "dev": true, - "license": "ISC", - "dependencies": { - "xmlchars": "^2.2.0" - }, - "engines": { - "node": ">=v12.22.7" - } - }, - "node_modules/scheduler": { - "version": "0.23.2", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", - "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", - "license": "MIT", - "dependencies": { - "loose-envify": "^1.1.0" - } - }, - "node_modules/section-matter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", - "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==", - "license": "MIT", - "dependencies": { - "extend-shallow": "^2.0.1", - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", - "devOptional": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "license": "ISC" - }, - "node_modules/set-function-length": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-function-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", - "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-proto": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", - "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", - "dev": true, - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/sharp": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.34.4.tgz", - "integrity": "sha512-FUH39xp3SBPnxWvd5iib1X8XY7J0K0X7d93sie9CJg2PO8/7gmg89Nve6OjItK53/MlAushNNxteBYfM6DEuoA==", - "hasInstallScript": true, - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "@img/colour": "^1.0.0", - "detect-libc": "^2.1.0", - "semver": "^7.7.2" - }, - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-darwin-arm64": "0.34.4", - "@img/sharp-darwin-x64": "0.34.4", - "@img/sharp-libvips-darwin-arm64": "1.2.3", - "@img/sharp-libvips-darwin-x64": "1.2.3", - "@img/sharp-libvips-linux-arm": "1.2.3", - "@img/sharp-libvips-linux-arm64": "1.2.3", - "@img/sharp-libvips-linux-ppc64": "1.2.3", - "@img/sharp-libvips-linux-s390x": "1.2.3", - "@img/sharp-libvips-linux-x64": "1.2.3", - "@img/sharp-libvips-linuxmusl-arm64": "1.2.3", - "@img/sharp-libvips-linuxmusl-x64": "1.2.3", - "@img/sharp-linux-arm": "0.34.4", - "@img/sharp-linux-arm64": "0.34.4", - "@img/sharp-linux-ppc64": "0.34.4", - "@img/sharp-linux-s390x": "0.34.4", - "@img/sharp-linux-x64": "0.34.4", - "@img/sharp-linuxmusl-arm64": "0.34.4", - "@img/sharp-linuxmusl-x64": "0.34.4", - "@img/sharp-wasm32": "0.34.4", - "@img/sharp-win32-arm64": "0.34.4", - "@img/sharp-win32-ia32": "0.34.4", - "@img/sharp-win32-x64": "0.34.4" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "license": "MIT", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/side-channel": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", - "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3", - "side-channel-list": "^1.0.0", - "side-channel-map": "^1.0.1", - "side-channel-weakmap": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-list": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", - "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", - "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-weakmap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", - "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3", - "side-channel-map": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/siginfo": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", - "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", - "dev": true, - "license": "ISC" - }, - "node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/simple-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", - "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "optional": true - }, - "node_modules/source-map-js": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", - "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "license": "BSD-3-Clause" - }, - "node_modules/stable-hash": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/stable-hash/-/stable-hash-0.0.5.tgz", - "integrity": "sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==", - "dev": true, - "license": "MIT" - }, - "node_modules/stackback": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", - "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", - "dev": true, - "license": "MIT" - }, - "node_modules/std-env": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.10.0.tgz", - "integrity": "sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==", - "dev": true, - "license": "MIT" - }, - "node_modules/stop-iteration-iterator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", - "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "internal-slot": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "license": "MIT", - "optional": true, - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width-cjs": { - "name": "string-width", - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width-cjs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/string-width/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "license": "MIT" - }, - "node_modules/string.prototype.includes": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/string.prototype.includes/-/string.prototype.includes-2.0.1.tgz", - "integrity": "sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.3" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/string.prototype.matchall": { - "version": "4.0.12", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz", - "integrity": "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.6", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.6", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "internal-slot": "^1.1.0", - "regexp.prototype.flags": "^1.5.3", - "set-function-name": "^2.0.2", - "side-channel": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.repeat": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", - "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" - } - }, - "node_modules/string.prototype.trim": { - "version": "1.2.10", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", - "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "define-data-property": "^1.1.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-object-atoms": "^1.0.0", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", - "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", - "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi-cjs": { - "name": "strip-ansi", - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/strip-bom-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", - "integrity": "sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-indent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", - "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "min-indent": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/styled-jsx": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.6.tgz", - "integrity": "sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==", - "license": "MIT", - "dependencies": { - "client-only": "0.0.1" - }, - "engines": { - "node": ">= 12.0.0" - }, - "peerDependencies": { - "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0" - }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - }, - "babel-plugin-macros": { - "optional": true - } - } - }, - "node_modules/sucrase": { - "version": "3.35.0", - "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", - "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.2", - "commander": "^4.0.0", - "glob": "^10.3.10", - "lines-and-columns": "^1.1.6", - "mz": "^2.7.0", - "pirates": "^4.0.1", - "ts-interface-checker": "^0.1.9" - }, - "bin": { - "sucrase": "bin/sucrase", - "sucrase-node": "bin/sucrase-node" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/sucrase/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/sucrase/node_modules/glob": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", - "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", - "dev": true, - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/sucrase/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/swr": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/swr/-/swr-2.3.6.tgz", - "integrity": "sha512-wfHRmHWk/isGNMwlLGlZX5Gzz/uTgo0o2IRuTMcf4CPuPFJZlq0rDaKUx+ozB5nBOReNV1kiOyzMfj+MBMikLw==", - "license": "MIT", - "dependencies": { - "dequal": "^2.0.3", - "use-sync-external-store": "^1.4.0" - }, - "peerDependencies": { - "react": "^16.11.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" - } - }, - "node_modules/symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true, - "license": "MIT" - }, - "node_modules/tailwindcss": { - "version": "3.4.18", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.18.tgz", - "integrity": "sha512-6A2rnmW5xZMdw11LYjhcI5846rt9pbLSabY5XPxo+XWdxwZaFEn47Go4NzFiHu9sNNmr/kXivP1vStfvMaK1GQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@alloc/quick-lru": "^5.2.0", - "arg": "^5.0.2", - "chokidar": "^3.6.0", - "didyoumean": "^1.2.2", - "dlv": "^1.1.3", - "fast-glob": "^3.3.2", - "glob-parent": "^6.0.2", - "is-glob": "^4.0.3", - "jiti": "^1.21.7", - "lilconfig": "^3.1.3", - "micromatch": "^4.0.8", - "normalize-path": "^3.0.0", - "object-hash": "^3.0.0", - "picocolors": "^1.1.1", - "postcss": "^8.4.47", - "postcss-import": "^15.1.0", - "postcss-js": "^4.0.1", - "postcss-load-config": "^4.0.2 || ^5.0 || ^6.0", - "postcss-nested": "^6.2.0", - "postcss-selector-parser": "^6.1.2", - "resolve": "^1.22.8", - "sucrase": "^3.35.0" - }, - "bin": { - "tailwind": "lib/cli.js", - "tailwindcss": "lib/cli.js" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/tailwindcss/node_modules/fast-glob": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", - "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.8" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/tailwindcss/node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/tailwindcss/node_modules/postcss-selector-parser": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", - "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", - "dev": true, - "license": "MIT", - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/tapable": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz", - "integrity": "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/tar-fs": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.4.tgz", - "integrity": "sha512-mDAjwmZdh7LTT6pNleZ05Yt65HC3E+NiQzl672vQG38jIrehtJk/J3mNwIg+vShQPcLF/LV7CMnDW6vjj6sfYQ==", - "license": "MIT", - "optional": true, - "dependencies": { - "chownr": "^1.1.1", - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^2.1.4" - } - }, - "node_modules/tar-fs/node_modules/chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "license": "ISC", - "optional": true - }, - "node_modules/tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "license": "MIT", - "optional": true, - "dependencies": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/text-segmentation": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/text-segmentation/-/text-segmentation-1.0.3.tgz", - "integrity": "sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw==", - "license": "MIT", - "dependencies": { - "utrie": "^1.0.2" - } - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true, - "license": "MIT" - }, - "node_modules/thenify": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", - "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", - "dev": true, - "license": "MIT", - "dependencies": { - "any-promise": "^1.0.0" - } - }, - "node_modules/thenify-all": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", - "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", - "dev": true, - "license": "MIT", - "dependencies": { - "thenify": ">= 3.1.0 < 4" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/tiny-invariant": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", - "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==", - "license": "MIT" - }, - "node_modules/tinybench": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", - "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==", - "dev": true, - "license": "MIT" - }, - "node_modules/tinyexec": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz", - "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==", - "dev": true, - "license": "MIT" - }, - "node_modules/tinyglobby": { - "version": "0.2.15", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", - "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "fdir": "^6.5.0", - "picomatch": "^4.0.3" - }, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/SuperchupuDev" - } - }, - "node_modules/tinyglobby/node_modules/fdir": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", - "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "picomatch": "^3 || ^4" - }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } - } - }, - "node_modules/tinyglobby/node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/tinyrainbow": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-3.0.3.tgz", - "integrity": "sha512-PSkbLUoxOFRzJYjjxHJt9xro7D+iilgMX/C9lawzVuYiIdcihh9DXmVibBe8lmcFrRi/VzlPjBxbN7rH24q8/Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/tough-cookie": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", - "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/tr46": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.1.1.tgz", - "integrity": "sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==", - "dev": true, - "license": "MIT", - "dependencies": { - "punycode": "^2.3.1" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/ts-api-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", - "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18.12" - }, - "peerDependencies": { - "typescript": ">=4.8.4" - } - }, - "node_modules/ts-interface-checker": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", - "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/tsconfig-paths": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", - "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - } - }, - "node_modules/tsconfig-paths-webpack-plugin": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-4.2.0.tgz", - "integrity": "sha512-zbem3rfRS8BgeNK50Zz5SIQgXzLafiHjOwUAvk/38/o1jHn/V5QAgVUcz884or7WYcPaH3N2CIfUc2u0ul7UcA==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.1.0", - "enhanced-resolve": "^5.7.0", - "tapable": "^2.2.1", - "tsconfig-paths": "^4.1.2" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/tsconfig-paths-webpack-plugin/node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "license": "MIT", - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/tsconfig-paths-webpack-plugin/node_modules/tsconfig-paths": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", - "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", - "dev": true, - "license": "MIT", - "dependencies": { - "json5": "^2.2.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "license": "0BSD" - }, - "node_modules/tsx": { - "version": "4.20.6", - "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.20.6.tgz", - "integrity": "sha512-ytQKuwgmrrkDTFP4LjR0ToE2nqgy886GpvRSpU0JAnrdBYppuY5rLkRUYPU1yCryb24SsKBTL/hlDQAEFVwtZg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "esbuild": "~0.25.0", - "get-tsconfig": "^4.7.5" - }, - "bin": { - "tsx": "dist/cli.mjs" - }, - "engines": { - "node": ">=18.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" - } - }, - "node_modules/tsx/node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" - } - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/typed-array-buffer": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", - "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/typed-array-byte-length": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", - "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "for-each": "^0.3.3", - "gopd": "^1.2.0", - "has-proto": "^1.2.0", - "is-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-byte-offset": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", - "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "for-each": "^0.3.3", - "gopd": "^1.2.0", - "has-proto": "^1.2.0", - "is-typed-array": "^1.1.15", - "reflect.getprototypeof": "^1.0.9" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-length": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", - "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "is-typed-array": "^1.1.13", - "possible-typed-array-names": "^1.0.0", - "reflect.getprototypeof": "^1.0.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typescript": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", - "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", - "dev": true, - "license": "Apache-2.0", - "peer": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/unbox-primitive": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", - "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-bigints": "^1.0.2", - "has-symbols": "^1.1.0", - "which-boxed-primitive": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/undici-types": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.8.0.tgz", - "integrity": "sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw==", - "dev": true, - "license": "MIT" - }, - "node_modules/universalify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/unrs-resolver": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.11.1.tgz", - "integrity": "sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "dependencies": { - "napi-postinstall": "^0.3.0" - }, - "funding": { - "url": "https://opencollective.com/unrs-resolver" - }, - "optionalDependencies": { - "@unrs/resolver-binding-android-arm-eabi": "1.11.1", - "@unrs/resolver-binding-android-arm64": "1.11.1", - "@unrs/resolver-binding-darwin-arm64": "1.11.1", - "@unrs/resolver-binding-darwin-x64": "1.11.1", - "@unrs/resolver-binding-freebsd-x64": "1.11.1", - "@unrs/resolver-binding-linux-arm-gnueabihf": "1.11.1", - "@unrs/resolver-binding-linux-arm-musleabihf": "1.11.1", - "@unrs/resolver-binding-linux-arm64-gnu": "1.11.1", - "@unrs/resolver-binding-linux-arm64-musl": "1.11.1", - "@unrs/resolver-binding-linux-ppc64-gnu": "1.11.1", - "@unrs/resolver-binding-linux-riscv64-gnu": "1.11.1", - "@unrs/resolver-binding-linux-riscv64-musl": "1.11.1", - "@unrs/resolver-binding-linux-s390x-gnu": "1.11.1", - "@unrs/resolver-binding-linux-x64-gnu": "1.11.1", - "@unrs/resolver-binding-linux-x64-musl": "1.11.1", - "@unrs/resolver-binding-wasm32-wasi": "1.11.1", - "@unrs/resolver-binding-win32-arm64-msvc": "1.11.1", - "@unrs/resolver-binding-win32-ia32-msvc": "1.11.1", - "@unrs/resolver-binding-win32-x64-msvc": "1.11.1" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.4.tgz", - "integrity": "sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "escalade": "^3.2.0", - "picocolors": "^1.1.1" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/url-parse": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, - "node_modules/use-sync-external-store": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.6.0.tgz", - "integrity": "sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==", - "license": "MIT", - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "devOptional": true, - "license": "MIT" - }, - "node_modules/utrie": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/utrie/-/utrie-1.0.2.tgz", - "integrity": "sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw==", - "license": "MIT", - "dependencies": { - "base64-arraybuffer": "^1.0.2" - } - }, - "node_modules/vite": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/vite/-/vite-7.2.0.tgz", - "integrity": "sha512-C/Naxf8H0pBx1PA4BdpT+c/5wdqI9ILMdwjSMILw7tVIh3JsxzZqdeTLmmdaoh5MYUEOyBnM9K3o0DzoZ/fe+w==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "esbuild": "^0.25.0", - "fdir": "^6.5.0", - "picomatch": "^4.0.3", - "postcss": "^8.5.6", - "rollup": "^4.43.0", - "tinyglobby": "^0.2.15" - }, - "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": "^20.19.0 || >=22.12.0" - }, - "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" - }, - "peerDependencies": { - "@types/node": "^20.19.0 || >=22.12.0", - "jiti": ">=1.21.0", - "less": "^4.0.0", - "lightningcss": "^1.21.0", - "sass": "^1.70.0", - "sass-embedded": "^1.70.0", - "stylus": ">=0.54.8", - "sugarss": "^5.0.0", - "terser": "^5.16.0", - "tsx": "^4.8.1", - "yaml": "^2.4.2" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "jiti": { - "optional": true - }, - "less": { - "optional": true - }, - "lightningcss": { - "optional": true - }, - "sass": { - "optional": true - }, - "sass-embedded": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - }, - "tsx": { - "optional": true - }, - "yaml": { - "optional": true - } - } - }, - "node_modules/vite/node_modules/fdir": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", - "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "picomatch": "^3 || ^4" - }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } - } - }, - "node_modules/vite/node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/vite/node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/vitest": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.0.7.tgz", - "integrity": "sha512-xQroKAadK503CrmbzCISvQUjeuvEZzv6U0wlnlVFOi5i3gnzfH4onyQ29f3lzpe0FresAiTAd3aqK0Bi/jLI8w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/expect": "4.0.7", - "@vitest/mocker": "4.0.7", - "@vitest/pretty-format": "4.0.7", - "@vitest/runner": "4.0.7", - "@vitest/snapshot": "4.0.7", - "@vitest/spy": "4.0.7", - "@vitest/utils": "4.0.7", - "debug": "^4.4.3", - "es-module-lexer": "^1.7.0", - "expect-type": "^1.2.2", - "magic-string": "^0.30.19", - "pathe": "^2.0.3", - "picomatch": "^4.0.3", - "std-env": "^3.9.0", - "tinybench": "^2.9.0", - "tinyexec": "^0.3.2", - "tinyglobby": "^0.2.15", - "tinyrainbow": "^3.0.3", - "vite": "^6.0.0 || ^7.0.0", - "why-is-node-running": "^2.3.0" - }, - "bin": { - "vitest": "vitest.mjs" - }, - "engines": { - "node": "^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - }, - "peerDependencies": { - "@edge-runtime/vm": "*", - "@types/debug": "^4.1.12", - "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", - "@vitest/browser-playwright": "4.0.7", - "@vitest/browser-preview": "4.0.7", - "@vitest/browser-webdriverio": "4.0.7", - "@vitest/ui": "4.0.7", - "happy-dom": "*", - "jsdom": "*" - }, - "peerDependenciesMeta": { - "@edge-runtime/vm": { - "optional": true - }, - "@types/debug": { - "optional": true - }, - "@types/node": { - "optional": true - }, - "@vitest/browser-playwright": { - "optional": true - }, - "@vitest/browser-preview": { - "optional": true - }, - "@vitest/browser-webdriverio": { - "optional": true - }, - "@vitest/ui": { - "optional": true - }, - "happy-dom": { - "optional": true - }, - "jsdom": { - "optional": true - } - } - }, - "node_modules/vitest/node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/w3c-xmlserializer": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz", - "integrity": "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==", - "dev": true, - "license": "MIT", - "dependencies": { - "xml-name-validator": "^5.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/warning": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", - "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", - "license": "MIT", - "dependencies": { - "loose-envify": "^1.0.0" - } - }, - "node_modules/webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=12" - } - }, - "node_modules/whatwg-encoding": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", - "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "iconv-lite": "0.6.3" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/whatwg-mimetype": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", - "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/whatwg-url": { - "version": "14.2.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.2.0.tgz", - "integrity": "sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==", - "dev": true, - "license": "MIT", - "dependencies": { - "tr46": "^5.1.0", - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/which-boxed-primitive": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", - "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-bigint": "^1.1.0", - "is-boolean-object": "^1.2.1", - "is-number-object": "^1.1.1", - "is-string": "^1.1.1", - "is-symbol": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-builtin-type": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", - "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "function.prototype.name": "^1.1.6", - "has-tostringtag": "^1.0.2", - "is-async-function": "^2.0.0", - "is-date-object": "^1.1.0", - "is-finalizationregistry": "^1.1.0", - "is-generator-function": "^1.0.10", - "is-regex": "^1.2.1", - "is-weakref": "^1.0.2", - "isarray": "^2.0.5", - "which-boxed-primitive": "^1.1.0", - "which-collection": "^1.0.2", - "which-typed-array": "^1.1.16" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-collection": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", - "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-map": "^2.0.3", - "is-set": "^2.0.3", - "is-weakmap": "^2.0.2", - "is-weakset": "^2.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-module": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", - "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", - "license": "ISC" - }, - "node_modules/which-typed-array": { - "version": "1.1.19", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", - "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", - "dev": true, - "license": "MIT", - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "for-each": "^0.3.5", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/why-is-node-running": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", - "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==", - "dev": true, - "license": "MIT", - "dependencies": { - "siginfo": "^2.0.0", - "stackback": "0.0.2" - }, - "bin": { - "why-is-node-running": "cli.js" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/word-wrap": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", - "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi-cjs": { - "name": "wrap-ansi", - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "devOptional": true, - "license": "ISC" - }, - "node_modules/ws": { - "version": "8.18.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", - "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/xml-name-validator": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz", - "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18" - } - }, - "node_modules/xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "dev": true, - "license": "MIT" - }, - "node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "license": "ISC" - }, - "node_modules/yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "license": "MIT", - "dependencies": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "license": "ISC", - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/yargs/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/yargs/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/zustand": { - "version": "4.5.7", - "resolved": "https://registry.npmjs.org/zustand/-/zustand-4.5.7.tgz", - "integrity": "sha512-CHOUy7mu3lbD6o6LJLfllpjkzhHXSBlX8B9+qPddUsIfeF5S/UZ5q0kmCsnRqT1UHFQZchNFDDzMbQsuesHWlw==", - "license": "MIT", - "dependencies": { - "use-sync-external-store": "^1.2.2" - }, - "engines": { - "node": ">=12.7.0" - }, - "peerDependencies": { - "@types/react": ">=16.8", - "immer": ">=9.0.6", - "react": ">=16.8" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "immer": { - "optional": true - }, - "react": { - "optional": true - } - } - } - } -} diff --git a/dashboard/package.json b/dashboard/package.json deleted file mode 100644 index e3cfc0f..0000000 --- a/dashboard/package.json +++ /dev/null @@ -1,75 +0,0 @@ -{ - "name": "cloudnative-dashboard", - "version": "1.0.0", - "private": true, - "engines": { - "node": ">=18.17 <23" - }, - "scripts": { - "dev": "next dev --turbo", - "prebuild": "tsx ../scripts/export-slugs.ts && tsx ../scripts/scan-md.ts && tsx ../scripts/fetch-dl-index.ts && node ../scripts/copy-manifests.js", - "build": "next build", - "build:static": "npm run prebuild && next build", - "start": "node ./scripts/start.js", - "lint": "next lint", - "typecheck": "tsc --noEmit", - "format": "prettier --write .", - "preview": "next build && next start", - "test": "vitest run --config tests/unit/vitest.config.ts", - "test:unit": "vitest run --config tests/unit/vitest.config.ts", - "test:e2e": "playwright test --config tests/e2e/playwright.config.ts" - }, - "dependencies": { - "@internal/neurapress": "file:../packages/neurapress", - "dompurify": "^3.2.6", - "gray-matter": "^4.0.3", - "html2canvas": "^1.4.1", - "js-yaml": "^4.1.0", - "katex": "^0.16.27", - "lucide-react": "^0.319.0", - "marked": "^16.1.2", - "next": "^16.0.9", - "pdfjs-dist": "^4.2.67", - "prismjs": "^1.30.0", - "prop-types": "^15.8.1", - "qr.js": "0.0.0", - "qrcode": "^1.5.4", - "react": "^18.2.0", - "react-dom": "^18.2.0", - "react-grid-layout": "^1.4.4", - "react-pdf": "^9.1.0", - "react-resizable": "^3.0.4", - "sanitize-html": "^2.13.0", - "swr": "^2.3.0", - "zustand": "^4.5.4" - }, - "devDependencies": { - "@playwright/test": "^1.49.1", - "@tailwindcss/typography": "^0.5.19", - "@testing-library/dom": "^9.3.1", - "@testing-library/jest-dom": "^6.4.6", - "@testing-library/react": "^14.3.1", - "@testing-library/user-event": "^14.6.1", - "@types/js-yaml": "^4.0.9", - "@types/node": "24.0.3", - "@types/react": "^18.3.26", - "@types/react-grid-layout": "^1.3.5", - "@types/sanitize-html": "^2.16.0", - "autoprefixer": "^10.4.16", - "baseline-browser-mapping": "^2.8.32", - "eslint": "8.57.0", - "eslint-config-next": "^15.5.3", - "jsdom": "^24.0.0", - "postcss": "^8.4.32", - "prettier": "^3.3.3", - "tailwindcss": "^3.4.3", - "tsconfig-paths-webpack-plugin": "^4.2.0", - "tsx": "^4.7.1", - "typescript": "^5.4.2", - "vitest": "^4.0.7" - }, - "resolutions": { - "glob": "10.5.0" - }, - "packageManager": "yarn@4.12.0" -} diff --git a/dashboard/packages/neurapress b/dashboard/packages/neurapress deleted file mode 160000 index 4ad02ef..0000000 --- a/dashboard/packages/neurapress +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 4ad02ef4b50c4aa19f82549ca4e408422043bd8b diff --git a/dashboard/postcss.config.mjs b/dashboard/postcss.config.mjs deleted file mode 100644 index 42f2eb1..0000000 --- a/dashboard/postcss.config.mjs +++ /dev/null @@ -1,14 +0,0 @@ -/** - * PostCSS 配置文件 - * 使用 ES Module 格式 - 统一现代标准 - * - * 参考: https://postcss.org/ - */ - -export default { - // 插件列表 - plugins: { - autoprefixer: {}, - tailwindcss: {}, - }, -} diff --git a/dashboard/public/_build/artifacts-manifest.json b/dashboard/public/_build/artifacts-manifest.json deleted file mode 100644 index be85457..0000000 --- a/dashboard/public/_build/artifacts-manifest.json +++ /dev/null @@ -1,36 +0,0 @@ -[ - { - "path": "", - "entries": [ - { - "name": "offline-package/", - "href": "/offline-package/", - "type": "dir", - "lastModified": "2025-09-19T00:00:00.000Z" - } - ] - }, - { - "path": "offline-package/", - "entries": [ - { - "name": "sample-package/", - "href": "/offline-package/sample-package/", - "type": "dir", - "lastModified": "2025-09-19T00:00:00.000Z" - } - ] - }, - { - "path": "offline-package/sample-package/", - "entries": [ - { - "name": "v1.0.0.tar.gz", - "href": "/offline-package/sample-package/v1.0.0.tar.gz", - "type": "file", - "size": 1024, - "lastModified": "2025-09-19T00:00:00.000Z" - } - ] - } -] \ No newline at end of file diff --git a/dashboard/public/_build/cloud_iac_index.json b/dashboard/public/_build/cloud_iac_index.json deleted file mode 100644 index 5e67227..0000000 --- a/dashboard/public/_build/cloud_iac_index.json +++ /dev/null @@ -1,342 +0,0 @@ -{ - "providers": [ - { - "key": "aws", - "label": "AWS" - }, - { - "key": "gcp", - "label": "GCP" - }, - { - "key": "azure", - "label": "Azure" - }, - { - "key": "aliyun", - "label": "阿里云" - } - ], - "services": [ - { - "provider": "aliyun", - "service": "ack", - "category": "container" - }, - { - "provider": "aliyun", - "service": "aliyun-emr", - "category": "data_service" - }, - { - "provider": "aliyun", - "service": "aliyun-iot", - "category": "edge_iot" - }, - { - "provider": "aliyun", - "service": "aliyun-landing-zone", - "category": "landing_zone" - }, - { - "provider": "aliyun", - "service": "apigateway-dataworks", - "category": "api_integration" - }, - { - "provider": "aliyun", - "service": "apsaradb-rds", - "category": "database" - }, - { - "provider": "aliyun", - "service": "apsaradb-redis", - "category": "cache" - }, - { - "provider": "aliyun", - "service": "cloudmonitor-eventbridge", - "category": "observability" - }, - { - "provider": "aliyun", - "service": "dns-acceleration", - "category": "dns_cdn" - }, - { - "provider": "aliyun", - "service": "ecs", - "category": "compute" - }, - { - "provider": "aliyun", - "service": "mns", - "category": "queue" - }, - { - "provider": "aliyun", - "service": "oss", - "category": "storage" - }, - { - "provider": "aliyun", - "service": "ram", - "category": "iam" - }, - { - "provider": "aliyun", - "service": "security-group", - "category": "security" - }, - { - "provider": "aliyun", - "service": "slb", - "category": "load_balancer" - }, - { - "provider": "aliyun", - "service": "vpc", - "category": "network" - }, - { - "provider": "aws", - "service": "alb", - "category": "load_balancer" - }, - { - "provider": "aws", - "service": "api-gateway-appflow", - "category": "api_integration" - }, - { - "provider": "aws", - "service": "aws-iot", - "category": "edge_iot" - }, - { - "provider": "aws", - "service": "cloudwatch-eventbridge", - "category": "observability" - }, - { - "provider": "aws", - "service": "control-tower-landing-zone", - "category": "landing_zone" - }, - { - "provider": "aws", - "service": "ec2", - "category": "compute" - }, - { - "provider": "aws", - "service": "eks", - "category": "container" - }, - { - "provider": "aws", - "service": "elasticache", - "category": "cache" - }, - { - "provider": "aws", - "service": "emr", - "category": "data_service" - }, - { - "provider": "aws", - "service": "iam", - "category": "iam" - }, - { - "provider": "aws", - "service": "rds", - "category": "database" - }, - { - "provider": "aws", - "service": "route53-cloudfront", - "category": "dns_cdn" - }, - { - "provider": "aws", - "service": "s3", - "category": "storage" - }, - { - "provider": "aws", - "service": "security-group", - "category": "security" - }, - { - "provider": "aws", - "service": "sqs", - "category": "queue" - }, - { - "provider": "aws", - "service": "vpc", - "category": "network" - }, - { - "provider": "azure", - "service": "aks", - "category": "container" - }, - { - "provider": "azure", - "service": "apim-data-factory", - "category": "api_integration" - }, - { - "provider": "azure", - "service": "azure-ad", - "category": "iam" - }, - { - "provider": "azure", - "service": "azure-database", - "category": "database" - }, - { - "provider": "azure", - "service": "azure-dns-front-door", - "category": "dns_cdn" - }, - { - "provider": "azure", - "service": "azure-iot", - "category": "edge_iot" - }, - { - "provider": "azure", - "service": "azure-landing-zone", - "category": "landing_zone" - }, - { - "provider": "azure", - "service": "azure-load-balancer", - "category": "load_balancer" - }, - { - "provider": "azure", - "service": "blob-storage", - "category": "storage" - }, - { - "provider": "azure", - "service": "monitor-event-grid", - "category": "observability" - }, - { - "provider": "azure", - "service": "network-security-group", - "category": "security" - }, - { - "provider": "azure", - "service": "redis-cache", - "category": "cache" - }, - { - "provider": "azure", - "service": "service-bus", - "category": "queue" - }, - { - "provider": "azure", - "service": "synapse", - "category": "data_service" - }, - { - "provider": "azure", - "service": "virtual-machines", - "category": "compute" - }, - { - "provider": "azure", - "service": "virtual-network", - "category": "network" - }, - { - "provider": "gcp", - "service": "apigateway-integration", - "category": "api_integration" - }, - { - "provider": "gcp", - "service": "cloud-dns-cdn", - "category": "dns_cdn" - }, - { - "provider": "gcp", - "service": "cloud-iam", - "category": "iam" - }, - { - "provider": "gcp", - "service": "cloud-load-balancing", - "category": "load_balancer" - }, - { - "provider": "gcp", - "service": "cloud-sql", - "category": "database" - }, - { - "provider": "gcp", - "service": "cloud-storage", - "category": "storage" - }, - { - "provider": "gcp", - "service": "compute-engine", - "category": "compute" - }, - { - "provider": "gcp", - "service": "dataproc", - "category": "data_service" - }, - { - "provider": "gcp", - "service": "gcp-iot", - "category": "edge_iot" - }, - { - "provider": "gcp", - "service": "gcp-landing-zone", - "category": "landing_zone" - }, - { - "provider": "gcp", - "service": "gke", - "category": "container" - }, - { - "provider": "gcp", - "service": "memorystore", - "category": "cache" - }, - { - "provider": "gcp", - "service": "operations-eventarc", - "category": "observability" - }, - { - "provider": "gcp", - "service": "pubsub", - "category": "queue" - }, - { - "provider": "gcp", - "service": "vpc", - "category": "network" - }, - { - "provider": "gcp", - "service": "vpc-firewall", - "category": "security" - } - ] -} \ No newline at end of file diff --git a/dashboard/public/_build/docs_index.json b/dashboard/public/_build/docs_index.json deleted file mode 100644 index 05b3b04..0000000 --- a/dashboard/public/_build/docs_index.json +++ /dev/null @@ -1,11 +0,0 @@ -[ - { - "slug": "getting-started", - "title": "Getting Started", - "description": "Welcome to the docs! This is a placeholder document.", - "updatedAt": "2025-09-19T00:53:13.962Z", - "pathSegments": [ - "getting-started" - ] - } -] \ No newline at end of file diff --git a/dashboard/public/_build/docs_paths.json b/dashboard/public/_build/docs_paths.json deleted file mode 100644 index 9f1f3c1..0000000 --- a/dashboard/public/_build/docs_paths.json +++ /dev/null @@ -1,35 +0,0 @@ -[ - "deb", - "docs", - "offline-package", - "offline-package/apisix-gateway", - "offline-package/k3s", - "offline-package/kong-gateway", - "offline-package/nginx-ingress", - "offline-package/sealos", - "otel", - "otel/OpenTelemetry", - "otel/OpenTelemetry/v0.133.0", - "rpm", - "xray-core", - "xray-core/v25.8.29", - "xray-core/v25.8.3", - "xray-core/v25.8.31", - "xstream", - "xstream/android", - "xstream/android/latest", - "xstream/ios", - "xstream/ios/latest", - "xstream/linux", - "xstream/linux/latest", - "xstream/linux/stable", - "xstream/macos", - "xstream/macos/docs", - "xstream/macos/latest", - "xstream/macos/stable", - "xstream/windows", - "xstream/windows/latest", - "xstream/windows/stable", - "xstream/windows/win10", - "xstream/windows/win11" -] \ No newline at end of file diff --git a/dashboard/public/_build/offline-package.json b/dashboard/public/_build/offline-package.json deleted file mode 100644 index 2f477f1..0000000 --- a/dashboard/public/_build/offline-package.json +++ /dev/null @@ -1,25 +0,0 @@ -[ - { - "path": "offline-package/", - "entries": [ - { - "name": "sample-package/", - "href": "/offline-package/sample-package/", - "type": "dir", - "lastModified": "2025-09-19T00:00:00.000Z" - } - ] - }, - { - "path": "offline-package/sample-package/", - "entries": [ - { - "name": "v1.0.0.tar.gz", - "href": "/offline-package/sample-package/v1.0.0.tar.gz", - "type": "file", - "size": 1024, - "lastModified": "2025-09-19T00:00:00.000Z" - } - ] - } -] \ No newline at end of file diff --git a/dashboard/public/dl-index/all.json b/dashboard/public/dl-index/all.json deleted file mode 100644 index 4943249..0000000 --- a/dashboard/public/dl-index/all.json +++ /dev/null @@ -1,652 +0,0 @@ -[ - { - "path": "", - "entries": [ - { - "name": "deb/", - "href": "/deb/", - "type": "dir", - "lastModified": "2025-09-15T10:21:39Z" - }, - { - "name": "docs/", - "href": "/docs/", - "type": "dir", - "lastModified": "2025-09-15T12:13:17Z" - }, - { - "name": "offline-package/", - "href": "/offline-package/", - "type": "dir", - "lastModified": "2025-09-15T10:21:44Z" - }, - { - "name": "otel/", - "href": "/otel/", - "type": "dir", - "lastModified": "2025-09-15T10:21:46Z" - }, - { - "name": "rpm/", - "href": "/rpm/", - "type": "dir", - "lastModified": "2025-09-15T10:21:47Z" - }, - { - "name": "xray-core/", - "href": "/xray-core/", - "type": "dir", - "lastModified": "2025-09-15T10:21:51Z" - }, - { - "name": "xstream/", - "href": "/xstream/", - "type": "dir", - "lastModified": "2025-09-15T10:22:03Z" - } - ] - }, - { - "path": "deb/", - "entries": [ - { - "name": "example.deb", - "href": "/deb/example.deb", - "type": "file", - "size": 0, - "lastModified": "2025-07-29T05:17:40Z" - } - ] - }, - { - "path": "docs/", - "entries": [] - }, - { - "path": "offline-package/", - "entries": [ - { - "name": "apisix-gateway/", - "href": "/offline-package/apisix-gateway/", - "type": "dir", - "lastModified": "2025-09-15T10:21:40Z" - }, - { - "name": "k3s/", - "href": "/offline-package/k3s/", - "type": "dir", - "lastModified": "2025-09-15T10:21:41Z" - }, - { - "name": "kong-gateway/", - "href": "/offline-package/kong-gateway/", - "type": "dir", - "lastModified": "2025-09-15T10:21:42Z" - }, - { - "name": "nginx-ingress/", - "href": "/offline-package/nginx-ingress/", - "type": "dir", - "lastModified": "2025-09-15T10:21:43Z" - }, - { - "name": "sealos/", - "href": "/offline-package/sealos/", - "type": "dir", - "lastModified": "2025-09-15T10:21:44Z" - } - ] - }, - { - "path": "offline-package/apisix-gateway/", - "entries": [ - { - "name": "SHA256SUMS", - "href": "/offline-package/apisix-gateway/SHA256SUMS", - "type": "file", - "size": 216, - "lastModified": "2025-09-14T12:49:17Z", - "sha256": "/offline-package/apisix-gateway/SHA256SUMS" - }, - { - "name": "offline-setup-apisix-gateway-amd64.tar.gz", - "href": "/offline-package/apisix-gateway/offline-setup-apisix-gateway-amd64.tar.gz", - "type": "file", - "size": 194146012, - "lastModified": "2025-09-14T12:43:32Z", - "sha256": "/offline-package/apisix-gateway/SHA256SUMS" - }, - { - "name": "offline-setup-apisix-gateway-arm64.tar.gz", - "href": "/offline-package/apisix-gateway/offline-setup-apisix-gateway-arm64.tar.gz", - "type": "file", - "size": 194144032, - "lastModified": "2025-09-14T12:43:33Z", - "sha256": "/offline-package/apisix-gateway/SHA256SUMS" - } - ] - }, - { - "path": "offline-package/k3s/", - "entries": [ - { - "name": "offline-package-k3s-installer-amd64.tar.gz", - "href": "/offline-package/k3s/offline-package-k3s-installer-amd64.tar.gz", - "type": "file", - "size": 223183297, - "lastModified": "2025-09-14T09:51:55Z", - "sha256": "/offline-package/k3s/offline-package-k3s-installer-amd64.tar.gz.sha256sum" - }, - { - "name": "offline-package-k3s-installer-amd64.tar.gz.sha256sum", - "href": "/offline-package/k3s/offline-package-k3s-installer-amd64.tar.gz.sha256sum", - "type": "file", - "size": 109, - "lastModified": "2025-09-14T10:13:38Z" - }, - { - "name": "offline-package-k3s-installer-arm64.tar.gz", - "href": "/offline-package/k3s/offline-package-k3s-installer-arm64.tar.gz", - "type": "file", - "size": 204874562, - "lastModified": "2025-09-14T09:51:54Z", - "sha256": "/offline-package/k3s/offline-package-k3s-installer-arm64.tar.gz.sha256sum" - }, - { - "name": "offline-package-k3s-installer-arm64.tar.gz.sha256sum", - "href": "/offline-package/k3s/offline-package-k3s-installer-arm64.tar.gz.sha256sum", - "type": "file", - "size": 109, - "lastModified": "2025-09-14T10:12:39Z" - } - ] - }, - { - "path": "offline-package/kong-gateway/", - "entries": [ - { - "name": "SHA256SUMS", - "href": "/offline-package/kong-gateway/SHA256SUMS", - "type": "file", - "size": 212, - "lastModified": "2025-09-14T12:17:41Z", - "sha256": "/offline-package/kong-gateway/SHA256SUMS" - }, - { - "name": "offline-setup-kong-gateway-amd64.tar.gz", - "href": "/offline-package/kong-gateway/offline-setup-kong-gateway-amd64.tar.gz", - "type": "file", - "size": 260781308, - "lastModified": "2025-09-14T12:10:37Z", - "sha256": "/offline-package/kong-gateway/SHA256SUMS" - }, - { - "name": "offline-setup-kong-gateway-arm64.tar.gz", - "href": "/offline-package/kong-gateway/offline-setup-kong-gateway-arm64.tar.gz", - "type": "file", - "size": 259941381, - "lastModified": "2025-09-14T12:10:38Z", - "sha256": "/offline-package/kong-gateway/SHA256SUMS" - } - ] - }, - { - "path": "offline-package/nginx-ingress/", - "entries": [ - { - "name": "SHA256SUMS", - "href": "/offline-package/nginx-ingress/SHA256SUMS", - "type": "file", - "size": 214, - "lastModified": "2025-09-14T11:18:37Z", - "sha256": "/offline-package/nginx-ingress/SHA256SUMS" - }, - { - "name": "offline-setup-nginx-ingress-amd64.tar.gz", - "href": "/offline-package/nginx-ingress/offline-setup-nginx-ingress-amd64.tar.gz", - "type": "file", - "size": 156094656, - "lastModified": "2025-09-14T11:05:40Z", - "sha256": "/offline-package/nginx-ingress/SHA256SUMS" - }, - { - "name": "offline-setup-nginx-ingress-arm64.tar.gz", - "href": "/offline-package/nginx-ingress/offline-setup-nginx-ingress-arm64.tar.gz", - "type": "file", - "size": 155252914, - "lastModified": "2025-09-14T11:05:40Z", - "sha256": "/offline-package/nginx-ingress/SHA256SUMS" - } - ] - }, - { - "path": "offline-package/sealos/", - "entries": [ - { - "name": "SHA256SUMS", - "href": "/offline-package/sealos/SHA256SUMS", - "type": "file", - "size": 204, - "lastModified": "2025-09-14T11:03:05Z", - "sha256": "/offline-package/sealos/SHA256SUMS" - }, - { - "name": "sealos-offline-package-amd64.tar.gz", - "href": "/offline-package/sealos/sealos-offline-package-amd64.tar.gz", - "type": "file", - "size": 890301186, - "lastModified": "2025-09-14T10:37:31Z", - "sha256": "/offline-package/sealos/SHA256SUMS" - }, - { - "name": "sealos-offline-package-arm64.tar.gz", - "href": "/offline-package/sealos/sealos-offline-package-arm64.tar.gz", - "type": "file", - "size": 834350941, - "lastModified": "2025-09-14T10:45:39Z", - "sha256": "/offline-package/sealos/SHA256SUMS" - } - ] - }, - { - "path": "otel/", - "entries": [ - { - "name": "OpenTelemetry/", - "href": "/otel/OpenTelemetry/", - "type": "dir", - "lastModified": "2025-09-15T10:21:46Z" - } - ] - }, - { - "path": "otel/OpenTelemetry/", - "entries": [ - { - "name": "v0.133.0/", - "href": "/otel/OpenTelemetry/v0.133.0/", - "type": "dir", - "lastModified": "2025-09-15T10:21:46Z" - } - ] - }, - { - "path": "otel/OpenTelemetry/v0.133.0/", - "entries": [ - { - "name": "opampsupervisor_0.133.0_linux_amd64", - "href": "/otel/OpenTelemetry/v0.133.0/opampsupervisor_0.133.0_linux_amd64", - "type": "file", - "size": 22896824, - "lastModified": "2025-09-03T08:18:29Z" - }, - { - "name": "opampsupervisor_0.133.0_linux_arm64", - "href": "/otel/OpenTelemetry/v0.133.0/opampsupervisor_0.133.0_linux_arm64", - "type": "file", - "size": 21758136, - "lastModified": "2025-09-03T08:18:35Z" - }, - { - "name": "otelcol-contrib_0.133.0_linux_amd64.tar.gz", - "href": "/otel/OpenTelemetry/v0.133.0/otelcol-contrib_0.133.0_linux_amd64.tar.gz", - "type": "file", - "size": 90264630, - "lastModified": "2025-09-03T08:18:36Z" - }, - { - "name": "otelcol-contrib_0.133.0_linux_arm64.tar.gz", - "href": "/otel/OpenTelemetry/v0.133.0/otelcol-contrib_0.133.0_linux_arm64.tar.gz", - "type": "file", - "size": 82333025, - "lastModified": "2025-09-03T08:18:35Z" - } - ] - }, - { - "path": "rpm/", - "entries": [] - }, - { - "path": "xray-core/", - "entries": [ - { - "name": "v25.8.29/", - "href": "/xray-core/v25.8.29/", - "type": "dir", - "lastModified": "2025-09-15T10:21:49Z" - }, - { - "name": "v25.8.3/", - "href": "/xray-core/v25.8.3/", - "type": "dir", - "lastModified": "2025-09-15T10:21:49Z" - }, - { - "name": "v25.8.31/", - "href": "/xray-core/v25.8.31/", - "type": "dir", - "lastModified": "2025-09-15T10:21:51Z" - } - ] - }, - { - "path": "xray-core/v25.8.29/", - "entries": [ - { - "name": "Xray-linux-64.zip", - "href": "/xray-core/v25.8.29/Xray-linux-64.zip", - "type": "file", - "size": 20188542, - "lastModified": "2025-08-30T02:27:13Z" - }, - { - "name": "Xray-macos-64.zip", - "href": "/xray-core/v25.8.29/Xray-macos-64.zip", - "type": "file", - "size": 19866304, - "lastModified": "2025-08-30T02:27:14Z" - }, - { - "name": "Xray-windows-64.zip", - "href": "/xray-core/v25.8.29/Xray-windows-64.zip", - "type": "file", - "size": 19762272, - "lastModified": "2025-08-30T02:27:18Z" - } - ] - }, - { - "path": "xray-core/v25.8.3/", - "entries": [ - { - "name": "Xray-linux-64.zip", - "href": "/xray-core/v25.8.3/Xray-linux-64.zip", - "type": "file", - "size": 18431780, - "lastModified": "2025-08-15T05:26:49Z" - }, - { - "name": "Xray-macos-64.zip", - "href": "/xray-core/v25.8.3/Xray-macos-64.zip", - "type": "file", - "size": 18191431, - "lastModified": "2025-08-15T05:26:49Z" - }, - { - "name": "Xray-windows-64.zip", - "href": "/xray-core/v25.8.3/Xray-windows-64.zip", - "type": "file", - "size": 18071359, - "lastModified": "2025-08-15T05:26:51Z" - } - ] - }, - { - "path": "xray-core/v25.8.31/", - "entries": [ - { - "name": "Xray-linux-64.zip", - "href": "/xray-core/v25.8.31/Xray-linux-64.zip", - "type": "file", - "size": 20200865, - "lastModified": "2025-09-01T02:36:57Z" - }, - { - "name": "Xray-macos-64.zip", - "href": "/xray-core/v25.8.31/Xray-macos-64.zip", - "type": "file", - "size": 19875652, - "lastModified": "2025-09-01T02:36:53Z" - }, - { - "name": "Xray-windows-64.zip", - "href": "/xray-core/v25.8.31/Xray-windows-64.zip", - "type": "file", - "size": 19776769, - "lastModified": "2025-09-01T02:36:56Z" - } - ] - }, - { - "path": "xstream/", - "entries": [ - { - "name": "android/", - "href": "/xstream/android/", - "type": "dir", - "lastModified": "2025-09-15T10:21:53Z" - }, - { - "name": "ios/", - "href": "/xstream/ios/", - "type": "dir", - "lastModified": "2025-09-15T10:21:55Z" - }, - { - "name": "linux/", - "href": "/xstream/linux/", - "type": "dir", - "lastModified": "2025-09-15T10:21:57Z" - }, - { - "name": "macos/", - "href": "/xstream/macos/", - "type": "dir", - "lastModified": "2025-09-15T10:22:00Z" - }, - { - "name": "windows/", - "href": "/xstream/windows/", - "type": "dir", - "lastModified": "2025-09-15T10:22:03Z" - } - ] - }, - { - "path": "xstream/android/", - "entries": [ - { - "name": "latest/", - "href": "/xstream/android/latest/", - "type": "dir", - "lastModified": "2025-09-15T10:21:53Z" - } - ] - }, - { - "path": "xstream/android/latest/", - "entries": [ - { - "name": "xstream-android-latest.apk", - "href": "/xstream/android/latest/xstream-android-latest.apk", - "type": "file", - "size": 23383658, - "lastModified": "2025-08-04T06:26:15Z" - } - ] - }, - { - "path": "xstream/ios/", - "entries": [ - { - "name": "latest/", - "href": "/xstream/ios/latest/", - "type": "dir", - "lastModified": "2025-09-15T10:21:55Z" - } - ] - }, - { - "path": "xstream/ios/latest/", - "entries": [ - { - "name": "xstream-ios-latest.ipa", - "href": "/xstream/ios/latest/xstream-ios-latest.ipa", - "type": "file", - "size": 26579614, - "lastModified": "2025-08-04T06:26:20Z" - } - ] - }, - { - "path": "xstream/linux/", - "entries": [ - { - "name": "latest/", - "href": "/xstream/linux/latest/", - "type": "dir", - "lastModified": "2025-09-15T10:21:56Z" - }, - { - "name": "stable/", - "href": "/xstream/linux/stable/", - "type": "dir", - "lastModified": "2025-09-15T10:21:57Z" - } - ] - }, - { - "path": "xstream/linux/latest/", - "entries": [ - { - "name": "xstream-linux-latest.zip", - "href": "/xstream/linux/latest/xstream-linux-latest.zip", - "type": "file", - "size": 14247578, - "lastModified": "2025-08-04T06:26:14Z" - } - ] - }, - { - "path": "xstream/linux/stable/", - "entries": [ - { - "name": "xstream-linux-latest.zip", - "href": "/xstream/linux/stable/xstream-linux-latest.zip", - "type": "file", - "size": 14058826, - "lastModified": "2025-08-15T06:26:54Z" - } - ] - }, - { - "path": "xstream/macos/", - "entries": [ - { - "name": "docs/", - "href": "/xstream/macos/docs/", - "type": "dir", - "lastModified": "2025-09-15T10:21:58Z" - }, - { - "name": "latest/", - "href": "/xstream/macos/latest/", - "type": "dir", - "lastModified": "2025-09-15T10:21:59Z" - }, - { - "name": "stable/", - "href": "/xstream/macos/stable/", - "type": "dir", - "lastModified": "2025-09-15T10:22:00Z" - } - ] - }, - { - "path": "xstream/macos/docs/", - "entries": [] - }, - { - "path": "xstream/macos/latest/", - "entries": [ - { - "name": "xstream-macos-latest.dmg", - "href": "/xstream/macos/latest/xstream-macos-latest.dmg", - "type": "file", - "size": 39446900, - "lastModified": "2025-08-04T06:26:18Z" - } - ] - }, - { - "path": "xstream/macos/stable/", - "entries": [ - { - "name": "xstream-macos-latest.dmg", - "href": "/xstream/macos/stable/xstream-macos-latest.dmg", - "type": "file", - "size": 42458674, - "lastModified": "2025-08-15T06:26:57Z" - }, - { - "name": "xstream-release-v0.2.0.dmg", - "href": "/xstream/macos/stable/xstream-release-v0.2.0.dmg", - "type": "file", - "size": 43614833, - "lastModified": "2025-07-30T01:12:42Z" - } - ] - }, - { - "path": "xstream/windows/", - "entries": [ - { - "name": "latest/", - "href": "/xstream/windows/latest/", - "type": "dir", - "lastModified": "2025-09-15T10:22:02Z" - }, - { - "name": "stable/", - "href": "/xstream/windows/stable/", - "type": "dir", - "lastModified": "2025-09-15T10:22:02Z" - }, - { - "name": "win10/", - "href": "/xstream/windows/win10/", - "type": "dir", - "lastModified": "2025-09-15T10:22:03Z" - }, - { - "name": "win11/", - "href": "/xstream/windows/win11/", - "type": "dir", - "lastModified": "2025-09-15T10:22:03Z" - } - ] - }, - { - "path": "xstream/windows/latest/", - "entries": [ - { - "name": "xstream-windows-latest.zip", - "href": "/xstream/windows/latest/xstream-windows-latest.zip", - "type": "file", - "size": 18510460, - "lastModified": "2025-08-04T06:26:19Z" - } - ] - }, - { - "path": "xstream/windows/stable/", - "entries": [ - { - "name": "xstream-windows-latest.zip", - "href": "/xstream/windows/stable/xstream-windows-latest.zip", - "type": "file", - "size": 18312976, - "lastModified": "2025-08-15T06:26:59Z" - } - ] - }, - { - "path": "xstream/windows/win10/", - "entries": [] - }, - { - "path": "xstream/windows/win11/", - "entries": [] - } -] diff --git a/dashboard/public/dl-index/artifacts-manifest.json b/dashboard/public/dl-index/artifacts-manifest.json deleted file mode 100644 index 0a5d07f..0000000 --- a/dashboard/public/dl-index/artifacts-manifest.json +++ /dev/null @@ -1,27860 +0,0 @@ -[ - { - "path": "", - "entries": [ - { - "name": "dashboard/", - "href": "/dashboard/", - "type": "dir", - "lastModified": "2025-09-26T01:53:35Z" - }, - { - "name": "deb/", - "href": "/deb/", - "type": "dir", - "lastModified": "2025-09-19T02:01:25Z" - }, - { - "name": "docs/", - "href": "/docs/", - "type": "dir", - "lastModified": "2025-09-29T10:09:01Z" - }, - { - "name": "offline-package/", - "href": "/offline-package/", - "type": "dir", - "lastModified": "2025-09-25T12:30:41Z" - }, - { - "name": "otel/", - "href": "/otel/", - "type": "dir", - "lastModified": "2025-09-25T05:31:14Z" - }, - { - "name": "prometheus/", - "href": "/prometheus/", - "type": "dir", - "lastModified": "2025-09-29T04:26:43Z" - }, - { - "name": "rpm/", - "href": "/rpm/", - "type": "dir", - "lastModified": "2025-09-19T01:55:53Z" - }, - { - "name": "sealos/", - "href": "/sealos/", - "type": "dir", - "lastModified": "2025-09-19T05:20:47Z" - }, - { - "name": "xray-core/", - "href": "/xray-core/", - "type": "dir", - "lastModified": "2025-09-25T05:31:48Z" - }, - { - "name": "xstream/", - "href": "/xstream/", - "type": "dir", - "lastModified": "2025-09-20T07:06:47Z" - } - ] - }, - { - "path": "dashboard/", - "entries": [ - { - "name": "404/", - "href": "/dashboard/404/", - "type": "dir", - "lastModified": "2025-09-26T01:51:54Z" - }, - { - "name": "404.html", - "href": "/dashboard/404.html", - "type": "file", - "size": 6798, - "lastModified": "2025-09-26T01:51:54Z" - }, - { - "name": "500/", - "href": "/dashboard/500/", - "type": "dir", - "lastModified": "2025-09-26T01:51:54Z" - }, - { - "name": "_build/", - "href": "/dashboard/_build/", - "type": "dir", - "lastModified": "2025-09-26T01:51:54Z" - }, - { - "name": "_next/", - "href": "/dashboard/_next/", - "type": "dir", - "lastModified": "2025-09-26T01:51:57Z" - }, - { - "name": "cloud_iac/", - "href": "/dashboard/cloud_iac/", - "type": "dir", - "lastModified": "2025-09-26T01:52:03Z" - }, - { - "name": "demo/", - "href": "/dashboard/demo/", - "type": "dir", - "lastModified": "2025-09-26T01:52:03Z" - }, - { - "name": "dl-index/", - "href": "/dashboard/dl-index/", - "type": "dir", - "lastModified": "2025-09-26T01:52:03Z" - }, - { - "name": "docs/", - "href": "/dashboard/docs/", - "type": "dir", - "lastModified": "2025-09-26T01:52:30Z" - }, - { - "name": "download/", - "href": "/dashboard/download/", - "type": "dir", - "lastModified": "2025-09-26T01:53:34Z" - }, - { - "name": "favicon.ico", - "href": "/dashboard/favicon.ico", - "type": "file", - "size": 32038, - "lastModified": "2025-09-26T01:51:54Z" - }, - { - "name": "icons/", - "href": "/dashboard/icons/", - "type": "dir", - "lastModified": "2025-09-26T01:53:34Z" - }, - { - "name": "index.html", - "href": "/dashboard/index.html", - "type": "file", - "size": 20771, - "lastModified": "2025-09-26T01:51:54Z" - }, - { - "name": "index.txt", - "href": "/dashboard/index.txt", - "type": "file", - "size": 3933, - "lastModified": "2025-09-26T01:51:54Z" - }, - { - "name": "insight/", - "href": "/dashboard/insight/", - "type": "dir", - "lastModified": "2025-09-26T01:53:34Z" - }, - { - "name": "login/", - "href": "/dashboard/login/", - "type": "dir", - "lastModified": "2025-09-26T01:53:34Z" - }, - { - "name": "panel/", - "href": "/dashboard/panel/", - "type": "dir", - "lastModified": "2025-09-26T01:53:35Z" - }, - { - "name": "register/", - "href": "/dashboard/register/", - "type": "dir", - "lastModified": "2025-09-26T01:53:35Z" - } - ] - }, - { - "path": "dashboard/404/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/404/index.html", - "type": "file", - "size": 6355, - "lastModified": "2025-09-26T01:51:54Z" - }, - { - "name": "index.txt", - "href": "/dashboard/404/index.txt", - "type": "file", - "size": 3504, - "lastModified": "2025-09-26T01:51:54Z" - } - ] - }, - { - "path": "dashboard/500/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/500/index.html", - "type": "file", - "size": 2688, - "lastModified": "2025-09-26T01:51:54Z" - } - ] - }, - { - "path": "dashboard/_build/", - "entries": [ - { - "name": "cloud_iac_index.json", - "href": "/dashboard/_build/cloud_iac_index.json", - "type": "file", - "size": 6284, - "lastModified": "2025-09-26T01:51:54Z" - }, - { - "name": "docs_index.json", - "href": "/dashboard/_build/docs_index.json", - "type": "file", - "size": 246, - "lastModified": "2025-09-26T01:51:54Z" - }, - { - "name": "docs_paths.json", - "href": "/dashboard/_build/docs_paths.json", - "type": "file", - "size": 762, - "lastModified": "2025-09-26T01:51:54Z" - } - ] - }, - { - "path": "dashboard/_next/", - "entries": [ - { - "name": "C4jl8zBvWrRDVZ6h36PCq/", - "href": "/dashboard/_next/C4jl8zBvWrRDVZ6h36PCq/", - "type": "dir", - "lastModified": "2025-09-26T01:51:51Z" - }, - { - "name": "static/", - "href": "/dashboard/_next/static/", - "type": "dir", - "lastModified": "2025-09-26T01:51:57Z" - } - ] - }, - { - "path": "dashboard/_next/C4jl8zBvWrRDVZ6h36PCq/", - "entries": [] - }, - { - "path": "dashboard/_next/static/", - "entries": [ - { - "name": "C4jl8zBvWrRDVZ6h36PCq/", - "href": "/dashboard/_next/static/C4jl8zBvWrRDVZ6h36PCq/", - "type": "dir", - "lastModified": "2025-09-26T01:51:54Z" - }, - { - "name": "chunks/", - "href": "/dashboard/_next/static/chunks/", - "type": "dir", - "lastModified": "2025-09-26T01:51:57Z" - }, - { - "name": "css/", - "href": "/dashboard/_next/static/css/", - "type": "dir", - "lastModified": "2025-09-26T01:51:57Z" - } - ] - }, - { - "path": "dashboard/_next/static/C4jl8zBvWrRDVZ6h36PCq/", - "entries": [ - { - "name": "_buildManifest.js", - "href": "/dashboard/_next/static/C4jl8zBvWrRDVZ6h36PCq/_buildManifest.js", - "type": "file", - "size": 355, - "lastModified": "2025-09-26T01:51:54Z" - }, - { - "name": "_ssgManifest.js", - "href": "/dashboard/_next/static/C4jl8zBvWrRDVZ6h36PCq/_ssgManifest.js", - "type": "file", - "size": 275, - "lastModified": "2025-09-26T01:51:54Z" - } - ] - }, - { - "path": "dashboard/_next/static/chunks/", - "entries": [ - { - "name": "117-6a3726805dfba300.js", - "href": "/dashboard/_next/static/chunks/117-6a3726805dfba300.js", - "type": "file", - "size": 123799, - "lastModified": "2025-09-26T01:51:54Z" - }, - { - "name": "352-73bf50f0537e023f.js", - "href": "/dashboard/_next/static/chunks/352-73bf50f0537e023f.js", - "type": "file", - "size": 24645, - "lastModified": "2025-09-26T01:51:54Z" - }, - { - "name": "428-657a815c79ad0bc6.js", - "href": "/dashboard/_next/static/chunks/428-657a815c79ad0bc6.js", - "type": "file", - "size": 8517, - "lastModified": "2025-09-26T01:51:54Z" - }, - { - "name": "543.43fdf78fe779d061.js", - "href": "/dashboard/_next/static/chunks/543.43fdf78fe779d061.js", - "type": "file", - "size": 79204, - "lastModified": "2025-09-26T01:51:54Z" - }, - { - "name": "583-9eac24a516ef3ad7.js", - "href": "/dashboard/_next/static/chunks/583-9eac24a516ef3ad7.js", - "type": "file", - "size": 52542, - "lastModified": "2025-09-26T01:51:55Z" - }, - { - "name": "618.03dade8902ee368b.js", - "href": "/dashboard/_next/static/chunks/618.03dade8902ee368b.js", - "type": "file", - "size": 29274, - "lastModified": "2025-09-26T01:51:55Z" - }, - { - "name": "659-f9c4d7cd4f724beb.js", - "href": "/dashboard/_next/static/chunks/659-f9c4d7cd4f724beb.js", - "type": "file", - "size": 9832, - "lastModified": "2025-09-26T01:51:55Z" - }, - { - "name": "685f7497.c879d3fc2c1f598d.js", - "href": "/dashboard/_next/static/chunks/685f7497.c879d3fc2c1f598d.js", - "type": "file", - "size": 318700, - "lastModified": "2025-09-26T01:51:55Z" - }, - { - "name": "957-d033c2db1c144d27.js", - "href": "/dashboard/_next/static/chunks/957-d033c2db1c144d27.js", - "type": "file", - "size": 22699, - "lastModified": "2025-09-26T01:51:55Z" - }, - { - "name": "972-63622a33e9e5334f.js", - "href": "/dashboard/_next/static/chunks/972-63622a33e9e5334f.js", - "type": "file", - "size": 26066, - "lastModified": "2025-09-26T01:51:55Z" - }, - { - "name": "app/", - "href": "/dashboard/_next/static/chunks/app/", - "type": "dir", - "lastModified": "2025-09-26T01:51:56Z" - }, - { - "name": "fd9d1056-5296711c48bf068c.js", - "href": "/dashboard/_next/static/chunks/fd9d1056-5296711c48bf068c.js", - "type": "file", - "size": 172834, - "lastModified": "2025-09-26T01:51:55Z" - }, - { - "name": "framework-6f66816a5f0d80ad.js", - "href": "/dashboard/_next/static/chunks/framework-6f66816a5f0d80ad.js", - "type": "file", - "size": 140017, - "lastModified": "2025-09-26T01:51:55Z" - }, - { - "name": "main-app-dc441e617920f385.js", - "href": "/dashboard/_next/static/chunks/main-app-dc441e617920f385.js", - "type": "file", - "size": 459, - "lastModified": "2025-09-26T01:51:55Z" - }, - { - "name": "main-bdac568bfdd17e6f.js", - "href": "/dashboard/_next/static/chunks/main-bdac568bfdd17e6f.js", - "type": "file", - "size": 131864, - "lastModified": "2025-09-26T01:51:55Z" - }, - { - "name": "pages/", - "href": "/dashboard/_next/static/chunks/pages/", - "type": "dir", - "lastModified": "2025-09-26T01:51:57Z" - }, - { - "name": "polyfills-42372ed130431b0a.js", - "href": "/dashboard/_next/static/chunks/polyfills-42372ed130431b0a.js", - "type": "file", - "size": 112594, - "lastModified": "2025-09-26T01:51:55Z" - }, - { - "name": "webpack-8d2ae002b78e6287.js", - "href": "/dashboard/_next/static/chunks/webpack-8d2ae002b78e6287.js", - "type": "file", - "size": 3913, - "lastModified": "2025-09-26T01:51:55Z" - } - ] - }, - { - "path": "dashboard/_next/static/chunks/app/", - "entries": [ - { - "name": "404/", - "href": "/dashboard/_next/static/chunks/app/404/", - "type": "dir", - "lastModified": "2025-09-26T01:51:55Z" - }, - { - "name": "_not-found/", - "href": "/dashboard/_next/static/chunks/app/_not-found/", - "type": "dir", - "lastModified": "2025-09-26T01:51:55Z" - }, - { - "name": "cloud_iac/", - "href": "/dashboard/_next/static/chunks/app/cloud_iac/", - "type": "dir", - "lastModified": "2025-09-26T01:51:56Z" - }, - { - "name": "demo/", - "href": "/dashboard/_next/static/chunks/app/demo/", - "type": "dir", - "lastModified": "2025-09-26T01:51:56Z" - }, - { - "name": "docs/", - "href": "/dashboard/_next/static/chunks/app/docs/", - "type": "dir", - "lastModified": "2025-09-26T01:51:56Z" - }, - { - "name": "download/", - "href": "/dashboard/_next/static/chunks/app/download/", - "type": "dir", - "lastModified": "2025-09-26T01:51:56Z" - }, - { - "name": "insight/", - "href": "/dashboard/_next/static/chunks/app/insight/", - "type": "dir", - "lastModified": "2025-09-26T01:51:56Z" - }, - { - "name": "layout-4db55386872fdb95.js", - "href": "/dashboard/_next/static/chunks/app/layout-4db55386872fdb95.js", - "type": "file", - "size": 633, - "lastModified": "2025-09-26T01:51:55Z" - }, - { - "name": "login/", - "href": "/dashboard/_next/static/chunks/app/login/", - "type": "dir", - "lastModified": "2025-09-26T01:51:56Z" - }, - { - "name": "page-b9e2a021cd3e8e5f.js", - "href": "/dashboard/_next/static/chunks/app/page-b9e2a021cd3e8e5f.js", - "type": "file", - "size": 34174, - "lastModified": "2025-09-26T01:51:55Z" - }, - { - "name": "panel/", - "href": "/dashboard/_next/static/chunks/app/panel/", - "type": "dir", - "lastModified": "2025-09-26T01:51:56Z" - }, - { - "name": "register/", - "href": "/dashboard/_next/static/chunks/app/register/", - "type": "dir", - "lastModified": "2025-09-26T01:51:56Z" - } - ] - }, - { - "path": "dashboard/_next/static/chunks/app/404/", - "entries": [ - { - "name": "page-d033b86b7e12358c.js", - "href": "/dashboard/_next/static/chunks/app/404/page-d033b86b7e12358c.js", - "type": "file", - "size": 214, - "lastModified": "2025-09-26T01:51:55Z" - } - ] - }, - { - "path": "dashboard/_next/static/chunks/app/_not-found/", - "entries": [ - { - "name": "page-fb75a9d20615c23b.js", - "href": "/dashboard/_next/static/chunks/app/_not-found/page-fb75a9d20615c23b.js", - "type": "file", - "size": 1745, - "lastModified": "2025-09-26T01:51:55Z" - } - ] - }, - { - "path": "dashboard/_next/static/chunks/app/cloud_iac/", - "entries": [ - { - "name": "[provider]/", - "href": "/dashboard/_next/static/chunks/app/cloud_iac/[provider]/", - "type": "dir", - "lastModified": "2025-09-26T01:51:56Z" - }, - { - "name": "page-a800f97739aa8bf8.js", - "href": "/dashboard/_next/static/chunks/app/cloud_iac/page-a800f97739aa8bf8.js", - "type": "file", - "size": 150, - "lastModified": "2025-09-26T01:51:55Z" - } - ] - }, - { - "path": "dashboard/_next/static/chunks/app/cloud_iac/[provider]/", - "entries": [ - { - "name": "[service]/", - "href": "/dashboard/_next/static/chunks/app/cloud_iac/[provider]/[service]/", - "type": "dir", - "lastModified": "2025-09-26T01:51:56Z" - }, - { - "name": "page-51318cda3f45d8ff.js", - "href": "/dashboard/_next/static/chunks/app/cloud_iac/[provider]/page-51318cda3f45d8ff.js", - "type": "file", - "size": 150, - "lastModified": "2025-09-26T01:51:55Z" - } - ] - }, - { - "path": "dashboard/_next/static/chunks/app/cloud_iac/[provider]/[service]/", - "entries": [ - { - "name": "page-c36f84c28d14ebc6.js", - "href": "/dashboard/_next/static/chunks/app/cloud_iac/[provider]/[service]/page-c36f84c28d14ebc6.js", - "type": "file", - "size": 33649, - "lastModified": "2025-09-26T01:51:56Z" - } - ] - }, - { - "path": "dashboard/_next/static/chunks/app/demo/", - "entries": [ - { - "name": "page-527921c198e587d6.js", - "href": "/dashboard/_next/static/chunks/app/demo/page-527921c198e587d6.js", - "type": "file", - "size": 6729, - "lastModified": "2025-09-26T01:51:56Z" - } - ] - }, - { - "path": "dashboard/_next/static/chunks/app/docs/", - "entries": [ - { - "name": "[collection]/", - "href": "/dashboard/_next/static/chunks/app/docs/[collection]/", - "type": "dir", - "lastModified": "2025-09-26T01:51:56Z" - }, - { - "name": "page-b4cc914dbaf4cdff.js", - "href": "/dashboard/_next/static/chunks/app/docs/page-b4cc914dbaf4cdff.js", - "type": "file", - "size": 5295, - "lastModified": "2025-09-26T01:51:56Z" - } - ] - }, - { - "path": "dashboard/_next/static/chunks/app/docs/[collection]/", - "entries": [ - { - "name": "[version]/", - "href": "/dashboard/_next/static/chunks/app/docs/[collection]/[version]/", - "type": "dir", - "lastModified": "2025-09-26T01:51:56Z" - }, - { - "name": "page-6633878c20436dac.js", - "href": "/dashboard/_next/static/chunks/app/docs/[collection]/page-6633878c20436dac.js", - "type": "file", - "size": 195, - "lastModified": "2025-09-26T01:51:56Z" - } - ] - }, - { - "path": "dashboard/_next/static/chunks/app/docs/[collection]/[version]/", - "entries": [ - { - "name": "page-1cbe2459f88dd240.js", - "href": "/dashboard/_next/static/chunks/app/docs/[collection]/[version]/page-1cbe2459f88dd240.js", - "type": "file", - "size": 23424, - "lastModified": "2025-09-26T01:51:56Z" - } - ] - }, - { - "path": "dashboard/_next/static/chunks/app/download/", - "entries": [ - { - "name": "[...segments]/", - "href": "/dashboard/_next/static/chunks/app/download/[...segments]/", - "type": "dir", - "lastModified": "2025-09-26T01:51:56Z" - }, - { - "name": "page-41dbd6ebf9f92ca0.js", - "href": "/dashboard/_next/static/chunks/app/download/page-41dbd6ebf9f92ca0.js", - "type": "file", - "size": 4413, - "lastModified": "2025-09-26T01:51:56Z" - } - ] - }, - { - "path": "dashboard/_next/static/chunks/app/download/[...segments]/", - "entries": [ - { - "name": "page-255dabe7628e31fe.js", - "href": "/dashboard/_next/static/chunks/app/download/[...segments]/page-255dabe7628e31fe.js", - "type": "file", - "size": 7800, - "lastModified": "2025-09-26T01:51:56Z" - } - ] - }, - { - "path": "dashboard/_next/static/chunks/app/insight/", - "entries": [ - { - "name": "page-75c4a7533d660a6d.js", - "href": "/dashboard/_next/static/chunks/app/insight/page-75c4a7533d660a6d.js", - "type": "file", - "size": 77139, - "lastModified": "2025-09-26T01:51:56Z" - } - ] - }, - { - "path": "dashboard/_next/static/chunks/app/login/", - "entries": [ - { - "name": "page-c646ef0960a5bae3.js", - "href": "/dashboard/_next/static/chunks/app/login/page-c646ef0960a5bae3.js", - "type": "file", - "size": 195, - "lastModified": "2025-09-26T01:51:56Z" - } - ] - }, - { - "path": "dashboard/_next/static/chunks/app/panel/", - "entries": [ - { - "name": "account/", - "href": "/dashboard/_next/static/chunks/app/panel/account/", - "type": "dir", - "lastModified": "2025-09-26T01:51:56Z" - }, - { - "name": "agent/", - "href": "/dashboard/_next/static/chunks/app/panel/agent/", - "type": "dir", - "lastModified": "2025-09-26T01:51:56Z" - }, - { - "name": "api/", - "href": "/dashboard/_next/static/chunks/app/panel/api/", - "type": "dir", - "lastModified": "2025-09-26T01:51:56Z" - }, - { - "name": "layout-ffc5a202c0330284.js", - "href": "/dashboard/_next/static/chunks/app/panel/layout-ffc5a202c0330284.js", - "type": "file", - "size": 7304, - "lastModified": "2025-09-26T01:51:56Z" - }, - { - "name": "ldp/", - "href": "/dashboard/_next/static/chunks/app/panel/ldp/", - "type": "dir", - "lastModified": "2025-09-26T01:51:56Z" - }, - { - "name": "loading-037d1c581c07a642.js", - "href": "/dashboard/_next/static/chunks/app/panel/loading-037d1c581c07a642.js", - "type": "file", - "size": 195, - "lastModified": "2025-09-26T01:51:56Z" - }, - { - "name": "page-f9ab98aadf4e8ebe.js", - "href": "/dashboard/_next/static/chunks/app/panel/page-f9ab98aadf4e8ebe.js", - "type": "file", - "size": 195, - "lastModified": "2025-09-26T01:51:56Z" - }, - { - "name": "subscription/", - "href": "/dashboard/_next/static/chunks/app/panel/subscription/", - "type": "dir", - "lastModified": "2025-09-26T01:51:56Z" - }, - { - "name": "xray/", - "href": "/dashboard/_next/static/chunks/app/panel/xray/", - "type": "dir", - "lastModified": "2025-09-26T01:51:56Z" - } - ] - }, - { - "path": "dashboard/_next/static/chunks/app/panel/account/", - "entries": [ - { - "name": "page-6f6767ba761505a0.js", - "href": "/dashboard/_next/static/chunks/app/panel/account/page-6f6767ba761505a0.js", - "type": "file", - "size": 195, - "lastModified": "2025-09-26T01:51:56Z" - } - ] - }, - { - "path": "dashboard/_next/static/chunks/app/panel/agent/", - "entries": [ - { - "name": "page-cbd83817a6999224.js", - "href": "/dashboard/_next/static/chunks/app/panel/agent/page-cbd83817a6999224.js", - "type": "file", - "size": 195, - "lastModified": "2025-09-26T01:51:56Z" - } - ] - }, - { - "path": "dashboard/_next/static/chunks/app/panel/api/", - "entries": [ - { - "name": "page-e5b405bfc4c947b1.js", - "href": "/dashboard/_next/static/chunks/app/panel/api/page-e5b405bfc4c947b1.js", - "type": "file", - "size": 195, - "lastModified": "2025-09-26T01:51:56Z" - } - ] - }, - { - "path": "dashboard/_next/static/chunks/app/panel/ldp/", - "entries": [ - { - "name": "page-c1220d75927524d9.js", - "href": "/dashboard/_next/static/chunks/app/panel/ldp/page-c1220d75927524d9.js", - "type": "file", - "size": 214, - "lastModified": "2025-09-26T01:51:56Z" - } - ] - }, - { - "path": "dashboard/_next/static/chunks/app/panel/subscription/", - "entries": [ - { - "name": "page-e153c2aa1ebc0f38.js", - "href": "/dashboard/_next/static/chunks/app/panel/subscription/page-e153c2aa1ebc0f38.js", - "type": "file", - "size": 195, - "lastModified": "2025-09-26T01:51:56Z" - } - ] - }, - { - "path": "dashboard/_next/static/chunks/app/panel/xray/", - "entries": [ - { - "name": "page-f036d24f65fa1934.js", - "href": "/dashboard/_next/static/chunks/app/panel/xray/page-f036d24f65fa1934.js", - "type": "file", - "size": 195, - "lastModified": "2025-09-26T01:51:56Z" - } - ] - }, - { - "path": "dashboard/_next/static/chunks/app/register/", - "entries": [ - { - "name": "page-5ddbf51eadc2f7ec.js", - "href": "/dashboard/_next/static/chunks/app/register/page-5ddbf51eadc2f7ec.js", - "type": "file", - "size": 195, - "lastModified": "2025-09-26T01:51:56Z" - } - ] - }, - { - "path": "dashboard/_next/static/chunks/pages/", - "entries": [ - { - "name": "500-37b2908f349f28f9.js", - "href": "/dashboard/_next/static/chunks/pages/500-37b2908f349f28f9.js", - "type": "file", - "size": 7593, - "lastModified": "2025-09-26T01:51:56Z" - }, - { - "name": "_app-72b849fbd24ac258.js", - "href": "/dashboard/_next/static/chunks/pages/_app-72b849fbd24ac258.js", - "type": "file", - "size": 280, - "lastModified": "2025-09-26T01:51:57Z" - }, - { - "name": "_error-7ba65e1336b92748.js", - "href": "/dashboard/_next/static/chunks/pages/_error-7ba65e1336b92748.js", - "type": "file", - "size": 247, - "lastModified": "2025-09-26T01:51:57Z" - } - ] - }, - { - "path": "dashboard/_next/static/css/", - "entries": [ - { - "name": "e2d0e678cda188fd.css", - "href": "/dashboard/_next/static/css/e2d0e678cda188fd.css", - "type": "file", - "size": 44489, - "lastModified": "2025-09-26T01:51:57Z" - } - ] - }, - { - "path": "dashboard/cloud_iac/", - "entries": [ - { - "name": "aliyun/", - "href": "/dashboard/cloud_iac/aliyun/", - "type": "dir", - "lastModified": "2025-09-26T01:51:58Z" - }, - { - "name": "aws/", - "href": "/dashboard/cloud_iac/aws/", - "type": "dir", - "lastModified": "2025-09-26T01:52:00Z" - }, - { - "name": "azure/", - "href": "/dashboard/cloud_iac/azure/", - "type": "dir", - "lastModified": "2025-09-26T01:52:02Z" - }, - { - "name": "gcp/", - "href": "/dashboard/cloud_iac/gcp/", - "type": "dir", - "lastModified": "2025-09-26T01:52:03Z" - }, - { - "name": "index.html", - "href": "/dashboard/cloud_iac/index.html", - "type": "file", - "size": 92456, - "lastModified": "2025-09-26T01:51:57Z" - }, - { - "name": "index.txt", - "href": "/dashboard/cloud_iac/index.txt", - "type": "file", - "size": 23080, - "lastModified": "2025-09-26T01:51:57Z" - } - ] - }, - { - "path": "dashboard/cloud_iac/aliyun/", - "entries": [ - { - "name": "ack/", - "href": "/dashboard/cloud_iac/aliyun/ack/", - "type": "dir", - "lastModified": "2025-09-26T01:51:57Z" - }, - { - "name": "aliyun-emr/", - "href": "/dashboard/cloud_iac/aliyun/aliyun-emr/", - "type": "dir", - "lastModified": "2025-09-26T01:51:57Z" - }, - { - "name": "aliyun-iot/", - "href": "/dashboard/cloud_iac/aliyun/aliyun-iot/", - "type": "dir", - "lastModified": "2025-09-26T01:51:57Z" - }, - { - "name": "apigateway-dataworks/", - "href": "/dashboard/cloud_iac/aliyun/apigateway-dataworks/", - "type": "dir", - "lastModified": "2025-09-26T01:51:57Z" - }, - { - "name": "apsaradb-rds/", - "href": "/dashboard/cloud_iac/aliyun/apsaradb-rds/", - "type": "dir", - "lastModified": "2025-09-26T01:51:57Z" - }, - { - "name": "apsaradb-redis/", - "href": "/dashboard/cloud_iac/aliyun/apsaradb-redis/", - "type": "dir", - "lastModified": "2025-09-26T01:51:57Z" - }, - { - "name": "cloudmonitor-eventbridge/", - "href": "/dashboard/cloud_iac/aliyun/cloudmonitor-eventbridge/", - "type": "dir", - "lastModified": "2025-09-26T01:51:57Z" - }, - { - "name": "dns-acceleration/", - "href": "/dashboard/cloud_iac/aliyun/dns-acceleration/", - "type": "dir", - "lastModified": "2025-09-26T01:51:58Z" - }, - { - "name": "ecs/", - "href": "/dashboard/cloud_iac/aliyun/ecs/", - "type": "dir", - "lastModified": "2025-09-26T01:51:58Z" - }, - { - "name": "index.html", - "href": "/dashboard/cloud_iac/aliyun/index.html", - "type": "file", - "size": 58795, - "lastModified": "2025-09-26T01:51:57Z" - }, - { - "name": "index.txt", - "href": "/dashboard/cloud_iac/aliyun/index.txt", - "type": "file", - "size": 23333, - "lastModified": "2025-09-26T01:51:57Z" - }, - { - "name": "mns/", - "href": "/dashboard/cloud_iac/aliyun/mns/", - "type": "dir", - "lastModified": "2025-09-26T01:51:58Z" - }, - { - "name": "oss/", - "href": "/dashboard/cloud_iac/aliyun/oss/", - "type": "dir", - "lastModified": "2025-09-26T01:51:58Z" - }, - { - "name": "ram/", - "href": "/dashboard/cloud_iac/aliyun/ram/", - "type": "dir", - "lastModified": "2025-09-26T01:51:58Z" - }, - { - "name": "security-group/", - "href": "/dashboard/cloud_iac/aliyun/security-group/", - "type": "dir", - "lastModified": "2025-09-26T01:51:58Z" - }, - { - "name": "slb/", - "href": "/dashboard/cloud_iac/aliyun/slb/", - "type": "dir", - "lastModified": "2025-09-26T01:51:58Z" - }, - { - "name": "vpc/", - "href": "/dashboard/cloud_iac/aliyun/vpc/", - "type": "dir", - "lastModified": "2025-09-26T01:51:58Z" - } - ] - }, - { - "path": "dashboard/cloud_iac/aliyun/ack/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/cloud_iac/aliyun/ack/index.html", - "type": "file", - "size": 20243, - "lastModified": "2025-09-26T01:51:57Z" - }, - { - "name": "index.txt", - "href": "/dashboard/cloud_iac/aliyun/ack/index.txt", - "type": "file", - "size": 5380, - "lastModified": "2025-09-26T01:51:57Z" - } - ] - }, - { - "path": "dashboard/cloud_iac/aliyun/aliyun-emr/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/cloud_iac/aliyun/aliyun-emr/index.html", - "type": "file", - "size": 5684, - "lastModified": "2025-09-26T01:51:57Z" - }, - { - "name": "index.txt", - "href": "/dashboard/cloud_iac/aliyun/aliyun-emr/index.txt", - "type": "file", - "size": 3634, - "lastModified": "2025-09-26T01:51:57Z" - } - ] - }, - { - "path": "dashboard/cloud_iac/aliyun/aliyun-iot/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/cloud_iac/aliyun/aliyun-iot/index.html", - "type": "file", - "size": 18367, - "lastModified": "2025-09-26T01:51:57Z" - }, - { - "name": "index.txt", - "href": "/dashboard/cloud_iac/aliyun/aliyun-iot/index.txt", - "type": "file", - "size": 5575, - "lastModified": "2025-09-26T01:51:57Z" - } - ] - }, - { - "path": "dashboard/cloud_iac/aliyun/apigateway-dataworks/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/cloud_iac/aliyun/apigateway-dataworks/index.html", - "type": "file", - "size": 18590, - "lastModified": "2025-09-26T01:51:57Z" - }, - { - "name": "index.txt", - "href": "/dashboard/cloud_iac/aliyun/apigateway-dataworks/index.txt", - "type": "file", - "size": 5782, - "lastModified": "2025-09-26T01:51:57Z" - } - ] - }, - { - "path": "dashboard/cloud_iac/aliyun/apsaradb-rds/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/cloud_iac/aliyun/apsaradb-rds/index.html", - "type": "file", - "size": 20402, - "lastModified": "2025-09-26T01:51:57Z" - }, - { - "name": "index.txt", - "href": "/dashboard/cloud_iac/aliyun/apsaradb-rds/index.txt", - "type": "file", - "size": 5519, - "lastModified": "2025-09-26T01:51:57Z" - } - ] - }, - { - "path": "dashboard/cloud_iac/aliyun/apsaradb-redis/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/cloud_iac/aliyun/apsaradb-redis/index.html", - "type": "file", - "size": 20374, - "lastModified": "2025-09-26T01:51:57Z" - }, - { - "name": "index.txt", - "href": "/dashboard/cloud_iac/aliyun/apsaradb-redis/index.txt", - "type": "file", - "size": 5527, - "lastModified": "2025-09-26T01:51:57Z" - } - ] - }, - { - "path": "dashboard/cloud_iac/aliyun/cloudmonitor-eventbridge/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/cloud_iac/aliyun/cloudmonitor-eventbridge/index.html", - "type": "file", - "size": 18574, - "lastModified": "2025-09-26T01:51:57Z" - }, - { - "name": "index.txt", - "href": "/dashboard/cloud_iac/aliyun/cloudmonitor-eventbridge/index.txt", - "type": "file", - "size": 5768, - "lastModified": "2025-09-26T01:51:57Z" - } - ] - }, - { - "path": "dashboard/cloud_iac/aliyun/dns-acceleration/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/cloud_iac/aliyun/dns-acceleration/index.html", - "type": "file", - "size": 18367, - "lastModified": "2025-09-26T01:51:58Z" - }, - { - "name": "index.txt", - "href": "/dashboard/cloud_iac/aliyun/dns-acceleration/index.txt", - "type": "file", - "size": 5595, - "lastModified": "2025-09-26T01:51:58Z" - } - ] - }, - { - "path": "dashboard/cloud_iac/aliyun/ecs/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/cloud_iac/aliyun/ecs/index.html", - "type": "file", - "size": 20422, - "lastModified": "2025-09-26T01:51:58Z" - }, - { - "name": "index.txt", - "href": "/dashboard/cloud_iac/aliyun/ecs/index.txt", - "type": "file", - "size": 5446, - "lastModified": "2025-09-26T01:51:58Z" - } - ] - }, - { - "path": "dashboard/cloud_iac/aliyun/mns/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/cloud_iac/aliyun/mns/index.html", - "type": "file", - "size": 20233, - "lastModified": "2025-09-26T01:51:58Z" - }, - { - "name": "index.txt", - "href": "/dashboard/cloud_iac/aliyun/mns/index.txt", - "type": "file", - "size": 5391, - "lastModified": "2025-09-26T01:51:58Z" - } - ] - }, - { - "path": "dashboard/cloud_iac/aliyun/oss/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/cloud_iac/aliyun/oss/index.html", - "type": "file", - "size": 20326, - "lastModified": "2025-09-26T01:51:58Z" - }, - { - "name": "index.txt", - "href": "/dashboard/cloud_iac/aliyun/oss/index.txt", - "type": "file", - "size": 5434, - "lastModified": "2025-09-26T01:51:58Z" - } - ] - }, - { - "path": "dashboard/cloud_iac/aliyun/ram/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/cloud_iac/aliyun/ram/index.html", - "type": "file", - "size": 20260, - "lastModified": "2025-09-26T01:51:58Z" - }, - { - "name": "index.txt", - "href": "/dashboard/cloud_iac/aliyun/ram/index.txt", - "type": "file", - "size": 5410, - "lastModified": "2025-09-26T01:51:58Z" - } - ] - }, - { - "path": "dashboard/cloud_iac/aliyun/security-group/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/cloud_iac/aliyun/security-group/index.html", - "type": "file", - "size": 20519, - "lastModified": "2025-09-26T01:51:58Z" - }, - { - "name": "index.txt", - "href": "/dashboard/cloud_iac/aliyun/security-group/index.txt", - "type": "file", - "size": 5598, - "lastModified": "2025-09-26T01:51:58Z" - } - ] - }, - { - "path": "dashboard/cloud_iac/aliyun/slb/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/cloud_iac/aliyun/slb/index.html", - "type": "file", - "size": 20381, - "lastModified": "2025-09-26T01:51:58Z" - }, - { - "name": "index.txt", - "href": "/dashboard/cloud_iac/aliyun/slb/index.txt", - "type": "file", - "size": 5501, - "lastModified": "2025-09-26T01:51:58Z" - } - ] - }, - { - "path": "dashboard/cloud_iac/aliyun/vpc/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/cloud_iac/aliyun/vpc/index.html", - "type": "file", - "size": 20284, - "lastModified": "2025-09-26T01:51:58Z" - }, - { - "name": "index.txt", - "href": "/dashboard/cloud_iac/aliyun/vpc/index.txt", - "type": "file", - "size": 5405, - "lastModified": "2025-09-26T01:51:58Z" - } - ] - }, - { - "path": "dashboard/cloud_iac/aws/", - "entries": [ - { - "name": "alb/", - "href": "/dashboard/cloud_iac/aws/alb/", - "type": "dir", - "lastModified": "2025-09-26T01:51:58Z" - }, - { - "name": "api-gateway-appflow/", - "href": "/dashboard/cloud_iac/aws/api-gateway-appflow/", - "type": "dir", - "lastModified": "2025-09-26T01:51:58Z" - }, - { - "name": "aws-iot/", - "href": "/dashboard/cloud_iac/aws/aws-iot/", - "type": "dir", - "lastModified": "2025-09-26T01:51:59Z" - }, - { - "name": "cloudwatch-eventbridge/", - "href": "/dashboard/cloud_iac/aws/cloudwatch-eventbridge/", - "type": "dir", - "lastModified": "2025-09-26T01:51:59Z" - }, - { - "name": "ec2/", - "href": "/dashboard/cloud_iac/aws/ec2/", - "type": "dir", - "lastModified": "2025-09-26T01:51:59Z" - }, - { - "name": "eks/", - "href": "/dashboard/cloud_iac/aws/eks/", - "type": "dir", - "lastModified": "2025-09-26T01:51:59Z" - }, - { - "name": "elasticache/", - "href": "/dashboard/cloud_iac/aws/elasticache/", - "type": "dir", - "lastModified": "2025-09-26T01:51:59Z" - }, - { - "name": "emr/", - "href": "/dashboard/cloud_iac/aws/emr/", - "type": "dir", - "lastModified": "2025-09-26T01:51:59Z" - }, - { - "name": "iam/", - "href": "/dashboard/cloud_iac/aws/iam/", - "type": "dir", - "lastModified": "2025-09-26T01:51:59Z" - }, - { - "name": "index.html", - "href": "/dashboard/cloud_iac/aws/index.html", - "type": "file", - "size": 58484, - "lastModified": "2025-09-26T01:51:58Z" - }, - { - "name": "index.txt", - "href": "/dashboard/cloud_iac/aws/index.txt", - "type": "file", - "size": 23306, - "lastModified": "2025-09-26T01:51:58Z" - }, - { - "name": "rds/", - "href": "/dashboard/cloud_iac/aws/rds/", - "type": "dir", - "lastModified": "2025-09-26T01:51:59Z" - }, - { - "name": "route53-cloudfront/", - "href": "/dashboard/cloud_iac/aws/route53-cloudfront/", - "type": "dir", - "lastModified": "2025-09-26T01:51:59Z" - }, - { - "name": "s3/", - "href": "/dashboard/cloud_iac/aws/s3/", - "type": "dir", - "lastModified": "2025-09-26T01:52:00Z" - }, - { - "name": "security-group/", - "href": "/dashboard/cloud_iac/aws/security-group/", - "type": "dir", - "lastModified": "2025-09-26T01:52:00Z" - }, - { - "name": "sqs/", - "href": "/dashboard/cloud_iac/aws/sqs/", - "type": "dir", - "lastModified": "2025-09-26T01:52:00Z" - }, - { - "name": "vpc/", - "href": "/dashboard/cloud_iac/aws/vpc/", - "type": "dir", - "lastModified": "2025-09-26T01:52:00Z" - } - ] - }, - { - "path": "dashboard/cloud_iac/aws/alb/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/cloud_iac/aws/alb/index.html", - "type": "file", - "size": 20372, - "lastModified": "2025-09-26T01:51:58Z" - }, - { - "name": "index.txt", - "href": "/dashboard/cloud_iac/aws/alb/index.txt", - "type": "file", - "size": 5486, - "lastModified": "2025-09-26T01:51:58Z" - } - ] - }, - { - "path": "dashboard/cloud_iac/aws/api-gateway-appflow/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/cloud_iac/aws/api-gateway-appflow/index.html", - "type": "file", - "size": 18506, - "lastModified": "2025-09-26T01:51:58Z" - }, - { - "name": "index.txt", - "href": "/dashboard/cloud_iac/aws/api-gateway-appflow/index.txt", - "type": "file", - "size": 5743, - "lastModified": "2025-09-26T01:51:58Z" - } - ] - }, - { - "path": "dashboard/cloud_iac/aws/aws-iot/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/cloud_iac/aws/aws-iot/index.html", - "type": "file", - "size": 18250, - "lastModified": "2025-09-26T01:51:59Z" - }, - { - "name": "index.txt", - "href": "/dashboard/cloud_iac/aws/aws-iot/index.txt", - "type": "file", - "size": 5519, - "lastModified": "2025-09-26T01:51:59Z" - } - ] - }, - { - "path": "dashboard/cloud_iac/aws/cloudwatch-eventbridge/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/cloud_iac/aws/cloudwatch-eventbridge/index.html", - "type": "file", - "size": 18490, - "lastModified": "2025-09-26T01:51:59Z" - }, - { - "name": "index.txt", - "href": "/dashboard/cloud_iac/aws/cloudwatch-eventbridge/index.txt", - "type": "file", - "size": 5726, - "lastModified": "2025-09-26T01:51:59Z" - } - ] - }, - { - "path": "dashboard/cloud_iac/aws/ec2/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/cloud_iac/aws/ec2/index.html", - "type": "file", - "size": 20341, - "lastModified": "2025-09-26T01:51:59Z" - }, - { - "name": "index.txt", - "href": "/dashboard/cloud_iac/aws/ec2/index.txt", - "type": "file", - "size": 5413, - "lastModified": "2025-09-26T01:51:59Z" - } - ] - }, - { - "path": "dashboard/cloud_iac/aws/eks/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/cloud_iac/aws/eks/index.html", - "type": "file", - "size": 20162, - "lastModified": "2025-09-26T01:51:59Z" - }, - { - "name": "index.txt", - "href": "/dashboard/cloud_iac/aws/eks/index.txt", - "type": "file", - "size": 5347, - "lastModified": "2025-09-26T01:51:59Z" - } - ] - }, - { - "path": "dashboard/cloud_iac/aws/elasticache/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/cloud_iac/aws/elasticache/index.html", - "type": "file", - "size": 20311, - "lastModified": "2025-09-26T01:51:59Z" - }, - { - "name": "index.txt", - "href": "/dashboard/cloud_iac/aws/elasticache/index.txt", - "type": "file", - "size": 5497, - "lastModified": "2025-09-26T01:51:59Z" - } - ] - }, - { - "path": "dashboard/cloud_iac/aws/emr/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/cloud_iac/aws/emr/index.html", - "type": "file", - "size": 20194, - "lastModified": "2025-09-26T01:51:59Z" - }, - { - "name": "index.txt", - "href": "/dashboard/cloud_iac/aws/emr/index.txt", - "type": "file", - "size": 5369, - "lastModified": "2025-09-26T01:51:59Z" - } - ] - }, - { - "path": "dashboard/cloud_iac/aws/iam/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/cloud_iac/aws/iam/index.html", - "type": "file", - "size": 20167, - "lastModified": "2025-09-26T01:51:59Z" - }, - { - "name": "index.txt", - "href": "/dashboard/cloud_iac/aws/iam/index.txt", - "type": "file", - "size": 5374, - "lastModified": "2025-09-26T01:51:59Z" - } - ] - }, - { - "path": "dashboard/cloud_iac/aws/rds/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/cloud_iac/aws/rds/index.html", - "type": "file", - "size": 20249, - "lastModified": "2025-09-26T01:51:59Z" - }, - { - "name": "index.txt", - "href": "/dashboard/cloud_iac/aws/rds/index.txt", - "type": "file", - "size": 5423, - "lastModified": "2025-09-26T01:51:59Z" - } - ] - }, - { - "path": "dashboard/cloud_iac/aws/route53-cloudfront/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/cloud_iac/aws/route53-cloudfront/index.html", - "type": "file", - "size": 18322, - "lastModified": "2025-09-26T01:51:59Z" - }, - { - "name": "index.txt", - "href": "/dashboard/cloud_iac/aws/route53-cloudfront/index.txt", - "type": "file", - "size": 5578, - "lastModified": "2025-09-26T01:51:59Z" - } - ] - }, - { - "path": "dashboard/cloud_iac/aws/s3/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/cloud_iac/aws/s3/index.html", - "type": "file", - "size": 20233, - "lastModified": "2025-09-26T01:51:59Z" - }, - { - "name": "index.txt", - "href": "/dashboard/cloud_iac/aws/s3/index.txt", - "type": "file", - "size": 5393, - "lastModified": "2025-09-26T01:52:00Z" - } - ] - }, - { - "path": "dashboard/cloud_iac/aws/security-group/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/cloud_iac/aws/security-group/index.html", - "type": "file", - "size": 20498, - "lastModified": "2025-09-26T01:52:00Z" - }, - { - "name": "index.txt", - "href": "/dashboard/cloud_iac/aws/security-group/index.txt", - "type": "file", - "size": 5580, - "lastModified": "2025-09-26T01:52:00Z" - } - ] - }, - { - "path": "dashboard/cloud_iac/aws/sqs/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/cloud_iac/aws/sqs/index.html", - "type": "file", - "size": 20152, - "lastModified": "2025-09-26T01:52:00Z" - }, - { - "name": "index.txt", - "href": "/dashboard/cloud_iac/aws/sqs/index.txt", - "type": "file", - "size": 5358, - "lastModified": "2025-09-26T01:52:00Z" - } - ] - }, - { - "path": "dashboard/cloud_iac/aws/vpc/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/cloud_iac/aws/vpc/index.html", - "type": "file", - "size": 20209, - "lastModified": "2025-09-26T01:52:00Z" - }, - { - "name": "index.txt", - "href": "/dashboard/cloud_iac/aws/vpc/index.txt", - "type": "file", - "size": 5372, - "lastModified": "2025-09-26T01:52:00Z" - } - ] - }, - { - "path": "dashboard/cloud_iac/azure/", - "entries": [ - { - "name": "aks/", - "href": "/dashboard/cloud_iac/azure/aks/", - "type": "dir", - "lastModified": "2025-09-26T01:52:00Z" - }, - { - "name": "apim-data-factory/", - "href": "/dashboard/cloud_iac/azure/apim-data-factory/", - "type": "dir", - "lastModified": "2025-09-26T01:52:00Z" - }, - { - "name": "azure-ad/", - "href": "/dashboard/cloud_iac/azure/azure-ad/", - "type": "dir", - "lastModified": "2025-09-26T01:52:00Z" - }, - { - "name": "azure-database/", - "href": "/dashboard/cloud_iac/azure/azure-database/", - "type": "dir", - "lastModified": "2025-09-26T01:52:00Z" - }, - { - "name": "azure-dns-front-door/", - "href": "/dashboard/cloud_iac/azure/azure-dns-front-door/", - "type": "dir", - "lastModified": "2025-09-26T01:52:00Z" - }, - { - "name": "azure-iot/", - "href": "/dashboard/cloud_iac/azure/azure-iot/", - "type": "dir", - "lastModified": "2025-09-26T01:52:01Z" - }, - { - "name": "azure-load-balancer/", - "href": "/dashboard/cloud_iac/azure/azure-load-balancer/", - "type": "dir", - "lastModified": "2025-09-26T01:52:01Z" - }, - { - "name": "blob-storage/", - "href": "/dashboard/cloud_iac/azure/blob-storage/", - "type": "dir", - "lastModified": "2025-09-26T01:52:01Z" - }, - { - "name": "index.html", - "href": "/dashboard/cloud_iac/azure/index.html", - "type": "file", - "size": 58819, - "lastModified": "2025-09-26T01:52:00Z" - }, - { - "name": "index.txt", - "href": "/dashboard/cloud_iac/azure/index.txt", - "type": "file", - "size": 23320, - "lastModified": "2025-09-26T01:52:00Z" - }, - { - "name": "monitor-event-grid/", - "href": "/dashboard/cloud_iac/azure/monitor-event-grid/", - "type": "dir", - "lastModified": "2025-09-26T01:52:01Z" - }, - { - "name": "network-security-group/", - "href": "/dashboard/cloud_iac/azure/network-security-group/", - "type": "dir", - "lastModified": "2025-09-26T01:52:01Z" - }, - { - "name": "redis-cache/", - "href": "/dashboard/cloud_iac/azure/redis-cache/", - "type": "dir", - "lastModified": "2025-09-26T01:52:01Z" - }, - { - "name": "service-bus/", - "href": "/dashboard/cloud_iac/azure/service-bus/", - "type": "dir", - "lastModified": "2025-09-26T01:52:01Z" - }, - { - "name": "synapse/", - "href": "/dashboard/cloud_iac/azure/synapse/", - "type": "dir", - "lastModified": "2025-09-26T01:52:01Z" - }, - { - "name": "virtual-machines/", - "href": "/dashboard/cloud_iac/azure/virtual-machines/", - "type": "dir", - "lastModified": "2025-09-26T01:52:01Z" - }, - { - "name": "virtual-network/", - "href": "/dashboard/cloud_iac/azure/virtual-network/", - "type": "dir", - "lastModified": "2025-09-26T01:52:02Z" - } - ] - }, - { - "path": "dashboard/cloud_iac/azure/aks/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/cloud_iac/azure/aks/index.html", - "type": "file", - "size": 20248, - "lastModified": "2025-09-26T01:52:00Z" - }, - { - "name": "index.txt", - "href": "/dashboard/cloud_iac/azure/aks/index.txt", - "type": "file", - "size": 5377, - "lastModified": "2025-09-26T01:52:00Z" - } - ] - }, - { - "path": "dashboard/cloud_iac/azure/apim-data-factory/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/cloud_iac/azure/apim-data-factory/index.html", - "type": "file", - "size": 18545, - "lastModified": "2025-09-26T01:52:00Z" - }, - { - "name": "index.txt", - "href": "/dashboard/cloud_iac/azure/apim-data-factory/index.txt", - "type": "file", - "size": 5756, - "lastModified": "2025-09-26T01:52:00Z" - } - ] - }, - { - "path": "dashboard/cloud_iac/azure/azure-ad/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/cloud_iac/azure/azure-ad/index.html", - "type": "file", - "size": 20311, - "lastModified": "2025-09-26T01:52:00Z" - }, - { - "name": "index.txt", - "href": "/dashboard/cloud_iac/azure/azure-ad/index.txt", - "type": "file", - "size": 5454, - "lastModified": "2025-09-26T01:52:00Z" - } - ] - }, - { - "path": "dashboard/cloud_iac/azure/azure-database/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/cloud_iac/azure/azure-database/index.html", - "type": "file", - "size": 20443, - "lastModified": "2025-09-26T01:52:00Z" - }, - { - "name": "index.txt", - "href": "/dashboard/cloud_iac/azure/azure-database/index.txt", - "type": "file", - "size": 5535, - "lastModified": "2025-09-26T01:52:00Z" - } - ] - }, - { - "path": "dashboard/cloud_iac/azure/azure-dns-front-door/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/cloud_iac/azure/azure-dns-front-door/index.html", - "type": "file", - "size": 18346, - "lastModified": "2025-09-26T01:52:00Z" - }, - { - "name": "index.txt", - "href": "/dashboard/cloud_iac/azure/azure-dns-front-door/index.txt", - "type": "file", - "size": 5598, - "lastModified": "2025-09-26T01:52:00Z" - } - ] - }, - { - "path": "dashboard/cloud_iac/azure/azure-iot/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/cloud_iac/azure/azure-iot/index.html", - "type": "file", - "size": 18289, - "lastModified": "2025-09-26T01:52:00Z" - }, - { - "name": "index.txt", - "href": "/dashboard/cloud_iac/azure/azure-iot/index.txt", - "type": "file", - "size": 5544, - "lastModified": "2025-09-26T01:52:01Z" - } - ] - }, - { - "path": "dashboard/cloud_iac/azure/azure-load-balancer/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/cloud_iac/azure/azure-load-balancer/index.html", - "type": "file", - "size": 20506, - "lastModified": "2025-09-26T01:52:01Z" - }, - { - "name": "index.txt", - "href": "/dashboard/cloud_iac/azure/azure-load-balancer/index.txt", - "type": "file", - "size": 5608, - "lastModified": "2025-09-26T01:52:01Z" - } - ] - }, - { - "path": "dashboard/cloud_iac/azure/blob-storage/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/cloud_iac/azure/blob-storage/index.html", - "type": "file", - "size": 20385, - "lastModified": "2025-09-26T01:52:01Z" - }, - { - "name": "index.txt", - "href": "/dashboard/cloud_iac/azure/blob-storage/index.txt", - "type": "file", - "size": 5494, - "lastModified": "2025-09-26T01:52:01Z" - } - ] - }, - { - "path": "dashboard/cloud_iac/azure/monitor-event-grid/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/cloud_iac/azure/monitor-event-grid/index.html", - "type": "file", - "size": 18481, - "lastModified": "2025-09-26T01:52:01Z" - }, - { - "name": "index.txt", - "href": "/dashboard/cloud_iac/azure/monitor-event-grid/index.txt", - "type": "file", - "size": 5717, - "lastModified": "2025-09-26T01:52:01Z" - } - ] - }, - { - "path": "dashboard/cloud_iac/azure/network-security-group/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/cloud_iac/azure/network-security-group/index.html", - "type": "file", - "size": 20608, - "lastModified": "2025-09-26T01:52:01Z" - }, - { - "name": "index.txt", - "href": "/dashboard/cloud_iac/azure/network-security-group/index.txt", - "type": "file", - "size": 5656, - "lastModified": "2025-09-26T01:52:01Z" - } - ] - }, - { - "path": "dashboard/cloud_iac/azure/redis-cache/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/cloud_iac/azure/redis-cache/index.html", - "type": "file", - "size": 20353, - "lastModified": "2025-09-26T01:52:01Z" - }, - { - "name": "index.txt", - "href": "/dashboard/cloud_iac/azure/redis-cache/index.txt", - "type": "file", - "size": 5516, - "lastModified": "2025-09-26T01:52:01Z" - } - ] - }, - { - "path": "dashboard/cloud_iac/azure/service-bus/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/cloud_iac/azure/service-bus/index.html", - "type": "file", - "size": 20274, - "lastModified": "2025-09-26T01:52:01Z" - }, - { - "name": "index.txt", - "href": "/dashboard/cloud_iac/azure/service-bus/index.txt", - "type": "file", - "size": 5437, - "lastModified": "2025-09-26T01:52:01Z" - } - ] - }, - { - "path": "dashboard/cloud_iac/azure/synapse/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/cloud_iac/azure/synapse/index.html", - "type": "file", - "size": 20308, - "lastModified": "2025-09-26T01:52:01Z" - }, - { - "name": "index.txt", - "href": "/dashboard/cloud_iac/azure/synapse/index.txt", - "type": "file", - "size": 5426, - "lastModified": "2025-09-26T01:52:01Z" - } - ] - }, - { - "path": "dashboard/cloud_iac/azure/virtual-machines/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/cloud_iac/azure/virtual-machines/index.html", - "type": "file", - "size": 20499, - "lastModified": "2025-09-26T01:52:01Z" - }, - { - "name": "index.txt", - "href": "/dashboard/cloud_iac/azure/virtual-machines/index.txt", - "type": "file", - "size": 5526, - "lastModified": "2025-09-26T01:52:01Z" - } - ] - }, - { - "path": "dashboard/cloud_iac/azure/virtual-network/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/cloud_iac/azure/virtual-network/index.html", - "type": "file", - "size": 20350, - "lastModified": "2025-09-26T01:52:02Z" - }, - { - "name": "index.txt", - "href": "/dashboard/cloud_iac/azure/virtual-network/index.txt", - "type": "file", - "size": 5477, - "lastModified": "2025-09-26T01:52:02Z" - } - ] - }, - { - "path": "dashboard/cloud_iac/gcp/", - "entries": [ - { - "name": "apigateway-integration/", - "href": "/dashboard/cloud_iac/gcp/apigateway-integration/", - "type": "dir", - "lastModified": "2025-09-26T01:52:02Z" - }, - { - "name": "cloud-dns-cdn/", - "href": "/dashboard/cloud_iac/gcp/cloud-dns-cdn/", - "type": "dir", - "lastModified": "2025-09-26T01:52:02Z" - }, - { - "name": "cloud-iam/", - "href": "/dashboard/cloud_iac/gcp/cloud-iam/", - "type": "dir", - "lastModified": "2025-09-26T01:52:02Z" - }, - { - "name": "cloud-load-balancing/", - "href": "/dashboard/cloud_iac/gcp/cloud-load-balancing/", - "type": "dir", - "lastModified": "2025-09-26T01:52:02Z" - }, - { - "name": "cloud-sql/", - "href": "/dashboard/cloud_iac/gcp/cloud-sql/", - "type": "dir", - "lastModified": "2025-09-26T01:52:02Z" - }, - { - "name": "cloud-storage/", - "href": "/dashboard/cloud_iac/gcp/cloud-storage/", - "type": "dir", - "lastModified": "2025-09-26T01:52:02Z" - }, - { - "name": "compute-engine/", - "href": "/dashboard/cloud_iac/gcp/compute-engine/", - "type": "dir", - "lastModified": "2025-09-26T01:52:02Z" - }, - { - "name": "dataproc/", - "href": "/dashboard/cloud_iac/gcp/dataproc/", - "type": "dir", - "lastModified": "2025-09-26T01:52:02Z" - }, - { - "name": "gcp-iot/", - "href": "/dashboard/cloud_iac/gcp/gcp-iot/", - "type": "dir", - "lastModified": "2025-09-26T01:52:03Z" - }, - { - "name": "gke/", - "href": "/dashboard/cloud_iac/gcp/gke/", - "type": "dir", - "lastModified": "2025-09-26T01:52:03Z" - }, - { - "name": "index.html", - "href": "/dashboard/cloud_iac/gcp/index.html", - "type": "file", - "size": 58576, - "lastModified": "2025-09-26T01:52:02Z" - }, - { - "name": "index.txt", - "href": "/dashboard/cloud_iac/gcp/index.txt", - "type": "file", - "size": 23306, - "lastModified": "2025-09-26T01:52:02Z" - }, - { - "name": "memorystore/", - "href": "/dashboard/cloud_iac/gcp/memorystore/", - "type": "dir", - "lastModified": "2025-09-26T01:52:03Z" - }, - { - "name": "operations-eventarc/", - "href": "/dashboard/cloud_iac/gcp/operations-eventarc/", - "type": "dir", - "lastModified": "2025-09-26T01:52:03Z" - }, - { - "name": "pubsub/", - "href": "/dashboard/cloud_iac/gcp/pubsub/", - "type": "dir", - "lastModified": "2025-09-26T01:52:03Z" - }, - { - "name": "vpc/", - "href": "/dashboard/cloud_iac/gcp/vpc/", - "type": "dir", - "lastModified": "2025-09-26T01:52:03Z" - }, - { - "name": "vpc-firewall/", - "href": "/dashboard/cloud_iac/gcp/vpc-firewall/", - "type": "dir", - "lastModified": "2025-09-26T01:52:03Z" - } - ] - }, - { - "path": "dashboard/cloud_iac/gcp/apigateway-integration/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/cloud_iac/gcp/apigateway-integration/index.html", - "type": "file", - "size": 18548, - "lastModified": "2025-09-26T01:52:02Z" - }, - { - "name": "index.txt", - "href": "/dashboard/cloud_iac/gcp/apigateway-integration/index.txt", - "type": "file", - "size": 5766, - "lastModified": "2025-09-26T01:52:02Z" - } - ] - }, - { - "path": "dashboard/cloud_iac/gcp/cloud-dns-cdn/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/cloud_iac/gcp/cloud-dns-cdn/index.html", - "type": "file", - "size": 18271, - "lastModified": "2025-09-26T01:52:02Z" - }, - { - "name": "index.txt", - "href": "/dashboard/cloud_iac/gcp/cloud-dns-cdn/index.txt", - "type": "file", - "size": 5546, - "lastModified": "2025-09-26T01:52:02Z" - } - ] - }, - { - "path": "dashboard/cloud_iac/gcp/cloud-iam/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/cloud_iac/gcp/cloud-iam/index.html", - "type": "file", - "size": 20211, - "lastModified": "2025-09-26T01:52:02Z" - }, - { - "name": "index.txt", - "href": "/dashboard/cloud_iac/gcp/cloud-iam/index.txt", - "type": "file", - "size": 5406, - "lastModified": "2025-09-26T01:52:02Z" - } - ] - }, - { - "path": "dashboard/cloud_iac/gcp/cloud-load-balancing/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/cloud_iac/gcp/cloud-load-balancing/index.html", - "type": "file", - "size": 20488, - "lastModified": "2025-09-26T01:52:02Z" - }, - { - "name": "index.txt", - "href": "/dashboard/cloud_iac/gcp/cloud-load-balancing/index.txt", - "type": "file", - "size": 5600, - "lastModified": "2025-09-26T01:52:02Z" - } - ] - }, - { - "path": "dashboard/cloud_iac/gcp/cloud-sql/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/cloud_iac/gcp/cloud-sql/index.html", - "type": "file", - "size": 20293, - "lastModified": "2025-09-26T01:52:02Z" - }, - { - "name": "index.txt", - "href": "/dashboard/cloud_iac/gcp/cloud-sql/index.txt", - "type": "file", - "size": 5464, - "lastModified": "2025-09-26T01:52:02Z" - } - ] - }, - { - "path": "dashboard/cloud_iac/gcp/cloud-storage/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/cloud_iac/gcp/cloud-storage/index.html", - "type": "file", - "size": 20337, - "lastModified": "2025-09-26T01:52:02Z" - }, - { - "name": "index.txt", - "href": "/dashboard/cloud_iac/gcp/cloud-storage/index.txt", - "type": "file", - "size": 5474, - "lastModified": "2025-09-26T01:52:02Z" - } - ] - }, - { - "path": "dashboard/cloud_iac/gcp/compute-engine/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/cloud_iac/gcp/compute-engine/index.html", - "type": "file", - "size": 20445, - "lastModified": "2025-09-26T01:52:02Z" - }, - { - "name": "index.txt", - "href": "/dashboard/cloud_iac/gcp/compute-engine/index.txt", - "type": "file", - "size": 5494, - "lastModified": "2025-09-26T01:52:02Z" - } - ] - }, - { - "path": "dashboard/cloud_iac/gcp/dataproc/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/cloud_iac/gcp/dataproc/index.html", - "type": "file", - "size": 20226, - "lastModified": "2025-09-26T01:52:02Z" - }, - { - "name": "index.txt", - "href": "/dashboard/cloud_iac/gcp/dataproc/index.txt", - "type": "file", - "size": 5402, - "lastModified": "2025-09-26T01:52:02Z" - } - ] - }, - { - "path": "dashboard/cloud_iac/gcp/gcp-iot/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/cloud_iac/gcp/gcp-iot/index.html", - "type": "file", - "size": 18238, - "lastModified": "2025-09-26T01:52:02Z" - }, - { - "name": "index.txt", - "href": "/dashboard/cloud_iac/gcp/gcp-iot/index.txt", - "type": "file", - "size": 5515, - "lastModified": "2025-09-26T01:52:03Z" - } - ] - }, - { - "path": "dashboard/cloud_iac/gcp/gke/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/cloud_iac/gcp/gke/index.html", - "type": "file", - "size": 20218, - "lastModified": "2025-09-26T01:52:03Z" - }, - { - "name": "index.txt", - "href": "/dashboard/cloud_iac/gcp/gke/index.txt", - "type": "file", - "size": 5361, - "lastModified": "2025-09-26T01:52:03Z" - } - ] - }, - { - "path": "dashboard/cloud_iac/gcp/memorystore/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/cloud_iac/gcp/memorystore/index.html", - "type": "file", - "size": 20323, - "lastModified": "2025-09-26T01:52:03Z" - }, - { - "name": "index.txt", - "href": "/dashboard/cloud_iac/gcp/memorystore/index.txt", - "type": "file", - "size": 5500, - "lastModified": "2025-09-26T01:52:03Z" - } - ] - }, - { - "path": "dashboard/cloud_iac/gcp/operations-eventarc/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/cloud_iac/gcp/operations-eventarc/index.html", - "type": "file", - "size": 18460, - "lastModified": "2025-09-26T01:52:03Z" - }, - { - "name": "index.txt", - "href": "/dashboard/cloud_iac/gcp/operations-eventarc/index.txt", - "type": "file", - "size": 5707, - "lastModified": "2025-09-26T01:52:03Z" - } - ] - }, - { - "path": "dashboard/cloud_iac/gcp/pubsub/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/cloud_iac/gcp/pubsub/index.html", - "type": "file", - "size": 20164, - "lastModified": "2025-09-26T01:52:03Z" - }, - { - "name": "index.txt", - "href": "/dashboard/cloud_iac/gcp/pubsub/index.txt", - "type": "file", - "size": 5376, - "lastModified": "2025-09-26T01:52:03Z" - } - ] - }, - { - "path": "dashboard/cloud_iac/gcp/vpc/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/cloud_iac/gcp/vpc/index.html", - "type": "file", - "size": 20242, - "lastModified": "2025-09-26T01:52:03Z" - }, - { - "name": "index.txt", - "href": "/dashboard/cloud_iac/gcp/vpc/index.txt", - "type": "file", - "size": 5383, - "lastModified": "2025-09-26T01:52:03Z" - } - ] - }, - { - "path": "dashboard/cloud_iac/gcp/vpc-firewall/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/cloud_iac/gcp/vpc-firewall/index.html", - "type": "file", - "size": 20482, - "lastModified": "2025-09-26T01:52:03Z" - }, - { - "name": "index.txt", - "href": "/dashboard/cloud_iac/gcp/vpc-firewall/index.txt", - "type": "file", - "size": 5566, - "lastModified": "2025-09-26T01:52:03Z" - } - ] - }, - { - "path": "dashboard/demo/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/demo/index.html", - "type": "file", - "size": 4841, - "lastModified": "2025-09-26T01:52:03Z" - }, - { - "name": "index.txt", - "href": "/dashboard/demo/index.txt", - "type": "file", - "size": 2682, - "lastModified": "2025-09-26T01:52:03Z" - } - ] - }, - { - "path": "dashboard/dl-index/", - "entries": [ - { - "name": "artifacts-manifest.json", - "href": "/dashboard/dl-index/artifacts-manifest.json", - "type": "file", - "size": 458633, - "lastModified": "2025-09-26T01:52:03Z" - }, - { - "name": "docs-manifest.json", - "href": "/dashboard/dl-index/docs-manifest.json", - "type": "file", - "size": 166058, - "lastModified": "2025-09-26T01:52:03Z" - } - ] - }, - { - "path": "dashboard/docs/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/index.html", - "type": "file", - "size": 258827, - "lastModified": "2025-09-26T01:52:03Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/index.txt", - "type": "file", - "size": 195765, - "lastModified": "2025-09-26T01:52:03Z" - }, - { - "name": "interview-qa/", - "href": "/dashboard/docs/interview-qa/", - "type": "dir", - "lastModified": "2025-09-26T01:52:04Z" - }, - { - "name": "keycloak/", - "href": "/dashboard/docs/keycloak/", - "type": "dir", - "lastModified": "2025-09-26T01:52:05Z" - }, - { - "name": "landingzone/", - "href": "/dashboard/docs/landingzone/", - "type": "dir", - "lastModified": "2025-09-26T01:52:07Z" - }, - { - "name": "linux-k8s-ops/", - "href": "/dashboard/docs/linux-k8s-ops/", - "type": "dir", - "lastModified": "2025-09-26T01:52:08Z" - }, - { - "name": "observability/", - "href": "/dashboard/docs/observability/", - "type": "dir", - "lastModified": "2025-09-26T01:52:09Z" - }, - { - "name": "personal/", - "href": "/dashboard/docs/personal/", - "type": "dir", - "lastModified": "2025-09-26T01:52:26Z" - }, - { - "name": "techexploration/", - "href": "/dashboard/docs/techexploration/", - "type": "dir", - "lastModified": "2025-09-26T01:52:28Z" - }, - { - "name": "the-indiedeveloper-fullstack-roadmap/", - "href": "/dashboard/docs/the-indiedeveloper-fullstack-roadmap/", - "type": "dir", - "lastModified": "2025-09-26T01:52:30Z" - } - ] - }, - { - "path": "dashboard/docs/interview-qa/", - "entries": [ - { - "name": "en-v42-18006148753/", - "href": "/dashboard/docs/interview-qa/en-v42-18006148753/", - "type": "dir", - "lastModified": "2025-09-26T01:52:04Z" - }, - { - "name": "en-v43-18011536494/", - "href": "/dashboard/docs/interview-qa/en-v43-18011536494/", - "type": "dir", - "lastModified": "2025-09-26T01:52:04Z" - }, - { - "name": "en-v44-18011825454/", - "href": "/dashboard/docs/interview-qa/en-v44-18011825454/", - "type": "dir", - "lastModified": "2025-09-26T01:52:04Z" - }, - { - "name": "en-v45-18011937887/", - "href": "/dashboard/docs/interview-qa/en-v45-18011937887/", - "type": "dir", - "lastModified": "2025-09-26T01:52:04Z" - }, - { - "name": "en-v46-18011951541/", - "href": "/dashboard/docs/interview-qa/en-v46-18011951541/", - "type": "dir", - "lastModified": "2025-09-26T01:52:04Z" - }, - { - "name": "en-v47-18013619427/", - "href": "/dashboard/docs/interview-qa/en-v47-18013619427/", - "type": "dir", - "lastModified": "2025-09-26T01:52:04Z" - }, - { - "name": "index.html", - "href": "/dashboard/docs/interview-qa/index.html", - "type": "file", - "size": 5049, - "lastModified": "2025-09-26T01:52:04Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/interview-qa/index.txt", - "type": "file", - "size": 3184, - "lastModified": "2025-09-26T01:52:04Z" - } - ] - }, - { - "path": "dashboard/docs/interview-qa/en-v42-18006148753/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/interview-qa/en-v42-18006148753/index.html", - "type": "file", - "size": 23127, - "lastModified": "2025-09-26T01:52:04Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/interview-qa/en-v42-18006148753/index.txt", - "type": "file", - "size": 10296, - "lastModified": "2025-09-26T01:52:04Z" - } - ] - }, - { - "path": "dashboard/docs/interview-qa/en-v43-18011536494/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/interview-qa/en-v43-18011536494/index.html", - "type": "file", - "size": 23127, - "lastModified": "2025-09-26T01:52:04Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/interview-qa/en-v43-18011536494/index.txt", - "type": "file", - "size": 10296, - "lastModified": "2025-09-26T01:52:04Z" - } - ] - }, - { - "path": "dashboard/docs/interview-qa/en-v44-18011825454/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/interview-qa/en-v44-18011825454/index.html", - "type": "file", - "size": 23127, - "lastModified": "2025-09-26T01:52:04Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/interview-qa/en-v44-18011825454/index.txt", - "type": "file", - "size": 10296, - "lastModified": "2025-09-26T01:52:04Z" - } - ] - }, - { - "path": "dashboard/docs/interview-qa/en-v45-18011937887/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/interview-qa/en-v45-18011937887/index.html", - "type": "file", - "size": 23127, - "lastModified": "2025-09-26T01:52:04Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/interview-qa/en-v45-18011937887/index.txt", - "type": "file", - "size": 10296, - "lastModified": "2025-09-26T01:52:04Z" - } - ] - }, - { - "path": "dashboard/docs/interview-qa/en-v46-18011951541/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/interview-qa/en-v46-18011951541/index.html", - "type": "file", - "size": 23127, - "lastModified": "2025-09-26T01:52:04Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/interview-qa/en-v46-18011951541/index.txt", - "type": "file", - "size": 10296, - "lastModified": "2025-09-26T01:52:04Z" - } - ] - }, - { - "path": "dashboard/docs/interview-qa/en-v47-18013619427/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/interview-qa/en-v47-18013619427/index.html", - "type": "file", - "size": 23127, - "lastModified": "2025-09-26T01:52:04Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/interview-qa/en-v47-18013619427/index.txt", - "type": "file", - "size": 10296, - "lastModified": "2025-09-26T01:52:04Z" - } - ] - }, - { - "path": "dashboard/docs/keycloak/", - "entries": [ - { - "name": "en-v33-17996525102/", - "href": "/dashboard/docs/keycloak/en-v33-17996525102/", - "type": "dir", - "lastModified": "2025-09-26T01:52:04Z" - }, - { - "name": "en-v34-18001960544/", - "href": "/dashboard/docs/keycloak/en-v34-18001960544/", - "type": "dir", - "lastModified": "2025-09-26T01:52:04Z" - }, - { - "name": "en-v35-18002040798/", - "href": "/dashboard/docs/keycloak/en-v35-18002040798/", - "type": "dir", - "lastModified": "2025-09-26T01:52:04Z" - }, - { - "name": "en-v36-18002294267/", - "href": "/dashboard/docs/keycloak/en-v36-18002294267/", - "type": "dir", - "lastModified": "2025-09-26T01:52:05Z" - }, - { - "name": "en-v39-18004672680/", - "href": "/dashboard/docs/keycloak/en-v39-18004672680/", - "type": "dir", - "lastModified": "2025-09-26T01:52:05Z" - }, - { - "name": "en-v40-18004678416/", - "href": "/dashboard/docs/keycloak/en-v40-18004678416/", - "type": "dir", - "lastModified": "2025-09-26T01:52:05Z" - }, - { - "name": "en-v41-18005142964/", - "href": "/dashboard/docs/keycloak/en-v41-18005142964/", - "type": "dir", - "lastModified": "2025-09-26T01:52:05Z" - }, - { - "name": "en-v42-18006148753/", - "href": "/dashboard/docs/keycloak/en-v42-18006148753/", - "type": "dir", - "lastModified": "2025-09-26T01:52:05Z" - }, - { - "name": "en-v43-18011536494/", - "href": "/dashboard/docs/keycloak/en-v43-18011536494/", - "type": "dir", - "lastModified": "2025-09-26T01:52:05Z" - }, - { - "name": "en-v44-18011825454/", - "href": "/dashboard/docs/keycloak/en-v44-18011825454/", - "type": "dir", - "lastModified": "2025-09-26T01:52:05Z" - }, - { - "name": "en-v45-18011937887/", - "href": "/dashboard/docs/keycloak/en-v45-18011937887/", - "type": "dir", - "lastModified": "2025-09-26T01:52:05Z" - }, - { - "name": "en-v46-18011951541/", - "href": "/dashboard/docs/keycloak/en-v46-18011951541/", - "type": "dir", - "lastModified": "2025-09-26T01:52:05Z" - }, - { - "name": "en-v47-18013619427/", - "href": "/dashboard/docs/keycloak/en-v47-18013619427/", - "type": "dir", - "lastModified": "2025-09-26T01:52:05Z" - }, - { - "name": "index.html", - "href": "/dashboard/docs/keycloak/index.html", - "type": "file", - "size": 5025, - "lastModified": "2025-09-26T01:52:04Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/keycloak/index.txt", - "type": "file", - "size": 3164, - "lastModified": "2025-09-26T01:52:04Z" - } - ] - }, - { - "path": "dashboard/docs/keycloak/en-v33-17996525102/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/keycloak/en-v33-17996525102/index.html", - "type": "file", - "size": 28811, - "lastModified": "2025-09-26T01:52:04Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/keycloak/en-v33-17996525102/index.txt", - "type": "file", - "size": 15480, - "lastModified": "2025-09-26T01:52:04Z" - } - ] - }, - { - "path": "dashboard/docs/keycloak/en-v34-18001960544/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/keycloak/en-v34-18001960544/index.html", - "type": "file", - "size": 28811, - "lastModified": "2025-09-26T01:52:04Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/keycloak/en-v34-18001960544/index.txt", - "type": "file", - "size": 15480, - "lastModified": "2025-09-26T01:52:04Z" - } - ] - }, - { - "path": "dashboard/docs/keycloak/en-v35-18002040798/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/keycloak/en-v35-18002040798/index.html", - "type": "file", - "size": 28811, - "lastModified": "2025-09-26T01:52:04Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/keycloak/en-v35-18002040798/index.txt", - "type": "file", - "size": 15480, - "lastModified": "2025-09-26T01:52:04Z" - } - ] - }, - { - "path": "dashboard/docs/keycloak/en-v36-18002294267/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/keycloak/en-v36-18002294267/index.html", - "type": "file", - "size": 28811, - "lastModified": "2025-09-26T01:52:05Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/keycloak/en-v36-18002294267/index.txt", - "type": "file", - "size": 15480, - "lastModified": "2025-09-26T01:52:05Z" - } - ] - }, - { - "path": "dashboard/docs/keycloak/en-v39-18004672680/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/keycloak/en-v39-18004672680/index.html", - "type": "file", - "size": 28811, - "lastModified": "2025-09-26T01:52:05Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/keycloak/en-v39-18004672680/index.txt", - "type": "file", - "size": 15480, - "lastModified": "2025-09-26T01:52:05Z" - } - ] - }, - { - "path": "dashboard/docs/keycloak/en-v40-18004678416/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/keycloak/en-v40-18004678416/index.html", - "type": "file", - "size": 28811, - "lastModified": "2025-09-26T01:52:05Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/keycloak/en-v40-18004678416/index.txt", - "type": "file", - "size": 15480, - "lastModified": "2025-09-26T01:52:05Z" - } - ] - }, - { - "path": "dashboard/docs/keycloak/en-v41-18005142964/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/keycloak/en-v41-18005142964/index.html", - "type": "file", - "size": 28811, - "lastModified": "2025-09-26T01:52:05Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/keycloak/en-v41-18005142964/index.txt", - "type": "file", - "size": 15480, - "lastModified": "2025-09-26T01:52:05Z" - } - ] - }, - { - "path": "dashboard/docs/keycloak/en-v42-18006148753/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/keycloak/en-v42-18006148753/index.html", - "type": "file", - "size": 28811, - "lastModified": "2025-09-26T01:52:05Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/keycloak/en-v42-18006148753/index.txt", - "type": "file", - "size": 15480, - "lastModified": "2025-09-26T01:52:05Z" - } - ] - }, - { - "path": "dashboard/docs/keycloak/en-v43-18011536494/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/keycloak/en-v43-18011536494/index.html", - "type": "file", - "size": 28811, - "lastModified": "2025-09-26T01:52:05Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/keycloak/en-v43-18011536494/index.txt", - "type": "file", - "size": 15480, - "lastModified": "2025-09-26T01:52:05Z" - } - ] - }, - { - "path": "dashboard/docs/keycloak/en-v44-18011825454/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/keycloak/en-v44-18011825454/index.html", - "type": "file", - "size": 28811, - "lastModified": "2025-09-26T01:52:05Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/keycloak/en-v44-18011825454/index.txt", - "type": "file", - "size": 15480, - "lastModified": "2025-09-26T01:52:05Z" - } - ] - }, - { - "path": "dashboard/docs/keycloak/en-v45-18011937887/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/keycloak/en-v45-18011937887/index.html", - "type": "file", - "size": 28811, - "lastModified": "2025-09-26T01:52:05Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/keycloak/en-v45-18011937887/index.txt", - "type": "file", - "size": 15480, - "lastModified": "2025-09-26T01:52:05Z" - } - ] - }, - { - "path": "dashboard/docs/keycloak/en-v46-18011951541/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/keycloak/en-v46-18011951541/index.html", - "type": "file", - "size": 28811, - "lastModified": "2025-09-26T01:52:05Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/keycloak/en-v46-18011951541/index.txt", - "type": "file", - "size": 15480, - "lastModified": "2025-09-26T01:52:05Z" - } - ] - }, - { - "path": "dashboard/docs/keycloak/en-v47-18013619427/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/keycloak/en-v47-18013619427/index.html", - "type": "file", - "size": 28811, - "lastModified": "2025-09-26T01:52:05Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/keycloak/en-v47-18013619427/index.txt", - "type": "file", - "size": 15480, - "lastModified": "2025-09-26T01:52:05Z" - } - ] - }, - { - "path": "dashboard/docs/landingzone/", - "entries": [ - { - "name": "en-v33-17996525102/", - "href": "/dashboard/docs/landingzone/en-v33-17996525102/", - "type": "dir", - "lastModified": "2025-09-26T01:52:06Z" - }, - { - "name": "en-v34-18001960544/", - "href": "/dashboard/docs/landingzone/en-v34-18001960544/", - "type": "dir", - "lastModified": "2025-09-26T01:52:06Z" - }, - { - "name": "en-v35-18002040798/", - "href": "/dashboard/docs/landingzone/en-v35-18002040798/", - "type": "dir", - "lastModified": "2025-09-26T01:52:06Z" - }, - { - "name": "en-v36-18002294267/", - "href": "/dashboard/docs/landingzone/en-v36-18002294267/", - "type": "dir", - "lastModified": "2025-09-26T01:52:06Z" - }, - { - "name": "en-v37-18002553627/", - "href": "/dashboard/docs/landingzone/en-v37-18002553627/", - "type": "dir", - "lastModified": "2025-09-26T01:52:06Z" - }, - { - "name": "en-v38-18003957466/", - "href": "/dashboard/docs/landingzone/en-v38-18003957466/", - "type": "dir", - "lastModified": "2025-09-26T01:52:06Z" - }, - { - "name": "en-v39-18004672680/", - "href": "/dashboard/docs/landingzone/en-v39-18004672680/", - "type": "dir", - "lastModified": "2025-09-26T01:52:06Z" - }, - { - "name": "en-v40-18004678416/", - "href": "/dashboard/docs/landingzone/en-v40-18004678416/", - "type": "dir", - "lastModified": "2025-09-26T01:52:06Z" - }, - { - "name": "en-v41-18005142964/", - "href": "/dashboard/docs/landingzone/en-v41-18005142964/", - "type": "dir", - "lastModified": "2025-09-26T01:52:06Z" - }, - { - "name": "en-v42-18006148753/", - "href": "/dashboard/docs/landingzone/en-v42-18006148753/", - "type": "dir", - "lastModified": "2025-09-26T01:52:07Z" - }, - { - "name": "en-v43-18011536494/", - "href": "/dashboard/docs/landingzone/en-v43-18011536494/", - "type": "dir", - "lastModified": "2025-09-26T01:52:07Z" - }, - { - "name": "en-v44-18011825454/", - "href": "/dashboard/docs/landingzone/en-v44-18011825454/", - "type": "dir", - "lastModified": "2025-09-26T01:52:07Z" - }, - { - "name": "en-v45-18011937887/", - "href": "/dashboard/docs/landingzone/en-v45-18011937887/", - "type": "dir", - "lastModified": "2025-09-26T01:52:07Z" - }, - { - "name": "en-v46-18011951541/", - "href": "/dashboard/docs/landingzone/en-v46-18011951541/", - "type": "dir", - "lastModified": "2025-09-26T01:52:07Z" - }, - { - "name": "en-v47-18013619427/", - "href": "/dashboard/docs/landingzone/en-v47-18013619427/", - "type": "dir", - "lastModified": "2025-09-26T01:52:07Z" - }, - { - "name": "index.html", - "href": "/dashboard/docs/landingzone/index.html", - "type": "file", - "size": 5043, - "lastModified": "2025-09-26T01:52:05Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/landingzone/index.txt", - "type": "file", - "size": 3179, - "lastModified": "2025-09-26T01:52:06Z" - } - ] - }, - { - "path": "dashboard/docs/landingzone/en-v33-17996525102/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/landingzone/en-v33-17996525102/index.html", - "type": "file", - "size": 31080, - "lastModified": "2025-09-26T01:52:06Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/landingzone/en-v33-17996525102/index.txt", - "type": "file", - "size": 17352, - "lastModified": "2025-09-26T01:52:06Z" - } - ] - }, - { - "path": "dashboard/docs/landingzone/en-v34-18001960544/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/landingzone/en-v34-18001960544/index.html", - "type": "file", - "size": 31080, - "lastModified": "2025-09-26T01:52:06Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/landingzone/en-v34-18001960544/index.txt", - "type": "file", - "size": 17352, - "lastModified": "2025-09-26T01:52:06Z" - } - ] - }, - { - "path": "dashboard/docs/landingzone/en-v35-18002040798/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/landingzone/en-v35-18002040798/index.html", - "type": "file", - "size": 31080, - "lastModified": "2025-09-26T01:52:06Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/landingzone/en-v35-18002040798/index.txt", - "type": "file", - "size": 17352, - "lastModified": "2025-09-26T01:52:06Z" - } - ] - }, - { - "path": "dashboard/docs/landingzone/en-v36-18002294267/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/landingzone/en-v36-18002294267/index.html", - "type": "file", - "size": 31080, - "lastModified": "2025-09-26T01:52:06Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/landingzone/en-v36-18002294267/index.txt", - "type": "file", - "size": 17352, - "lastModified": "2025-09-26T01:52:06Z" - } - ] - }, - { - "path": "dashboard/docs/landingzone/en-v37-18002553627/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/landingzone/en-v37-18002553627/index.html", - "type": "file", - "size": 31080, - "lastModified": "2025-09-26T01:52:06Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/landingzone/en-v37-18002553627/index.txt", - "type": "file", - "size": 17352, - "lastModified": "2025-09-26T01:52:06Z" - } - ] - }, - { - "path": "dashboard/docs/landingzone/en-v38-18003957466/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/landingzone/en-v38-18003957466/index.html", - "type": "file", - "size": 31080, - "lastModified": "2025-09-26T01:52:06Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/landingzone/en-v38-18003957466/index.txt", - "type": "file", - "size": 17352, - "lastModified": "2025-09-26T01:52:06Z" - } - ] - }, - { - "path": "dashboard/docs/landingzone/en-v39-18004672680/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/landingzone/en-v39-18004672680/index.html", - "type": "file", - "size": 31080, - "lastModified": "2025-09-26T01:52:06Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/landingzone/en-v39-18004672680/index.txt", - "type": "file", - "size": 17352, - "lastModified": "2025-09-26T01:52:06Z" - } - ] - }, - { - "path": "dashboard/docs/landingzone/en-v40-18004678416/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/landingzone/en-v40-18004678416/index.html", - "type": "file", - "size": 31080, - "lastModified": "2025-09-26T01:52:06Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/landingzone/en-v40-18004678416/index.txt", - "type": "file", - "size": 17352, - "lastModified": "2025-09-26T01:52:06Z" - } - ] - }, - { - "path": "dashboard/docs/landingzone/en-v41-18005142964/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/landingzone/en-v41-18005142964/index.html", - "type": "file", - "size": 31080, - "lastModified": "2025-09-26T01:52:06Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/landingzone/en-v41-18005142964/index.txt", - "type": "file", - "size": 17352, - "lastModified": "2025-09-26T01:52:06Z" - } - ] - }, - { - "path": "dashboard/docs/landingzone/en-v42-18006148753/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/landingzone/en-v42-18006148753/index.html", - "type": "file", - "size": 31080, - "lastModified": "2025-09-26T01:52:06Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/landingzone/en-v42-18006148753/index.txt", - "type": "file", - "size": 17352, - "lastModified": "2025-09-26T01:52:07Z" - } - ] - }, - { - "path": "dashboard/docs/landingzone/en-v43-18011536494/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/landingzone/en-v43-18011536494/index.html", - "type": "file", - "size": 31080, - "lastModified": "2025-09-26T01:52:07Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/landingzone/en-v43-18011536494/index.txt", - "type": "file", - "size": 17352, - "lastModified": "2025-09-26T01:52:07Z" - } - ] - }, - { - "path": "dashboard/docs/landingzone/en-v44-18011825454/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/landingzone/en-v44-18011825454/index.html", - "type": "file", - "size": 31080, - "lastModified": "2025-09-26T01:52:07Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/landingzone/en-v44-18011825454/index.txt", - "type": "file", - "size": 17352, - "lastModified": "2025-09-26T01:52:07Z" - } - ] - }, - { - "path": "dashboard/docs/landingzone/en-v45-18011937887/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/landingzone/en-v45-18011937887/index.html", - "type": "file", - "size": 31080, - "lastModified": "2025-09-26T01:52:07Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/landingzone/en-v45-18011937887/index.txt", - "type": "file", - "size": 17352, - "lastModified": "2025-09-26T01:52:07Z" - } - ] - }, - { - "path": "dashboard/docs/landingzone/en-v46-18011951541/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/landingzone/en-v46-18011951541/index.html", - "type": "file", - "size": 31080, - "lastModified": "2025-09-26T01:52:07Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/landingzone/en-v46-18011951541/index.txt", - "type": "file", - "size": 17352, - "lastModified": "2025-09-26T01:52:07Z" - } - ] - }, - { - "path": "dashboard/docs/landingzone/en-v47-18013619427/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/landingzone/en-v47-18013619427/index.html", - "type": "file", - "size": 31080, - "lastModified": "2025-09-26T01:52:07Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/landingzone/en-v47-18013619427/index.txt", - "type": "file", - "size": 17352, - "lastModified": "2025-09-26T01:52:07Z" - } - ] - }, - { - "path": "dashboard/docs/linux-k8s-ops/", - "entries": [ - { - "name": "cn-v33-17996525102/", - "href": "/dashboard/docs/linux-k8s-ops/cn-v33-17996525102/", - "type": "dir", - "lastModified": "2025-09-26T01:52:07Z" - }, - { - "name": "cn-v39-18004672680/", - "href": "/dashboard/docs/linux-k8s-ops/cn-v39-18004672680/", - "type": "dir", - "lastModified": "2025-09-26T01:52:07Z" - }, - { - "name": "cn-v40-18004678416/", - "href": "/dashboard/docs/linux-k8s-ops/cn-v40-18004678416/", - "type": "dir", - "lastModified": "2025-09-26T01:52:07Z" - }, - { - "name": "cn-v41-18005142964/", - "href": "/dashboard/docs/linux-k8s-ops/cn-v41-18005142964/", - "type": "dir", - "lastModified": "2025-09-26T01:52:07Z" - }, - { - "name": "cn-v42-18006148753/", - "href": "/dashboard/docs/linux-k8s-ops/cn-v42-18006148753/", - "type": "dir", - "lastModified": "2025-09-26T01:52:08Z" - }, - { - "name": "cn-v43-18011536494/", - "href": "/dashboard/docs/linux-k8s-ops/cn-v43-18011536494/", - "type": "dir", - "lastModified": "2025-09-26T01:52:08Z" - }, - { - "name": "cn-v44-18011825454/", - "href": "/dashboard/docs/linux-k8s-ops/cn-v44-18011825454/", - "type": "dir", - "lastModified": "2025-09-26T01:52:08Z" - }, - { - "name": "cn-v45-18011937887/", - "href": "/dashboard/docs/linux-k8s-ops/cn-v45-18011937887/", - "type": "dir", - "lastModified": "2025-09-26T01:52:08Z" - }, - { - "name": "cn-v46-18011951541/", - "href": "/dashboard/docs/linux-k8s-ops/cn-v46-18011951541/", - "type": "dir", - "lastModified": "2025-09-26T01:52:08Z" - }, - { - "name": "cn-v47-18013619427/", - "href": "/dashboard/docs/linux-k8s-ops/cn-v47-18013619427/", - "type": "dir", - "lastModified": "2025-09-26T01:52:08Z" - }, - { - "name": "index.html", - "href": "/dashboard/docs/linux-k8s-ops/index.html", - "type": "file", - "size": 5055, - "lastModified": "2025-09-26T01:52:07Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/linux-k8s-ops/index.txt", - "type": "file", - "size": 3189, - "lastModified": "2025-09-26T01:52:07Z" - } - ] - }, - { - "path": "dashboard/docs/linux-k8s-ops/cn-v33-17996525102/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/linux-k8s-ops/cn-v33-17996525102/index.html", - "type": "file", - "size": 27170, - "lastModified": "2025-09-26T01:52:07Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/linux-k8s-ops/cn-v33-17996525102/index.txt", - "type": "file", - "size": 13650, - "lastModified": "2025-09-26T01:52:07Z" - } - ] - }, - { - "path": "dashboard/docs/linux-k8s-ops/cn-v39-18004672680/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/linux-k8s-ops/cn-v39-18004672680/index.html", - "type": "file", - "size": 27170, - "lastModified": "2025-09-26T01:52:07Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/linux-k8s-ops/cn-v39-18004672680/index.txt", - "type": "file", - "size": 13650, - "lastModified": "2025-09-26T01:52:07Z" - } - ] - }, - { - "path": "dashboard/docs/linux-k8s-ops/cn-v40-18004678416/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/linux-k8s-ops/cn-v40-18004678416/index.html", - "type": "file", - "size": 27170, - "lastModified": "2025-09-26T01:52:07Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/linux-k8s-ops/cn-v40-18004678416/index.txt", - "type": "file", - "size": 13650, - "lastModified": "2025-09-26T01:52:07Z" - } - ] - }, - { - "path": "dashboard/docs/linux-k8s-ops/cn-v41-18005142964/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/linux-k8s-ops/cn-v41-18005142964/index.html", - "type": "file", - "size": 27170, - "lastModified": "2025-09-26T01:52:07Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/linux-k8s-ops/cn-v41-18005142964/index.txt", - "type": "file", - "size": 13650, - "lastModified": "2025-09-26T01:52:07Z" - } - ] - }, - { - "path": "dashboard/docs/linux-k8s-ops/cn-v42-18006148753/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/linux-k8s-ops/cn-v42-18006148753/index.html", - "type": "file", - "size": 27170, - "lastModified": "2025-09-26T01:52:08Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/linux-k8s-ops/cn-v42-18006148753/index.txt", - "type": "file", - "size": 13650, - "lastModified": "2025-09-26T01:52:08Z" - } - ] - }, - { - "path": "dashboard/docs/linux-k8s-ops/cn-v43-18011536494/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/linux-k8s-ops/cn-v43-18011536494/index.html", - "type": "file", - "size": 27170, - "lastModified": "2025-09-26T01:52:08Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/linux-k8s-ops/cn-v43-18011536494/index.txt", - "type": "file", - "size": 13650, - "lastModified": "2025-09-26T01:52:08Z" - } - ] - }, - { - "path": "dashboard/docs/linux-k8s-ops/cn-v44-18011825454/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/linux-k8s-ops/cn-v44-18011825454/index.html", - "type": "file", - "size": 27170, - "lastModified": "2025-09-26T01:52:08Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/linux-k8s-ops/cn-v44-18011825454/index.txt", - "type": "file", - "size": 13650, - "lastModified": "2025-09-26T01:52:08Z" - } - ] - }, - { - "path": "dashboard/docs/linux-k8s-ops/cn-v45-18011937887/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/linux-k8s-ops/cn-v45-18011937887/index.html", - "type": "file", - "size": 27170, - "lastModified": "2025-09-26T01:52:08Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/linux-k8s-ops/cn-v45-18011937887/index.txt", - "type": "file", - "size": 13650, - "lastModified": "2025-09-26T01:52:08Z" - } - ] - }, - { - "path": "dashboard/docs/linux-k8s-ops/cn-v46-18011951541/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/linux-k8s-ops/cn-v46-18011951541/index.html", - "type": "file", - "size": 27170, - "lastModified": "2025-09-26T01:52:08Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/linux-k8s-ops/cn-v46-18011951541/index.txt", - "type": "file", - "size": 13650, - "lastModified": "2025-09-26T01:52:08Z" - } - ] - }, - { - "path": "dashboard/docs/linux-k8s-ops/cn-v47-18013619427/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/linux-k8s-ops/cn-v47-18013619427/index.html", - "type": "file", - "size": 27170, - "lastModified": "2025-09-26T01:52:08Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/linux-k8s-ops/cn-v47-18013619427/index.txt", - "type": "file", - "size": 13650, - "lastModified": "2025-09-26T01:52:08Z" - } - ] - }, - { - "path": "dashboard/docs/observability/", - "entries": [ - { - "name": "cn-v33-17996525102/", - "href": "/dashboard/docs/observability/cn-v33-17996525102/", - "type": "dir", - "lastModified": "2025-09-26T01:52:08Z" - }, - { - "name": "cn-v36-18002294267/", - "href": "/dashboard/docs/observability/cn-v36-18002294267/", - "type": "dir", - "lastModified": "2025-09-26T01:52:08Z" - }, - { - "name": "cn-v37-18002553627/", - "href": "/dashboard/docs/observability/cn-v37-18002553627/", - "type": "dir", - "lastModified": "2025-09-26T01:52:09Z" - }, - { - "name": "cn-v39-18004672680/", - "href": "/dashboard/docs/observability/cn-v39-18004672680/", - "type": "dir", - "lastModified": "2025-09-26T01:52:09Z" - }, - { - "name": "cn-v40-18004678416/", - "href": "/dashboard/docs/observability/cn-v40-18004678416/", - "type": "dir", - "lastModified": "2025-09-26T01:52:09Z" - }, - { - "name": "cn-v41-18005142964/", - "href": "/dashboard/docs/observability/cn-v41-18005142964/", - "type": "dir", - "lastModified": "2025-09-26T01:52:09Z" - }, - { - "name": "cn-v42-18006148753/", - "href": "/dashboard/docs/observability/cn-v42-18006148753/", - "type": "dir", - "lastModified": "2025-09-26T01:52:09Z" - }, - { - "name": "cn-v43-18011536494/", - "href": "/dashboard/docs/observability/cn-v43-18011536494/", - "type": "dir", - "lastModified": "2025-09-26T01:52:09Z" - }, - { - "name": "cn-v44-18011825454/", - "href": "/dashboard/docs/observability/cn-v44-18011825454/", - "type": "dir", - "lastModified": "2025-09-26T01:52:09Z" - }, - { - "name": "cn-v45-18011937887/", - "href": "/dashboard/docs/observability/cn-v45-18011937887/", - "type": "dir", - "lastModified": "2025-09-26T01:52:09Z" - }, - { - "name": "cn-v46-18011951541/", - "href": "/dashboard/docs/observability/cn-v46-18011951541/", - "type": "dir", - "lastModified": "2025-09-26T01:52:09Z" - }, - { - "name": "cn-v47-18013619427/", - "href": "/dashboard/docs/observability/cn-v47-18013619427/", - "type": "dir", - "lastModified": "2025-09-26T01:52:09Z" - }, - { - "name": "index.html", - "href": "/dashboard/docs/observability/index.html", - "type": "file", - "size": 5055, - "lastModified": "2025-09-26T01:52:08Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/observability/index.txt", - "type": "file", - "size": 3189, - "lastModified": "2025-09-26T01:52:08Z" - } - ] - }, - { - "path": "dashboard/docs/observability/cn-v33-17996525102/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/observability/cn-v33-17996525102/index.html", - "type": "file", - "size": 30896, - "lastModified": "2025-09-26T01:52:08Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/observability/cn-v33-17996525102/index.txt", - "type": "file", - "size": 16732, - "lastModified": "2025-09-26T01:52:08Z" - } - ] - }, - { - "path": "dashboard/docs/observability/cn-v36-18002294267/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/observability/cn-v36-18002294267/index.html", - "type": "file", - "size": 30896, - "lastModified": "2025-09-26T01:52:08Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/observability/cn-v36-18002294267/index.txt", - "type": "file", - "size": 16732, - "lastModified": "2025-09-26T01:52:08Z" - } - ] - }, - { - "path": "dashboard/docs/observability/cn-v37-18002553627/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/observability/cn-v37-18002553627/index.html", - "type": "file", - "size": 30896, - "lastModified": "2025-09-26T01:52:08Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/observability/cn-v37-18002553627/index.txt", - "type": "file", - "size": 16732, - "lastModified": "2025-09-26T01:52:09Z" - } - ] - }, - { - "path": "dashboard/docs/observability/cn-v39-18004672680/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/observability/cn-v39-18004672680/index.html", - "type": "file", - "size": 30896, - "lastModified": "2025-09-26T01:52:09Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/observability/cn-v39-18004672680/index.txt", - "type": "file", - "size": 16732, - "lastModified": "2025-09-26T01:52:09Z" - } - ] - }, - { - "path": "dashboard/docs/observability/cn-v40-18004678416/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/observability/cn-v40-18004678416/index.html", - "type": "file", - "size": 30896, - "lastModified": "2025-09-26T01:52:09Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/observability/cn-v40-18004678416/index.txt", - "type": "file", - "size": 16732, - "lastModified": "2025-09-26T01:52:09Z" - } - ] - }, - { - "path": "dashboard/docs/observability/cn-v41-18005142964/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/observability/cn-v41-18005142964/index.html", - "type": "file", - "size": 30896, - "lastModified": "2025-09-26T01:52:09Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/observability/cn-v41-18005142964/index.txt", - "type": "file", - "size": 16732, - "lastModified": "2025-09-26T01:52:09Z" - } - ] - }, - { - "path": "dashboard/docs/observability/cn-v42-18006148753/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/observability/cn-v42-18006148753/index.html", - "type": "file", - "size": 30896, - "lastModified": "2025-09-26T01:52:09Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/observability/cn-v42-18006148753/index.txt", - "type": "file", - "size": 16732, - "lastModified": "2025-09-26T01:52:09Z" - } - ] - }, - { - "path": "dashboard/docs/observability/cn-v43-18011536494/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/observability/cn-v43-18011536494/index.html", - "type": "file", - "size": 30896, - "lastModified": "2025-09-26T01:52:09Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/observability/cn-v43-18011536494/index.txt", - "type": "file", - "size": 16732, - "lastModified": "2025-09-26T01:52:09Z" - } - ] - }, - { - "path": "dashboard/docs/observability/cn-v44-18011825454/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/observability/cn-v44-18011825454/index.html", - "type": "file", - "size": 30896, - "lastModified": "2025-09-26T01:52:09Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/observability/cn-v44-18011825454/index.txt", - "type": "file", - "size": 16732, - "lastModified": "2025-09-26T01:52:09Z" - } - ] - }, - { - "path": "dashboard/docs/observability/cn-v45-18011937887/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/observability/cn-v45-18011937887/index.html", - "type": "file", - "size": 30896, - "lastModified": "2025-09-26T01:52:09Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/observability/cn-v45-18011937887/index.txt", - "type": "file", - "size": 16732, - "lastModified": "2025-09-26T01:52:09Z" - } - ] - }, - { - "path": "dashboard/docs/observability/cn-v46-18011951541/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/observability/cn-v46-18011951541/index.html", - "type": "file", - "size": 30896, - "lastModified": "2025-09-26T01:52:09Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/observability/cn-v46-18011951541/index.txt", - "type": "file", - "size": 16732, - "lastModified": "2025-09-26T01:52:09Z" - } - ] - }, - { - "path": "dashboard/docs/observability/cn-v47-18013619427/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/observability/cn-v47-18013619427/index.html", - "type": "file", - "size": 30896, - "lastModified": "2025-09-26T01:52:09Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/observability/cn-v47-18013619427/index.txt", - "type": "file", - "size": 16732, - "lastModified": "2025-09-26T01:52:09Z" - } - ] - }, - { - "path": "dashboard/docs/personal/", - "entries": [ - { - "name": "en-v33-17996525102/", - "href": "/dashboard/docs/personal/en-v33-17996525102/", - "type": "dir", - "lastModified": "2025-09-26T01:52:11Z" - }, - { - "name": "en-v33-17996525102-10/", - "href": "/dashboard/docs/personal/en-v33-17996525102-10/", - "type": "dir", - "lastModified": "2025-09-26T01:52:10Z" - }, - { - "name": "en-v33-17996525102-11/", - "href": "/dashboard/docs/personal/en-v33-17996525102-11/", - "type": "dir", - "lastModified": "2025-09-26T01:52:10Z" - }, - { - "name": "en-v33-17996525102-12/", - "href": "/dashboard/docs/personal/en-v33-17996525102-12/", - "type": "dir", - "lastModified": "2025-09-26T01:52:10Z" - }, - { - "name": "en-v33-17996525102-2/", - "href": "/dashboard/docs/personal/en-v33-17996525102-2/", - "type": "dir", - "lastModified": "2025-09-26T01:52:10Z" - }, - { - "name": "en-v33-17996525102-3/", - "href": "/dashboard/docs/personal/en-v33-17996525102-3/", - "type": "dir", - "lastModified": "2025-09-26T01:52:10Z" - }, - { - "name": "en-v33-17996525102-4/", - "href": "/dashboard/docs/personal/en-v33-17996525102-4/", - "type": "dir", - "lastModified": "2025-09-26T01:52:10Z" - }, - { - "name": "en-v33-17996525102-5/", - "href": "/dashboard/docs/personal/en-v33-17996525102-5/", - "type": "dir", - "lastModified": "2025-09-26T01:52:10Z" - }, - { - "name": "en-v33-17996525102-6/", - "href": "/dashboard/docs/personal/en-v33-17996525102-6/", - "type": "dir", - "lastModified": "2025-09-26T01:52:10Z" - }, - { - "name": "en-v33-17996525102-7/", - "href": "/dashboard/docs/personal/en-v33-17996525102-7/", - "type": "dir", - "lastModified": "2025-09-26T01:52:11Z" - }, - { - "name": "en-v33-17996525102-8/", - "href": "/dashboard/docs/personal/en-v33-17996525102-8/", - "type": "dir", - "lastModified": "2025-09-26T01:52:11Z" - }, - { - "name": "en-v33-17996525102-9/", - "href": "/dashboard/docs/personal/en-v33-17996525102-9/", - "type": "dir", - "lastModified": "2025-09-26T01:52:11Z" - }, - { - "name": "en-v34-18001960544/", - "href": "/dashboard/docs/personal/en-v34-18001960544/", - "type": "dir", - "lastModified": "2025-09-26T01:52:12Z" - }, - { - "name": "en-v34-18001960544-10/", - "href": "/dashboard/docs/personal/en-v34-18001960544-10/", - "type": "dir", - "lastModified": "2025-09-26T01:52:11Z" - }, - { - "name": "en-v34-18001960544-11/", - "href": "/dashboard/docs/personal/en-v34-18001960544-11/", - "type": "dir", - "lastModified": "2025-09-26T01:52:11Z" - }, - { - "name": "en-v34-18001960544-12/", - "href": "/dashboard/docs/personal/en-v34-18001960544-12/", - "type": "dir", - "lastModified": "2025-09-26T01:52:11Z" - }, - { - "name": "en-v34-18001960544-2/", - "href": "/dashboard/docs/personal/en-v34-18001960544-2/", - "type": "dir", - "lastModified": "2025-09-26T01:52:11Z" - }, - { - "name": "en-v34-18001960544-3/", - "href": "/dashboard/docs/personal/en-v34-18001960544-3/", - "type": "dir", - "lastModified": "2025-09-26T01:52:11Z" - }, - { - "name": "en-v34-18001960544-4/", - "href": "/dashboard/docs/personal/en-v34-18001960544-4/", - "type": "dir", - "lastModified": "2025-09-26T01:52:11Z" - }, - { - "name": "en-v34-18001960544-5/", - "href": "/dashboard/docs/personal/en-v34-18001960544-5/", - "type": "dir", - "lastModified": "2025-09-26T01:52:12Z" - }, - { - "name": "en-v34-18001960544-6/", - "href": "/dashboard/docs/personal/en-v34-18001960544-6/", - "type": "dir", - "lastModified": "2025-09-26T01:52:12Z" - }, - { - "name": "en-v34-18001960544-7/", - "href": "/dashboard/docs/personal/en-v34-18001960544-7/", - "type": "dir", - "lastModified": "2025-09-26T01:52:12Z" - }, - { - "name": "en-v34-18001960544-8/", - "href": "/dashboard/docs/personal/en-v34-18001960544-8/", - "type": "dir", - "lastModified": "2025-09-26T01:52:12Z" - }, - { - "name": "en-v34-18001960544-9/", - "href": "/dashboard/docs/personal/en-v34-18001960544-9/", - "type": "dir", - "lastModified": "2025-09-26T01:52:12Z" - }, - { - "name": "en-v36-18002294267/", - "href": "/dashboard/docs/personal/en-v36-18002294267/", - "type": "dir", - "lastModified": "2025-09-26T01:52:13Z" - }, - { - "name": "en-v36-18002294267-10/", - "href": "/dashboard/docs/personal/en-v36-18002294267-10/", - "type": "dir", - "lastModified": "2025-09-26T01:52:12Z" - }, - { - "name": "en-v36-18002294267-11/", - "href": "/dashboard/docs/personal/en-v36-18002294267-11/", - "type": "dir", - "lastModified": "2025-09-26T01:52:12Z" - }, - { - "name": "en-v36-18002294267-12/", - "href": "/dashboard/docs/personal/en-v36-18002294267-12/", - "type": "dir", - "lastModified": "2025-09-26T01:52:12Z" - }, - { - "name": "en-v36-18002294267-2/", - "href": "/dashboard/docs/personal/en-v36-18002294267-2/", - "type": "dir", - "lastModified": "2025-09-26T01:52:13Z" - }, - { - "name": "en-v36-18002294267-3/", - "href": "/dashboard/docs/personal/en-v36-18002294267-3/", - "type": "dir", - "lastModified": "2025-09-26T01:52:13Z" - }, - { - "name": "en-v36-18002294267-4/", - "href": "/dashboard/docs/personal/en-v36-18002294267-4/", - "type": "dir", - "lastModified": "2025-09-26T01:52:13Z" - }, - { - "name": "en-v36-18002294267-5/", - "href": "/dashboard/docs/personal/en-v36-18002294267-5/", - "type": "dir", - "lastModified": "2025-09-26T01:52:13Z" - }, - { - "name": "en-v36-18002294267-6/", - "href": "/dashboard/docs/personal/en-v36-18002294267-6/", - "type": "dir", - "lastModified": "2025-09-26T01:52:13Z" - }, - { - "name": "en-v36-18002294267-7/", - "href": "/dashboard/docs/personal/en-v36-18002294267-7/", - "type": "dir", - "lastModified": "2025-09-26T01:52:13Z" - }, - { - "name": "en-v36-18002294267-8/", - "href": "/dashboard/docs/personal/en-v36-18002294267-8/", - "type": "dir", - "lastModified": "2025-09-26T01:52:13Z" - }, - { - "name": "en-v36-18002294267-9/", - "href": "/dashboard/docs/personal/en-v36-18002294267-9/", - "type": "dir", - "lastModified": "2025-09-26T01:52:13Z" - }, - { - "name": "en-v37-18002553627/", - "href": "/dashboard/docs/personal/en-v37-18002553627/", - "type": "dir", - "lastModified": "2025-09-26T01:52:15Z" - }, - { - "name": "en-v37-18002553627-10/", - "href": "/dashboard/docs/personal/en-v37-18002553627-10/", - "type": "dir", - "lastModified": "2025-09-26T01:52:14Z" - }, - { - "name": "en-v37-18002553627-11/", - "href": "/dashboard/docs/personal/en-v37-18002553627-11/", - "type": "dir", - "lastModified": "2025-09-26T01:52:14Z" - }, - { - "name": "en-v37-18002553627-12/", - "href": "/dashboard/docs/personal/en-v37-18002553627-12/", - "type": "dir", - "lastModified": "2025-09-26T01:52:14Z" - }, - { - "name": "en-v37-18002553627-2/", - "href": "/dashboard/docs/personal/en-v37-18002553627-2/", - "type": "dir", - "lastModified": "2025-09-26T01:52:14Z" - }, - { - "name": "en-v37-18002553627-3/", - "href": "/dashboard/docs/personal/en-v37-18002553627-3/", - "type": "dir", - "lastModified": "2025-09-26T01:52:14Z" - }, - { - "name": "en-v37-18002553627-4/", - "href": "/dashboard/docs/personal/en-v37-18002553627-4/", - "type": "dir", - "lastModified": "2025-09-26T01:52:14Z" - }, - { - "name": "en-v37-18002553627-5/", - "href": "/dashboard/docs/personal/en-v37-18002553627-5/", - "type": "dir", - "lastModified": "2025-09-26T01:52:14Z" - }, - { - "name": "en-v37-18002553627-6/", - "href": "/dashboard/docs/personal/en-v37-18002553627-6/", - "type": "dir", - "lastModified": "2025-09-26T01:52:14Z" - }, - { - "name": "en-v37-18002553627-7/", - "href": "/dashboard/docs/personal/en-v37-18002553627-7/", - "type": "dir", - "lastModified": "2025-09-26T01:52:14Z" - }, - { - "name": "en-v37-18002553627-8/", - "href": "/dashboard/docs/personal/en-v37-18002553627-8/", - "type": "dir", - "lastModified": "2025-09-26T01:52:14Z" - }, - { - "name": "en-v37-18002553627-9/", - "href": "/dashboard/docs/personal/en-v37-18002553627-9/", - "type": "dir", - "lastModified": "2025-09-26T01:52:15Z" - }, - { - "name": "en-v39-18004672680/", - "href": "/dashboard/docs/personal/en-v39-18004672680/", - "type": "dir", - "lastModified": "2025-09-26T01:52:16Z" - }, - { - "name": "en-v39-18004672680-10/", - "href": "/dashboard/docs/personal/en-v39-18004672680-10/", - "type": "dir", - "lastModified": "2025-09-26T01:52:15Z" - }, - { - "name": "en-v39-18004672680-11/", - "href": "/dashboard/docs/personal/en-v39-18004672680-11/", - "type": "dir", - "lastModified": "2025-09-26T01:52:15Z" - }, - { - "name": "en-v39-18004672680-12/", - "href": "/dashboard/docs/personal/en-v39-18004672680-12/", - "type": "dir", - "lastModified": "2025-09-26T01:52:15Z" - }, - { - "name": "en-v39-18004672680-2/", - "href": "/dashboard/docs/personal/en-v39-18004672680-2/", - "type": "dir", - "lastModified": "2025-09-26T01:52:15Z" - }, - { - "name": "en-v39-18004672680-3/", - "href": "/dashboard/docs/personal/en-v39-18004672680-3/", - "type": "dir", - "lastModified": "2025-09-26T01:52:15Z" - }, - { - "name": "en-v39-18004672680-4/", - "href": "/dashboard/docs/personal/en-v39-18004672680-4/", - "type": "dir", - "lastModified": "2025-09-26T01:52:15Z" - }, - { - "name": "en-v39-18004672680-5/", - "href": "/dashboard/docs/personal/en-v39-18004672680-5/", - "type": "dir", - "lastModified": "2025-09-26T01:52:16Z" - }, - { - "name": "en-v39-18004672680-6/", - "href": "/dashboard/docs/personal/en-v39-18004672680-6/", - "type": "dir", - "lastModified": "2025-09-26T01:52:16Z" - }, - { - "name": "en-v39-18004672680-7/", - "href": "/dashboard/docs/personal/en-v39-18004672680-7/", - "type": "dir", - "lastModified": "2025-09-26T01:52:16Z" - }, - { - "name": "en-v39-18004672680-8/", - "href": "/dashboard/docs/personal/en-v39-18004672680-8/", - "type": "dir", - "lastModified": "2025-09-26T01:52:16Z" - }, - { - "name": "en-v39-18004672680-9/", - "href": "/dashboard/docs/personal/en-v39-18004672680-9/", - "type": "dir", - "lastModified": "2025-09-26T01:52:16Z" - }, - { - "name": "en-v40-18004678416/", - "href": "/dashboard/docs/personal/en-v40-18004678416/", - "type": "dir", - "lastModified": "2025-09-26T01:52:17Z" - }, - { - "name": "en-v40-18004678416-10/", - "href": "/dashboard/docs/personal/en-v40-18004678416-10/", - "type": "dir", - "lastModified": "2025-09-26T01:52:16Z" - }, - { - "name": "en-v40-18004678416-11/", - "href": "/dashboard/docs/personal/en-v40-18004678416-11/", - "type": "dir", - "lastModified": "2025-09-26T01:52:16Z" - }, - { - "name": "en-v40-18004678416-12/", - "href": "/dashboard/docs/personal/en-v40-18004678416-12/", - "type": "dir", - "lastModified": "2025-09-26T01:52:16Z" - }, - { - "name": "en-v40-18004678416-2/", - "href": "/dashboard/docs/personal/en-v40-18004678416-2/", - "type": "dir", - "lastModified": "2025-09-26T01:52:16Z" - }, - { - "name": "en-v40-18004678416-3/", - "href": "/dashboard/docs/personal/en-v40-18004678416-3/", - "type": "dir", - "lastModified": "2025-09-26T01:52:17Z" - }, - { - "name": "en-v40-18004678416-4/", - "href": "/dashboard/docs/personal/en-v40-18004678416-4/", - "type": "dir", - "lastModified": "2025-09-26T01:52:17Z" - }, - { - "name": "en-v40-18004678416-5/", - "href": "/dashboard/docs/personal/en-v40-18004678416-5/", - "type": "dir", - "lastModified": "2025-09-26T01:52:17Z" - }, - { - "name": "en-v40-18004678416-6/", - "href": "/dashboard/docs/personal/en-v40-18004678416-6/", - "type": "dir", - "lastModified": "2025-09-26T01:52:17Z" - }, - { - "name": "en-v40-18004678416-7/", - "href": "/dashboard/docs/personal/en-v40-18004678416-7/", - "type": "dir", - "lastModified": "2025-09-26T01:52:17Z" - }, - { - "name": "en-v40-18004678416-8/", - "href": "/dashboard/docs/personal/en-v40-18004678416-8/", - "type": "dir", - "lastModified": "2025-09-26T01:52:17Z" - }, - { - "name": "en-v40-18004678416-9/", - "href": "/dashboard/docs/personal/en-v40-18004678416-9/", - "type": "dir", - "lastModified": "2025-09-26T01:52:17Z" - }, - { - "name": "en-v41-18005142964/", - "href": "/dashboard/docs/personal/en-v41-18005142964/", - "type": "dir", - "lastModified": "2025-09-26T01:52:19Z" - }, - { - "name": "en-v41-18005142964-10/", - "href": "/dashboard/docs/personal/en-v41-18005142964-10/", - "type": "dir", - "lastModified": "2025-09-26T01:52:17Z" - }, - { - "name": "en-v41-18005142964-11/", - "href": "/dashboard/docs/personal/en-v41-18005142964-11/", - "type": "dir", - "lastModified": "2025-09-26T01:52:18Z" - }, - { - "name": "en-v41-18005142964-12/", - "href": "/dashboard/docs/personal/en-v41-18005142964-12/", - "type": "dir", - "lastModified": "2025-09-26T01:52:18Z" - }, - { - "name": "en-v41-18005142964-2/", - "href": "/dashboard/docs/personal/en-v41-18005142964-2/", - "type": "dir", - "lastModified": "2025-09-26T01:52:18Z" - }, - { - "name": "en-v41-18005142964-3/", - "href": "/dashboard/docs/personal/en-v41-18005142964-3/", - "type": "dir", - "lastModified": "2025-09-26T01:52:18Z" - }, - { - "name": "en-v41-18005142964-4/", - "href": "/dashboard/docs/personal/en-v41-18005142964-4/", - "type": "dir", - "lastModified": "2025-09-26T01:52:18Z" - }, - { - "name": "en-v41-18005142964-5/", - "href": "/dashboard/docs/personal/en-v41-18005142964-5/", - "type": "dir", - "lastModified": "2025-09-26T01:52:18Z" - }, - { - "name": "en-v41-18005142964-6/", - "href": "/dashboard/docs/personal/en-v41-18005142964-6/", - "type": "dir", - "lastModified": "2025-09-26T01:52:18Z" - }, - { - "name": "en-v41-18005142964-7/", - "href": "/dashboard/docs/personal/en-v41-18005142964-7/", - "type": "dir", - "lastModified": "2025-09-26T01:52:18Z" - }, - { - "name": "en-v41-18005142964-8/", - "href": "/dashboard/docs/personal/en-v41-18005142964-8/", - "type": "dir", - "lastModified": "2025-09-26T01:52:18Z" - }, - { - "name": "en-v41-18005142964-9/", - "href": "/dashboard/docs/personal/en-v41-18005142964-9/", - "type": "dir", - "lastModified": "2025-09-26T01:52:18Z" - }, - { - "name": "en-v42-18006148753/", - "href": "/dashboard/docs/personal/en-v42-18006148753/", - "type": "dir", - "lastModified": "2025-09-26T01:52:20Z" - }, - { - "name": "en-v42-18006148753-10/", - "href": "/dashboard/docs/personal/en-v42-18006148753-10/", - "type": "dir", - "lastModified": "2025-09-26T01:52:19Z" - }, - { - "name": "en-v42-18006148753-11/", - "href": "/dashboard/docs/personal/en-v42-18006148753-11/", - "type": "dir", - "lastModified": "2025-09-26T01:52:19Z" - }, - { - "name": "en-v42-18006148753-12/", - "href": "/dashboard/docs/personal/en-v42-18006148753-12/", - "type": "dir", - "lastModified": "2025-09-26T01:52:19Z" - }, - { - "name": "en-v42-18006148753-2/", - "href": "/dashboard/docs/personal/en-v42-18006148753-2/", - "type": "dir", - "lastModified": "2025-09-26T01:52:19Z" - }, - { - "name": "en-v42-18006148753-3/", - "href": "/dashboard/docs/personal/en-v42-18006148753-3/", - "type": "dir", - "lastModified": "2025-09-26T01:52:19Z" - }, - { - "name": "en-v42-18006148753-4/", - "href": "/dashboard/docs/personal/en-v42-18006148753-4/", - "type": "dir", - "lastModified": "2025-09-26T01:52:19Z" - }, - { - "name": "en-v42-18006148753-5/", - "href": "/dashboard/docs/personal/en-v42-18006148753-5/", - "type": "dir", - "lastModified": "2025-09-26T01:52:19Z" - }, - { - "name": "en-v42-18006148753-6/", - "href": "/dashboard/docs/personal/en-v42-18006148753-6/", - "type": "dir", - "lastModified": "2025-09-26T01:52:19Z" - }, - { - "name": "en-v42-18006148753-7/", - "href": "/dashboard/docs/personal/en-v42-18006148753-7/", - "type": "dir", - "lastModified": "2025-09-26T01:52:20Z" - }, - { - "name": "en-v42-18006148753-8/", - "href": "/dashboard/docs/personal/en-v42-18006148753-8/", - "type": "dir", - "lastModified": "2025-09-26T01:52:20Z" - }, - { - "name": "en-v42-18006148753-9/", - "href": "/dashboard/docs/personal/en-v42-18006148753-9/", - "type": "dir", - "lastModified": "2025-09-26T01:52:20Z" - }, - { - "name": "en-v43-18011536494/", - "href": "/dashboard/docs/personal/en-v43-18011536494/", - "type": "dir", - "lastModified": "2025-09-26T01:52:21Z" - }, - { - "name": "en-v43-18011536494-10/", - "href": "/dashboard/docs/personal/en-v43-18011536494-10/", - "type": "dir", - "lastModified": "2025-09-26T01:52:20Z" - }, - { - "name": "en-v43-18011536494-11/", - "href": "/dashboard/docs/personal/en-v43-18011536494-11/", - "type": "dir", - "lastModified": "2025-09-26T01:52:20Z" - }, - { - "name": "en-v43-18011536494-12/", - "href": "/dashboard/docs/personal/en-v43-18011536494-12/", - "type": "dir", - "lastModified": "2025-09-26T01:52:20Z" - }, - { - "name": "en-v43-18011536494-2/", - "href": "/dashboard/docs/personal/en-v43-18011536494-2/", - "type": "dir", - "lastModified": "2025-09-26T01:52:20Z" - }, - { - "name": "en-v43-18011536494-3/", - "href": "/dashboard/docs/personal/en-v43-18011536494-3/", - "type": "dir", - "lastModified": "2025-09-26T01:52:20Z" - }, - { - "name": "en-v43-18011536494-4/", - "href": "/dashboard/docs/personal/en-v43-18011536494-4/", - "type": "dir", - "lastModified": "2025-09-26T01:52:21Z" - }, - { - "name": "en-v43-18011536494-5/", - "href": "/dashboard/docs/personal/en-v43-18011536494-5/", - "type": "dir", - "lastModified": "2025-09-26T01:52:21Z" - }, - { - "name": "en-v43-18011536494-6/", - "href": "/dashboard/docs/personal/en-v43-18011536494-6/", - "type": "dir", - "lastModified": "2025-09-26T01:52:21Z" - }, - { - "name": "en-v43-18011536494-7/", - "href": "/dashboard/docs/personal/en-v43-18011536494-7/", - "type": "dir", - "lastModified": "2025-09-26T01:52:21Z" - }, - { - "name": "en-v43-18011536494-8/", - "href": "/dashboard/docs/personal/en-v43-18011536494-8/", - "type": "dir", - "lastModified": "2025-09-26T01:52:21Z" - }, - { - "name": "en-v43-18011536494-9/", - "href": "/dashboard/docs/personal/en-v43-18011536494-9/", - "type": "dir", - "lastModified": "2025-09-26T01:52:21Z" - }, - { - "name": "en-v44-18011825454/", - "href": "/dashboard/docs/personal/en-v44-18011825454/", - "type": "dir", - "lastModified": "2025-09-26T01:52:22Z" - }, - { - "name": "en-v44-18011825454-10/", - "href": "/dashboard/docs/personal/en-v44-18011825454-10/", - "type": "dir", - "lastModified": "2025-09-26T01:52:21Z" - }, - { - "name": "en-v44-18011825454-11/", - "href": "/dashboard/docs/personal/en-v44-18011825454-11/", - "type": "dir", - "lastModified": "2025-09-26T01:52:21Z" - }, - { - "name": "en-v44-18011825454-12/", - "href": "/dashboard/docs/personal/en-v44-18011825454-12/", - "type": "dir", - "lastModified": "2025-09-26T01:52:21Z" - }, - { - "name": "en-v44-18011825454-2/", - "href": "/dashboard/docs/personal/en-v44-18011825454-2/", - "type": "dir", - "lastModified": "2025-09-26T01:52:22Z" - }, - { - "name": "en-v44-18011825454-3/", - "href": "/dashboard/docs/personal/en-v44-18011825454-3/", - "type": "dir", - "lastModified": "2025-09-26T01:52:22Z" - }, - { - "name": "en-v44-18011825454-4/", - "href": "/dashboard/docs/personal/en-v44-18011825454-4/", - "type": "dir", - "lastModified": "2025-09-26T01:52:22Z" - }, - { - "name": "en-v44-18011825454-5/", - "href": "/dashboard/docs/personal/en-v44-18011825454-5/", - "type": "dir", - "lastModified": "2025-09-26T01:52:22Z" - }, - { - "name": "en-v44-18011825454-6/", - "href": "/dashboard/docs/personal/en-v44-18011825454-6/", - "type": "dir", - "lastModified": "2025-09-26T01:52:22Z" - }, - { - "name": "en-v44-18011825454-7/", - "href": "/dashboard/docs/personal/en-v44-18011825454-7/", - "type": "dir", - "lastModified": "2025-09-26T01:52:22Z" - }, - { - "name": "en-v44-18011825454-8/", - "href": "/dashboard/docs/personal/en-v44-18011825454-8/", - "type": "dir", - "lastModified": "2025-09-26T01:52:22Z" - }, - { - "name": "en-v44-18011825454-9/", - "href": "/dashboard/docs/personal/en-v44-18011825454-9/", - "type": "dir", - "lastModified": "2025-09-26T01:52:22Z" - }, - { - "name": "en-v45-18011937887/", - "href": "/dashboard/docs/personal/en-v45-18011937887/", - "type": "dir", - "lastModified": "2025-09-26T01:52:24Z" - }, - { - "name": "en-v45-18011937887-10/", - "href": "/dashboard/docs/personal/en-v45-18011937887-10/", - "type": "dir", - "lastModified": "2025-09-26T01:52:23Z" - }, - { - "name": "en-v45-18011937887-11/", - "href": "/dashboard/docs/personal/en-v45-18011937887-11/", - "type": "dir", - "lastModified": "2025-09-26T01:52:23Z" - }, - { - "name": "en-v45-18011937887-12/", - "href": "/dashboard/docs/personal/en-v45-18011937887-12/", - "type": "dir", - "lastModified": "2025-09-26T01:52:23Z" - }, - { - "name": "en-v45-18011937887-2/", - "href": "/dashboard/docs/personal/en-v45-18011937887-2/", - "type": "dir", - "lastModified": "2025-09-26T01:52:23Z" - }, - { - "name": "en-v45-18011937887-3/", - "href": "/dashboard/docs/personal/en-v45-18011937887-3/", - "type": "dir", - "lastModified": "2025-09-26T01:52:23Z" - }, - { - "name": "en-v45-18011937887-4/", - "href": "/dashboard/docs/personal/en-v45-18011937887-4/", - "type": "dir", - "lastModified": "2025-09-26T01:52:23Z" - }, - { - "name": "en-v45-18011937887-5/", - "href": "/dashboard/docs/personal/en-v45-18011937887-5/", - "type": "dir", - "lastModified": "2025-09-26T01:52:23Z" - }, - { - "name": "en-v45-18011937887-6/", - "href": "/dashboard/docs/personal/en-v45-18011937887-6/", - "type": "dir", - "lastModified": "2025-09-26T01:52:23Z" - }, - { - "name": "en-v45-18011937887-7/", - "href": "/dashboard/docs/personal/en-v45-18011937887-7/", - "type": "dir", - "lastModified": "2025-09-26T01:52:23Z" - }, - { - "name": "en-v45-18011937887-8/", - "href": "/dashboard/docs/personal/en-v45-18011937887-8/", - "type": "dir", - "lastModified": "2025-09-26T01:52:23Z" - }, - { - "name": "en-v45-18011937887-9/", - "href": "/dashboard/docs/personal/en-v45-18011937887-9/", - "type": "dir", - "lastModified": "2025-09-26T01:52:24Z" - }, - { - "name": "en-v46-18011951541/", - "href": "/dashboard/docs/personal/en-v46-18011951541/", - "type": "dir", - "lastModified": "2025-09-26T01:52:25Z" - }, - { - "name": "en-v46-18011951541-10/", - "href": "/dashboard/docs/personal/en-v46-18011951541-10/", - "type": "dir", - "lastModified": "2025-09-26T01:52:24Z" - }, - { - "name": "en-v46-18011951541-11/", - "href": "/dashboard/docs/personal/en-v46-18011951541-11/", - "type": "dir", - "lastModified": "2025-09-26T01:52:24Z" - }, - { - "name": "en-v46-18011951541-12/", - "href": "/dashboard/docs/personal/en-v46-18011951541-12/", - "type": "dir", - "lastModified": "2025-09-26T01:52:24Z" - }, - { - "name": "en-v46-18011951541-2/", - "href": "/dashboard/docs/personal/en-v46-18011951541-2/", - "type": "dir", - "lastModified": "2025-09-26T01:52:24Z" - }, - { - "name": "en-v46-18011951541-3/", - "href": "/dashboard/docs/personal/en-v46-18011951541-3/", - "type": "dir", - "lastModified": "2025-09-26T01:52:24Z" - }, - { - "name": "en-v46-18011951541-4/", - "href": "/dashboard/docs/personal/en-v46-18011951541-4/", - "type": "dir", - "lastModified": "2025-09-26T01:52:24Z" - }, - { - "name": "en-v46-18011951541-5/", - "href": "/dashboard/docs/personal/en-v46-18011951541-5/", - "type": "dir", - "lastModified": "2025-09-26T01:52:24Z" - }, - { - "name": "en-v46-18011951541-6/", - "href": "/dashboard/docs/personal/en-v46-18011951541-6/", - "type": "dir", - "lastModified": "2025-09-26T01:52:24Z" - }, - { - "name": "en-v46-18011951541-7/", - "href": "/dashboard/docs/personal/en-v46-18011951541-7/", - "type": "dir", - "lastModified": "2025-09-26T01:52:25Z" - }, - { - "name": "en-v46-18011951541-8/", - "href": "/dashboard/docs/personal/en-v46-18011951541-8/", - "type": "dir", - "lastModified": "2025-09-26T01:52:25Z" - }, - { - "name": "en-v46-18011951541-9/", - "href": "/dashboard/docs/personal/en-v46-18011951541-9/", - "type": "dir", - "lastModified": "2025-09-26T01:52:25Z" - }, - { - "name": "en-v47-18013619427/", - "href": "/dashboard/docs/personal/en-v47-18013619427/", - "type": "dir", - "lastModified": "2025-09-26T01:52:26Z" - }, - { - "name": "en-v47-18013619427-10/", - "href": "/dashboard/docs/personal/en-v47-18013619427-10/", - "type": "dir", - "lastModified": "2025-09-26T01:52:25Z" - }, - { - "name": "en-v47-18013619427-11/", - "href": "/dashboard/docs/personal/en-v47-18013619427-11/", - "type": "dir", - "lastModified": "2025-09-26T01:52:25Z" - }, - { - "name": "en-v47-18013619427-12/", - "href": "/dashboard/docs/personal/en-v47-18013619427-12/", - "type": "dir", - "lastModified": "2025-09-26T01:52:25Z" - }, - { - "name": "en-v47-18013619427-2/", - "href": "/dashboard/docs/personal/en-v47-18013619427-2/", - "type": "dir", - "lastModified": "2025-09-26T01:52:25Z" - }, - { - "name": "en-v47-18013619427-3/", - "href": "/dashboard/docs/personal/en-v47-18013619427-3/", - "type": "dir", - "lastModified": "2025-09-26T01:52:25Z" - }, - { - "name": "en-v47-18013619427-4/", - "href": "/dashboard/docs/personal/en-v47-18013619427-4/", - "type": "dir", - "lastModified": "2025-09-26T01:52:26Z" - }, - { - "name": "en-v47-18013619427-5/", - "href": "/dashboard/docs/personal/en-v47-18013619427-5/", - "type": "dir", - "lastModified": "2025-09-26T01:52:26Z" - }, - { - "name": "en-v47-18013619427-6/", - "href": "/dashboard/docs/personal/en-v47-18013619427-6/", - "type": "dir", - "lastModified": "2025-09-26T01:52:26Z" - }, - { - "name": "en-v47-18013619427-7/", - "href": "/dashboard/docs/personal/en-v47-18013619427-7/", - "type": "dir", - "lastModified": "2025-09-26T01:52:26Z" - }, - { - "name": "en-v47-18013619427-8/", - "href": "/dashboard/docs/personal/en-v47-18013619427-8/", - "type": "dir", - "lastModified": "2025-09-26T01:52:26Z" - }, - { - "name": "en-v47-18013619427-9/", - "href": "/dashboard/docs/personal/en-v47-18013619427-9/", - "type": "dir", - "lastModified": "2025-09-26T01:52:26Z" - }, - { - "name": "index.html", - "href": "/dashboard/docs/personal/index.html", - "type": "file", - "size": 5025, - "lastModified": "2025-09-26T01:52:09Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/index.txt", - "type": "file", - "size": 3164, - "lastModified": "2025-09-26T01:52:10Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v33-17996525102/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v33-17996525102/index.html", - "type": "file", - "size": 151226, - "lastModified": "2025-09-26T01:52:11Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v33-17996525102/index.txt", - "type": "file", - "size": 115903, - "lastModified": "2025-09-26T01:52:11Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v33-17996525102-10/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v33-17996525102-10/index.html", - "type": "file", - "size": 151214, - "lastModified": "2025-09-26T01:52:10Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v33-17996525102-10/index.txt", - "type": "file", - "size": 115907, - "lastModified": "2025-09-26T01:52:10Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v33-17996525102-11/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v33-17996525102-11/index.html", - "type": "file", - "size": 151214, - "lastModified": "2025-09-26T01:52:10Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v33-17996525102-11/index.txt", - "type": "file", - "size": 115907, - "lastModified": "2025-09-26T01:52:10Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v33-17996525102-12/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v33-17996525102-12/index.html", - "type": "file", - "size": 151233, - "lastModified": "2025-09-26T01:52:10Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v33-17996525102-12/index.txt", - "type": "file", - "size": 115913, - "lastModified": "2025-09-26T01:52:10Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v33-17996525102-2/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v33-17996525102-2/index.html", - "type": "file", - "size": 151186, - "lastModified": "2025-09-26T01:52:10Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v33-17996525102-2/index.txt", - "type": "file", - "size": 115895, - "lastModified": "2025-09-26T01:52:10Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v33-17996525102-3/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v33-17996525102-3/index.html", - "type": "file", - "size": 151198, - "lastModified": "2025-09-26T01:52:10Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v33-17996525102-3/index.txt", - "type": "file", - "size": 115899, - "lastModified": "2025-09-26T01:52:10Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v33-17996525102-4/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v33-17996525102-4/index.html", - "type": "file", - "size": 151198, - "lastModified": "2025-09-26T01:52:10Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v33-17996525102-4/index.txt", - "type": "file", - "size": 115899, - "lastModified": "2025-09-26T01:52:10Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v33-17996525102-5/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v33-17996525102-5/index.html", - "type": "file", - "size": 151220, - "lastModified": "2025-09-26T01:52:10Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v33-17996525102-5/index.txt", - "type": "file", - "size": 115906, - "lastModified": "2025-09-26T01:52:10Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v33-17996525102-6/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v33-17996525102-6/index.html", - "type": "file", - "size": 151220, - "lastModified": "2025-09-26T01:52:10Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v33-17996525102-6/index.txt", - "type": "file", - "size": 115906, - "lastModified": "2025-09-26T01:52:10Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v33-17996525102-7/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v33-17996525102-7/index.html", - "type": "file", - "size": 151189, - "lastModified": "2025-09-26T01:52:10Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v33-17996525102-7/index.txt", - "type": "file", - "size": 115896, - "lastModified": "2025-09-26T01:52:11Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v33-17996525102-8/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v33-17996525102-8/index.html", - "type": "file", - "size": 151186, - "lastModified": "2025-09-26T01:52:11Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v33-17996525102-8/index.txt", - "type": "file", - "size": 115895, - "lastModified": "2025-09-26T01:52:11Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v33-17996525102-9/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v33-17996525102-9/index.html", - "type": "file", - "size": 151186, - "lastModified": "2025-09-26T01:52:11Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v33-17996525102-9/index.txt", - "type": "file", - "size": 115895, - "lastModified": "2025-09-26T01:52:11Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v34-18001960544/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v34-18001960544/index.html", - "type": "file", - "size": 151226, - "lastModified": "2025-09-26T01:52:12Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v34-18001960544/index.txt", - "type": "file", - "size": 115903, - "lastModified": "2025-09-26T01:52:12Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v34-18001960544-10/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v34-18001960544-10/index.html", - "type": "file", - "size": 151214, - "lastModified": "2025-09-26T01:52:11Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v34-18001960544-10/index.txt", - "type": "file", - "size": 115907, - "lastModified": "2025-09-26T01:52:11Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v34-18001960544-11/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v34-18001960544-11/index.html", - "type": "file", - "size": 151214, - "lastModified": "2025-09-26T01:52:11Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v34-18001960544-11/index.txt", - "type": "file", - "size": 115907, - "lastModified": "2025-09-26T01:52:11Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v34-18001960544-12/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v34-18001960544-12/index.html", - "type": "file", - "size": 151233, - "lastModified": "2025-09-26T01:52:11Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v34-18001960544-12/index.txt", - "type": "file", - "size": 115913, - "lastModified": "2025-09-26T01:52:11Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v34-18001960544-2/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v34-18001960544-2/index.html", - "type": "file", - "size": 151186, - "lastModified": "2025-09-26T01:52:11Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v34-18001960544-2/index.txt", - "type": "file", - "size": 115895, - "lastModified": "2025-09-26T01:52:11Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v34-18001960544-3/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v34-18001960544-3/index.html", - "type": "file", - "size": 151198, - "lastModified": "2025-09-26T01:52:11Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v34-18001960544-3/index.txt", - "type": "file", - "size": 115899, - "lastModified": "2025-09-26T01:52:11Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v34-18001960544-4/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v34-18001960544-4/index.html", - "type": "file", - "size": 151198, - "lastModified": "2025-09-26T01:52:11Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v34-18001960544-4/index.txt", - "type": "file", - "size": 115899, - "lastModified": "2025-09-26T01:52:11Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v34-18001960544-5/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v34-18001960544-5/index.html", - "type": "file", - "size": 151220, - "lastModified": "2025-09-26T01:52:12Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v34-18001960544-5/index.txt", - "type": "file", - "size": 115906, - "lastModified": "2025-09-26T01:52:12Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v34-18001960544-6/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v34-18001960544-6/index.html", - "type": "file", - "size": 151220, - "lastModified": "2025-09-26T01:52:12Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v34-18001960544-6/index.txt", - "type": "file", - "size": 115906, - "lastModified": "2025-09-26T01:52:12Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v34-18001960544-7/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v34-18001960544-7/index.html", - "type": "file", - "size": 151189, - "lastModified": "2025-09-26T01:52:12Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v34-18001960544-7/index.txt", - "type": "file", - "size": 115896, - "lastModified": "2025-09-26T01:52:12Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v34-18001960544-8/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v34-18001960544-8/index.html", - "type": "file", - "size": 151186, - "lastModified": "2025-09-26T01:52:12Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v34-18001960544-8/index.txt", - "type": "file", - "size": 115895, - "lastModified": "2025-09-26T01:52:12Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v34-18001960544-9/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v34-18001960544-9/index.html", - "type": "file", - "size": 151186, - "lastModified": "2025-09-26T01:52:12Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v34-18001960544-9/index.txt", - "type": "file", - "size": 115895, - "lastModified": "2025-09-26T01:52:12Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v36-18002294267/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v36-18002294267/index.html", - "type": "file", - "size": 151226, - "lastModified": "2025-09-26T01:52:13Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v36-18002294267/index.txt", - "type": "file", - "size": 115903, - "lastModified": "2025-09-26T01:52:13Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v36-18002294267-10/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v36-18002294267-10/index.html", - "type": "file", - "size": 151214, - "lastModified": "2025-09-26T01:52:12Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v36-18002294267-10/index.txt", - "type": "file", - "size": 115907, - "lastModified": "2025-09-26T01:52:12Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v36-18002294267-11/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v36-18002294267-11/index.html", - "type": "file", - "size": 151214, - "lastModified": "2025-09-26T01:52:12Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v36-18002294267-11/index.txt", - "type": "file", - "size": 115907, - "lastModified": "2025-09-26T01:52:12Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v36-18002294267-12/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v36-18002294267-12/index.html", - "type": "file", - "size": 151233, - "lastModified": "2025-09-26T01:52:12Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v36-18002294267-12/index.txt", - "type": "file", - "size": 115913, - "lastModified": "2025-09-26T01:52:12Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v36-18002294267-2/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v36-18002294267-2/index.html", - "type": "file", - "size": 151186, - "lastModified": "2025-09-26T01:52:13Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v36-18002294267-2/index.txt", - "type": "file", - "size": 115895, - "lastModified": "2025-09-26T01:52:13Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v36-18002294267-3/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v36-18002294267-3/index.html", - "type": "file", - "size": 151198, - "lastModified": "2025-09-26T01:52:13Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v36-18002294267-3/index.txt", - "type": "file", - "size": 115899, - "lastModified": "2025-09-26T01:52:13Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v36-18002294267-4/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v36-18002294267-4/index.html", - "type": "file", - "size": 151198, - "lastModified": "2025-09-26T01:52:13Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v36-18002294267-4/index.txt", - "type": "file", - "size": 115899, - "lastModified": "2025-09-26T01:52:13Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v36-18002294267-5/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v36-18002294267-5/index.html", - "type": "file", - "size": 151220, - "lastModified": "2025-09-26T01:52:13Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v36-18002294267-5/index.txt", - "type": "file", - "size": 115906, - "lastModified": "2025-09-26T01:52:13Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v36-18002294267-6/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v36-18002294267-6/index.html", - "type": "file", - "size": 151220, - "lastModified": "2025-09-26T01:52:13Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v36-18002294267-6/index.txt", - "type": "file", - "size": 115906, - "lastModified": "2025-09-26T01:52:13Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v36-18002294267-7/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v36-18002294267-7/index.html", - "type": "file", - "size": 151189, - "lastModified": "2025-09-26T01:52:13Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v36-18002294267-7/index.txt", - "type": "file", - "size": 115896, - "lastModified": "2025-09-26T01:52:13Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v36-18002294267-8/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v36-18002294267-8/index.html", - "type": "file", - "size": 151186, - "lastModified": "2025-09-26T01:52:13Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v36-18002294267-8/index.txt", - "type": "file", - "size": 115895, - "lastModified": "2025-09-26T01:52:13Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v36-18002294267-9/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v36-18002294267-9/index.html", - "type": "file", - "size": 151186, - "lastModified": "2025-09-26T01:52:13Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v36-18002294267-9/index.txt", - "type": "file", - "size": 115895, - "lastModified": "2025-09-26T01:52:13Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v37-18002553627/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v37-18002553627/index.html", - "type": "file", - "size": 151226, - "lastModified": "2025-09-26T01:52:15Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v37-18002553627/index.txt", - "type": "file", - "size": 115903, - "lastModified": "2025-09-26T01:52:15Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v37-18002553627-10/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v37-18002553627-10/index.html", - "type": "file", - "size": 151214, - "lastModified": "2025-09-26T01:52:13Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v37-18002553627-10/index.txt", - "type": "file", - "size": 115907, - "lastModified": "2025-09-26T01:52:14Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v37-18002553627-11/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v37-18002553627-11/index.html", - "type": "file", - "size": 151214, - "lastModified": "2025-09-26T01:52:14Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v37-18002553627-11/index.txt", - "type": "file", - "size": 115907, - "lastModified": "2025-09-26T01:52:14Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v37-18002553627-12/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v37-18002553627-12/index.html", - "type": "file", - "size": 151233, - "lastModified": "2025-09-26T01:52:14Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v37-18002553627-12/index.txt", - "type": "file", - "size": 115913, - "lastModified": "2025-09-26T01:52:14Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v37-18002553627-2/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v37-18002553627-2/index.html", - "type": "file", - "size": 151186, - "lastModified": "2025-09-26T01:52:14Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v37-18002553627-2/index.txt", - "type": "file", - "size": 115895, - "lastModified": "2025-09-26T01:52:14Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v37-18002553627-3/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v37-18002553627-3/index.html", - "type": "file", - "size": 151198, - "lastModified": "2025-09-26T01:52:14Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v37-18002553627-3/index.txt", - "type": "file", - "size": 115899, - "lastModified": "2025-09-26T01:52:14Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v37-18002553627-4/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v37-18002553627-4/index.html", - "type": "file", - "size": 151198, - "lastModified": "2025-09-26T01:52:14Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v37-18002553627-4/index.txt", - "type": "file", - "size": 115899, - "lastModified": "2025-09-26T01:52:14Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v37-18002553627-5/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v37-18002553627-5/index.html", - "type": "file", - "size": 151220, - "lastModified": "2025-09-26T01:52:14Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v37-18002553627-5/index.txt", - "type": "file", - "size": 115906, - "lastModified": "2025-09-26T01:52:14Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v37-18002553627-6/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v37-18002553627-6/index.html", - "type": "file", - "size": 151220, - "lastModified": "2025-09-26T01:52:14Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v37-18002553627-6/index.txt", - "type": "file", - "size": 115906, - "lastModified": "2025-09-26T01:52:14Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v37-18002553627-7/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v37-18002553627-7/index.html", - "type": "file", - "size": 151189, - "lastModified": "2025-09-26T01:52:14Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v37-18002553627-7/index.txt", - "type": "file", - "size": 115896, - "lastModified": "2025-09-26T01:52:14Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v37-18002553627-8/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v37-18002553627-8/index.html", - "type": "file", - "size": 151186, - "lastModified": "2025-09-26T01:52:14Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v37-18002553627-8/index.txt", - "type": "file", - "size": 115895, - "lastModified": "2025-09-26T01:52:14Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v37-18002553627-9/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v37-18002553627-9/index.html", - "type": "file", - "size": 151186, - "lastModified": "2025-09-26T01:52:15Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v37-18002553627-9/index.txt", - "type": "file", - "size": 115895, - "lastModified": "2025-09-26T01:52:15Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v39-18004672680/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v39-18004672680/index.html", - "type": "file", - "size": 151226, - "lastModified": "2025-09-26T01:52:16Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v39-18004672680/index.txt", - "type": "file", - "size": 115903, - "lastModified": "2025-09-26T01:52:16Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v39-18004672680-10/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v39-18004672680-10/index.html", - "type": "file", - "size": 151214, - "lastModified": "2025-09-26T01:52:15Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v39-18004672680-10/index.txt", - "type": "file", - "size": 115907, - "lastModified": "2025-09-26T01:52:15Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v39-18004672680-11/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v39-18004672680-11/index.html", - "type": "file", - "size": 151214, - "lastModified": "2025-09-26T01:52:15Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v39-18004672680-11/index.txt", - "type": "file", - "size": 115907, - "lastModified": "2025-09-26T01:52:15Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v39-18004672680-12/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v39-18004672680-12/index.html", - "type": "file", - "size": 151233, - "lastModified": "2025-09-26T01:52:15Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v39-18004672680-12/index.txt", - "type": "file", - "size": 115913, - "lastModified": "2025-09-26T01:52:15Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v39-18004672680-2/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v39-18004672680-2/index.html", - "type": "file", - "size": 151186, - "lastModified": "2025-09-26T01:52:15Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v39-18004672680-2/index.txt", - "type": "file", - "size": 115895, - "lastModified": "2025-09-26T01:52:15Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v39-18004672680-3/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v39-18004672680-3/index.html", - "type": "file", - "size": 151198, - "lastModified": "2025-09-26T01:52:15Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v39-18004672680-3/index.txt", - "type": "file", - "size": 115899, - "lastModified": "2025-09-26T01:52:15Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v39-18004672680-4/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v39-18004672680-4/index.html", - "type": "file", - "size": 151198, - "lastModified": "2025-09-26T01:52:15Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v39-18004672680-4/index.txt", - "type": "file", - "size": 115899, - "lastModified": "2025-09-26T01:52:15Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v39-18004672680-5/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v39-18004672680-5/index.html", - "type": "file", - "size": 151220, - "lastModified": "2025-09-26T01:52:15Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v39-18004672680-5/index.txt", - "type": "file", - "size": 115906, - "lastModified": "2025-09-26T01:52:16Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v39-18004672680-6/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v39-18004672680-6/index.html", - "type": "file", - "size": 151220, - "lastModified": "2025-09-26T01:52:16Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v39-18004672680-6/index.txt", - "type": "file", - "size": 115906, - "lastModified": "2025-09-26T01:52:16Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v39-18004672680-7/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v39-18004672680-7/index.html", - "type": "file", - "size": 151189, - "lastModified": "2025-09-26T01:52:16Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v39-18004672680-7/index.txt", - "type": "file", - "size": 115896, - "lastModified": "2025-09-26T01:52:16Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v39-18004672680-8/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v39-18004672680-8/index.html", - "type": "file", - "size": 151186, - "lastModified": "2025-09-26T01:52:16Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v39-18004672680-8/index.txt", - "type": "file", - "size": 115895, - "lastModified": "2025-09-26T01:52:16Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v39-18004672680-9/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v39-18004672680-9/index.html", - "type": "file", - "size": 151186, - "lastModified": "2025-09-26T01:52:16Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v39-18004672680-9/index.txt", - "type": "file", - "size": 115895, - "lastModified": "2025-09-26T01:52:16Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v40-18004678416/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v40-18004678416/index.html", - "type": "file", - "size": 151226, - "lastModified": "2025-09-26T01:52:17Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v40-18004678416/index.txt", - "type": "file", - "size": 115903, - "lastModified": "2025-09-26T01:52:17Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v40-18004678416-10/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v40-18004678416-10/index.html", - "type": "file", - "size": 151214, - "lastModified": "2025-09-26T01:52:16Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v40-18004678416-10/index.txt", - "type": "file", - "size": 115907, - "lastModified": "2025-09-26T01:52:16Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v40-18004678416-11/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v40-18004678416-11/index.html", - "type": "file", - "size": 151214, - "lastModified": "2025-09-26T01:52:16Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v40-18004678416-11/index.txt", - "type": "file", - "size": 115907, - "lastModified": "2025-09-26T01:52:16Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v40-18004678416-12/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v40-18004678416-12/index.html", - "type": "file", - "size": 151233, - "lastModified": "2025-09-26T01:52:16Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v40-18004678416-12/index.txt", - "type": "file", - "size": 115913, - "lastModified": "2025-09-26T01:52:16Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v40-18004678416-2/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v40-18004678416-2/index.html", - "type": "file", - "size": 151186, - "lastModified": "2025-09-26T01:52:16Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v40-18004678416-2/index.txt", - "type": "file", - "size": 115895, - "lastModified": "2025-09-26T01:52:16Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v40-18004678416-3/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v40-18004678416-3/index.html", - "type": "file", - "size": 151198, - "lastModified": "2025-09-26T01:52:17Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v40-18004678416-3/index.txt", - "type": "file", - "size": 115899, - "lastModified": "2025-09-26T01:52:17Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v40-18004678416-4/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v40-18004678416-4/index.html", - "type": "file", - "size": 151198, - "lastModified": "2025-09-26T01:52:17Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v40-18004678416-4/index.txt", - "type": "file", - "size": 115899, - "lastModified": "2025-09-26T01:52:17Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v40-18004678416-5/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v40-18004678416-5/index.html", - "type": "file", - "size": 151220, - "lastModified": "2025-09-26T01:52:17Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v40-18004678416-5/index.txt", - "type": "file", - "size": 115906, - "lastModified": "2025-09-26T01:52:17Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v40-18004678416-6/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v40-18004678416-6/index.html", - "type": "file", - "size": 151220, - "lastModified": "2025-09-26T01:52:17Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v40-18004678416-6/index.txt", - "type": "file", - "size": 115906, - "lastModified": "2025-09-26T01:52:17Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v40-18004678416-7/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v40-18004678416-7/index.html", - "type": "file", - "size": 151189, - "lastModified": "2025-09-26T01:52:17Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v40-18004678416-7/index.txt", - "type": "file", - "size": 115896, - "lastModified": "2025-09-26T01:52:17Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v40-18004678416-8/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v40-18004678416-8/index.html", - "type": "file", - "size": 151186, - "lastModified": "2025-09-26T01:52:17Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v40-18004678416-8/index.txt", - "type": "file", - "size": 115895, - "lastModified": "2025-09-26T01:52:17Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v40-18004678416-9/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v40-18004678416-9/index.html", - "type": "file", - "size": 151186, - "lastModified": "2025-09-26T01:52:17Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v40-18004678416-9/index.txt", - "type": "file", - "size": 115895, - "lastModified": "2025-09-26T01:52:17Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v41-18005142964/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v41-18005142964/index.html", - "type": "file", - "size": 151226, - "lastModified": "2025-09-26T01:52:19Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v41-18005142964/index.txt", - "type": "file", - "size": 115903, - "lastModified": "2025-09-26T01:52:19Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v41-18005142964-10/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v41-18005142964-10/index.html", - "type": "file", - "size": 151214, - "lastModified": "2025-09-26T01:52:17Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v41-18005142964-10/index.txt", - "type": "file", - "size": 115907, - "lastModified": "2025-09-26T01:52:17Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v41-18005142964-11/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v41-18005142964-11/index.html", - "type": "file", - "size": 151214, - "lastModified": "2025-09-26T01:52:17Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v41-18005142964-11/index.txt", - "type": "file", - "size": 115907, - "lastModified": "2025-09-26T01:52:18Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v41-18005142964-12/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v41-18005142964-12/index.html", - "type": "file", - "size": 151233, - "lastModified": "2025-09-26T01:52:18Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v41-18005142964-12/index.txt", - "type": "file", - "size": 115913, - "lastModified": "2025-09-26T01:52:18Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v41-18005142964-2/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v41-18005142964-2/index.html", - "type": "file", - "size": 151186, - "lastModified": "2025-09-26T01:52:18Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v41-18005142964-2/index.txt", - "type": "file", - "size": 115895, - "lastModified": "2025-09-26T01:52:18Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v41-18005142964-3/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v41-18005142964-3/index.html", - "type": "file", - "size": 151198, - "lastModified": "2025-09-26T01:52:18Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v41-18005142964-3/index.txt", - "type": "file", - "size": 115899, - "lastModified": "2025-09-26T01:52:18Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v41-18005142964-4/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v41-18005142964-4/index.html", - "type": "file", - "size": 151198, - "lastModified": "2025-09-26T01:52:18Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v41-18005142964-4/index.txt", - "type": "file", - "size": 115899, - "lastModified": "2025-09-26T01:52:18Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v41-18005142964-5/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v41-18005142964-5/index.html", - "type": "file", - "size": 151220, - "lastModified": "2025-09-26T01:52:18Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v41-18005142964-5/index.txt", - "type": "file", - "size": 115906, - "lastModified": "2025-09-26T01:52:18Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v41-18005142964-6/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v41-18005142964-6/index.html", - "type": "file", - "size": 151220, - "lastModified": "2025-09-26T01:52:18Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v41-18005142964-6/index.txt", - "type": "file", - "size": 115906, - "lastModified": "2025-09-26T01:52:18Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v41-18005142964-7/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v41-18005142964-7/index.html", - "type": "file", - "size": 151189, - "lastModified": "2025-09-26T01:52:18Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v41-18005142964-7/index.txt", - "type": "file", - "size": 115896, - "lastModified": "2025-09-26T01:52:18Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v41-18005142964-8/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v41-18005142964-8/index.html", - "type": "file", - "size": 151186, - "lastModified": "2025-09-26T01:52:18Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v41-18005142964-8/index.txt", - "type": "file", - "size": 115895, - "lastModified": "2025-09-26T01:52:18Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v41-18005142964-9/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v41-18005142964-9/index.html", - "type": "file", - "size": 151186, - "lastModified": "2025-09-26T01:52:18Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v41-18005142964-9/index.txt", - "type": "file", - "size": 115895, - "lastModified": "2025-09-26T01:52:18Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v42-18006148753/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v42-18006148753/index.html", - "type": "file", - "size": 151226, - "lastModified": "2025-09-26T01:52:20Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v42-18006148753/index.txt", - "type": "file", - "size": 115903, - "lastModified": "2025-09-26T01:52:20Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v42-18006148753-10/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v42-18006148753-10/index.html", - "type": "file", - "size": 151214, - "lastModified": "2025-09-26T01:52:19Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v42-18006148753-10/index.txt", - "type": "file", - "size": 115907, - "lastModified": "2025-09-26T01:52:19Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v42-18006148753-11/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v42-18006148753-11/index.html", - "type": "file", - "size": 151214, - "lastModified": "2025-09-26T01:52:19Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v42-18006148753-11/index.txt", - "type": "file", - "size": 115907, - "lastModified": "2025-09-26T01:52:19Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v42-18006148753-12/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v42-18006148753-12/index.html", - "type": "file", - "size": 151233, - "lastModified": "2025-09-26T01:52:19Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v42-18006148753-12/index.txt", - "type": "file", - "size": 115913, - "lastModified": "2025-09-26T01:52:19Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v42-18006148753-2/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v42-18006148753-2/index.html", - "type": "file", - "size": 151186, - "lastModified": "2025-09-26T01:52:19Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v42-18006148753-2/index.txt", - "type": "file", - "size": 115895, - "lastModified": "2025-09-26T01:52:19Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v42-18006148753-3/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v42-18006148753-3/index.html", - "type": "file", - "size": 151198, - "lastModified": "2025-09-26T01:52:19Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v42-18006148753-3/index.txt", - "type": "file", - "size": 115899, - "lastModified": "2025-09-26T01:52:19Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v42-18006148753-4/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v42-18006148753-4/index.html", - "type": "file", - "size": 151198, - "lastModified": "2025-09-26T01:52:19Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v42-18006148753-4/index.txt", - "type": "file", - "size": 115899, - "lastModified": "2025-09-26T01:52:19Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v42-18006148753-5/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v42-18006148753-5/index.html", - "type": "file", - "size": 151220, - "lastModified": "2025-09-26T01:52:19Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v42-18006148753-5/index.txt", - "type": "file", - "size": 115906, - "lastModified": "2025-09-26T01:52:19Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v42-18006148753-6/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v42-18006148753-6/index.html", - "type": "file", - "size": 151220, - "lastModified": "2025-09-26T01:52:19Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v42-18006148753-6/index.txt", - "type": "file", - "size": 115906, - "lastModified": "2025-09-26T01:52:19Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v42-18006148753-7/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v42-18006148753-7/index.html", - "type": "file", - "size": 151189, - "lastModified": "2025-09-26T01:52:20Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v42-18006148753-7/index.txt", - "type": "file", - "size": 115896, - "lastModified": "2025-09-26T01:52:20Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v42-18006148753-8/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v42-18006148753-8/index.html", - "type": "file", - "size": 151186, - "lastModified": "2025-09-26T01:52:20Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v42-18006148753-8/index.txt", - "type": "file", - "size": 115895, - "lastModified": "2025-09-26T01:52:20Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v42-18006148753-9/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v42-18006148753-9/index.html", - "type": "file", - "size": 151186, - "lastModified": "2025-09-26T01:52:20Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v42-18006148753-9/index.txt", - "type": "file", - "size": 115895, - "lastModified": "2025-09-26T01:52:20Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v43-18011536494/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v43-18011536494/index.html", - "type": "file", - "size": 151226, - "lastModified": "2025-09-26T01:52:21Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v43-18011536494/index.txt", - "type": "file", - "size": 115903, - "lastModified": "2025-09-26T01:52:21Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v43-18011536494-10/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v43-18011536494-10/index.html", - "type": "file", - "size": 151214, - "lastModified": "2025-09-26T01:52:20Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v43-18011536494-10/index.txt", - "type": "file", - "size": 115907, - "lastModified": "2025-09-26T01:52:20Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v43-18011536494-11/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v43-18011536494-11/index.html", - "type": "file", - "size": 151214, - "lastModified": "2025-09-26T01:52:20Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v43-18011536494-11/index.txt", - "type": "file", - "size": 115907, - "lastModified": "2025-09-26T01:52:20Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v43-18011536494-12/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v43-18011536494-12/index.html", - "type": "file", - "size": 151233, - "lastModified": "2025-09-26T01:52:20Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v43-18011536494-12/index.txt", - "type": "file", - "size": 115913, - "lastModified": "2025-09-26T01:52:20Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v43-18011536494-2/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v43-18011536494-2/index.html", - "type": "file", - "size": 151186, - "lastModified": "2025-09-26T01:52:20Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v43-18011536494-2/index.txt", - "type": "file", - "size": 115895, - "lastModified": "2025-09-26T01:52:20Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v43-18011536494-3/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v43-18011536494-3/index.html", - "type": "file", - "size": 151198, - "lastModified": "2025-09-26T01:52:20Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v43-18011536494-3/index.txt", - "type": "file", - "size": 115899, - "lastModified": "2025-09-26T01:52:20Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v43-18011536494-4/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v43-18011536494-4/index.html", - "type": "file", - "size": 151198, - "lastModified": "2025-09-26T01:52:20Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v43-18011536494-4/index.txt", - "type": "file", - "size": 115899, - "lastModified": "2025-09-26T01:52:21Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v43-18011536494-5/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v43-18011536494-5/index.html", - "type": "file", - "size": 151220, - "lastModified": "2025-09-26T01:52:21Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v43-18011536494-5/index.txt", - "type": "file", - "size": 115906, - "lastModified": "2025-09-26T01:52:21Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v43-18011536494-6/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v43-18011536494-6/index.html", - "type": "file", - "size": 151220, - "lastModified": "2025-09-26T01:52:21Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v43-18011536494-6/index.txt", - "type": "file", - "size": 115906, - "lastModified": "2025-09-26T01:52:21Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v43-18011536494-7/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v43-18011536494-7/index.html", - "type": "file", - "size": 151189, - "lastModified": "2025-09-26T01:52:21Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v43-18011536494-7/index.txt", - "type": "file", - "size": 115896, - "lastModified": "2025-09-26T01:52:21Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v43-18011536494-8/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v43-18011536494-8/index.html", - "type": "file", - "size": 151186, - "lastModified": "2025-09-26T01:52:21Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v43-18011536494-8/index.txt", - "type": "file", - "size": 115895, - "lastModified": "2025-09-26T01:52:21Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v43-18011536494-9/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v43-18011536494-9/index.html", - "type": "file", - "size": 151186, - "lastModified": "2025-09-26T01:52:21Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v43-18011536494-9/index.txt", - "type": "file", - "size": 115895, - "lastModified": "2025-09-26T01:52:21Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v44-18011825454/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v44-18011825454/index.html", - "type": "file", - "size": 151226, - "lastModified": "2025-09-26T01:52:22Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v44-18011825454/index.txt", - "type": "file", - "size": 115903, - "lastModified": "2025-09-26T01:52:22Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v44-18011825454-10/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v44-18011825454-10/index.html", - "type": "file", - "size": 151214, - "lastModified": "2025-09-26T01:52:21Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v44-18011825454-10/index.txt", - "type": "file", - "size": 115907, - "lastModified": "2025-09-26T01:52:21Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v44-18011825454-11/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v44-18011825454-11/index.html", - "type": "file", - "size": 151214, - "lastModified": "2025-09-26T01:52:21Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v44-18011825454-11/index.txt", - "type": "file", - "size": 115907, - "lastModified": "2025-09-26T01:52:21Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v44-18011825454-12/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v44-18011825454-12/index.html", - "type": "file", - "size": 151233, - "lastModified": "2025-09-26T01:52:21Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v44-18011825454-12/index.txt", - "type": "file", - "size": 115913, - "lastModified": "2025-09-26T01:52:21Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v44-18011825454-2/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v44-18011825454-2/index.html", - "type": "file", - "size": 151186, - "lastModified": "2025-09-26T01:52:21Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v44-18011825454-2/index.txt", - "type": "file", - "size": 115895, - "lastModified": "2025-09-26T01:52:22Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v44-18011825454-3/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v44-18011825454-3/index.html", - "type": "file", - "size": 151198, - "lastModified": "2025-09-26T01:52:22Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v44-18011825454-3/index.txt", - "type": "file", - "size": 115899, - "lastModified": "2025-09-26T01:52:22Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v44-18011825454-4/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v44-18011825454-4/index.html", - "type": "file", - "size": 151198, - "lastModified": "2025-09-26T01:52:22Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v44-18011825454-4/index.txt", - "type": "file", - "size": 115899, - "lastModified": "2025-09-26T01:52:22Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v44-18011825454-5/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v44-18011825454-5/index.html", - "type": "file", - "size": 151220, - "lastModified": "2025-09-26T01:52:22Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v44-18011825454-5/index.txt", - "type": "file", - "size": 115906, - "lastModified": "2025-09-26T01:52:22Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v44-18011825454-6/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v44-18011825454-6/index.html", - "type": "file", - "size": 151220, - "lastModified": "2025-09-26T01:52:22Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v44-18011825454-6/index.txt", - "type": "file", - "size": 115906, - "lastModified": "2025-09-26T01:52:22Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v44-18011825454-7/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v44-18011825454-7/index.html", - "type": "file", - "size": 151189, - "lastModified": "2025-09-26T01:52:22Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v44-18011825454-7/index.txt", - "type": "file", - "size": 115896, - "lastModified": "2025-09-26T01:52:22Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v44-18011825454-8/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v44-18011825454-8/index.html", - "type": "file", - "size": 151186, - "lastModified": "2025-09-26T01:52:22Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v44-18011825454-8/index.txt", - "type": "file", - "size": 115895, - "lastModified": "2025-09-26T01:52:22Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v44-18011825454-9/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v44-18011825454-9/index.html", - "type": "file", - "size": 151186, - "lastModified": "2025-09-26T01:52:22Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v44-18011825454-9/index.txt", - "type": "file", - "size": 115895, - "lastModified": "2025-09-26T01:52:22Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v45-18011937887/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v45-18011937887/index.html", - "type": "file", - "size": 151226, - "lastModified": "2025-09-26T01:52:24Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v45-18011937887/index.txt", - "type": "file", - "size": 115903, - "lastModified": "2025-09-26T01:52:24Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v45-18011937887-10/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v45-18011937887-10/index.html", - "type": "file", - "size": 151214, - "lastModified": "2025-09-26T01:52:22Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v45-18011937887-10/index.txt", - "type": "file", - "size": 115907, - "lastModified": "2025-09-26T01:52:23Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v45-18011937887-11/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v45-18011937887-11/index.html", - "type": "file", - "size": 151214, - "lastModified": "2025-09-26T01:52:23Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v45-18011937887-11/index.txt", - "type": "file", - "size": 115907, - "lastModified": "2025-09-26T01:52:23Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v45-18011937887-12/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v45-18011937887-12/index.html", - "type": "file", - "size": 151233, - "lastModified": "2025-09-26T01:52:23Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v45-18011937887-12/index.txt", - "type": "file", - "size": 115913, - "lastModified": "2025-09-26T01:52:23Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v45-18011937887-2/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v45-18011937887-2/index.html", - "type": "file", - "size": 151186, - "lastModified": "2025-09-26T01:52:23Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v45-18011937887-2/index.txt", - "type": "file", - "size": 115895, - "lastModified": "2025-09-26T01:52:23Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v45-18011937887-3/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v45-18011937887-3/index.html", - "type": "file", - "size": 151198, - "lastModified": "2025-09-26T01:52:23Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v45-18011937887-3/index.txt", - "type": "file", - "size": 115899, - "lastModified": "2025-09-26T01:52:23Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v45-18011937887-4/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v45-18011937887-4/index.html", - "type": "file", - "size": 151198, - "lastModified": "2025-09-26T01:52:23Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v45-18011937887-4/index.txt", - "type": "file", - "size": 115899, - "lastModified": "2025-09-26T01:52:23Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v45-18011937887-5/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v45-18011937887-5/index.html", - "type": "file", - "size": 151220, - "lastModified": "2025-09-26T01:52:23Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v45-18011937887-5/index.txt", - "type": "file", - "size": 115906, - "lastModified": "2025-09-26T01:52:23Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v45-18011937887-6/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v45-18011937887-6/index.html", - "type": "file", - "size": 151220, - "lastModified": "2025-09-26T01:52:23Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v45-18011937887-6/index.txt", - "type": "file", - "size": 115906, - "lastModified": "2025-09-26T01:52:23Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v45-18011937887-7/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v45-18011937887-7/index.html", - "type": "file", - "size": 151189, - "lastModified": "2025-09-26T01:52:23Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v45-18011937887-7/index.txt", - "type": "file", - "size": 115896, - "lastModified": "2025-09-26T01:52:23Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v45-18011937887-8/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v45-18011937887-8/index.html", - "type": "file", - "size": 151186, - "lastModified": "2025-09-26T01:52:23Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v45-18011937887-8/index.txt", - "type": "file", - "size": 115895, - "lastModified": "2025-09-26T01:52:23Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v45-18011937887-9/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v45-18011937887-9/index.html", - "type": "file", - "size": 151186, - "lastModified": "2025-09-26T01:52:24Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v45-18011937887-9/index.txt", - "type": "file", - "size": 115895, - "lastModified": "2025-09-26T01:52:24Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v46-18011951541/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v46-18011951541/index.html", - "type": "file", - "size": 151226, - "lastModified": "2025-09-26T01:52:25Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v46-18011951541/index.txt", - "type": "file", - "size": 115903, - "lastModified": "2025-09-26T01:52:25Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v46-18011951541-10/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v46-18011951541-10/index.html", - "type": "file", - "size": 151214, - "lastModified": "2025-09-26T01:52:24Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v46-18011951541-10/index.txt", - "type": "file", - "size": 115907, - "lastModified": "2025-09-26T01:52:24Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v46-18011951541-11/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v46-18011951541-11/index.html", - "type": "file", - "size": 151214, - "lastModified": "2025-09-26T01:52:24Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v46-18011951541-11/index.txt", - "type": "file", - "size": 115907, - "lastModified": "2025-09-26T01:52:24Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v46-18011951541-12/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v46-18011951541-12/index.html", - "type": "file", - "size": 151233, - "lastModified": "2025-09-26T01:52:24Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v46-18011951541-12/index.txt", - "type": "file", - "size": 115913, - "lastModified": "2025-09-26T01:52:24Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v46-18011951541-2/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v46-18011951541-2/index.html", - "type": "file", - "size": 151186, - "lastModified": "2025-09-26T01:52:24Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v46-18011951541-2/index.txt", - "type": "file", - "size": 115895, - "lastModified": "2025-09-26T01:52:24Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v46-18011951541-3/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v46-18011951541-3/index.html", - "type": "file", - "size": 151198, - "lastModified": "2025-09-26T01:52:24Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v46-18011951541-3/index.txt", - "type": "file", - "size": 115899, - "lastModified": "2025-09-26T01:52:24Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v46-18011951541-4/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v46-18011951541-4/index.html", - "type": "file", - "size": 151198, - "lastModified": "2025-09-26T01:52:24Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v46-18011951541-4/index.txt", - "type": "file", - "size": 115899, - "lastModified": "2025-09-26T01:52:24Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v46-18011951541-5/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v46-18011951541-5/index.html", - "type": "file", - "size": 151220, - "lastModified": "2025-09-26T01:52:24Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v46-18011951541-5/index.txt", - "type": "file", - "size": 115906, - "lastModified": "2025-09-26T01:52:24Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v46-18011951541-6/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v46-18011951541-6/index.html", - "type": "file", - "size": 151220, - "lastModified": "2025-09-26T01:52:24Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v46-18011951541-6/index.txt", - "type": "file", - "size": 115906, - "lastModified": "2025-09-26T01:52:24Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v46-18011951541-7/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v46-18011951541-7/index.html", - "type": "file", - "size": 151189, - "lastModified": "2025-09-26T01:52:25Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v46-18011951541-7/index.txt", - "type": "file", - "size": 115896, - "lastModified": "2025-09-26T01:52:25Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v46-18011951541-8/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v46-18011951541-8/index.html", - "type": "file", - "size": 151186, - "lastModified": "2025-09-26T01:52:25Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v46-18011951541-8/index.txt", - "type": "file", - "size": 115895, - "lastModified": "2025-09-26T01:52:25Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v46-18011951541-9/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v46-18011951541-9/index.html", - "type": "file", - "size": 151186, - "lastModified": "2025-09-26T01:52:25Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v46-18011951541-9/index.txt", - "type": "file", - "size": 115895, - "lastModified": "2025-09-26T01:52:25Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v47-18013619427/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v47-18013619427/index.html", - "type": "file", - "size": 151226, - "lastModified": "2025-09-26T01:52:26Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v47-18013619427/index.txt", - "type": "file", - "size": 115903, - "lastModified": "2025-09-26T01:52:26Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v47-18013619427-10/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v47-18013619427-10/index.html", - "type": "file", - "size": 151214, - "lastModified": "2025-09-26T01:52:25Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v47-18013619427-10/index.txt", - "type": "file", - "size": 115907, - "lastModified": "2025-09-26T01:52:25Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v47-18013619427-11/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v47-18013619427-11/index.html", - "type": "file", - "size": 151214, - "lastModified": "2025-09-26T01:52:25Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v47-18013619427-11/index.txt", - "type": "file", - "size": 115907, - "lastModified": "2025-09-26T01:52:25Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v47-18013619427-12/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v47-18013619427-12/index.html", - "type": "file", - "size": 151233, - "lastModified": "2025-09-26T01:52:25Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v47-18013619427-12/index.txt", - "type": "file", - "size": 115913, - "lastModified": "2025-09-26T01:52:25Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v47-18013619427-2/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v47-18013619427-2/index.html", - "type": "file", - "size": 151186, - "lastModified": "2025-09-26T01:52:25Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v47-18013619427-2/index.txt", - "type": "file", - "size": 115895, - "lastModified": "2025-09-26T01:52:25Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v47-18013619427-3/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v47-18013619427-3/index.html", - "type": "file", - "size": 151198, - "lastModified": "2025-09-26T01:52:25Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v47-18013619427-3/index.txt", - "type": "file", - "size": 115899, - "lastModified": "2025-09-26T01:52:25Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v47-18013619427-4/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v47-18013619427-4/index.html", - "type": "file", - "size": 151198, - "lastModified": "2025-09-26T01:52:26Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v47-18013619427-4/index.txt", - "type": "file", - "size": 115899, - "lastModified": "2025-09-26T01:52:26Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v47-18013619427-5/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v47-18013619427-5/index.html", - "type": "file", - "size": 151220, - "lastModified": "2025-09-26T01:52:26Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v47-18013619427-5/index.txt", - "type": "file", - "size": 115906, - "lastModified": "2025-09-26T01:52:26Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v47-18013619427-6/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v47-18013619427-6/index.html", - "type": "file", - "size": 151220, - "lastModified": "2025-09-26T01:52:26Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v47-18013619427-6/index.txt", - "type": "file", - "size": 115906, - "lastModified": "2025-09-26T01:52:26Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v47-18013619427-7/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v47-18013619427-7/index.html", - "type": "file", - "size": 151189, - "lastModified": "2025-09-26T01:52:26Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v47-18013619427-7/index.txt", - "type": "file", - "size": 115896, - "lastModified": "2025-09-26T01:52:26Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v47-18013619427-8/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v47-18013619427-8/index.html", - "type": "file", - "size": 151186, - "lastModified": "2025-09-26T01:52:26Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v47-18013619427-8/index.txt", - "type": "file", - "size": 115895, - "lastModified": "2025-09-26T01:52:26Z" - } - ] - }, - { - "path": "dashboard/docs/personal/en-v47-18013619427-9/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/personal/en-v47-18013619427-9/index.html", - "type": "file", - "size": 151186, - "lastModified": "2025-09-26T01:52:26Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/personal/en-v47-18013619427-9/index.txt", - "type": "file", - "size": 115895, - "lastModified": "2025-09-26T01:52:26Z" - } - ] - }, - { - "path": "dashboard/docs/techexploration/", - "entries": [ - { - "name": "en-v33-17996525102/", - "href": "/dashboard/docs/techexploration/en-v33-17996525102/", - "type": "dir", - "lastModified": "2025-09-26T01:52:26Z" - }, - { - "name": "en-v34-18001960544/", - "href": "/dashboard/docs/techexploration/en-v34-18001960544/", - "type": "dir", - "lastModified": "2025-09-26T01:52:27Z" - }, - { - "name": "en-v36-18002294267/", - "href": "/dashboard/docs/techexploration/en-v36-18002294267/", - "type": "dir", - "lastModified": "2025-09-26T01:52:27Z" - }, - { - "name": "en-v37-18002553627/", - "href": "/dashboard/docs/techexploration/en-v37-18002553627/", - "type": "dir", - "lastModified": "2025-09-26T01:52:27Z" - }, - { - "name": "en-v39-18004672680/", - "href": "/dashboard/docs/techexploration/en-v39-18004672680/", - "type": "dir", - "lastModified": "2025-09-26T01:52:27Z" - }, - { - "name": "en-v40-18004678416/", - "href": "/dashboard/docs/techexploration/en-v40-18004678416/", - "type": "dir", - "lastModified": "2025-09-26T01:52:27Z" - }, - { - "name": "en-v41-18005142964/", - "href": "/dashboard/docs/techexploration/en-v41-18005142964/", - "type": "dir", - "lastModified": "2025-09-26T01:52:27Z" - }, - { - "name": "en-v42-18006148753/", - "href": "/dashboard/docs/techexploration/en-v42-18006148753/", - "type": "dir", - "lastModified": "2025-09-26T01:52:27Z" - }, - { - "name": "en-v43-18011536494/", - "href": "/dashboard/docs/techexploration/en-v43-18011536494/", - "type": "dir", - "lastModified": "2025-09-26T01:52:27Z" - }, - { - "name": "en-v44-18011825454/", - "href": "/dashboard/docs/techexploration/en-v44-18011825454/", - "type": "dir", - "lastModified": "2025-09-26T01:52:27Z" - }, - { - "name": "en-v45-18011937887/", - "href": "/dashboard/docs/techexploration/en-v45-18011937887/", - "type": "dir", - "lastModified": "2025-09-26T01:52:27Z" - }, - { - "name": "en-v46-18011951541/", - "href": "/dashboard/docs/techexploration/en-v46-18011951541/", - "type": "dir", - "lastModified": "2025-09-26T01:52:28Z" - }, - { - "name": "en-v47-18013619427/", - "href": "/dashboard/docs/techexploration/en-v47-18013619427/", - "type": "dir", - "lastModified": "2025-09-26T01:52:28Z" - }, - { - "name": "index.html", - "href": "/dashboard/docs/techexploration/index.html", - "type": "file", - "size": 5067, - "lastModified": "2025-09-26T01:52:26Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/techexploration/index.txt", - "type": "file", - "size": 3199, - "lastModified": "2025-09-26T01:52:26Z" - } - ] - }, - { - "path": "dashboard/docs/techexploration/en-v33-17996525102/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/techexploration/en-v33-17996525102/index.html", - "type": "file", - "size": 30019, - "lastModified": "2025-09-26T01:52:26Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/techexploration/en-v33-17996525102/index.txt", - "type": "file", - "size": 16018, - "lastModified": "2025-09-26T01:52:26Z" - } - ] - }, - { - "path": "dashboard/docs/techexploration/en-v34-18001960544/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/techexploration/en-v34-18001960544/index.html", - "type": "file", - "size": 30019, - "lastModified": "2025-09-26T01:52:26Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/techexploration/en-v34-18001960544/index.txt", - "type": "file", - "size": 16018, - "lastModified": "2025-09-26T01:52:27Z" - } - ] - }, - { - "path": "dashboard/docs/techexploration/en-v36-18002294267/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/techexploration/en-v36-18002294267/index.html", - "type": "file", - "size": 30019, - "lastModified": "2025-09-26T01:52:27Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/techexploration/en-v36-18002294267/index.txt", - "type": "file", - "size": 16018, - "lastModified": "2025-09-26T01:52:27Z" - } - ] - }, - { - "path": "dashboard/docs/techexploration/en-v37-18002553627/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/techexploration/en-v37-18002553627/index.html", - "type": "file", - "size": 30019, - "lastModified": "2025-09-26T01:52:27Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/techexploration/en-v37-18002553627/index.txt", - "type": "file", - "size": 16018, - "lastModified": "2025-09-26T01:52:27Z" - } - ] - }, - { - "path": "dashboard/docs/techexploration/en-v39-18004672680/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/techexploration/en-v39-18004672680/index.html", - "type": "file", - "size": 30019, - "lastModified": "2025-09-26T01:52:27Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/techexploration/en-v39-18004672680/index.txt", - "type": "file", - "size": 16018, - "lastModified": "2025-09-26T01:52:27Z" - } - ] - }, - { - "path": "dashboard/docs/techexploration/en-v40-18004678416/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/techexploration/en-v40-18004678416/index.html", - "type": "file", - "size": 30019, - "lastModified": "2025-09-26T01:52:27Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/techexploration/en-v40-18004678416/index.txt", - "type": "file", - "size": 16018, - "lastModified": "2025-09-26T01:52:27Z" - } - ] - }, - { - "path": "dashboard/docs/techexploration/en-v41-18005142964/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/techexploration/en-v41-18005142964/index.html", - "type": "file", - "size": 30019, - "lastModified": "2025-09-26T01:52:27Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/techexploration/en-v41-18005142964/index.txt", - "type": "file", - "size": 16018, - "lastModified": "2025-09-26T01:52:27Z" - } - ] - }, - { - "path": "dashboard/docs/techexploration/en-v42-18006148753/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/techexploration/en-v42-18006148753/index.html", - "type": "file", - "size": 30019, - "lastModified": "2025-09-26T01:52:27Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/techexploration/en-v42-18006148753/index.txt", - "type": "file", - "size": 16018, - "lastModified": "2025-09-26T01:52:27Z" - } - ] - }, - { - "path": "dashboard/docs/techexploration/en-v43-18011536494/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/techexploration/en-v43-18011536494/index.html", - "type": "file", - "size": 30019, - "lastModified": "2025-09-26T01:52:27Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/techexploration/en-v43-18011536494/index.txt", - "type": "file", - "size": 16018, - "lastModified": "2025-09-26T01:52:27Z" - } - ] - }, - { - "path": "dashboard/docs/techexploration/en-v44-18011825454/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/techexploration/en-v44-18011825454/index.html", - "type": "file", - "size": 30019, - "lastModified": "2025-09-26T01:52:27Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/techexploration/en-v44-18011825454/index.txt", - "type": "file", - "size": 16018, - "lastModified": "2025-09-26T01:52:27Z" - } - ] - }, - { - "path": "dashboard/docs/techexploration/en-v45-18011937887/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/techexploration/en-v45-18011937887/index.html", - "type": "file", - "size": 30019, - "lastModified": "2025-09-26T01:52:27Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/techexploration/en-v45-18011937887/index.txt", - "type": "file", - "size": 16018, - "lastModified": "2025-09-26T01:52:27Z" - } - ] - }, - { - "path": "dashboard/docs/techexploration/en-v46-18011951541/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/techexploration/en-v46-18011951541/index.html", - "type": "file", - "size": 30019, - "lastModified": "2025-09-26T01:52:27Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/techexploration/en-v46-18011951541/index.txt", - "type": "file", - "size": 16018, - "lastModified": "2025-09-26T01:52:28Z" - } - ] - }, - { - "path": "dashboard/docs/techexploration/en-v47-18013619427/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/techexploration/en-v47-18013619427/index.html", - "type": "file", - "size": 30019, - "lastModified": "2025-09-26T01:52:28Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/techexploration/en-v47-18013619427/index.txt", - "type": "file", - "size": 16018, - "lastModified": "2025-09-26T01:52:28Z" - } - ] - }, - { - "path": "dashboard/docs/the-indiedeveloper-fullstack-roadmap/", - "entries": [ - { - "name": "cn-v33-17996525102/", - "href": "/dashboard/docs/the-indiedeveloper-fullstack-roadmap/cn-v33-17996525102/", - "type": "dir", - "lastModified": "2025-09-26T01:52:28Z" - }, - { - "name": "cn-v34-18001960544/", - "href": "/dashboard/docs/the-indiedeveloper-fullstack-roadmap/cn-v34-18001960544/", - "type": "dir", - "lastModified": "2025-09-26T01:52:28Z" - }, - { - "name": "cn-v36-18002294267/", - "href": "/dashboard/docs/the-indiedeveloper-fullstack-roadmap/cn-v36-18002294267/", - "type": "dir", - "lastModified": "2025-09-26T01:52:28Z" - }, - { - "name": "cn-v38-18003957466/", - "href": "/dashboard/docs/the-indiedeveloper-fullstack-roadmap/cn-v38-18003957466/", - "type": "dir", - "lastModified": "2025-09-26T01:52:28Z" - }, - { - "name": "cn-v39-18004672680/", - "href": "/dashboard/docs/the-indiedeveloper-fullstack-roadmap/cn-v39-18004672680/", - "type": "dir", - "lastModified": "2025-09-26T01:52:28Z" - }, - { - "name": "cn-v40-18004678416/", - "href": "/dashboard/docs/the-indiedeveloper-fullstack-roadmap/cn-v40-18004678416/", - "type": "dir", - "lastModified": "2025-09-26T01:52:28Z" - }, - { - "name": "cn-v41-18005142964/", - "href": "/dashboard/docs/the-indiedeveloper-fullstack-roadmap/cn-v41-18005142964/", - "type": "dir", - "lastModified": "2025-09-26T01:52:28Z" - }, - { - "name": "en-v33-17996525102/", - "href": "/dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v33-17996525102/", - "type": "dir", - "lastModified": "2025-09-26T01:52:29Z" - }, - { - "name": "en-v34-18001960544/", - "href": "/dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v34-18001960544/", - "type": "dir", - "lastModified": "2025-09-26T01:52:29Z" - }, - { - "name": "en-v36-18002294267/", - "href": "/dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v36-18002294267/", - "type": "dir", - "lastModified": "2025-09-26T01:52:29Z" - }, - { - "name": "en-v37-18002553627/", - "href": "/dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v37-18002553627/", - "type": "dir", - "lastModified": "2025-09-26T01:52:29Z" - }, - { - "name": "en-v38-18003957466/", - "href": "/dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v38-18003957466/", - "type": "dir", - "lastModified": "2025-09-26T01:52:29Z" - }, - { - "name": "en-v39-18004672680/", - "href": "/dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v39-18004672680/", - "type": "dir", - "lastModified": "2025-09-26T01:52:29Z" - }, - { - "name": "en-v40-18004678416/", - "href": "/dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v40-18004678416/", - "type": "dir", - "lastModified": "2025-09-26T01:52:29Z" - }, - { - "name": "en-v41-18005142964/", - "href": "/dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v41-18005142964/", - "type": "dir", - "lastModified": "2025-09-26T01:52:29Z" - }, - { - "name": "en-v42-18006148753/", - "href": "/dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v42-18006148753/", - "type": "dir", - "lastModified": "2025-09-26T01:52:29Z" - }, - { - "name": "en-v43-18011536494/", - "href": "/dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v43-18011536494/", - "type": "dir", - "lastModified": "2025-09-26T01:52:29Z" - }, - { - "name": "en-v44-18011825454/", - "href": "/dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v44-18011825454/", - "type": "dir", - "lastModified": "2025-09-26T01:52:30Z" - }, - { - "name": "en-v45-18011937887/", - "href": "/dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v45-18011937887/", - "type": "dir", - "lastModified": "2025-09-26T01:52:30Z" - }, - { - "name": "en-v46-18011951541/", - "href": "/dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v46-18011951541/", - "type": "dir", - "lastModified": "2025-09-26T01:52:30Z" - }, - { - "name": "en-v47-18013619427/", - "href": "/dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v47-18013619427/", - "type": "dir", - "lastModified": "2025-09-26T01:52:30Z" - }, - { - "name": "index.html", - "href": "/dashboard/docs/the-indiedeveloper-fullstack-roadmap/index.html", - "type": "file", - "size": 5193, - "lastModified": "2025-09-26T01:52:28Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/the-indiedeveloper-fullstack-roadmap/index.txt", - "type": "file", - "size": 3304, - "lastModified": "2025-09-26T01:52:28Z" - } - ] - }, - { - "path": "dashboard/docs/the-indiedeveloper-fullstack-roadmap/cn-v33-17996525102/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/the-indiedeveloper-fullstack-roadmap/cn-v33-17996525102/index.html", - "type": "file", - "size": 42751, - "lastModified": "2025-09-26T01:52:28Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/the-indiedeveloper-fullstack-roadmap/cn-v33-17996525102/index.txt", - "type": "file", - "size": 26748, - "lastModified": "2025-09-26T01:52:28Z" - } - ] - }, - { - "path": "dashboard/docs/the-indiedeveloper-fullstack-roadmap/cn-v34-18001960544/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/the-indiedeveloper-fullstack-roadmap/cn-v34-18001960544/index.html", - "type": "file", - "size": 42751, - "lastModified": "2025-09-26T01:52:28Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/the-indiedeveloper-fullstack-roadmap/cn-v34-18001960544/index.txt", - "type": "file", - "size": 26748, - "lastModified": "2025-09-26T01:52:28Z" - } - ] - }, - { - "path": "dashboard/docs/the-indiedeveloper-fullstack-roadmap/cn-v36-18002294267/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/the-indiedeveloper-fullstack-roadmap/cn-v36-18002294267/index.html", - "type": "file", - "size": 42751, - "lastModified": "2025-09-26T01:52:28Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/the-indiedeveloper-fullstack-roadmap/cn-v36-18002294267/index.txt", - "type": "file", - "size": 26748, - "lastModified": "2025-09-26T01:52:28Z" - } - ] - }, - { - "path": "dashboard/docs/the-indiedeveloper-fullstack-roadmap/cn-v38-18003957466/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/the-indiedeveloper-fullstack-roadmap/cn-v38-18003957466/index.html", - "type": "file", - "size": 42751, - "lastModified": "2025-09-26T01:52:28Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/the-indiedeveloper-fullstack-roadmap/cn-v38-18003957466/index.txt", - "type": "file", - "size": 26748, - "lastModified": "2025-09-26T01:52:28Z" - } - ] - }, - { - "path": "dashboard/docs/the-indiedeveloper-fullstack-roadmap/cn-v39-18004672680/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/the-indiedeveloper-fullstack-roadmap/cn-v39-18004672680/index.html", - "type": "file", - "size": 42751, - "lastModified": "2025-09-26T01:52:28Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/the-indiedeveloper-fullstack-roadmap/cn-v39-18004672680/index.txt", - "type": "file", - "size": 26748, - "lastModified": "2025-09-26T01:52:28Z" - } - ] - }, - { - "path": "dashboard/docs/the-indiedeveloper-fullstack-roadmap/cn-v40-18004678416/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/the-indiedeveloper-fullstack-roadmap/cn-v40-18004678416/index.html", - "type": "file", - "size": 42751, - "lastModified": "2025-09-26T01:52:28Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/the-indiedeveloper-fullstack-roadmap/cn-v40-18004678416/index.txt", - "type": "file", - "size": 26748, - "lastModified": "2025-09-26T01:52:28Z" - } - ] - }, - { - "path": "dashboard/docs/the-indiedeveloper-fullstack-roadmap/cn-v41-18005142964/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/the-indiedeveloper-fullstack-roadmap/cn-v41-18005142964/index.html", - "type": "file", - "size": 42751, - "lastModified": "2025-09-26T01:52:28Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/the-indiedeveloper-fullstack-roadmap/cn-v41-18005142964/index.txt", - "type": "file", - "size": 26748, - "lastModified": "2025-09-26T01:52:28Z" - } - ] - }, - { - "path": "dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v33-17996525102/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v33-17996525102/index.html", - "type": "file", - "size": 42751, - "lastModified": "2025-09-26T01:52:28Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v33-17996525102/index.txt", - "type": "file", - "size": 26748, - "lastModified": "2025-09-26T01:52:29Z" - } - ] - }, - { - "path": "dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v34-18001960544/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v34-18001960544/index.html", - "type": "file", - "size": 42751, - "lastModified": "2025-09-26T01:52:29Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v34-18001960544/index.txt", - "type": "file", - "size": 26748, - "lastModified": "2025-09-26T01:52:29Z" - } - ] - }, - { - "path": "dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v36-18002294267/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v36-18002294267/index.html", - "type": "file", - "size": 42751, - "lastModified": "2025-09-26T01:52:29Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v36-18002294267/index.txt", - "type": "file", - "size": 26748, - "lastModified": "2025-09-26T01:52:29Z" - } - ] - }, - { - "path": "dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v37-18002553627/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v37-18002553627/index.html", - "type": "file", - "size": 42751, - "lastModified": "2025-09-26T01:52:29Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v37-18002553627/index.txt", - "type": "file", - "size": 26748, - "lastModified": "2025-09-26T01:52:29Z" - } - ] - }, - { - "path": "dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v38-18003957466/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v38-18003957466/index.html", - "type": "file", - "size": 42751, - "lastModified": "2025-09-26T01:52:29Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v38-18003957466/index.txt", - "type": "file", - "size": 26748, - "lastModified": "2025-09-26T01:52:29Z" - } - ] - }, - { - "path": "dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v39-18004672680/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v39-18004672680/index.html", - "type": "file", - "size": 42751, - "lastModified": "2025-09-26T01:52:29Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v39-18004672680/index.txt", - "type": "file", - "size": 26748, - "lastModified": "2025-09-26T01:52:29Z" - } - ] - }, - { - "path": "dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v40-18004678416/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v40-18004678416/index.html", - "type": "file", - "size": 42751, - "lastModified": "2025-09-26T01:52:29Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v40-18004678416/index.txt", - "type": "file", - "size": 26748, - "lastModified": "2025-09-26T01:52:29Z" - } - ] - }, - { - "path": "dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v41-18005142964/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v41-18005142964/index.html", - "type": "file", - "size": 42751, - "lastModified": "2025-09-26T01:52:29Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v41-18005142964/index.txt", - "type": "file", - "size": 26748, - "lastModified": "2025-09-26T01:52:29Z" - } - ] - }, - { - "path": "dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v42-18006148753/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v42-18006148753/index.html", - "type": "file", - "size": 42751, - "lastModified": "2025-09-26T01:52:29Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v42-18006148753/index.txt", - "type": "file", - "size": 26748, - "lastModified": "2025-09-26T01:52:29Z" - } - ] - }, - { - "path": "dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v43-18011536494/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v43-18011536494/index.html", - "type": "file", - "size": 42751, - "lastModified": "2025-09-26T01:52:29Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v43-18011536494/index.txt", - "type": "file", - "size": 26748, - "lastModified": "2025-09-26T01:52:29Z" - } - ] - }, - { - "path": "dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v44-18011825454/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v44-18011825454/index.html", - "type": "file", - "size": 42751, - "lastModified": "2025-09-26T01:52:29Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v44-18011825454/index.txt", - "type": "file", - "size": 26748, - "lastModified": "2025-09-26T01:52:30Z" - } - ] - }, - { - "path": "dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v45-18011937887/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v45-18011937887/index.html", - "type": "file", - "size": 42751, - "lastModified": "2025-09-26T01:52:30Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v45-18011937887/index.txt", - "type": "file", - "size": 26748, - "lastModified": "2025-09-26T01:52:30Z" - } - ] - }, - { - "path": "dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v46-18011951541/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v46-18011951541/index.html", - "type": "file", - "size": 42751, - "lastModified": "2025-09-26T01:52:30Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v46-18011951541/index.txt", - "type": "file", - "size": 26748, - "lastModified": "2025-09-26T01:52:30Z" - } - ] - }, - { - "path": "dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v47-18013619427/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v47-18013619427/index.html", - "type": "file", - "size": 42751, - "lastModified": "2025-09-26T01:52:30Z" - }, - { - "name": "index.txt", - "href": "/dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v47-18013619427/index.txt", - "type": "file", - "size": 26748, - "lastModified": "2025-09-26T01:52:30Z" - } - ] - }, - { - "path": "dashboard/download/", - "entries": [ - { - "name": "dashboard/", - "href": "/dashboard/download/dashboard/", - "type": "dir", - "lastModified": "2025-09-26T01:53:30Z" - }, - { - "name": "deb/", - "href": "/dashboard/download/deb/", - "type": "dir", - "lastModified": "2025-09-26T01:53:30Z" - }, - { - "name": "docs/", - "href": "/dashboard/download/docs/", - "type": "dir", - "lastModified": "2025-09-26T01:53:30Z" - }, - { - "name": "index.html", - "href": "/dashboard/download/index.html", - "type": "file", - "size": 41876, - "lastModified": "2025-09-26T01:52:30Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/index.txt", - "type": "file", - "size": 9009, - "lastModified": "2025-09-26T01:52:30Z" - }, - { - "name": "offline-package/", - "href": "/dashboard/download/offline-package/", - "type": "dir", - "lastModified": "2025-09-26T01:53:31Z" - }, - { - "name": "otel/", - "href": "/dashboard/download/otel/", - "type": "dir", - "lastModified": "2025-09-26T01:53:31Z" - }, - { - "name": "rpm/", - "href": "/dashboard/download/rpm/", - "type": "dir", - "lastModified": "2025-09-26T01:53:31Z" - }, - { - "name": "sealos/", - "href": "/dashboard/download/sealos/", - "type": "dir", - "lastModified": "2025-09-26T01:53:32Z" - }, - { - "name": "xray-core/", - "href": "/dashboard/download/xray-core/", - "type": "dir", - "lastModified": "2025-09-26T01:53:32Z" - }, - { - "name": "xstream/", - "href": "/dashboard/download/xstream/", - "type": "dir", - "lastModified": "2025-09-26T01:53:34Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/", - "entries": [ - { - "name": "404/", - "href": "/dashboard/download/dashboard/404/", - "type": "dir", - "lastModified": "2025-09-26T01:52:30Z" - }, - { - "name": "500/", - "href": "/dashboard/download/dashboard/500/", - "type": "dir", - "lastModified": "2025-09-26T01:52:30Z" - }, - { - "name": "_build/", - "href": "/dashboard/download/dashboard/_build/", - "type": "dir", - "lastModified": "2025-09-26T01:52:30Z" - }, - { - "name": "_next/", - "href": "/dashboard/download/dashboard/_next/", - "type": "dir", - "lastModified": "2025-09-26T01:52:33Z" - }, - { - "name": "cloud_iac/", - "href": "/dashboard/download/dashboard/cloud_iac/", - "type": "dir", - "lastModified": "2025-09-26T01:52:40Z" - }, - { - "name": "demo/", - "href": "/dashboard/download/dashboard/demo/", - "type": "dir", - "lastModified": "2025-09-26T01:52:40Z" - }, - { - "name": "dl-index/", - "href": "/dashboard/download/dashboard/dl-index/", - "type": "dir", - "lastModified": "2025-09-26T01:52:40Z" - }, - { - "name": "docs/", - "href": "/dashboard/download/dashboard/docs/", - "type": "dir", - "lastModified": "2025-09-26T01:52:54Z" - }, - { - "name": "download/", - "href": "/dashboard/download/dashboard/download/", - "type": "dir", - "lastModified": "2025-09-26T01:53:29Z" - }, - { - "name": "icons/", - "href": "/dashboard/download/dashboard/icons/", - "type": "dir", - "lastModified": "2025-09-26T01:53:29Z" - }, - { - "name": "index.html", - "href": "/dashboard/download/dashboard/index.html", - "type": "file", - "size": 24959, - "lastModified": "2025-09-26T01:52:30Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/index.txt", - "type": "file", - "size": 6213, - "lastModified": "2025-09-26T01:52:30Z" - }, - { - "name": "insight/", - "href": "/dashboard/download/dashboard/insight/", - "type": "dir", - "lastModified": "2025-09-26T01:53:29Z" - }, - { - "name": "login/", - "href": "/dashboard/download/dashboard/login/", - "type": "dir", - "lastModified": "2025-09-26T01:53:29Z" - }, - { - "name": "panel/", - "href": "/dashboard/download/dashboard/panel/", - "type": "dir", - "lastModified": "2025-09-26T01:53:30Z" - }, - { - "name": "register/", - "href": "/dashboard/download/dashboard/register/", - "type": "dir", - "lastModified": "2025-09-26T01:53:30Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/404/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/404/index.html", - "type": "file", - "size": 10820, - "lastModified": "2025-09-26T01:52:30Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/404/index.txt", - "type": "file", - "size": 3951, - "lastModified": "2025-09-26T01:52:30Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/500/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/500/index.html", - "type": "file", - "size": 9810, - "lastModified": "2025-09-26T01:52:30Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/500/index.txt", - "type": "file", - "size": 3832, - "lastModified": "2025-09-26T01:52:30Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/_build/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/_build/index.html", - "type": "file", - "size": 11977, - "lastModified": "2025-09-26T01:52:30Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/_build/index.txt", - "type": "file", - "size": 4147, - "lastModified": "2025-09-26T01:52:30Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/_next/", - "entries": [ - { - "name": "0ziXklCxmfxSZ7QwxTqZG/", - "href": "/dashboard/download/dashboard/_next/0ziXklCxmfxSZ7QwxTqZG/", - "type": "dir", - "lastModified": "2025-09-26T01:52:31Z" - }, - { - "name": "index.html", - "href": "/dashboard/download/dashboard/_next/index.html", - "type": "file", - "size": 10628, - "lastModified": "2025-09-26T01:52:30Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/_next/index.txt", - "type": "file", - "size": 4095, - "lastModified": "2025-09-26T01:52:30Z" - }, - { - "name": "static/", - "href": "/dashboard/download/dashboard/_next/static/", - "type": "dir", - "lastModified": "2025-09-26T01:52:33Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/_next/0ziXklCxmfxSZ7QwxTqZG/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/_next/0ziXklCxmfxSZ7QwxTqZG/index.html", - "type": "file", - "size": 8689, - "lastModified": "2025-09-26T01:52:31Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/_next/0ziXklCxmfxSZ7QwxTqZG/index.txt", - "type": "file", - "size": 3918, - "lastModified": "2025-09-26T01:52:31Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/_next/static/", - "entries": [ - { - "name": "0ziXklCxmfxSZ7QwxTqZG/", - "href": "/dashboard/download/dashboard/_next/static/0ziXklCxmfxSZ7QwxTqZG/", - "type": "dir", - "lastModified": "2025-09-26T01:52:31Z" - }, - { - "name": "chunks/", - "href": "/dashboard/download/dashboard/_next/static/chunks/", - "type": "dir", - "lastModified": "2025-09-26T01:52:33Z" - }, - { - "name": "css/", - "href": "/dashboard/download/dashboard/_next/static/css/", - "type": "dir", - "lastModified": "2025-09-26T01:52:33Z" - }, - { - "name": "index.html", - "href": "/dashboard/download/dashboard/_next/static/index.html", - "type": "file", - "size": 11779, - "lastModified": "2025-09-26T01:52:31Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/_next/static/index.txt", - "type": "file", - "size": 4352, - "lastModified": "2025-09-26T01:52:31Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/_next/static/0ziXklCxmfxSZ7QwxTqZG/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/_next/static/0ziXklCxmfxSZ7QwxTqZG/index.html", - "type": "file", - "size": 11782, - "lastModified": "2025-09-26T01:52:31Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/_next/static/0ziXklCxmfxSZ7QwxTqZG/index.txt", - "type": "file", - "size": 4315, - "lastModified": "2025-09-26T01:52:31Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/_next/static/chunks/", - "entries": [ - { - "name": "app/", - "href": "/dashboard/download/dashboard/_next/static/chunks/app/", - "type": "dir", - "lastModified": "2025-09-26T01:52:33Z" - }, - { - "name": "index.html", - "href": "/dashboard/download/dashboard/_next/static/chunks/index.html", - "type": "file", - "size": 26181, - "lastModified": "2025-09-26T01:52:31Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/_next/static/chunks/index.txt", - "type": "file", - "size": 6405, - "lastModified": "2025-09-26T01:52:31Z" - }, - { - "name": "pages/", - "href": "/dashboard/download/dashboard/_next/static/chunks/pages/", - "type": "dir", - "lastModified": "2025-09-26T01:52:33Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/_next/static/chunks/app/", - "entries": [ - { - "name": "404/", - "href": "/dashboard/download/dashboard/_next/static/chunks/app/404/", - "type": "dir", - "lastModified": "2025-09-26T01:52:31Z" - }, - { - "name": "_not-found/", - "href": "/dashboard/download/dashboard/_next/static/chunks/app/_not-found/", - "type": "dir", - "lastModified": "2025-09-26T01:52:31Z" - }, - { - "name": "cloud_iac/", - "href": "/dashboard/download/dashboard/_next/static/chunks/app/cloud_iac/", - "type": "dir", - "lastModified": "2025-09-26T01:52:32Z" - }, - { - "name": "demo/", - "href": "/dashboard/download/dashboard/_next/static/chunks/app/demo/", - "type": "dir", - "lastModified": "2025-09-26T01:52:32Z" - }, - { - "name": "docs/", - "href": "/dashboard/download/dashboard/_next/static/chunks/app/docs/", - "type": "dir", - "lastModified": "2025-09-26T01:52:32Z" - }, - { - "name": "download/", - "href": "/dashboard/download/dashboard/_next/static/chunks/app/download/", - "type": "dir", - "lastModified": "2025-09-26T01:52:32Z" - }, - { - "name": "index.html", - "href": "/dashboard/download/dashboard/_next/static/chunks/app/index.html", - "type": "file", - "size": 21502, - "lastModified": "2025-09-26T01:52:31Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/_next/static/chunks/app/index.txt", - "type": "file", - "size": 6199, - "lastModified": "2025-09-26T01:52:31Z" - }, - { - "name": "insight/", - "href": "/dashboard/download/dashboard/_next/static/chunks/app/insight/", - "type": "dir", - "lastModified": "2025-09-26T01:52:32Z" - }, - { - "name": "login/", - "href": "/dashboard/download/dashboard/_next/static/chunks/app/login/", - "type": "dir", - "lastModified": "2025-09-26T01:52:32Z" - }, - { - "name": "panel/", - "href": "/dashboard/download/dashboard/_next/static/chunks/app/panel/", - "type": "dir", - "lastModified": "2025-09-26T01:52:33Z" - }, - { - "name": "register/", - "href": "/dashboard/download/dashboard/_next/static/chunks/app/register/", - "type": "dir", - "lastModified": "2025-09-26T01:52:33Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/_next/static/chunks/app/404/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/_next/static/chunks/app/404/index.html", - "type": "file", - "size": 10881, - "lastModified": "2025-09-26T01:52:31Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/_next/static/chunks/app/404/index.txt", - "type": "file", - "size": 4099, - "lastModified": "2025-09-26T01:52:31Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/_next/static/chunks/app/_not-found/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/_next/static/chunks/app/_not-found/index.html", - "type": "file", - "size": 11012, - "lastModified": "2025-09-26T01:52:31Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/_next/static/chunks/app/_not-found/index.txt", - "type": "file", - "size": 4169, - "lastModified": "2025-09-26T01:52:31Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/_next/static/chunks/app/cloud_iac/", - "entries": [ - { - "name": "[provider]/", - "href": "/dashboard/download/dashboard/_next/static/chunks/app/cloud_iac/[provider]/", - "type": "dir", - "lastModified": "2025-09-26T01:52:32Z" - }, - { - "name": "index.html", - "href": "/dashboard/download/dashboard/_next/static/chunks/app/cloud_iac/index.html", - "type": "file", - "size": 12622, - "lastModified": "2025-09-26T01:52:31Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/_next/static/chunks/app/cloud_iac/index.txt", - "type": "file", - "size": 4386, - "lastModified": "2025-09-26T01:52:31Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/_next/static/chunks/app/cloud_iac/[provider]/", - "entries": [ - { - "name": "[service]/", - "href": "/dashboard/download/dashboard/_next/static/chunks/app/cloud_iac/[provider]/[service]/", - "type": "dir", - "lastModified": "2025-09-26T01:52:32Z" - }, - { - "name": "index.html", - "href": "/dashboard/download/dashboard/_next/static/chunks/app/cloud_iac/[provider]/index.html", - "type": "file", - "size": 6203, - "lastModified": "2025-09-26T01:52:31Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/_next/static/chunks/app/cloud_iac/[provider]/index.txt", - "type": "file", - "size": 3587, - "lastModified": "2025-09-26T01:52:31Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/_next/static/chunks/app/cloud_iac/[provider]/[service]/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/_next/static/chunks/app/cloud_iac/[provider]/[service]/index.html", - "type": "file", - "size": 6281, - "lastModified": "2025-09-26T01:52:31Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/_next/static/chunks/app/cloud_iac/[provider]/[service]/index.txt", - "type": "file", - "size": 3643, - "lastModified": "2025-09-26T01:52:32Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/_next/static/chunks/app/demo/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/_next/static/chunks/app/demo/index.html", - "type": "file", - "size": 10903, - "lastModified": "2025-09-26T01:52:32Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/_next/static/chunks/app/demo/index.txt", - "type": "file", - "size": 4110, - "lastModified": "2025-09-26T01:52:32Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/_next/static/chunks/app/docs/", - "entries": [ - { - "name": "[collection]/", - "href": "/dashboard/download/dashboard/_next/static/chunks/app/docs/[collection]/", - "type": "dir", - "lastModified": "2025-09-26T01:52:32Z" - }, - { - "name": "index.html", - "href": "/dashboard/download/dashboard/_next/static/chunks/app/docs/index.html", - "type": "file", - "size": 12525, - "lastModified": "2025-09-26T01:52:32Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/_next/static/chunks/app/docs/index.txt", - "type": "file", - "size": 4333, - "lastModified": "2025-09-26T01:52:32Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/_next/static/chunks/app/docs/[collection]/", - "entries": [ - { - "name": "[version]/", - "href": "/dashboard/download/dashboard/_next/static/chunks/app/docs/[collection]/[version]/", - "type": "dir", - "lastModified": "2025-09-26T01:52:32Z" - }, - { - "name": "index.html", - "href": "/dashboard/download/dashboard/_next/static/chunks/app/docs/[collection]/index.html", - "type": "file", - "size": 6188, - "lastModified": "2025-09-26T01:52:32Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/_next/static/chunks/app/docs/[collection]/index.txt", - "type": "file", - "size": 3575, - "lastModified": "2025-09-26T01:52:32Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/_next/static/chunks/app/docs/[collection]/[version]/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/_next/static/chunks/app/docs/[collection]/[version]/index.html", - "type": "file", - "size": 6266, - "lastModified": "2025-09-26T01:52:32Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/_next/static/chunks/app/docs/[collection]/[version]/index.txt", - "type": "file", - "size": 3631, - "lastModified": "2025-09-26T01:52:32Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/_next/static/chunks/app/download/", - "entries": [ - { - "name": "[...segments]/", - "href": "/dashboard/download/dashboard/_next/static/chunks/app/download/[...segments]/", - "type": "dir", - "lastModified": "2025-09-26T01:52:32Z" - }, - { - "name": "index.html", - "href": "/dashboard/download/dashboard/_next/static/chunks/app/download/index.html", - "type": "file", - "size": 12617, - "lastModified": "2025-09-26T01:52:32Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/_next/static/chunks/app/download/index.txt", - "type": "file", - "size": 4384, - "lastModified": "2025-09-26T01:52:32Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/_next/static/chunks/app/download/[...segments]/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/_next/static/chunks/app/download/[...segments]/index.html", - "type": "file", - "size": 6213, - "lastModified": "2025-09-26T01:52:32Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/_next/static/chunks/app/download/[...segments]/index.txt", - "type": "file", - "size": 3595, - "lastModified": "2025-09-26T01:52:32Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/_next/static/chunks/app/insight/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/_next/static/chunks/app/insight/index.html", - "type": "file", - "size": 10962, - "lastModified": "2025-09-26T01:52:32Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/_next/static/chunks/app/insight/index.txt", - "type": "file", - "size": 4141, - "lastModified": "2025-09-26T01:52:32Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/_next/static/chunks/app/login/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/_next/static/chunks/app/login/index.html", - "type": "file", - "size": 10919, - "lastModified": "2025-09-26T01:52:32Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/_next/static/chunks/app/login/index.txt", - "type": "file", - "size": 4119, - "lastModified": "2025-09-26T01:52:32Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/_next/static/chunks/app/panel/", - "entries": [ - { - "name": "account/", - "href": "/dashboard/download/dashboard/_next/static/chunks/app/panel/account/", - "type": "dir", - "lastModified": "2025-09-26T01:52:33Z" - }, - { - "name": "agent/", - "href": "/dashboard/download/dashboard/_next/static/chunks/app/panel/agent/", - "type": "dir", - "lastModified": "2025-09-26T01:52:33Z" - }, - { - "name": "api/", - "href": "/dashboard/download/dashboard/_next/static/chunks/app/panel/api/", - "type": "dir", - "lastModified": "2025-09-26T01:52:33Z" - }, - { - "name": "index.html", - "href": "/dashboard/download/dashboard/_next/static/chunks/app/panel/index.html", - "type": "file", - "size": 19377, - "lastModified": "2025-09-26T01:52:32Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/_next/static/chunks/app/panel/index.txt", - "type": "file", - "size": 5719, - "lastModified": "2025-09-26T01:52:32Z" - }, - { - "name": "ldp/", - "href": "/dashboard/download/dashboard/_next/static/chunks/app/panel/ldp/", - "type": "dir", - "lastModified": "2025-09-26T01:52:33Z" - }, - { - "name": "subscription/", - "href": "/dashboard/download/dashboard/_next/static/chunks/app/panel/subscription/", - "type": "dir", - "lastModified": "2025-09-26T01:52:33Z" - }, - { - "name": "xray/", - "href": "/dashboard/download/dashboard/_next/static/chunks/app/panel/xray/", - "type": "dir", - "lastModified": "2025-09-26T01:52:33Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/_next/static/chunks/app/panel/account/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/_next/static/chunks/app/panel/account/index.html", - "type": "file", - "size": 11226, - "lastModified": "2025-09-26T01:52:33Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/_next/static/chunks/app/panel/account/index.txt", - "type": "file", - "size": 4199, - "lastModified": "2025-09-26T01:52:33Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/_next/static/chunks/app/panel/agent/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/_next/static/chunks/app/panel/agent/index.html", - "type": "file", - "size": 11188, - "lastModified": "2025-09-26T01:52:33Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/_next/static/chunks/app/panel/agent/index.txt", - "type": "file", - "size": 4179, - "lastModified": "2025-09-26T01:52:33Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/_next/static/chunks/app/panel/api/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/_next/static/chunks/app/panel/api/index.html", - "type": "file", - "size": 11150, - "lastModified": "2025-09-26T01:52:33Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/_next/static/chunks/app/panel/api/index.txt", - "type": "file", - "size": 4159, - "lastModified": "2025-09-26T01:52:33Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/_next/static/chunks/app/panel/ldp/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/_next/static/chunks/app/panel/ldp/index.html", - "type": "file", - "size": 11150, - "lastModified": "2025-09-26T01:52:33Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/_next/static/chunks/app/panel/ldp/index.txt", - "type": "file", - "size": 4159, - "lastModified": "2025-09-26T01:52:33Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/_next/static/chunks/app/panel/subscription/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/_next/static/chunks/app/panel/subscription/index.html", - "type": "file", - "size": 11321, - "lastModified": "2025-09-26T01:52:33Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/_next/static/chunks/app/panel/subscription/index.txt", - "type": "file", - "size": 4249, - "lastModified": "2025-09-26T01:52:33Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/_next/static/chunks/app/panel/xray/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/_next/static/chunks/app/panel/xray/index.html", - "type": "file", - "size": 11169, - "lastModified": "2025-09-26T01:52:33Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/_next/static/chunks/app/panel/xray/index.txt", - "type": "file", - "size": 4169, - "lastModified": "2025-09-26T01:52:33Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/_next/static/chunks/app/register/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/_next/static/chunks/app/register/index.html", - "type": "file", - "size": 10976, - "lastModified": "2025-09-26T01:52:33Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/_next/static/chunks/app/register/index.txt", - "type": "file", - "size": 4149, - "lastModified": "2025-09-26T01:52:33Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/_next/static/chunks/pages/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/_next/static/chunks/pages/index.html", - "type": "file", - "size": 12917, - "lastModified": "2025-09-26T01:52:33Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/_next/static/chunks/pages/index.txt", - "type": "file", - "size": 4420, - "lastModified": "2025-09-26T01:52:33Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/_next/static/css/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/_next/static/css/index.html", - "type": "file", - "size": 10364, - "lastModified": "2025-09-26T01:52:33Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/_next/static/css/index.txt", - "type": "file", - "size": 3982, - "lastModified": "2025-09-26T01:52:33Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/cloud_iac/", - "entries": [ - { - "name": "aliyun/", - "href": "/dashboard/download/dashboard/cloud_iac/aliyun/", - "type": "dir", - "lastModified": "2025-09-26T01:52:35Z" - }, - { - "name": "aws/", - "href": "/dashboard/download/dashboard/cloud_iac/aws/", - "type": "dir", - "lastModified": "2025-09-26T01:52:36Z" - }, - { - "name": "azure/", - "href": "/dashboard/download/dashboard/cloud_iac/azure/", - "type": "dir", - "lastModified": "2025-09-26T01:52:38Z" - }, - { - "name": "gcp/", - "href": "/dashboard/download/dashboard/cloud_iac/gcp/", - "type": "dir", - "lastModified": "2025-09-26T01:52:40Z" - }, - { - "name": "index.html", - "href": "/dashboard/download/dashboard/cloud_iac/index.html", - "type": "file", - "size": 15050, - "lastModified": "2025-09-26T01:52:33Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/cloud_iac/index.txt", - "type": "file", - "size": 4675, - "lastModified": "2025-09-26T01:52:33Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/cloud_iac/aliyun/", - "entries": [ - { - "name": "ack/", - "href": "/dashboard/download/dashboard/cloud_iac/aliyun/ack/", - "type": "dir", - "lastModified": "2025-09-26T01:52:34Z" - }, - { - "name": "aliyun-emr/", - "href": "/dashboard/download/dashboard/cloud_iac/aliyun/aliyun-emr/", - "type": "dir", - "lastModified": "2025-09-26T01:52:34Z" - }, - { - "name": "aliyun-iot/", - "href": "/dashboard/download/dashboard/cloud_iac/aliyun/aliyun-iot/", - "type": "dir", - "lastModified": "2025-09-26T01:52:34Z" - }, - { - "name": "apigateway-dataworks/", - "href": "/dashboard/download/dashboard/cloud_iac/aliyun/apigateway-dataworks/", - "type": "dir", - "lastModified": "2025-09-26T01:52:34Z" - }, - { - "name": "apsaradb-rds/", - "href": "/dashboard/download/dashboard/cloud_iac/aliyun/apsaradb-rds/", - "type": "dir", - "lastModified": "2025-09-26T01:52:34Z" - }, - { - "name": "apsaradb-redis/", - "href": "/dashboard/download/dashboard/cloud_iac/aliyun/apsaradb-redis/", - "type": "dir", - "lastModified": "2025-09-26T01:52:34Z" - }, - { - "name": "cloudmonitor-eventbridge/", - "href": "/dashboard/download/dashboard/cloud_iac/aliyun/cloudmonitor-eventbridge/", - "type": "dir", - "lastModified": "2025-09-26T01:52:34Z" - }, - { - "name": "dns-acceleration/", - "href": "/dashboard/download/dashboard/cloud_iac/aliyun/dns-acceleration/", - "type": "dir", - "lastModified": "2025-09-26T01:52:34Z" - }, - { - "name": "ecs/", - "href": "/dashboard/download/dashboard/cloud_iac/aliyun/ecs/", - "type": "dir", - "lastModified": "2025-09-26T01:52:34Z" - }, - { - "name": "index.html", - "href": "/dashboard/download/dashboard/cloud_iac/aliyun/index.html", - "type": "file", - "size": 25399, - "lastModified": "2025-09-26T01:52:33Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/cloud_iac/aliyun/index.txt", - "type": "file", - "size": 6975, - "lastModified": "2025-09-26T01:52:34Z" - }, - { - "name": "mns/", - "href": "/dashboard/download/dashboard/cloud_iac/aliyun/mns/", - "type": "dir", - "lastModified": "2025-09-26T01:52:34Z" - }, - { - "name": "oss/", - "href": "/dashboard/download/dashboard/cloud_iac/aliyun/oss/", - "type": "dir", - "lastModified": "2025-09-26T01:52:35Z" - }, - { - "name": "ram/", - "href": "/dashboard/download/dashboard/cloud_iac/aliyun/ram/", - "type": "dir", - "lastModified": "2025-09-26T01:52:35Z" - }, - { - "name": "security-group/", - "href": "/dashboard/download/dashboard/cloud_iac/aliyun/security-group/", - "type": "dir", - "lastModified": "2025-09-26T01:52:35Z" - }, - { - "name": "slb/", - "href": "/dashboard/download/dashboard/cloud_iac/aliyun/slb/", - "type": "dir", - "lastModified": "2025-09-26T01:52:35Z" - }, - { - "name": "vpc/", - "href": "/dashboard/download/dashboard/cloud_iac/aliyun/vpc/", - "type": "dir", - "lastModified": "2025-09-26T01:52:35Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/cloud_iac/aliyun/ack/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/cloud_iac/aliyun/ack/index.html", - "type": "file", - "size": 11441, - "lastModified": "2025-09-26T01:52:34Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/cloud_iac/aliyun/ack/index.txt", - "type": "file", - "size": 4134, - "lastModified": "2025-09-26T01:52:34Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/cloud_iac/aliyun/aliyun-emr/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/cloud_iac/aliyun/aliyun-emr/index.html", - "type": "file", - "size": 11586, - "lastModified": "2025-09-26T01:52:34Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/cloud_iac/aliyun/aliyun-emr/index.txt", - "type": "file", - "size": 4210, - "lastModified": "2025-09-26T01:52:34Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/cloud_iac/aliyun/aliyun-iot/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/cloud_iac/aliyun/aliyun-iot/index.html", - "type": "file", - "size": 11588, - "lastModified": "2025-09-26T01:52:34Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/cloud_iac/aliyun/aliyun-iot/index.txt", - "type": "file", - "size": 4211, - "lastModified": "2025-09-26T01:52:34Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/cloud_iac/aliyun/apigateway-dataworks/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/cloud_iac/aliyun/apigateway-dataworks/index.html", - "type": "file", - "size": 11798, - "lastModified": "2025-09-26T01:52:34Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/cloud_iac/aliyun/apigateway-dataworks/index.txt", - "type": "file", - "size": 4321, - "lastModified": "2025-09-26T01:52:34Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/cloud_iac/aliyun/apsaradb-rds/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/cloud_iac/aliyun/apsaradb-rds/index.html", - "type": "file", - "size": 11630, - "lastModified": "2025-09-26T01:52:34Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/cloud_iac/aliyun/apsaradb-rds/index.txt", - "type": "file", - "size": 4233, - "lastModified": "2025-09-26T01:52:34Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/cloud_iac/aliyun/apsaradb-redis/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/cloud_iac/aliyun/apsaradb-redis/index.html", - "type": "file", - "size": 11670, - "lastModified": "2025-09-26T01:52:34Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/cloud_iac/aliyun/apsaradb-redis/index.txt", - "type": "file", - "size": 4255, - "lastModified": "2025-09-26T01:52:34Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/cloud_iac/aliyun/cloudmonitor-eventbridge/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/cloud_iac/aliyun/cloudmonitor-eventbridge/index.html", - "type": "file", - "size": 11882, - "lastModified": "2025-09-26T01:52:34Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/cloud_iac/aliyun/cloudmonitor-eventbridge/index.txt", - "type": "file", - "size": 4365, - "lastModified": "2025-09-26T01:52:34Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/cloud_iac/aliyun/dns-acceleration/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/cloud_iac/aliyun/dns-acceleration/index.html", - "type": "file", - "size": 11714, - "lastModified": "2025-09-26T01:52:34Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/cloud_iac/aliyun/dns-acceleration/index.txt", - "type": "file", - "size": 4277, - "lastModified": "2025-09-26T01:52:34Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/cloud_iac/aliyun/ecs/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/cloud_iac/aliyun/ecs/index.html", - "type": "file", - "size": 11441, - "lastModified": "2025-09-26T01:52:34Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/cloud_iac/aliyun/ecs/index.txt", - "type": "file", - "size": 4134, - "lastModified": "2025-09-26T01:52:34Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/cloud_iac/aliyun/mns/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/cloud_iac/aliyun/mns/index.html", - "type": "file", - "size": 11441, - "lastModified": "2025-09-26T01:52:34Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/cloud_iac/aliyun/mns/index.txt", - "type": "file", - "size": 4134, - "lastModified": "2025-09-26T01:52:34Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/cloud_iac/aliyun/oss/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/cloud_iac/aliyun/oss/index.html", - "type": "file", - "size": 11441, - "lastModified": "2025-09-26T01:52:35Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/cloud_iac/aliyun/oss/index.txt", - "type": "file", - "size": 4134, - "lastModified": "2025-09-26T01:52:35Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/cloud_iac/aliyun/ram/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/cloud_iac/aliyun/ram/index.html", - "type": "file", - "size": 11441, - "lastModified": "2025-09-26T01:52:35Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/cloud_iac/aliyun/ram/index.txt", - "type": "file", - "size": 4134, - "lastModified": "2025-09-26T01:52:35Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/cloud_iac/aliyun/security-group/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/cloud_iac/aliyun/security-group/index.html", - "type": "file", - "size": 11672, - "lastModified": "2025-09-26T01:52:35Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/cloud_iac/aliyun/security-group/index.txt", - "type": "file", - "size": 4255, - "lastModified": "2025-09-26T01:52:35Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/cloud_iac/aliyun/slb/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/cloud_iac/aliyun/slb/index.html", - "type": "file", - "size": 11440, - "lastModified": "2025-09-26T01:52:35Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/cloud_iac/aliyun/slb/index.txt", - "type": "file", - "size": 4134, - "lastModified": "2025-09-26T01:52:35Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/cloud_iac/aliyun/vpc/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/cloud_iac/aliyun/vpc/index.html", - "type": "file", - "size": 11441, - "lastModified": "2025-09-26T01:52:35Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/cloud_iac/aliyun/vpc/index.txt", - "type": "file", - "size": 4134, - "lastModified": "2025-09-26T01:52:35Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/cloud_iac/aws/", - "entries": [ - { - "name": "alb/", - "href": "/dashboard/download/dashboard/cloud_iac/aws/alb/", - "type": "dir", - "lastModified": "2025-09-26T01:52:35Z" - }, - { - "name": "api-gateway-appflow/", - "href": "/dashboard/download/dashboard/cloud_iac/aws/api-gateway-appflow/", - "type": "dir", - "lastModified": "2025-09-26T01:52:35Z" - }, - { - "name": "aws-iot/", - "href": "/dashboard/download/dashboard/cloud_iac/aws/aws-iot/", - "type": "dir", - "lastModified": "2025-09-26T01:52:35Z" - }, - { - "name": "cloudwatch-eventbridge/", - "href": "/dashboard/download/dashboard/cloud_iac/aws/cloudwatch-eventbridge/", - "type": "dir", - "lastModified": "2025-09-26T01:52:35Z" - }, - { - "name": "ec2/", - "href": "/dashboard/download/dashboard/cloud_iac/aws/ec2/", - "type": "dir", - "lastModified": "2025-09-26T01:52:36Z" - }, - { - "name": "eks/", - "href": "/dashboard/download/dashboard/cloud_iac/aws/eks/", - "type": "dir", - "lastModified": "2025-09-26T01:52:36Z" - }, - { - "name": "elasticache/", - "href": "/dashboard/download/dashboard/cloud_iac/aws/elasticache/", - "type": "dir", - "lastModified": "2025-09-26T01:52:36Z" - }, - { - "name": "emr/", - "href": "/dashboard/download/dashboard/cloud_iac/aws/emr/", - "type": "dir", - "lastModified": "2025-09-26T01:52:36Z" - }, - { - "name": "iam/", - "href": "/dashboard/download/dashboard/cloud_iac/aws/iam/", - "type": "dir", - "lastModified": "2025-09-26T01:52:36Z" - }, - { - "name": "index.html", - "href": "/dashboard/download/dashboard/cloud_iac/aws/index.html", - "type": "file", - "size": 25081, - "lastModified": "2025-09-26T01:52:35Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/cloud_iac/aws/index.txt", - "type": "file", - "size": 6780, - "lastModified": "2025-09-26T01:52:35Z" - }, - { - "name": "rds/", - "href": "/dashboard/download/dashboard/cloud_iac/aws/rds/", - "type": "dir", - "lastModified": "2025-09-26T01:52:36Z" - }, - { - "name": "route53-cloudfront/", - "href": "/dashboard/download/dashboard/cloud_iac/aws/route53-cloudfront/", - "type": "dir", - "lastModified": "2025-09-26T01:52:36Z" - }, - { - "name": "s3/", - "href": "/dashboard/download/dashboard/cloud_iac/aws/s3/", - "type": "dir", - "lastModified": "2025-09-26T01:52:36Z" - }, - { - "name": "security-group/", - "href": "/dashboard/download/dashboard/cloud_iac/aws/security-group/", - "type": "dir", - "lastModified": "2025-09-26T01:52:36Z" - }, - { - "name": "sqs/", - "href": "/dashboard/download/dashboard/cloud_iac/aws/sqs/", - "type": "dir", - "lastModified": "2025-09-26T01:52:36Z" - }, - { - "name": "vpc/", - "href": "/dashboard/download/dashboard/cloud_iac/aws/vpc/", - "type": "dir", - "lastModified": "2025-09-26T01:52:36Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/cloud_iac/aws/alb/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/cloud_iac/aws/alb/index.html", - "type": "file", - "size": 11384, - "lastModified": "2025-09-26T01:52:35Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/cloud_iac/aws/alb/index.txt", - "type": "file", - "size": 4104, - "lastModified": "2025-09-26T01:52:35Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/cloud_iac/aws/api-gateway-appflow/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/cloud_iac/aws/api-gateway-appflow/index.html", - "type": "file", - "size": 11720, - "lastModified": "2025-09-26T01:52:35Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/cloud_iac/aws/api-gateway-appflow/index.txt", - "type": "file", - "size": 4280, - "lastModified": "2025-09-26T01:52:35Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/cloud_iac/aws/aws-iot/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/cloud_iac/aws/aws-iot/index.html", - "type": "file", - "size": 11468, - "lastModified": "2025-09-26T01:52:35Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/cloud_iac/aws/aws-iot/index.txt", - "type": "file", - "size": 4148, - "lastModified": "2025-09-26T01:52:35Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/cloud_iac/aws/cloudwatch-eventbridge/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/cloud_iac/aws/cloudwatch-eventbridge/index.html", - "type": "file", - "size": 11783, - "lastModified": "2025-09-26T01:52:35Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/cloud_iac/aws/cloudwatch-eventbridge/index.txt", - "type": "file", - "size": 4313, - "lastModified": "2025-09-26T01:52:35Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/cloud_iac/aws/ec2/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/cloud_iac/aws/ec2/index.html", - "type": "file", - "size": 11384, - "lastModified": "2025-09-26T01:52:35Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/cloud_iac/aws/ec2/index.txt", - "type": "file", - "size": 4104, - "lastModified": "2025-09-26T01:52:36Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/cloud_iac/aws/eks/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/cloud_iac/aws/eks/index.html", - "type": "file", - "size": 11384, - "lastModified": "2025-09-26T01:52:36Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/cloud_iac/aws/eks/index.txt", - "type": "file", - "size": 4104, - "lastModified": "2025-09-26T01:52:36Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/cloud_iac/aws/elasticache/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/cloud_iac/aws/elasticache/index.html", - "type": "file", - "size": 11552, - "lastModified": "2025-09-26T01:52:36Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/cloud_iac/aws/elasticache/index.txt", - "type": "file", - "size": 4192, - "lastModified": "2025-09-26T01:52:36Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/cloud_iac/aws/emr/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/cloud_iac/aws/emr/index.html", - "type": "file", - "size": 11384, - "lastModified": "2025-09-26T01:52:36Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/cloud_iac/aws/emr/index.txt", - "type": "file", - "size": 4104, - "lastModified": "2025-09-26T01:52:36Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/cloud_iac/aws/iam/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/cloud_iac/aws/iam/index.html", - "type": "file", - "size": 11384, - "lastModified": "2025-09-26T01:52:36Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/cloud_iac/aws/iam/index.txt", - "type": "file", - "size": 4104, - "lastModified": "2025-09-26T01:52:36Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/cloud_iac/aws/rds/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/cloud_iac/aws/rds/index.html", - "type": "file", - "size": 11383, - "lastModified": "2025-09-26T01:52:36Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/cloud_iac/aws/rds/index.txt", - "type": "file", - "size": 4104, - "lastModified": "2025-09-26T01:52:36Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/cloud_iac/aws/route53-cloudfront/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/cloud_iac/aws/route53-cloudfront/index.html", - "type": "file", - "size": 11699, - "lastModified": "2025-09-26T01:52:36Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/cloud_iac/aws/route53-cloudfront/index.txt", - "type": "file", - "size": 4269, - "lastModified": "2025-09-26T01:52:36Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/cloud_iac/aws/s3/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/cloud_iac/aws/s3/index.html", - "type": "file", - "size": 11363, - "lastModified": "2025-09-26T01:52:36Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/cloud_iac/aws/s3/index.txt", - "type": "file", - "size": 4093, - "lastModified": "2025-09-26T01:52:36Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/cloud_iac/aws/security-group/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/cloud_iac/aws/security-group/index.html", - "type": "file", - "size": 11615, - "lastModified": "2025-09-26T01:52:36Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/cloud_iac/aws/security-group/index.txt", - "type": "file", - "size": 4225, - "lastModified": "2025-09-26T01:52:36Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/cloud_iac/aws/sqs/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/cloud_iac/aws/sqs/index.html", - "type": "file", - "size": 11384, - "lastModified": "2025-09-26T01:52:36Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/cloud_iac/aws/sqs/index.txt", - "type": "file", - "size": 4104, - "lastModified": "2025-09-26T01:52:36Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/cloud_iac/aws/vpc/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/cloud_iac/aws/vpc/index.html", - "type": "file", - "size": 11384, - "lastModified": "2025-09-26T01:52:36Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/cloud_iac/aws/vpc/index.txt", - "type": "file", - "size": 4104, - "lastModified": "2025-09-26T01:52:36Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/cloud_iac/azure/", - "entries": [ - { - "name": "aks/", - "href": "/dashboard/download/dashboard/cloud_iac/azure/aks/", - "type": "dir", - "lastModified": "2025-09-26T01:52:37Z" - }, - { - "name": "apim-data-factory/", - "href": "/dashboard/download/dashboard/cloud_iac/azure/apim-data-factory/", - "type": "dir", - "lastModified": "2025-09-26T01:52:37Z" - }, - { - "name": "azure-ad/", - "href": "/dashboard/download/dashboard/cloud_iac/azure/azure-ad/", - "type": "dir", - "lastModified": "2025-09-26T01:52:37Z" - }, - { - "name": "azure-database/", - "href": "/dashboard/download/dashboard/cloud_iac/azure/azure-database/", - "type": "dir", - "lastModified": "2025-09-26T01:52:37Z" - }, - { - "name": "azure-dns-front-door/", - "href": "/dashboard/download/dashboard/cloud_iac/azure/azure-dns-front-door/", - "type": "dir", - "lastModified": "2025-09-26T01:52:37Z" - }, - { - "name": "azure-iot/", - "href": "/dashboard/download/dashboard/cloud_iac/azure/azure-iot/", - "type": "dir", - "lastModified": "2025-09-26T01:52:37Z" - }, - { - "name": "azure-load-balancer/", - "href": "/dashboard/download/dashboard/cloud_iac/azure/azure-load-balancer/", - "type": "dir", - "lastModified": "2025-09-26T01:52:37Z" - }, - { - "name": "blob-storage/", - "href": "/dashboard/download/dashboard/cloud_iac/azure/blob-storage/", - "type": "dir", - "lastModified": "2025-09-26T01:52:37Z" - }, - { - "name": "index.html", - "href": "/dashboard/download/dashboard/cloud_iac/azure/index.html", - "type": "file", - "size": 25638, - "lastModified": "2025-09-26T01:52:37Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/cloud_iac/azure/index.txt", - "type": "file", - "size": 7117, - "lastModified": "2025-09-26T01:52:37Z" - }, - { - "name": "monitor-event-grid/", - "href": "/dashboard/download/dashboard/cloud_iac/azure/monitor-event-grid/", - "type": "dir", - "lastModified": "2025-09-26T01:52:37Z" - }, - { - "name": "network-security-group/", - "href": "/dashboard/download/dashboard/cloud_iac/azure/network-security-group/", - "type": "dir", - "lastModified": "2025-09-26T01:52:38Z" - }, - { - "name": "redis-cache/", - "href": "/dashboard/download/dashboard/cloud_iac/azure/redis-cache/", - "type": "dir", - "lastModified": "2025-09-26T01:52:38Z" - }, - { - "name": "service-bus/", - "href": "/dashboard/download/dashboard/cloud_iac/azure/service-bus/", - "type": "dir", - "lastModified": "2025-09-26T01:52:38Z" - }, - { - "name": "synapse/", - "href": "/dashboard/download/dashboard/cloud_iac/azure/synapse/", - "type": "dir", - "lastModified": "2025-09-26T01:52:38Z" - }, - { - "name": "virtual-machines/", - "href": "/dashboard/download/dashboard/cloud_iac/azure/virtual-machines/", - "type": "dir", - "lastModified": "2025-09-26T01:52:38Z" - }, - { - "name": "virtual-network/", - "href": "/dashboard/download/dashboard/cloud_iac/azure/virtual-network/", - "type": "dir", - "lastModified": "2025-09-26T01:52:38Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/cloud_iac/azure/aks/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/cloud_iac/azure/aks/index.html", - "type": "file", - "size": 11422, - "lastModified": "2025-09-26T01:52:37Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/cloud_iac/azure/aks/index.txt", - "type": "file", - "size": 4124, - "lastModified": "2025-09-26T01:52:37Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/cloud_iac/azure/apim-data-factory/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/cloud_iac/azure/apim-data-factory/index.html", - "type": "file", - "size": 11716, - "lastModified": "2025-09-26T01:52:37Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/cloud_iac/azure/apim-data-factory/index.txt", - "type": "file", - "size": 4278, - "lastModified": "2025-09-26T01:52:37Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/cloud_iac/azure/azure-ad/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/cloud_iac/azure/azure-ad/index.html", - "type": "file", - "size": 11527, - "lastModified": "2025-09-26T01:52:37Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/cloud_iac/azure/azure-ad/index.txt", - "type": "file", - "size": 4179, - "lastModified": "2025-09-26T01:52:37Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/cloud_iac/azure/azure-database/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/cloud_iac/azure/azure-database/index.html", - "type": "file", - "size": 11653, - "lastModified": "2025-09-26T01:52:37Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/cloud_iac/azure/azure-database/index.txt", - "type": "file", - "size": 4245, - "lastModified": "2025-09-26T01:52:37Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/cloud_iac/azure/azure-dns-front-door/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/cloud_iac/azure/azure-dns-front-door/index.html", - "type": "file", - "size": 11779, - "lastModified": "2025-09-26T01:52:37Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/cloud_iac/azure/azure-dns-front-door/index.txt", - "type": "file", - "size": 4311, - "lastModified": "2025-09-26T01:52:37Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/cloud_iac/azure/azure-iot/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/cloud_iac/azure/azure-iot/index.html", - "type": "file", - "size": 11548, - "lastModified": "2025-09-26T01:52:37Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/cloud_iac/azure/azure-iot/index.txt", - "type": "file", - "size": 4190, - "lastModified": "2025-09-26T01:52:37Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/cloud_iac/azure/azure-load-balancer/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/cloud_iac/azure/azure-load-balancer/index.html", - "type": "file", - "size": 11758, - "lastModified": "2025-09-26T01:52:37Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/cloud_iac/azure/azure-load-balancer/index.txt", - "type": "file", - "size": 4300, - "lastModified": "2025-09-26T01:52:37Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/cloud_iac/azure/blob-storage/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/cloud_iac/azure/blob-storage/index.html", - "type": "file", - "size": 11611, - "lastModified": "2025-09-26T01:52:37Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/cloud_iac/azure/blob-storage/index.txt", - "type": "file", - "size": 4223, - "lastModified": "2025-09-26T01:52:37Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/cloud_iac/azure/monitor-event-grid/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/cloud_iac/azure/monitor-event-grid/index.html", - "type": "file", - "size": 11737, - "lastModified": "2025-09-26T01:52:37Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/cloud_iac/azure/monitor-event-grid/index.txt", - "type": "file", - "size": 4289, - "lastModified": "2025-09-26T01:52:37Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/cloud_iac/azure/network-security-group/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/cloud_iac/azure/network-security-group/index.html", - "type": "file", - "size": 11821, - "lastModified": "2025-09-26T01:52:38Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/cloud_iac/azure/network-security-group/index.txt", - "type": "file", - "size": 4333, - "lastModified": "2025-09-26T01:52:38Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/cloud_iac/azure/redis-cache/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/cloud_iac/azure/redis-cache/index.html", - "type": "file", - "size": 11590, - "lastModified": "2025-09-26T01:52:38Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/cloud_iac/azure/redis-cache/index.txt", - "type": "file", - "size": 4212, - "lastModified": "2025-09-26T01:52:38Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/cloud_iac/azure/service-bus/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/cloud_iac/azure/service-bus/index.html", - "type": "file", - "size": 11589, - "lastModified": "2025-09-26T01:52:38Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/cloud_iac/azure/service-bus/index.txt", - "type": "file", - "size": 4212, - "lastModified": "2025-09-26T01:52:38Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/cloud_iac/azure/synapse/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/cloud_iac/azure/synapse/index.html", - "type": "file", - "size": 11505, - "lastModified": "2025-09-26T01:52:38Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/cloud_iac/azure/synapse/index.txt", - "type": "file", - "size": 4168, - "lastModified": "2025-09-26T01:52:38Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/cloud_iac/azure/virtual-machines/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/cloud_iac/azure/virtual-machines/index.html", - "type": "file", - "size": 11694, - "lastModified": "2025-09-26T01:52:38Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/cloud_iac/azure/virtual-machines/index.txt", - "type": "file", - "size": 4267, - "lastModified": "2025-09-26T01:52:38Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/cloud_iac/azure/virtual-network/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/cloud_iac/azure/virtual-network/index.html", - "type": "file", - "size": 11674, - "lastModified": "2025-09-26T01:52:38Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/cloud_iac/azure/virtual-network/index.txt", - "type": "file", - "size": 4256, - "lastModified": "2025-09-26T01:52:38Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/cloud_iac/gcp/", - "entries": [ - { - "name": "apigateway-integration/", - "href": "/dashboard/download/dashboard/cloud_iac/gcp/apigateway-integration/", - "type": "dir", - "lastModified": "2025-09-26T01:52:38Z" - }, - { - "name": "cloud-dns-cdn/", - "href": "/dashboard/download/dashboard/cloud_iac/gcp/cloud-dns-cdn/", - "type": "dir", - "lastModified": "2025-09-26T01:52:38Z" - }, - { - "name": "cloud-iam/", - "href": "/dashboard/download/dashboard/cloud_iac/gcp/cloud-iam/", - "type": "dir", - "lastModified": "2025-09-26T01:52:38Z" - }, - { - "name": "cloud-load-balancing/", - "href": "/dashboard/download/dashboard/cloud_iac/gcp/cloud-load-balancing/", - "type": "dir", - "lastModified": "2025-09-26T01:52:39Z" - }, - { - "name": "cloud-sql/", - "href": "/dashboard/download/dashboard/cloud_iac/gcp/cloud-sql/", - "type": "dir", - "lastModified": "2025-09-26T01:52:39Z" - }, - { - "name": "cloud-storage/", - "href": "/dashboard/download/dashboard/cloud_iac/gcp/cloud-storage/", - "type": "dir", - "lastModified": "2025-09-26T01:52:39Z" - }, - { - "name": "compute-engine/", - "href": "/dashboard/download/dashboard/cloud_iac/gcp/compute-engine/", - "type": "dir", - "lastModified": "2025-09-26T01:52:39Z" - }, - { - "name": "dataproc/", - "href": "/dashboard/download/dashboard/cloud_iac/gcp/dataproc/", - "type": "dir", - "lastModified": "2025-09-26T01:52:39Z" - }, - { - "name": "gcp-iot/", - "href": "/dashboard/download/dashboard/cloud_iac/gcp/gcp-iot/", - "type": "dir", - "lastModified": "2025-09-26T01:52:39Z" - }, - { - "name": "gke/", - "href": "/dashboard/download/dashboard/cloud_iac/gcp/gke/", - "type": "dir", - "lastModified": "2025-09-26T01:52:39Z" - }, - { - "name": "index.html", - "href": "/dashboard/download/dashboard/cloud_iac/gcp/index.html", - "type": "file", - "size": 25340, - "lastModified": "2025-09-26T01:52:38Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/cloud_iac/gcp/index.txt", - "type": "file", - "size": 6936, - "lastModified": "2025-09-26T01:52:38Z" - }, - { - "name": "memorystore/", - "href": "/dashboard/download/dashboard/cloud_iac/gcp/memorystore/", - "type": "dir", - "lastModified": "2025-09-26T01:52:39Z" - }, - { - "name": "operations-eventarc/", - "href": "/dashboard/download/dashboard/cloud_iac/gcp/operations-eventarc/", - "type": "dir", - "lastModified": "2025-09-26T01:52:39Z" - }, - { - "name": "pubsub/", - "href": "/dashboard/download/dashboard/cloud_iac/gcp/pubsub/", - "type": "dir", - "lastModified": "2025-09-26T01:52:39Z" - }, - { - "name": "vpc/", - "href": "/dashboard/download/dashboard/cloud_iac/gcp/vpc/", - "type": "dir", - "lastModified": "2025-09-26T01:52:40Z" - }, - { - "name": "vpc-firewall/", - "href": "/dashboard/download/dashboard/cloud_iac/gcp/vpc-firewall/", - "type": "dir", - "lastModified": "2025-09-26T01:52:40Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/cloud_iac/gcp/apigateway-integration/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/cloud_iac/gcp/apigateway-integration/index.html", - "type": "file", - "size": 11783, - "lastModified": "2025-09-26T01:52:38Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/cloud_iac/gcp/apigateway-integration/index.txt", - "type": "file", - "size": 4313, - "lastModified": "2025-09-26T01:52:38Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/cloud_iac/gcp/cloud-dns-cdn/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/cloud_iac/gcp/cloud-dns-cdn/index.html", - "type": "file", - "size": 11594, - "lastModified": "2025-09-26T01:52:38Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/cloud_iac/gcp/cloud-dns-cdn/index.txt", - "type": "file", - "size": 4214, - "lastModified": "2025-09-26T01:52:38Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/cloud_iac/gcp/cloud-iam/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/cloud_iac/gcp/cloud-iam/index.html", - "type": "file", - "size": 11510, - "lastModified": "2025-09-26T01:52:38Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/cloud_iac/gcp/cloud-iam/index.txt", - "type": "file", - "size": 4170, - "lastModified": "2025-09-26T01:52:38Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/cloud_iac/gcp/cloud-load-balancing/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/cloud_iac/gcp/cloud-load-balancing/index.html", - "type": "file", - "size": 11741, - "lastModified": "2025-09-26T01:52:39Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/cloud_iac/gcp/cloud-load-balancing/index.txt", - "type": "file", - "size": 4291, - "lastModified": "2025-09-26T01:52:39Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/cloud_iac/gcp/cloud-sql/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/cloud_iac/gcp/cloud-sql/index.html", - "type": "file", - "size": 11510, - "lastModified": "2025-09-26T01:52:39Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/cloud_iac/gcp/cloud-sql/index.txt", - "type": "file", - "size": 4170, - "lastModified": "2025-09-26T01:52:39Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/cloud_iac/gcp/cloud-storage/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/cloud_iac/gcp/cloud-storage/index.html", - "type": "file", - "size": 11594, - "lastModified": "2025-09-26T01:52:39Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/cloud_iac/gcp/cloud-storage/index.txt", - "type": "file", - "size": 4214, - "lastModified": "2025-09-26T01:52:39Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/cloud_iac/gcp/compute-engine/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/cloud_iac/gcp/compute-engine/index.html", - "type": "file", - "size": 11615, - "lastModified": "2025-09-26T01:52:39Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/cloud_iac/gcp/compute-engine/index.txt", - "type": "file", - "size": 4225, - "lastModified": "2025-09-26T01:52:39Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/cloud_iac/gcp/dataproc/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/cloud_iac/gcp/dataproc/index.html", - "type": "file", - "size": 11489, - "lastModified": "2025-09-26T01:52:39Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/cloud_iac/gcp/dataproc/index.txt", - "type": "file", - "size": 4159, - "lastModified": "2025-09-26T01:52:39Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/cloud_iac/gcp/gcp-iot/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/cloud_iac/gcp/gcp-iot/index.html", - "type": "file", - "size": 11468, - "lastModified": "2025-09-26T01:52:39Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/cloud_iac/gcp/gcp-iot/index.txt", - "type": "file", - "size": 4148, - "lastModified": "2025-09-26T01:52:39Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/cloud_iac/gcp/gke/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/cloud_iac/gcp/gke/index.html", - "type": "file", - "size": 11384, - "lastModified": "2025-09-26T01:52:39Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/cloud_iac/gcp/gke/index.txt", - "type": "file", - "size": 4104, - "lastModified": "2025-09-26T01:52:39Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/cloud_iac/gcp/memorystore/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/cloud_iac/gcp/memorystore/index.html", - "type": "file", - "size": 11552, - "lastModified": "2025-09-26T01:52:39Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/cloud_iac/gcp/memorystore/index.txt", - "type": "file", - "size": 4192, - "lastModified": "2025-09-26T01:52:39Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/cloud_iac/gcp/operations-eventarc/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/cloud_iac/gcp/operations-eventarc/index.html", - "type": "file", - "size": 11720, - "lastModified": "2025-09-26T01:52:39Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/cloud_iac/gcp/operations-eventarc/index.txt", - "type": "file", - "size": 4280, - "lastModified": "2025-09-26T01:52:39Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/cloud_iac/gcp/pubsub/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/cloud_iac/gcp/pubsub/index.html", - "type": "file", - "size": 11447, - "lastModified": "2025-09-26T01:52:39Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/cloud_iac/gcp/pubsub/index.txt", - "type": "file", - "size": 4137, - "lastModified": "2025-09-26T01:52:39Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/cloud_iac/gcp/vpc/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/cloud_iac/gcp/vpc/index.html", - "type": "file", - "size": 11384, - "lastModified": "2025-09-26T01:52:40Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/cloud_iac/gcp/vpc/index.txt", - "type": "file", - "size": 4104, - "lastModified": "2025-09-26T01:52:40Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/cloud_iac/gcp/vpc-firewall/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/cloud_iac/gcp/vpc-firewall/index.html", - "type": "file", - "size": 11570, - "lastModified": "2025-09-26T01:52:39Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/cloud_iac/gcp/vpc-firewall/index.txt", - "type": "file", - "size": 4203, - "lastModified": "2025-09-26T01:52:40Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/demo/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/demo/index.html", - "type": "file", - "size": 10841, - "lastModified": "2025-09-26T01:52:40Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/demo/index.txt", - "type": "file", - "size": 3962, - "lastModified": "2025-09-26T01:52:40Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/dl-index/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/dl-index/index.html", - "type": "file", - "size": 11019, - "lastModified": "2025-09-26T01:52:40Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/dl-index/index.txt", - "type": "file", - "size": 4054, - "lastModified": "2025-09-26T01:52:40Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/index.html", - "type": "file", - "size": 22463, - "lastModified": "2025-09-26T01:52:40Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/index.txt", - "type": "file", - "size": 6323, - "lastModified": "2025-09-26T01:52:40Z" - }, - { - "name": "interview-qa/", - "href": "/dashboard/download/dashboard/docs/interview-qa/", - "type": "dir", - "lastModified": "2025-09-26T01:52:41Z" - }, - { - "name": "keycloak/", - "href": "/dashboard/download/dashboard/docs/keycloak/", - "type": "dir", - "lastModified": "2025-09-26T01:52:42Z" - }, - { - "name": "keycloak-v30-17935243600/", - "href": "/dashboard/download/dashboard/docs/keycloak-v30-17935243600/", - "type": "dir", - "lastModified": "2025-09-26T01:52:41Z" - }, - { - "name": "landingzone/", - "href": "/dashboard/download/dashboard/docs/landingzone/", - "type": "dir", - "lastModified": "2025-09-26T01:52:43Z" - }, - { - "name": "landingzone-v30-17935243600/", - "href": "/dashboard/download/dashboard/docs/landingzone-v30-17935243600/", - "type": "dir", - "lastModified": "2025-09-26T01:52:42Z" - }, - { - "name": "linux-k8s-ops/", - "href": "/dashboard/download/dashboard/docs/linux-k8s-ops/", - "type": "dir", - "lastModified": "2025-09-26T01:52:43Z" - }, - { - "name": "observability/", - "href": "/dashboard/download/dashboard/docs/observability/", - "type": "dir", - "lastModified": "2025-09-26T01:52:44Z" - }, - { - "name": "personal/", - "href": "/dashboard/download/dashboard/docs/personal/", - "type": "dir", - "lastModified": "2025-09-26T01:52:51Z" - }, - { - "name": "personal-v30-17935243600/", - "href": "/dashboard/download/dashboard/docs/personal-v30-17935243600/", - "type": "dir", - "lastModified": "2025-09-26T01:52:45Z" - }, - { - "name": "techexploration/", - "href": "/dashboard/download/dashboard/docs/techexploration/", - "type": "dir", - "lastModified": "2025-09-26T01:52:52Z" - }, - { - "name": "techexploration-v30-17935243600/", - "href": "/dashboard/download/dashboard/docs/techexploration-v30-17935243600/", - "type": "dir", - "lastModified": "2025-09-26T01:52:52Z" - }, - { - "name": "the-indiedeveloper-fullstack-roadmap/", - "href": "/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap/", - "type": "dir", - "lastModified": "2025-09-26T01:52:54Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/interview-qa/", - "entries": [ - { - "name": "cn-v23-17739490366/", - "href": "/dashboard/download/dashboard/docs/interview-qa/cn-v23-17739490366/", - "type": "dir", - "lastModified": "2025-09-26T01:52:40Z" - }, - { - "name": "cn-v26-17740473328/", - "href": "/dashboard/download/dashboard/docs/interview-qa/cn-v26-17740473328/", - "type": "dir", - "lastModified": "2025-09-26T01:52:40Z" - }, - { - "name": "cn-v27-17740487419/", - "href": "/dashboard/download/dashboard/docs/interview-qa/cn-v27-17740487419/", - "type": "dir", - "lastModified": "2025-09-26T01:52:40Z" - }, - { - "name": "cn-v28-17749789283/", - "href": "/dashboard/download/dashboard/docs/interview-qa/cn-v28-17749789283/", - "type": "dir", - "lastModified": "2025-09-26T01:52:40Z" - }, - { - "name": "cn-v29-17749815392/", - "href": "/dashboard/download/dashboard/docs/interview-qa/cn-v29-17749815392/", - "type": "dir", - "lastModified": "2025-09-26T01:52:41Z" - }, - { - "name": "cn-v30-17935243600/", - "href": "/dashboard/download/dashboard/docs/interview-qa/cn-v30-17935243600/", - "type": "dir", - "lastModified": "2025-09-26T01:52:41Z" - }, - { - "name": "cn-v31-17976868329/", - "href": "/dashboard/download/dashboard/docs/interview-qa/cn-v31-17976868329/", - "type": "dir", - "lastModified": "2025-09-26T01:52:41Z" - }, - { - "name": "cn-v32-17977204714/", - "href": "/dashboard/download/dashboard/docs/interview-qa/cn-v32-17977204714/", - "type": "dir", - "lastModified": "2025-09-26T01:52:41Z" - }, - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/interview-qa/index.html", - "type": "file", - "size": 19492, - "lastModified": "2025-09-26T01:52:40Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/interview-qa/index.txt", - "type": "file", - "size": 5866, - "lastModified": "2025-09-26T01:52:40Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/interview-qa/cn-v23-17739490366/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/interview-qa/cn-v23-17739490366/index.html", - "type": "file", - "size": 11771, - "lastModified": "2025-09-26T01:52:40Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/interview-qa/cn-v23-17739490366/index.txt", - "type": "file", - "size": 4310, - "lastModified": "2025-09-26T01:52:40Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/interview-qa/cn-v26-17740473328/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/interview-qa/cn-v26-17740473328/index.html", - "type": "file", - "size": 11771, - "lastModified": "2025-09-26T01:52:40Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/interview-qa/cn-v26-17740473328/index.txt", - "type": "file", - "size": 4310, - "lastModified": "2025-09-26T01:52:40Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/interview-qa/cn-v27-17740487419/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/interview-qa/cn-v27-17740487419/index.html", - "type": "file", - "size": 11771, - "lastModified": "2025-09-26T01:52:40Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/interview-qa/cn-v27-17740487419/index.txt", - "type": "file", - "size": 4310, - "lastModified": "2025-09-26T01:52:40Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/interview-qa/cn-v28-17749789283/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/interview-qa/cn-v28-17749789283/index.html", - "type": "file", - "size": 11771, - "lastModified": "2025-09-26T01:52:40Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/interview-qa/cn-v28-17749789283/index.txt", - "type": "file", - "size": 4310, - "lastModified": "2025-09-26T01:52:40Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/interview-qa/cn-v29-17749815392/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/interview-qa/cn-v29-17749815392/index.html", - "type": "file", - "size": 11771, - "lastModified": "2025-09-26T01:52:40Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/interview-qa/cn-v29-17749815392/index.txt", - "type": "file", - "size": 4310, - "lastModified": "2025-09-26T01:52:41Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/interview-qa/cn-v30-17935243600/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/interview-qa/cn-v30-17935243600/index.html", - "type": "file", - "size": 11771, - "lastModified": "2025-09-26T01:52:41Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/interview-qa/cn-v30-17935243600/index.txt", - "type": "file", - "size": 4310, - "lastModified": "2025-09-26T01:52:41Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/interview-qa/cn-v31-17976868329/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/interview-qa/cn-v31-17976868329/index.html", - "type": "file", - "size": 11771, - "lastModified": "2025-09-26T01:52:41Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/interview-qa/cn-v31-17976868329/index.txt", - "type": "file", - "size": 4310, - "lastModified": "2025-09-26T01:52:41Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/interview-qa/cn-v32-17977204714/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/interview-qa/cn-v32-17977204714/index.html", - "type": "file", - "size": 11771, - "lastModified": "2025-09-26T01:52:41Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/interview-qa/cn-v32-17977204714/index.txt", - "type": "file", - "size": 4310, - "lastModified": "2025-09-26T01:52:41Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/keycloak/", - "entries": [ - { - "name": "en-v31-17976868329/", - "href": "/dashboard/download/dashboard/docs/keycloak/en-v31-17976868329/", - "type": "dir", - "lastModified": "2025-09-26T01:52:41Z" - }, - { - "name": "en-v32-17977204714/", - "href": "/dashboard/download/dashboard/docs/keycloak/en-v32-17977204714/", - "type": "dir", - "lastModified": "2025-09-26T01:52:41Z" - }, - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/keycloak/index.html", - "type": "file", - "size": 17564, - "lastModified": "2025-09-26T01:52:41Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/keycloak/index.txt", - "type": "file", - "size": 5406, - "lastModified": "2025-09-26T01:52:41Z" - }, - { - "name": "keycloak-v24-17740025432/", - "href": "/dashboard/download/dashboard/docs/keycloak/keycloak-v24-17740025432/", - "type": "dir", - "lastModified": "2025-09-26T01:52:41Z" - }, - { - "name": "keycloak-v26-17740473328/", - "href": "/dashboard/download/dashboard/docs/keycloak/keycloak-v26-17740473328/", - "type": "dir", - "lastModified": "2025-09-26T01:52:41Z" - }, - { - "name": "keycloak-v28-17749789283/", - "href": "/dashboard/download/dashboard/docs/keycloak/keycloak-v28-17749789283/", - "type": "dir", - "lastModified": "2025-09-26T01:52:42Z" - }, - { - "name": "keycloak-v29-17749815392/", - "href": "/dashboard/download/dashboard/docs/keycloak/keycloak-v29-17749815392/", - "type": "dir", - "lastModified": "2025-09-26T01:52:42Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/keycloak/en-v31-17976868329/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/keycloak/en-v31-17976868329/index.html", - "type": "file", - "size": 11696, - "lastModified": "2025-09-26T01:52:41Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/keycloak/en-v31-17976868329/index.txt", - "type": "file", - "size": 4270, - "lastModified": "2025-09-26T01:52:41Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/keycloak/en-v32-17977204714/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/keycloak/en-v32-17977204714/index.html", - "type": "file", - "size": 11696, - "lastModified": "2025-09-26T01:52:41Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/keycloak/en-v32-17977204714/index.txt", - "type": "file", - "size": 4270, - "lastModified": "2025-09-26T01:52:41Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/keycloak/keycloak-v24-17740025432/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/keycloak/keycloak-v24-17740025432/index.html", - "type": "file", - "size": 11821, - "lastModified": "2025-09-26T01:52:41Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/keycloak/keycloak-v24-17740025432/index.txt", - "type": "file", - "size": 4336, - "lastModified": "2025-09-26T01:52:41Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/keycloak/keycloak-v26-17740473328/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/keycloak/keycloak-v26-17740473328/index.html", - "type": "file", - "size": 11821, - "lastModified": "2025-09-26T01:52:41Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/keycloak/keycloak-v26-17740473328/index.txt", - "type": "file", - "size": 4336, - "lastModified": "2025-09-26T01:52:41Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/keycloak/keycloak-v28-17749789283/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/keycloak/keycloak-v28-17749789283/index.html", - "type": "file", - "size": 11821, - "lastModified": "2025-09-26T01:52:42Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/keycloak/keycloak-v28-17749789283/index.txt", - "type": "file", - "size": 4336, - "lastModified": "2025-09-26T01:52:42Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/keycloak/keycloak-v29-17749815392/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/keycloak/keycloak-v29-17749815392/index.html", - "type": "file", - "size": 11821, - "lastModified": "2025-09-26T01:52:42Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/keycloak/keycloak-v29-17749815392/index.txt", - "type": "file", - "size": 4336, - "lastModified": "2025-09-26T01:52:42Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/keycloak-v30-17935243600/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/keycloak-v30-17935243600/index.html", - "type": "file", - "size": 13254, - "lastModified": "2025-09-26T01:52:41Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/keycloak-v30-17935243600/index.txt", - "type": "file", - "size": 4541, - "lastModified": "2025-09-26T01:52:41Z" - }, - { - "name": "keycloak-sso-design-and-implementation/", - "href": "/dashboard/download/dashboard/docs/keycloak-v30-17935243600/keycloak-sso-design-and-implementation/", - "type": "dir", - "lastModified": "2025-09-26T01:52:41Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/keycloak-v30-17935243600/keycloak-sso-design-and-implementation/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/keycloak-v30-17935243600/keycloak-sso-design-and-implementation/index.html", - "type": "file", - "size": 12418, - "lastModified": "2025-09-26T01:52:41Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/keycloak-v30-17935243600/keycloak-sso-design-and-implementation/index.txt", - "type": "file", - "size": 4649, - "lastModified": "2025-09-26T01:52:41Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/landingzone/", - "entries": [ - { - "name": "en-v31-17976868329/", - "href": "/dashboard/download/dashboard/docs/landingzone/en-v31-17976868329/", - "type": "dir", - "lastModified": "2025-09-26T01:52:42Z" - }, - { - "name": "en-v32-17977204714/", - "href": "/dashboard/download/dashboard/docs/landingzone/en-v32-17977204714/", - "type": "dir", - "lastModified": "2025-09-26T01:52:42Z" - }, - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/landingzone/index.html", - "type": "file", - "size": 16752, - "lastModified": "2025-09-26T01:52:42Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/landingzone/index.txt", - "type": "file", - "size": 5266, - "lastModified": "2025-09-26T01:52:42Z" - }, - { - "name": "landingzone-v27-17740487419/", - "href": "/dashboard/download/dashboard/docs/landingzone/landingzone-v27-17740487419/", - "type": "dir", - "lastModified": "2025-09-26T01:52:42Z" - }, - { - "name": "landingzone-v28-17749789283/", - "href": "/dashboard/download/dashboard/docs/landingzone/landingzone-v28-17749789283/", - "type": "dir", - "lastModified": "2025-09-26T01:52:42Z" - }, - { - "name": "landingzone-v29-17749815392/", - "href": "/dashboard/download/dashboard/docs/landingzone/landingzone-v29-17749815392/", - "type": "dir", - "lastModified": "2025-09-26T01:52:43Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/landingzone/en-v31-17976868329/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/landingzone/en-v31-17976868329/index.html", - "type": "file", - "size": 11753, - "lastModified": "2025-09-26T01:52:42Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/landingzone/en-v31-17976868329/index.txt", - "type": "file", - "size": 4300, - "lastModified": "2025-09-26T01:52:42Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/landingzone/en-v32-17977204714/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/landingzone/en-v32-17977204714/index.html", - "type": "file", - "size": 11753, - "lastModified": "2025-09-26T01:52:42Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/landingzone/en-v32-17977204714/index.txt", - "type": "file", - "size": 4300, - "lastModified": "2025-09-26T01:52:42Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/landingzone/landingzone-v27-17740487419/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/landingzone/landingzone-v27-17740487419/index.html", - "type": "file", - "size": 11942, - "lastModified": "2025-09-26T01:52:42Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/landingzone/landingzone-v27-17740487419/index.txt", - "type": "file", - "size": 4399, - "lastModified": "2025-09-26T01:52:42Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/landingzone/landingzone-v28-17749789283/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/landingzone/landingzone-v28-17749789283/index.html", - "type": "file", - "size": 11942, - "lastModified": "2025-09-26T01:52:42Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/landingzone/landingzone-v28-17749789283/index.txt", - "type": "file", - "size": 4399, - "lastModified": "2025-09-26T01:52:42Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/landingzone/landingzone-v29-17749815392/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/landingzone/landingzone-v29-17749815392/index.html", - "type": "file", - "size": 11942, - "lastModified": "2025-09-26T01:52:42Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/landingzone/landingzone-v29-17749815392/index.txt", - "type": "file", - "size": 4399, - "lastModified": "2025-09-26T01:52:43Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/landingzone-v30-17935243600/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/landingzone-v30-17935243600/index.html", - "type": "file", - "size": 13325, - "lastModified": "2025-09-26T01:52:42Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/landingzone-v30-17935243600/index.txt", - "type": "file", - "size": 4580, - "lastModified": "2025-09-26T01:52:42Z" - }, - { - "name": "landing-zone-design-and-implementation/", - "href": "/dashboard/download/dashboard/docs/landingzone-v30-17935243600/landing-zone-design-and-implementation/", - "type": "dir", - "lastModified": "2025-09-26T01:52:42Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/landingzone-v30-17935243600/landing-zone-design-and-implementation/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/landingzone-v30-17935243600/landing-zone-design-and-implementation/index.html", - "type": "file", - "size": 12474, - "lastModified": "2025-09-26T01:52:42Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/landingzone-v30-17935243600/landing-zone-design-and-implementation/index.txt", - "type": "file", - "size": 4679, - "lastModified": "2025-09-26T01:52:42Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/linux-k8s-ops/", - "entries": [ - { - "name": "cn-v25-17740048053/", - "href": "/dashboard/download/dashboard/docs/linux-k8s-ops/cn-v25-17740048053/", - "type": "dir", - "lastModified": "2025-09-26T01:52:43Z" - }, - { - "name": "cn-v27-17740487419/", - "href": "/dashboard/download/dashboard/docs/linux-k8s-ops/cn-v27-17740487419/", - "type": "dir", - "lastModified": "2025-09-26T01:52:43Z" - }, - { - "name": "cn-v28-17749789283/", - "href": "/dashboard/download/dashboard/docs/linux-k8s-ops/cn-v28-17749789283/", - "type": "dir", - "lastModified": "2025-09-26T01:52:43Z" - }, - { - "name": "cn-v29-17749815392/", - "href": "/dashboard/download/dashboard/docs/linux-k8s-ops/cn-v29-17749815392/", - "type": "dir", - "lastModified": "2025-09-26T01:52:43Z" - }, - { - "name": "cn-v30-17935243600/", - "href": "/dashboard/download/dashboard/docs/linux-k8s-ops/cn-v30-17935243600/", - "type": "dir", - "lastModified": "2025-09-26T01:52:43Z" - }, - { - "name": "cn-v31-17976868329/", - "href": "/dashboard/download/dashboard/docs/linux-k8s-ops/cn-v31-17976868329/", - "type": "dir", - "lastModified": "2025-09-26T01:52:43Z" - }, - { - "name": "cn-v32-17977204714/", - "href": "/dashboard/download/dashboard/docs/linux-k8s-ops/cn-v32-17977204714/", - "type": "dir", - "lastModified": "2025-09-26T01:52:43Z" - }, - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/linux-k8s-ops/index.html", - "type": "file", - "size": 18588, - "lastModified": "2025-09-26T01:52:43Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/linux-k8s-ops/index.txt", - "type": "file", - "size": 5671, - "lastModified": "2025-09-26T01:52:43Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/linux-k8s-ops/cn-v25-17740048053/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/linux-k8s-ops/cn-v25-17740048053/index.html", - "type": "file", - "size": 11790, - "lastModified": "2025-09-26T01:52:43Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/linux-k8s-ops/cn-v25-17740048053/index.txt", - "type": "file", - "size": 4320, - "lastModified": "2025-09-26T01:52:43Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/linux-k8s-ops/cn-v27-17740487419/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/linux-k8s-ops/cn-v27-17740487419/index.html", - "type": "file", - "size": 11790, - "lastModified": "2025-09-26T01:52:43Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/linux-k8s-ops/cn-v27-17740487419/index.txt", - "type": "file", - "size": 4320, - "lastModified": "2025-09-26T01:52:43Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/linux-k8s-ops/cn-v28-17749789283/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/linux-k8s-ops/cn-v28-17749789283/index.html", - "type": "file", - "size": 11790, - "lastModified": "2025-09-26T01:52:43Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/linux-k8s-ops/cn-v28-17749789283/index.txt", - "type": "file", - "size": 4320, - "lastModified": "2025-09-26T01:52:43Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/linux-k8s-ops/cn-v29-17749815392/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/linux-k8s-ops/cn-v29-17749815392/index.html", - "type": "file", - "size": 11790, - "lastModified": "2025-09-26T01:52:43Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/linux-k8s-ops/cn-v29-17749815392/index.txt", - "type": "file", - "size": 4320, - "lastModified": "2025-09-26T01:52:43Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/linux-k8s-ops/cn-v30-17935243600/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/linux-k8s-ops/cn-v30-17935243600/index.html", - "type": "file", - "size": 11790, - "lastModified": "2025-09-26T01:52:43Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/linux-k8s-ops/cn-v30-17935243600/index.txt", - "type": "file", - "size": 4320, - "lastModified": "2025-09-26T01:52:43Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/linux-k8s-ops/cn-v31-17976868329/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/linux-k8s-ops/cn-v31-17976868329/index.html", - "type": "file", - "size": 11790, - "lastModified": "2025-09-26T01:52:43Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/linux-k8s-ops/cn-v31-17976868329/index.txt", - "type": "file", - "size": 4320, - "lastModified": "2025-09-26T01:52:43Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/linux-k8s-ops/cn-v32-17977204714/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/linux-k8s-ops/cn-v32-17977204714/index.html", - "type": "file", - "size": 11790, - "lastModified": "2025-09-26T01:52:43Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/linux-k8s-ops/cn-v32-17977204714/index.txt", - "type": "file", - "size": 4320, - "lastModified": "2025-09-26T01:52:43Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/observability/", - "entries": [ - { - "name": "cn-v20-17738959811/", - "href": "/dashboard/download/dashboard/docs/observability/cn-v20-17738959811/", - "type": "dir", - "lastModified": "2025-09-26T01:52:43Z" - }, - { - "name": "cn-v23-17739490366/", - "href": "/dashboard/download/dashboard/docs/observability/cn-v23-17739490366/", - "type": "dir", - "lastModified": "2025-09-26T01:52:44Z" - }, - { - "name": "cn-v28-17749789283/", - "href": "/dashboard/download/dashboard/docs/observability/cn-v28-17749789283/", - "type": "dir", - "lastModified": "2025-09-26T01:52:44Z" - }, - { - "name": "cn-v29-17749815392/", - "href": "/dashboard/download/dashboard/docs/observability/cn-v29-17749815392/", - "type": "dir", - "lastModified": "2025-09-26T01:52:44Z" - }, - { - "name": "cn-v30-17935243600/", - "href": "/dashboard/download/dashboard/docs/observability/cn-v30-17935243600/", - "type": "dir", - "lastModified": "2025-09-26T01:52:44Z" - }, - { - "name": "cn-v31-17976868329/", - "href": "/dashboard/download/dashboard/docs/observability/cn-v31-17976868329/", - "type": "dir", - "lastModified": "2025-09-26T01:52:44Z" - }, - { - "name": "cn-v32-17977204714/", - "href": "/dashboard/download/dashboard/docs/observability/cn-v32-17977204714/", - "type": "dir", - "lastModified": "2025-09-26T01:52:44Z" - }, - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/observability/index.html", - "type": "file", - "size": 18588, - "lastModified": "2025-09-26T01:52:43Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/observability/index.txt", - "type": "file", - "size": 5671, - "lastModified": "2025-09-26T01:52:43Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/observability/cn-v20-17738959811/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/observability/cn-v20-17738959811/index.html", - "type": "file", - "size": 11791, - "lastModified": "2025-09-26T01:52:43Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/observability/cn-v20-17738959811/index.txt", - "type": "file", - "size": 4320, - "lastModified": "2025-09-26T01:52:43Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/observability/cn-v23-17739490366/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/observability/cn-v23-17739490366/index.html", - "type": "file", - "size": 11791, - "lastModified": "2025-09-26T01:52:44Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/observability/cn-v23-17739490366/index.txt", - "type": "file", - "size": 4320, - "lastModified": "2025-09-26T01:52:44Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/observability/cn-v28-17749789283/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/observability/cn-v28-17749789283/index.html", - "type": "file", - "size": 11791, - "lastModified": "2025-09-26T01:52:44Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/observability/cn-v28-17749789283/index.txt", - "type": "file", - "size": 4320, - "lastModified": "2025-09-26T01:52:44Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/observability/cn-v29-17749815392/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/observability/cn-v29-17749815392/index.html", - "type": "file", - "size": 11791, - "lastModified": "2025-09-26T01:52:44Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/observability/cn-v29-17749815392/index.txt", - "type": "file", - "size": 4320, - "lastModified": "2025-09-26T01:52:44Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/observability/cn-v30-17935243600/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/observability/cn-v30-17935243600/index.html", - "type": "file", - "size": 11791, - "lastModified": "2025-09-26T01:52:44Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/observability/cn-v30-17935243600/index.txt", - "type": "file", - "size": 4320, - "lastModified": "2025-09-26T01:52:44Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/observability/cn-v31-17976868329/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/observability/cn-v31-17976868329/index.html", - "type": "file", - "size": 11791, - "lastModified": "2025-09-26T01:52:44Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/observability/cn-v31-17976868329/index.txt", - "type": "file", - "size": 4320, - "lastModified": "2025-09-26T01:52:44Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/observability/cn-v32-17977204714/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/observability/cn-v32-17977204714/index.html", - "type": "file", - "size": 11791, - "lastModified": "2025-09-26T01:52:44Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/observability/cn-v32-17977204714/index.txt", - "type": "file", - "size": 4320, - "lastModified": "2025-09-26T01:52:44Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/personal/", - "entries": [ - { - "name": "en-v31-17976868329/", - "href": "/dashboard/download/dashboard/docs/personal/en-v31-17976868329/", - "type": "dir", - "lastModified": "2025-09-26T01:52:47Z" - }, - { - "name": "en-v31-17976868329-10/", - "href": "/dashboard/download/dashboard/docs/personal/en-v31-17976868329-10/", - "type": "dir", - "lastModified": "2025-09-26T01:52:46Z" - }, - { - "name": "en-v31-17976868329-11/", - "href": "/dashboard/download/dashboard/docs/personal/en-v31-17976868329-11/", - "type": "dir", - "lastModified": "2025-09-26T01:52:46Z" - }, - { - "name": "en-v31-17976868329-12/", - "href": "/dashboard/download/dashboard/docs/personal/en-v31-17976868329-12/", - "type": "dir", - "lastModified": "2025-09-26T01:52:46Z" - }, - { - "name": "en-v31-17976868329-2/", - "href": "/dashboard/download/dashboard/docs/personal/en-v31-17976868329-2/", - "type": "dir", - "lastModified": "2025-09-26T01:52:46Z" - }, - { - "name": "en-v31-17976868329-3/", - "href": "/dashboard/download/dashboard/docs/personal/en-v31-17976868329-3/", - "type": "dir", - "lastModified": "2025-09-26T01:52:46Z" - }, - { - "name": "en-v31-17976868329-4/", - "href": "/dashboard/download/dashboard/docs/personal/en-v31-17976868329-4/", - "type": "dir", - "lastModified": "2025-09-26T01:52:46Z" - }, - { - "name": "en-v31-17976868329-5/", - "href": "/dashboard/download/dashboard/docs/personal/en-v31-17976868329-5/", - "type": "dir", - "lastModified": "2025-09-26T01:52:46Z" - }, - { - "name": "en-v31-17976868329-6/", - "href": "/dashboard/download/dashboard/docs/personal/en-v31-17976868329-6/", - "type": "dir", - "lastModified": "2025-09-26T01:52:46Z" - }, - { - "name": "en-v31-17976868329-7/", - "href": "/dashboard/download/dashboard/docs/personal/en-v31-17976868329-7/", - "type": "dir", - "lastModified": "2025-09-26T01:52:46Z" - }, - { - "name": "en-v31-17976868329-8/", - "href": "/dashboard/download/dashboard/docs/personal/en-v31-17976868329-8/", - "type": "dir", - "lastModified": "2025-09-26T01:52:46Z" - }, - { - "name": "en-v31-17976868329-9/", - "href": "/dashboard/download/dashboard/docs/personal/en-v31-17976868329-9/", - "type": "dir", - "lastModified": "2025-09-26T01:52:46Z" - }, - { - "name": "en-v32-17977204714/", - "href": "/dashboard/download/dashboard/docs/personal/en-v32-17977204714/", - "type": "dir", - "lastModified": "2025-09-26T01:52:48Z" - }, - { - "name": "en-v32-17977204714-10/", - "href": "/dashboard/download/dashboard/docs/personal/en-v32-17977204714-10/", - "type": "dir", - "lastModified": "2025-09-26T01:52:47Z" - }, - { - "name": "en-v32-17977204714-11/", - "href": "/dashboard/download/dashboard/docs/personal/en-v32-17977204714-11/", - "type": "dir", - "lastModified": "2025-09-26T01:52:47Z" - }, - { - "name": "en-v32-17977204714-12/", - "href": "/dashboard/download/dashboard/docs/personal/en-v32-17977204714-12/", - "type": "dir", - "lastModified": "2025-09-26T01:52:47Z" - }, - { - "name": "en-v32-17977204714-2/", - "href": "/dashboard/download/dashboard/docs/personal/en-v32-17977204714-2/", - "type": "dir", - "lastModified": "2025-09-26T01:52:47Z" - }, - { - "name": "en-v32-17977204714-3/", - "href": "/dashboard/download/dashboard/docs/personal/en-v32-17977204714-3/", - "type": "dir", - "lastModified": "2025-09-26T01:52:47Z" - }, - { - "name": "en-v32-17977204714-4/", - "href": "/dashboard/download/dashboard/docs/personal/en-v32-17977204714-4/", - "type": "dir", - "lastModified": "2025-09-26T01:52:47Z" - }, - { - "name": "en-v32-17977204714-5/", - "href": "/dashboard/download/dashboard/docs/personal/en-v32-17977204714-5/", - "type": "dir", - "lastModified": "2025-09-26T01:52:47Z" - }, - { - "name": "en-v32-17977204714-6/", - "href": "/dashboard/download/dashboard/docs/personal/en-v32-17977204714-6/", - "type": "dir", - "lastModified": "2025-09-26T01:52:47Z" - }, - { - "name": "en-v32-17977204714-7/", - "href": "/dashboard/download/dashboard/docs/personal/en-v32-17977204714-7/", - "type": "dir", - "lastModified": "2025-09-26T01:52:47Z" - }, - { - "name": "en-v32-17977204714-8/", - "href": "/dashboard/download/dashboard/docs/personal/en-v32-17977204714-8/", - "type": "dir", - "lastModified": "2025-09-26T01:52:48Z" - }, - { - "name": "en-v32-17977204714-9/", - "href": "/dashboard/download/dashboard/docs/personal/en-v32-17977204714-9/", - "type": "dir", - "lastModified": "2025-09-26T01:52:48Z" - }, - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/personal/index.html", - "type": "file", - "size": 69589, - "lastModified": "2025-09-26T01:52:45Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/personal/index.txt", - "type": "file", - "size": 17806, - "lastModified": "2025-09-26T01:52:45Z" - }, - { - "name": "personal-v27-17740487419/", - "href": "/dashboard/download/dashboard/docs/personal/personal-v27-17740487419/", - "type": "dir", - "lastModified": "2025-09-26T01:52:49Z" - }, - { - "name": "personal-v27-17740487419-10/", - "href": "/dashboard/download/dashboard/docs/personal/personal-v27-17740487419-10/", - "type": "dir", - "lastModified": "2025-09-26T01:52:48Z" - }, - { - "name": "personal-v27-17740487419-11/", - "href": "/dashboard/download/dashboard/docs/personal/personal-v27-17740487419-11/", - "type": "dir", - "lastModified": "2025-09-26T01:52:48Z" - }, - { - "name": "personal-v27-17740487419-12/", - "href": "/dashboard/download/dashboard/docs/personal/personal-v27-17740487419-12/", - "type": "dir", - "lastModified": "2025-09-26T01:52:48Z" - }, - { - "name": "personal-v27-17740487419-2/", - "href": "/dashboard/download/dashboard/docs/personal/personal-v27-17740487419-2/", - "type": "dir", - "lastModified": "2025-09-26T01:52:48Z" - }, - { - "name": "personal-v27-17740487419-3/", - "href": "/dashboard/download/dashboard/docs/personal/personal-v27-17740487419-3/", - "type": "dir", - "lastModified": "2025-09-26T01:52:48Z" - }, - { - "name": "personal-v27-17740487419-4/", - "href": "/dashboard/download/dashboard/docs/personal/personal-v27-17740487419-4/", - "type": "dir", - "lastModified": "2025-09-26T01:52:48Z" - }, - { - "name": "personal-v27-17740487419-5/", - "href": "/dashboard/download/dashboard/docs/personal/personal-v27-17740487419-5/", - "type": "dir", - "lastModified": "2025-09-26T01:52:48Z" - }, - { - "name": "personal-v27-17740487419-6/", - "href": "/dashboard/download/dashboard/docs/personal/personal-v27-17740487419-6/", - "type": "dir", - "lastModified": "2025-09-26T01:52:49Z" - }, - { - "name": "personal-v27-17740487419-7/", - "href": "/dashboard/download/dashboard/docs/personal/personal-v27-17740487419-7/", - "type": "dir", - "lastModified": "2025-09-26T01:52:49Z" - }, - { - "name": "personal-v27-17740487419-8/", - "href": "/dashboard/download/dashboard/docs/personal/personal-v27-17740487419-8/", - "type": "dir", - "lastModified": "2025-09-26T01:52:49Z" - }, - { - "name": "personal-v27-17740487419-9/", - "href": "/dashboard/download/dashboard/docs/personal/personal-v27-17740487419-9/", - "type": "dir", - "lastModified": "2025-09-26T01:52:49Z" - }, - { - "name": "personal-v28-17749789283/", - "href": "/dashboard/download/dashboard/docs/personal/personal-v28-17749789283/", - "type": "dir", - "lastModified": "2025-09-26T01:52:50Z" - }, - { - "name": "personal-v28-17749789283-10/", - "href": "/dashboard/download/dashboard/docs/personal/personal-v28-17749789283-10/", - "type": "dir", - "lastModified": "2025-09-26T01:52:49Z" - }, - { - "name": "personal-v28-17749789283-11/", - "href": "/dashboard/download/dashboard/docs/personal/personal-v28-17749789283-11/", - "type": "dir", - "lastModified": "2025-09-26T01:52:49Z" - }, - { - "name": "personal-v28-17749789283-12/", - "href": "/dashboard/download/dashboard/docs/personal/personal-v28-17749789283-12/", - "type": "dir", - "lastModified": "2025-09-26T01:52:49Z" - }, - { - "name": "personal-v28-17749789283-2/", - "href": "/dashboard/download/dashboard/docs/personal/personal-v28-17749789283-2/", - "type": "dir", - "lastModified": "2025-09-26T01:52:49Z" - }, - { - "name": "personal-v28-17749789283-3/", - "href": "/dashboard/download/dashboard/docs/personal/personal-v28-17749789283-3/", - "type": "dir", - "lastModified": "2025-09-26T01:52:49Z" - }, - { - "name": "personal-v28-17749789283-4/", - "href": "/dashboard/download/dashboard/docs/personal/personal-v28-17749789283-4/", - "type": "dir", - "lastModified": "2025-09-26T01:52:50Z" - }, - { - "name": "personal-v28-17749789283-5/", - "href": "/dashboard/download/dashboard/docs/personal/personal-v28-17749789283-5/", - "type": "dir", - "lastModified": "2025-09-26T01:52:50Z" - }, - { - "name": "personal-v28-17749789283-6/", - "href": "/dashboard/download/dashboard/docs/personal/personal-v28-17749789283-6/", - "type": "dir", - "lastModified": "2025-09-26T01:52:50Z" - }, - { - "name": "personal-v28-17749789283-7/", - "href": "/dashboard/download/dashboard/docs/personal/personal-v28-17749789283-7/", - "type": "dir", - "lastModified": "2025-09-26T01:52:50Z" - }, - { - "name": "personal-v28-17749789283-8/", - "href": "/dashboard/download/dashboard/docs/personal/personal-v28-17749789283-8/", - "type": "dir", - "lastModified": "2025-09-26T01:52:50Z" - }, - { - "name": "personal-v28-17749789283-9/", - "href": "/dashboard/download/dashboard/docs/personal/personal-v28-17749789283-9/", - "type": "dir", - "lastModified": "2025-09-26T01:52:50Z" - }, - { - "name": "personal-v29-17749815392/", - "href": "/dashboard/download/dashboard/docs/personal/personal-v29-17749815392/", - "type": "dir", - "lastModified": "2025-09-26T01:52:51Z" - }, - { - "name": "personal-v29-17749815392-10/", - "href": "/dashboard/download/dashboard/docs/personal/personal-v29-17749815392-10/", - "type": "dir", - "lastModified": "2025-09-26T01:52:50Z" - }, - { - "name": "personal-v29-17749815392-11/", - "href": "/dashboard/download/dashboard/docs/personal/personal-v29-17749815392-11/", - "type": "dir", - "lastModified": "2025-09-26T01:52:50Z" - }, - { - "name": "personal-v29-17749815392-12/", - "href": "/dashboard/download/dashboard/docs/personal/personal-v29-17749815392-12/", - "type": "dir", - "lastModified": "2025-09-26T01:52:51Z" - }, - { - "name": "personal-v29-17749815392-2/", - "href": "/dashboard/download/dashboard/docs/personal/personal-v29-17749815392-2/", - "type": "dir", - "lastModified": "2025-09-26T01:52:51Z" - }, - { - "name": "personal-v29-17749815392-3/", - "href": "/dashboard/download/dashboard/docs/personal/personal-v29-17749815392-3/", - "type": "dir", - "lastModified": "2025-09-26T01:52:51Z" - }, - { - "name": "personal-v29-17749815392-4/", - "href": "/dashboard/download/dashboard/docs/personal/personal-v29-17749815392-4/", - "type": "dir", - "lastModified": "2025-09-26T01:52:51Z" - }, - { - "name": "personal-v29-17749815392-5/", - "href": "/dashboard/download/dashboard/docs/personal/personal-v29-17749815392-5/", - "type": "dir", - "lastModified": "2025-09-26T01:52:51Z" - }, - { - "name": "personal-v29-17749815392-6/", - "href": "/dashboard/download/dashboard/docs/personal/personal-v29-17749815392-6/", - "type": "dir", - "lastModified": "2025-09-26T01:52:51Z" - }, - { - "name": "personal-v29-17749815392-7/", - "href": "/dashboard/download/dashboard/docs/personal/personal-v29-17749815392-7/", - "type": "dir", - "lastModified": "2025-09-26T01:52:51Z" - }, - { - "name": "personal-v29-17749815392-8/", - "href": "/dashboard/download/dashboard/docs/personal/personal-v29-17749815392-8/", - "type": "dir", - "lastModified": "2025-09-26T01:52:51Z" - }, - { - "name": "personal-v29-17749815392-9/", - "href": "/dashboard/download/dashboard/docs/personal/personal-v29-17749815392-9/", - "type": "dir", - "lastModified": "2025-09-26T01:52:51Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/personal/en-v31-17976868329/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/personal/en-v31-17976868329/index.html", - "type": "file", - "size": 11696, - "lastModified": "2025-09-26T01:52:47Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/personal/en-v31-17976868329/index.txt", - "type": "file", - "size": 4270, - "lastModified": "2025-09-26T01:52:47Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/personal/en-v31-17976868329-10/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/personal/en-v31-17976868329-10/index.html", - "type": "file", - "size": 11759, - "lastModified": "2025-09-26T01:52:45Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/personal/en-v31-17976868329-10/index.txt", - "type": "file", - "size": 4303, - "lastModified": "2025-09-26T01:52:46Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/personal/en-v31-17976868329-11/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/personal/en-v31-17976868329-11/index.html", - "type": "file", - "size": 11759, - "lastModified": "2025-09-26T01:52:46Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/personal/en-v31-17976868329-11/index.txt", - "type": "file", - "size": 4303, - "lastModified": "2025-09-26T01:52:46Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/personal/en-v31-17976868329-12/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/personal/en-v31-17976868329-12/index.html", - "type": "file", - "size": 11759, - "lastModified": "2025-09-26T01:52:46Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/personal/en-v31-17976868329-12/index.txt", - "type": "file", - "size": 4303, - "lastModified": "2025-09-26T01:52:46Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/personal/en-v31-17976868329-2/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/personal/en-v31-17976868329-2/index.html", - "type": "file", - "size": 11738, - "lastModified": "2025-09-26T01:52:46Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/personal/en-v31-17976868329-2/index.txt", - "type": "file", - "size": 4292, - "lastModified": "2025-09-26T01:52:46Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/personal/en-v31-17976868329-3/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/personal/en-v31-17976868329-3/index.html", - "type": "file", - "size": 11737, - "lastModified": "2025-09-26T01:52:46Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/personal/en-v31-17976868329-3/index.txt", - "type": "file", - "size": 4292, - "lastModified": "2025-09-26T01:52:46Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/personal/en-v31-17976868329-4/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/personal/en-v31-17976868329-4/index.html", - "type": "file", - "size": 11737, - "lastModified": "2025-09-26T01:52:46Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/personal/en-v31-17976868329-4/index.txt", - "type": "file", - "size": 4292, - "lastModified": "2025-09-26T01:52:46Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/personal/en-v31-17976868329-5/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/personal/en-v31-17976868329-5/index.html", - "type": "file", - "size": 11738, - "lastModified": "2025-09-26T01:52:46Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/personal/en-v31-17976868329-5/index.txt", - "type": "file", - "size": 4292, - "lastModified": "2025-09-26T01:52:46Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/personal/en-v31-17976868329-6/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/personal/en-v31-17976868329-6/index.html", - "type": "file", - "size": 11738, - "lastModified": "2025-09-26T01:52:46Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/personal/en-v31-17976868329-6/index.txt", - "type": "file", - "size": 4292, - "lastModified": "2025-09-26T01:52:46Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/personal/en-v31-17976868329-7/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/personal/en-v31-17976868329-7/index.html", - "type": "file", - "size": 11738, - "lastModified": "2025-09-26T01:52:46Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/personal/en-v31-17976868329-7/index.txt", - "type": "file", - "size": 4292, - "lastModified": "2025-09-26T01:52:46Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/personal/en-v31-17976868329-8/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/personal/en-v31-17976868329-8/index.html", - "type": "file", - "size": 11738, - "lastModified": "2025-09-26T01:52:46Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/personal/en-v31-17976868329-8/index.txt", - "type": "file", - "size": 4292, - "lastModified": "2025-09-26T01:52:46Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/personal/en-v31-17976868329-9/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/personal/en-v31-17976868329-9/index.html", - "type": "file", - "size": 11738, - "lastModified": "2025-09-26T01:52:46Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/personal/en-v31-17976868329-9/index.txt", - "type": "file", - "size": 4292, - "lastModified": "2025-09-26T01:52:46Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/personal/en-v32-17977204714/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/personal/en-v32-17977204714/index.html", - "type": "file", - "size": 11696, - "lastModified": "2025-09-26T01:52:48Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/personal/en-v32-17977204714/index.txt", - "type": "file", - "size": 4270, - "lastModified": "2025-09-26T01:52:48Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/personal/en-v32-17977204714-10/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/personal/en-v32-17977204714-10/index.html", - "type": "file", - "size": 11759, - "lastModified": "2025-09-26T01:52:47Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/personal/en-v32-17977204714-10/index.txt", - "type": "file", - "size": 4303, - "lastModified": "2025-09-26T01:52:47Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/personal/en-v32-17977204714-11/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/personal/en-v32-17977204714-11/index.html", - "type": "file", - "size": 11759, - "lastModified": "2025-09-26T01:52:47Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/personal/en-v32-17977204714-11/index.txt", - "type": "file", - "size": 4303, - "lastModified": "2025-09-26T01:52:47Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/personal/en-v32-17977204714-12/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/personal/en-v32-17977204714-12/index.html", - "type": "file", - "size": 11759, - "lastModified": "2025-09-26T01:52:47Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/personal/en-v32-17977204714-12/index.txt", - "type": "file", - "size": 4303, - "lastModified": "2025-09-26T01:52:47Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/personal/en-v32-17977204714-2/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/personal/en-v32-17977204714-2/index.html", - "type": "file", - "size": 11738, - "lastModified": "2025-09-26T01:52:47Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/personal/en-v32-17977204714-2/index.txt", - "type": "file", - "size": 4292, - "lastModified": "2025-09-26T01:52:47Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/personal/en-v32-17977204714-3/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/personal/en-v32-17977204714-3/index.html", - "type": "file", - "size": 11737, - "lastModified": "2025-09-26T01:52:47Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/personal/en-v32-17977204714-3/index.txt", - "type": "file", - "size": 4292, - "lastModified": "2025-09-26T01:52:47Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/personal/en-v32-17977204714-4/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/personal/en-v32-17977204714-4/index.html", - "type": "file", - "size": 11737, - "lastModified": "2025-09-26T01:52:47Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/personal/en-v32-17977204714-4/index.txt", - "type": "file", - "size": 4292, - "lastModified": "2025-09-26T01:52:47Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/personal/en-v32-17977204714-5/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/personal/en-v32-17977204714-5/index.html", - "type": "file", - "size": 11738, - "lastModified": "2025-09-26T01:52:47Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/personal/en-v32-17977204714-5/index.txt", - "type": "file", - "size": 4292, - "lastModified": "2025-09-26T01:52:47Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/personal/en-v32-17977204714-6/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/personal/en-v32-17977204714-6/index.html", - "type": "file", - "size": 11738, - "lastModified": "2025-09-26T01:52:47Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/personal/en-v32-17977204714-6/index.txt", - "type": "file", - "size": 4292, - "lastModified": "2025-09-26T01:52:47Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/personal/en-v32-17977204714-7/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/personal/en-v32-17977204714-7/index.html", - "type": "file", - "size": 11738, - "lastModified": "2025-09-26T01:52:47Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/personal/en-v32-17977204714-7/index.txt", - "type": "file", - "size": 4292, - "lastModified": "2025-09-26T01:52:47Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/personal/en-v32-17977204714-8/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/personal/en-v32-17977204714-8/index.html", - "type": "file", - "size": 11738, - "lastModified": "2025-09-26T01:52:48Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/personal/en-v32-17977204714-8/index.txt", - "type": "file", - "size": 4292, - "lastModified": "2025-09-26T01:52:48Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/personal/en-v32-17977204714-9/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/personal/en-v32-17977204714-9/index.html", - "type": "file", - "size": 11738, - "lastModified": "2025-09-26T01:52:48Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/personal/en-v32-17977204714-9/index.txt", - "type": "file", - "size": 4292, - "lastModified": "2025-09-26T01:52:48Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/personal/personal-v27-17740487419/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/personal/personal-v27-17740487419/index.html", - "type": "file", - "size": 11821, - "lastModified": "2025-09-26T01:52:49Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/personal/personal-v27-17740487419/index.txt", - "type": "file", - "size": 4336, - "lastModified": "2025-09-26T01:52:49Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/personal/personal-v27-17740487419-10/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/personal/personal-v27-17740487419-10/index.html", - "type": "file", - "size": 11884, - "lastModified": "2025-09-26T01:52:48Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/personal/personal-v27-17740487419-10/index.txt", - "type": "file", - "size": 4369, - "lastModified": "2025-09-26T01:52:48Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/personal/personal-v27-17740487419-11/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/personal/personal-v27-17740487419-11/index.html", - "type": "file", - "size": 11884, - "lastModified": "2025-09-26T01:52:48Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/personal/personal-v27-17740487419-11/index.txt", - "type": "file", - "size": 4369, - "lastModified": "2025-09-26T01:52:48Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/personal/personal-v27-17740487419-12/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/personal/personal-v27-17740487419-12/index.html", - "type": "file", - "size": 11885, - "lastModified": "2025-09-26T01:52:48Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/personal/personal-v27-17740487419-12/index.txt", - "type": "file", - "size": 4369, - "lastModified": "2025-09-26T01:52:48Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/personal/personal-v27-17740487419-2/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/personal/personal-v27-17740487419-2/index.html", - "type": "file", - "size": 11864, - "lastModified": "2025-09-26T01:52:48Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/personal/personal-v27-17740487419-2/index.txt", - "type": "file", - "size": 4358, - "lastModified": "2025-09-26T01:52:48Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/personal/personal-v27-17740487419-3/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/personal/personal-v27-17740487419-3/index.html", - "type": "file", - "size": 11863, - "lastModified": "2025-09-26T01:52:48Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/personal/personal-v27-17740487419-3/index.txt", - "type": "file", - "size": 4358, - "lastModified": "2025-09-26T01:52:48Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/personal/personal-v27-17740487419-4/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/personal/personal-v27-17740487419-4/index.html", - "type": "file", - "size": 11863, - "lastModified": "2025-09-26T01:52:48Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/personal/personal-v27-17740487419-4/index.txt", - "type": "file", - "size": 4358, - "lastModified": "2025-09-26T01:52:48Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/personal/personal-v27-17740487419-5/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/personal/personal-v27-17740487419-5/index.html", - "type": "file", - "size": 11864, - "lastModified": "2025-09-26T01:52:48Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/personal/personal-v27-17740487419-5/index.txt", - "type": "file", - "size": 4358, - "lastModified": "2025-09-26T01:52:48Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/personal/personal-v27-17740487419-6/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/personal/personal-v27-17740487419-6/index.html", - "type": "file", - "size": 11864, - "lastModified": "2025-09-26T01:52:49Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/personal/personal-v27-17740487419-6/index.txt", - "type": "file", - "size": 4358, - "lastModified": "2025-09-26T01:52:49Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/personal/personal-v27-17740487419-7/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/personal/personal-v27-17740487419-7/index.html", - "type": "file", - "size": 11864, - "lastModified": "2025-09-26T01:52:49Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/personal/personal-v27-17740487419-7/index.txt", - "type": "file", - "size": 4358, - "lastModified": "2025-09-26T01:52:49Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/personal/personal-v27-17740487419-8/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/personal/personal-v27-17740487419-8/index.html", - "type": "file", - "size": 11863, - "lastModified": "2025-09-26T01:52:49Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/personal/personal-v27-17740487419-8/index.txt", - "type": "file", - "size": 4358, - "lastModified": "2025-09-26T01:52:49Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/personal/personal-v27-17740487419-9/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/personal/personal-v27-17740487419-9/index.html", - "type": "file", - "size": 11863, - "lastModified": "2025-09-26T01:52:49Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/personal/personal-v27-17740487419-9/index.txt", - "type": "file", - "size": 4358, - "lastModified": "2025-09-26T01:52:49Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/personal/personal-v28-17749789283/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/personal/personal-v28-17749789283/index.html", - "type": "file", - "size": 11821, - "lastModified": "2025-09-26T01:52:50Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/personal/personal-v28-17749789283/index.txt", - "type": "file", - "size": 4336, - "lastModified": "2025-09-26T01:52:50Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/personal/personal-v28-17749789283-10/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/personal/personal-v28-17749789283-10/index.html", - "type": "file", - "size": 11885, - "lastModified": "2025-09-26T01:52:49Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/personal/personal-v28-17749789283-10/index.txt", - "type": "file", - "size": 4369, - "lastModified": "2025-09-26T01:52:49Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/personal/personal-v28-17749789283-11/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/personal/personal-v28-17749789283-11/index.html", - "type": "file", - "size": 11884, - "lastModified": "2025-09-26T01:52:49Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/personal/personal-v28-17749789283-11/index.txt", - "type": "file", - "size": 4369, - "lastModified": "2025-09-26T01:52:49Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/personal/personal-v28-17749789283-12/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/personal/personal-v28-17749789283-12/index.html", - "type": "file", - "size": 11885, - "lastModified": "2025-09-26T01:52:49Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/personal/personal-v28-17749789283-12/index.txt", - "type": "file", - "size": 4369, - "lastModified": "2025-09-26T01:52:49Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/personal/personal-v28-17749789283-2/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/personal/personal-v28-17749789283-2/index.html", - "type": "file", - "size": 11864, - "lastModified": "2025-09-26T01:52:49Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/personal/personal-v28-17749789283-2/index.txt", - "type": "file", - "size": 4358, - "lastModified": "2025-09-26T01:52:49Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/personal/personal-v28-17749789283-3/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/personal/personal-v28-17749789283-3/index.html", - "type": "file", - "size": 11864, - "lastModified": "2025-09-26T01:52:49Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/personal/personal-v28-17749789283-3/index.txt", - "type": "file", - "size": 4358, - "lastModified": "2025-09-26T01:52:49Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/personal/personal-v28-17749789283-4/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/personal/personal-v28-17749789283-4/index.html", - "type": "file", - "size": 11864, - "lastModified": "2025-09-26T01:52:50Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/personal/personal-v28-17749789283-4/index.txt", - "type": "file", - "size": 4358, - "lastModified": "2025-09-26T01:52:50Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/personal/personal-v28-17749789283-5/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/personal/personal-v28-17749789283-5/index.html", - "type": "file", - "size": 11863, - "lastModified": "2025-09-26T01:52:50Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/personal/personal-v28-17749789283-5/index.txt", - "type": "file", - "size": 4358, - "lastModified": "2025-09-26T01:52:50Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/personal/personal-v28-17749789283-6/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/personal/personal-v28-17749789283-6/index.html", - "type": "file", - "size": 11863, - "lastModified": "2025-09-26T01:52:50Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/personal/personal-v28-17749789283-6/index.txt", - "type": "file", - "size": 4358, - "lastModified": "2025-09-26T01:52:50Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/personal/personal-v28-17749789283-7/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/personal/personal-v28-17749789283-7/index.html", - "type": "file", - "size": 11863, - "lastModified": "2025-09-26T01:52:50Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/personal/personal-v28-17749789283-7/index.txt", - "type": "file", - "size": 4358, - "lastModified": "2025-09-26T01:52:50Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/personal/personal-v28-17749789283-8/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/personal/personal-v28-17749789283-8/index.html", - "type": "file", - "size": 11863, - "lastModified": "2025-09-26T01:52:50Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/personal/personal-v28-17749789283-8/index.txt", - "type": "file", - "size": 4358, - "lastModified": "2025-09-26T01:52:50Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/personal/personal-v28-17749789283-9/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/personal/personal-v28-17749789283-9/index.html", - "type": "file", - "size": 11863, - "lastModified": "2025-09-26T01:52:50Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/personal/personal-v28-17749789283-9/index.txt", - "type": "file", - "size": 4358, - "lastModified": "2025-09-26T01:52:50Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/personal/personal-v29-17749815392/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/personal/personal-v29-17749815392/index.html", - "type": "file", - "size": 11821, - "lastModified": "2025-09-26T01:52:51Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/personal/personal-v29-17749815392/index.txt", - "type": "file", - "size": 4336, - "lastModified": "2025-09-26T01:52:51Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/personal/personal-v29-17749815392-10/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/personal/personal-v29-17749815392-10/index.html", - "type": "file", - "size": 11884, - "lastModified": "2025-09-26T01:52:50Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/personal/personal-v29-17749815392-10/index.txt", - "type": "file", - "size": 4369, - "lastModified": "2025-09-26T01:52:50Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/personal/personal-v29-17749815392-11/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/personal/personal-v29-17749815392-11/index.html", - "type": "file", - "size": 11885, - "lastModified": "2025-09-26T01:52:50Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/personal/personal-v29-17749815392-11/index.txt", - "type": "file", - "size": 4369, - "lastModified": "2025-09-26T01:52:50Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/personal/personal-v29-17749815392-12/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/personal/personal-v29-17749815392-12/index.html", - "type": "file", - "size": 11885, - "lastModified": "2025-09-26T01:52:50Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/personal/personal-v29-17749815392-12/index.txt", - "type": "file", - "size": 4369, - "lastModified": "2025-09-26T01:52:51Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/personal/personal-v29-17749815392-2/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/personal/personal-v29-17749815392-2/index.html", - "type": "file", - "size": 11863, - "lastModified": "2025-09-26T01:52:51Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/personal/personal-v29-17749815392-2/index.txt", - "type": "file", - "size": 4358, - "lastModified": "2025-09-26T01:52:51Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/personal/personal-v29-17749815392-3/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/personal/personal-v29-17749815392-3/index.html", - "type": "file", - "size": 11864, - "lastModified": "2025-09-26T01:52:51Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/personal/personal-v29-17749815392-3/index.txt", - "type": "file", - "size": 4358, - "lastModified": "2025-09-26T01:52:51Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/personal/personal-v29-17749815392-4/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/personal/personal-v29-17749815392-4/index.html", - "type": "file", - "size": 11864, - "lastModified": "2025-09-26T01:52:51Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/personal/personal-v29-17749815392-4/index.txt", - "type": "file", - "size": 4358, - "lastModified": "2025-09-26T01:52:51Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/personal/personal-v29-17749815392-5/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/personal/personal-v29-17749815392-5/index.html", - "type": "file", - "size": 11864, - "lastModified": "2025-09-26T01:52:51Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/personal/personal-v29-17749815392-5/index.txt", - "type": "file", - "size": 4358, - "lastModified": "2025-09-26T01:52:51Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/personal/personal-v29-17749815392-6/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/personal/personal-v29-17749815392-6/index.html", - "type": "file", - "size": 11864, - "lastModified": "2025-09-26T01:52:51Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/personal/personal-v29-17749815392-6/index.txt", - "type": "file", - "size": 4358, - "lastModified": "2025-09-26T01:52:51Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/personal/personal-v29-17749815392-7/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/personal/personal-v29-17749815392-7/index.html", - "type": "file", - "size": 11863, - "lastModified": "2025-09-26T01:52:51Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/personal/personal-v29-17749815392-7/index.txt", - "type": "file", - "size": 4358, - "lastModified": "2025-09-26T01:52:51Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/personal/personal-v29-17749815392-8/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/personal/personal-v29-17749815392-8/index.html", - "type": "file", - "size": 11863, - "lastModified": "2025-09-26T01:52:51Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/personal/personal-v29-17749815392-8/index.txt", - "type": "file", - "size": 4358, - "lastModified": "2025-09-26T01:52:51Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/personal/personal-v29-17749815392-9/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/personal/personal-v29-17749815392-9/index.html", - "type": "file", - "size": 11863, - "lastModified": "2025-09-26T01:52:51Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/personal/personal-v29-17749815392-9/index.txt", - "type": "file", - "size": 4358, - "lastModified": "2025-09-26T01:52:51Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/personal-v30-17935243600/", - "entries": [ - { - "name": "activebalance-plan/", - "href": "/dashboard/download/dashboard/docs/personal-v30-17935243600/activebalance-plan/", - "type": "dir", - "lastModified": "2025-09-26T01:52:44Z" - }, - { - "name": "cet-6/", - "href": "/dashboard/download/dashboard/docs/personal-v30-17935243600/cet-6/", - "type": "dir", - "lastModified": "2025-09-26T01:52:44Z" - }, - { - "name": "cv-ai-dev-en/", - "href": "/dashboard/download/dashboard/docs/personal-v30-17935243600/cv-ai-dev-en/", - "type": "dir", - "lastModified": "2025-09-26T01:52:44Z" - }, - { - "name": "cv-ai-dev-zh/", - "href": "/dashboard/download/dashboard/docs/personal-v30-17935243600/cv-ai-dev-zh/", - "type": "dir", - "lastModified": "2025-09-26T01:52:45Z" - }, - { - "name": "cv-en/", - "href": "/dashboard/download/dashboard/docs/personal-v30-17935243600/cv-en/", - "type": "dir", - "lastModified": "2025-09-26T01:52:45Z" - }, - { - "name": "cv-zh/", - "href": "/dashboard/download/dashboard/docs/personal-v30-17935243600/cv-zh/", - "type": "dir", - "lastModified": "2025-09-26T01:52:45Z" - }, - { - "name": "fullstack-language-core/", - "href": "/dashboard/download/dashboard/docs/personal-v30-17935243600/fullstack-language-core/", - "type": "dir", - "lastModified": "2025-09-26T01:52:45Z" - }, - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/personal-v30-17935243600/index.html", - "type": "file", - "size": 23562, - "lastModified": "2025-09-26T01:52:44Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/personal-v30-17935243600/index.txt", - "type": "file", - "size": 6926, - "lastModified": "2025-09-26T01:52:44Z" - }, - { - "name": "readme/", - "href": "/dashboard/download/dashboard/docs/personal-v30-17935243600/readme/", - "type": "dir", - "lastModified": "2025-09-26T01:52:45Z" - }, - { - "name": "resume-devops-en/", - "href": "/dashboard/download/dashboard/docs/personal-v30-17935243600/resume-devops-en/", - "type": "dir", - "lastModified": "2025-09-26T01:52:45Z" - }, - { - "name": "resume-devops-zh/", - "href": "/dashboard/download/dashboard/docs/personal-v30-17935243600/resume-devops-zh/", - "type": "dir", - "lastModified": "2025-09-26T01:52:45Z" - }, - { - "name": "resume-en/", - "href": "/dashboard/download/dashboard/docs/personal-v30-17935243600/resume-en/", - "type": "dir", - "lastModified": "2025-09-26T01:52:45Z" - }, - { - "name": "resume-zh/", - "href": "/dashboard/download/dashboard/docs/personal-v30-17935243600/resume-zh/", - "type": "dir", - "lastModified": "2025-09-26T01:52:45Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/personal-v30-17935243600/activebalance-plan/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/personal-v30-17935243600/activebalance-plan/index.html", - "type": "file", - "size": 12000, - "lastModified": "2025-09-26T01:52:44Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/personal-v30-17935243600/activebalance-plan/index.txt", - "type": "file", - "size": 4430, - "lastModified": "2025-09-26T01:52:44Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/personal-v30-17935243600/cet-6/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/personal-v30-17935243600/cet-6/index.html", - "type": "file", - "size": 11727, - "lastModified": "2025-09-26T01:52:44Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/personal-v30-17935243600/cet-6/index.txt", - "type": "file", - "size": 4287, - "lastModified": "2025-09-26T01:52:44Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/personal-v30-17935243600/cv-ai-dev-en/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/personal-v30-17935243600/cv-ai-dev-en/index.html", - "type": "file", - "size": 11874, - "lastModified": "2025-09-26T01:52:44Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/personal-v30-17935243600/cv-ai-dev-en/index.txt", - "type": "file", - "size": 4364, - "lastModified": "2025-09-26T01:52:44Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/personal-v30-17935243600/cv-ai-dev-zh/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/personal-v30-17935243600/cv-ai-dev-zh/index.html", - "type": "file", - "size": 11874, - "lastModified": "2025-09-26T01:52:44Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/personal-v30-17935243600/cv-ai-dev-zh/index.txt", - "type": "file", - "size": 4364, - "lastModified": "2025-09-26T01:52:45Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/personal-v30-17935243600/cv-en/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/personal-v30-17935243600/cv-en/index.html", - "type": "file", - "size": 11726, - "lastModified": "2025-09-26T01:52:45Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/personal-v30-17935243600/cv-en/index.txt", - "type": "file", - "size": 4287, - "lastModified": "2025-09-26T01:52:45Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/personal-v30-17935243600/cv-zh/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/personal-v30-17935243600/cv-zh/index.html", - "type": "file", - "size": 11726, - "lastModified": "2025-09-26T01:52:45Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/personal-v30-17935243600/cv-zh/index.txt", - "type": "file", - "size": 4287, - "lastModified": "2025-09-26T01:52:45Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/personal-v30-17935243600/fullstack-language-core/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/personal-v30-17935243600/fullstack-language-core/index.html", - "type": "file", - "size": 12105, - "lastModified": "2025-09-26T01:52:45Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/personal-v30-17935243600/fullstack-language-core/index.txt", - "type": "file", - "size": 4485, - "lastModified": "2025-09-26T01:52:45Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/personal-v30-17935243600/readme/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/personal-v30-17935243600/readme/index.html", - "type": "file", - "size": 11747, - "lastModified": "2025-09-26T01:52:45Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/personal-v30-17935243600/readme/index.txt", - "type": "file", - "size": 4298, - "lastModified": "2025-09-26T01:52:45Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/personal-v30-17935243600/resume-devops-en/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/personal-v30-17935243600/resume-devops-en/index.html", - "type": "file", - "size": 11958, - "lastModified": "2025-09-26T01:52:45Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/personal-v30-17935243600/resume-devops-en/index.txt", - "type": "file", - "size": 4408, - "lastModified": "2025-09-26T01:52:45Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/personal-v30-17935243600/resume-devops-zh/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/personal-v30-17935243600/resume-devops-zh/index.html", - "type": "file", - "size": 11958, - "lastModified": "2025-09-26T01:52:45Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/personal-v30-17935243600/resume-devops-zh/index.txt", - "type": "file", - "size": 4408, - "lastModified": "2025-09-26T01:52:45Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/personal-v30-17935243600/resume-en/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/personal-v30-17935243600/resume-en/index.html", - "type": "file", - "size": 11811, - "lastModified": "2025-09-26T01:52:45Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/personal-v30-17935243600/resume-en/index.txt", - "type": "file", - "size": 4331, - "lastModified": "2025-09-26T01:52:45Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/personal-v30-17935243600/resume-zh/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/personal-v30-17935243600/resume-zh/index.html", - "type": "file", - "size": 11811, - "lastModified": "2025-09-26T01:52:45Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/personal-v30-17935243600/resume-zh/index.txt", - "type": "file", - "size": 4331, - "lastModified": "2025-09-26T01:52:45Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/techexploration/", - "entries": [ - { - "name": "en-v31-17976868329/", - "href": "/dashboard/download/dashboard/docs/techexploration/en-v31-17976868329/", - "type": "dir", - "lastModified": "2025-09-26T01:52:52Z" - }, - { - "name": "en-v32-17977204714/", - "href": "/dashboard/download/dashboard/docs/techexploration/en-v32-17977204714/", - "type": "dir", - "lastModified": "2025-09-26T01:52:52Z" - }, - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/techexploration/index.html", - "type": "file", - "size": 17977, - "lastModified": "2025-09-26T01:52:52Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/techexploration/index.txt", - "type": "file", - "size": 5651, - "lastModified": "2025-09-26T01:52:52Z" - }, - { - "name": "techexploration-v25-17740048053/", - "href": "/dashboard/download/dashboard/docs/techexploration/techexploration-v25-17740048053/", - "type": "dir", - "lastModified": "2025-09-26T01:52:52Z" - }, - { - "name": "techexploration-v27-17740487419/", - "href": "/dashboard/download/dashboard/docs/techexploration/techexploration-v27-17740487419/", - "type": "dir", - "lastModified": "2025-09-26T01:52:52Z" - }, - { - "name": "techexploration-v28-17749789283/", - "href": "/dashboard/download/dashboard/docs/techexploration/techexploration-v28-17749789283/", - "type": "dir", - "lastModified": "2025-09-26T01:52:52Z" - }, - { - "name": "techexploration-v29-17749815392/", - "href": "/dashboard/download/dashboard/docs/techexploration/techexploration-v29-17749815392/", - "type": "dir", - "lastModified": "2025-09-26T01:52:52Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/techexploration/en-v31-17976868329/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/techexploration/en-v31-17976868329/index.html", - "type": "file", - "size": 11828, - "lastModified": "2025-09-26T01:52:52Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/techexploration/en-v31-17976868329/index.txt", - "type": "file", - "size": 4340, - "lastModified": "2025-09-26T01:52:52Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/techexploration/en-v32-17977204714/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/techexploration/en-v32-17977204714/index.html", - "type": "file", - "size": 11828, - "lastModified": "2025-09-26T01:52:52Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/techexploration/en-v32-17977204714/index.txt", - "type": "file", - "size": 4340, - "lastModified": "2025-09-26T01:52:52Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/techexploration/techexploration-v25-17740048053/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/techexploration/techexploration-v25-17740048053/index.html", - "type": "file", - "size": 12102, - "lastModified": "2025-09-26T01:52:52Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/techexploration/techexploration-v25-17740048053/index.txt", - "type": "file", - "size": 4483, - "lastModified": "2025-09-26T01:52:52Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/techexploration/techexploration-v27-17740487419/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/techexploration/techexploration-v27-17740487419/index.html", - "type": "file", - "size": 12102, - "lastModified": "2025-09-26T01:52:52Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/techexploration/techexploration-v27-17740487419/index.txt", - "type": "file", - "size": 4483, - "lastModified": "2025-09-26T01:52:52Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/techexploration/techexploration-v28-17749789283/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/techexploration/techexploration-v28-17749789283/index.html", - "type": "file", - "size": 12102, - "lastModified": "2025-09-26T01:52:52Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/techexploration/techexploration-v28-17749789283/index.txt", - "type": "file", - "size": 4483, - "lastModified": "2025-09-26T01:52:52Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/techexploration/techexploration-v29-17749815392/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/techexploration/techexploration-v29-17749815392/index.html", - "type": "file", - "size": 12102, - "lastModified": "2025-09-26T01:52:52Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/techexploration/techexploration-v29-17749815392/index.txt", - "type": "file", - "size": 4483, - "lastModified": "2025-09-26T01:52:52Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/techexploration-v30-17935243600/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/techexploration-v30-17935243600/index.html", - "type": "file", - "size": 13311, - "lastModified": "2025-09-26T01:52:51Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/techexploration-v30-17935243600/index.txt", - "type": "file", - "size": 4566, - "lastModified": "2025-09-26T01:52:51Z" - }, - { - "name": "tech-exploration/", - "href": "/dashboard/download/dashboard/docs/techexploration-v30-17935243600/tech-exploration/", - "type": "dir", - "lastModified": "2025-09-26T01:52:52Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/techexploration-v30-17935243600/tech-exploration/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/techexploration-v30-17935243600/tech-exploration/index.html", - "type": "file", - "size": 12089, - "lastModified": "2025-09-26T01:52:52Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/techexploration-v30-17935243600/tech-exploration/index.txt", - "type": "file", - "size": 4477, - "lastModified": "2025-09-26T01:52:52Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap/", - "entries": [ - { - "name": "cn-v20-17738959811/", - "href": "/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap/cn-v20-17738959811/", - "type": "dir", - "lastModified": "2025-09-26T01:52:53Z" - }, - { - "name": "cn-v21-17739112034/", - "href": "/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap/cn-v21-17739112034/", - "type": "dir", - "lastModified": "2025-09-26T01:52:53Z" - }, - { - "name": "cn-v23-17739490366/", - "href": "/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap/cn-v23-17739490366/", - "type": "dir", - "lastModified": "2025-09-26T01:52:53Z" - }, - { - "name": "cn-v28-17749789283/", - "href": "/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap/cn-v28-17749789283/", - "type": "dir", - "lastModified": "2025-09-26T01:52:53Z" - }, - { - "name": "cn-v29-17749815392/", - "href": "/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap/cn-v29-17749815392/", - "type": "dir", - "lastModified": "2025-09-26T01:52:53Z" - }, - { - "name": "cn-v30-17935243600/", - "href": "/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap/cn-v30-17935243600/", - "type": "dir", - "lastModified": "2025-09-26T01:52:53Z" - }, - { - "name": "cn-v31-17976868329/", - "href": "/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap/cn-v31-17976868329/", - "type": "dir", - "lastModified": "2025-09-26T01:52:53Z" - }, - { - "name": "cn-v32-17977204714/", - "href": "/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap/cn-v32-17977204714/", - "type": "dir", - "lastModified": "2025-09-26T01:52:53Z" - }, - { - "name": "en-v21-17739112034/", - "href": "/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v21-17739112034/", - "type": "dir", - "lastModified": "2025-09-26T01:52:53Z" - }, - { - "name": "en-v22-17739462094/", - "href": "/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v22-17739462094/", - "type": "dir", - "lastModified": "2025-09-26T01:52:53Z" - }, - { - "name": "en-v23-17739490366/", - "href": "/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v23-17739490366/", - "type": "dir", - "lastModified": "2025-09-26T01:52:54Z" - }, - { - "name": "en-v26-17740473328/", - "href": "/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v26-17740473328/", - "type": "dir", - "lastModified": "2025-09-26T01:52:54Z" - }, - { - "name": "en-v27-17740487419/", - "href": "/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v27-17740487419/", - "type": "dir", - "lastModified": "2025-09-26T01:52:54Z" - }, - { - "name": "en-v28-17749789283/", - "href": "/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v28-17749789283/", - "type": "dir", - "lastModified": "2025-09-26T01:52:54Z" - }, - { - "name": "en-v29-17749815392/", - "href": "/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v29-17749815392/", - "type": "dir", - "lastModified": "2025-09-26T01:52:54Z" - }, - { - "name": "en-v30-17935243600/", - "href": "/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v30-17935243600/", - "type": "dir", - "lastModified": "2025-09-26T01:52:54Z" - }, - { - "name": "en-v31-17976868329/", - "href": "/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v31-17976868329/", - "type": "dir", - "lastModified": "2025-09-26T01:52:54Z" - }, - { - "name": "en-v32-17977204714/", - "href": "/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v32-17977204714/", - "type": "dir", - "lastModified": "2025-09-26T01:52:54Z" - }, - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap/index.html", - "type": "file", - "size": 30754, - "lastModified": "2025-09-26T01:52:52Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap/index.txt", - "type": "file", - "size": 9194, - "lastModified": "2025-09-26T01:52:52Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap/cn-v20-17738959811/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap/cn-v20-17738959811/index.html", - "type": "file", - "size": 12228, - "lastModified": "2025-09-26T01:52:52Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap/cn-v20-17738959811/index.txt", - "type": "file", - "size": 4550, - "lastModified": "2025-09-26T01:52:53Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap/cn-v21-17739112034/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap/cn-v21-17739112034/index.html", - "type": "file", - "size": 12228, - "lastModified": "2025-09-26T01:52:53Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap/cn-v21-17739112034/index.txt", - "type": "file", - "size": 4550, - "lastModified": "2025-09-26T01:52:53Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap/cn-v23-17739490366/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap/cn-v23-17739490366/index.html", - "type": "file", - "size": 12228, - "lastModified": "2025-09-26T01:52:53Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap/cn-v23-17739490366/index.txt", - "type": "file", - "size": 4550, - "lastModified": "2025-09-26T01:52:53Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap/cn-v28-17749789283/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap/cn-v28-17749789283/index.html", - "type": "file", - "size": 12228, - "lastModified": "2025-09-26T01:52:53Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap/cn-v28-17749789283/index.txt", - "type": "file", - "size": 4550, - "lastModified": "2025-09-26T01:52:53Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap/cn-v29-17749815392/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap/cn-v29-17749815392/index.html", - "type": "file", - "size": 12228, - "lastModified": "2025-09-26T01:52:53Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap/cn-v29-17749815392/index.txt", - "type": "file", - "size": 4550, - "lastModified": "2025-09-26T01:52:53Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap/cn-v30-17935243600/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap/cn-v30-17935243600/index.html", - "type": "file", - "size": 12228, - "lastModified": "2025-09-26T01:52:53Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap/cn-v30-17935243600/index.txt", - "type": "file", - "size": 4550, - "lastModified": "2025-09-26T01:52:53Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap/cn-v31-17976868329/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap/cn-v31-17976868329/index.html", - "type": "file", - "size": 12228, - "lastModified": "2025-09-26T01:52:53Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap/cn-v31-17976868329/index.txt", - "type": "file", - "size": 4550, - "lastModified": "2025-09-26T01:52:53Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap/cn-v32-17977204714/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap/cn-v32-17977204714/index.html", - "type": "file", - "size": 12228, - "lastModified": "2025-09-26T01:52:53Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap/cn-v32-17977204714/index.txt", - "type": "file", - "size": 4550, - "lastModified": "2025-09-26T01:52:53Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v21-17739112034/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v21-17739112034/index.html", - "type": "file", - "size": 12228, - "lastModified": "2025-09-26T01:52:53Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v21-17739112034/index.txt", - "type": "file", - "size": 4550, - "lastModified": "2025-09-26T01:52:53Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v22-17739462094/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v22-17739462094/index.html", - "type": "file", - "size": 12228, - "lastModified": "2025-09-26T01:52:53Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v22-17739462094/index.txt", - "type": "file", - "size": 4550, - "lastModified": "2025-09-26T01:52:53Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v23-17739490366/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v23-17739490366/index.html", - "type": "file", - "size": 12228, - "lastModified": "2025-09-26T01:52:53Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v23-17739490366/index.txt", - "type": "file", - "size": 4550, - "lastModified": "2025-09-26T01:52:54Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v26-17740473328/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v26-17740473328/index.html", - "type": "file", - "size": 12228, - "lastModified": "2025-09-26T01:52:54Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v26-17740473328/index.txt", - "type": "file", - "size": 4550, - "lastModified": "2025-09-26T01:52:54Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v27-17740487419/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v27-17740487419/index.html", - "type": "file", - "size": 12228, - "lastModified": "2025-09-26T01:52:54Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v27-17740487419/index.txt", - "type": "file", - "size": 4550, - "lastModified": "2025-09-26T01:52:54Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v28-17749789283/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v28-17749789283/index.html", - "type": "file", - "size": 12228, - "lastModified": "2025-09-26T01:52:54Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v28-17749789283/index.txt", - "type": "file", - "size": 4550, - "lastModified": "2025-09-26T01:52:54Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v29-17749815392/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v29-17749815392/index.html", - "type": "file", - "size": 12228, - "lastModified": "2025-09-26T01:52:54Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v29-17749815392/index.txt", - "type": "file", - "size": 4550, - "lastModified": "2025-09-26T01:52:54Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v30-17935243600/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v30-17935243600/index.html", - "type": "file", - "size": 12228, - "lastModified": "2025-09-26T01:52:54Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v30-17935243600/index.txt", - "type": "file", - "size": 4550, - "lastModified": "2025-09-26T01:52:54Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v31-17976868329/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v31-17976868329/index.html", - "type": "file", - "size": 12228, - "lastModified": "2025-09-26T01:52:54Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v31-17976868329/index.txt", - "type": "file", - "size": 4550, - "lastModified": "2025-09-26T01:52:54Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v32-17977204714/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v32-17977204714/index.html", - "type": "file", - "size": 12228, - "lastModified": "2025-09-26T01:52:54Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap/en-v32-17977204714/index.txt", - "type": "file", - "size": 4550, - "lastModified": "2025-09-26T01:52:54Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/", - "entries": [ - { - "name": "dashboard/", - "href": "/dashboard/download/dashboard/download/dashboard/", - "type": "dir", - "lastModified": "2025-09-26T01:53:17Z" - }, - { - "name": "deb/", - "href": "/dashboard/download/dashboard/download/deb/", - "type": "dir", - "lastModified": "2025-09-26T01:53:17Z" - }, - { - "name": "docs/", - "href": "/dashboard/download/dashboard/download/docs/", - "type": "dir", - "lastModified": "2025-09-26T01:53:25Z" - }, - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/index.html", - "type": "file", - "size": 19383, - "lastModified": "2025-09-26T01:52:54Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/index.txt", - "type": "file", - "size": 5528, - "lastModified": "2025-09-26T01:52:54Z" - }, - { - "name": "offline-package/", - "href": "/dashboard/download/dashboard/download/offline-package/", - "type": "dir", - "lastModified": "2025-09-26T01:53:25Z" - }, - { - "name": "otel/", - "href": "/dashboard/download/dashboard/download/otel/", - "type": "dir", - "lastModified": "2025-09-26T01:53:25Z" - }, - { - "name": "rpm/", - "href": "/dashboard/download/dashboard/download/rpm/", - "type": "dir", - "lastModified": "2025-09-26T01:53:26Z" - }, - { - "name": "sealos/", - "href": "/dashboard/download/dashboard/download/sealos/", - "type": "dir", - "lastModified": "2025-09-26T01:53:26Z" - }, - { - "name": "xray-core/", - "href": "/dashboard/download/dashboard/download/xray-core/", - "type": "dir", - "lastModified": "2025-09-26T01:53:27Z" - }, - { - "name": "xstream/", - "href": "/dashboard/download/dashboard/download/xstream/", - "type": "dir", - "lastModified": "2025-09-26T01:53:29Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/", - "entries": [ - { - "name": "404/", - "href": "/dashboard/download/dashboard/download/dashboard/404/", - "type": "dir", - "lastModified": "2025-09-26T01:52:54Z" - }, - { - "name": "500/", - "href": "/dashboard/download/dashboard/download/dashboard/500/", - "type": "dir", - "lastModified": "2025-09-26T01:52:55Z" - }, - { - "name": "_build/", - "href": "/dashboard/download/dashboard/download/dashboard/_build/", - "type": "dir", - "lastModified": "2025-09-26T01:52:55Z" - }, - { - "name": "_next/", - "href": "/dashboard/download/dashboard/download/dashboard/_next/", - "type": "dir", - "lastModified": "2025-09-26T01:52:58Z" - }, - { - "name": "cloud_iac/", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/", - "type": "dir", - "lastModified": "2025-09-26T01:53:04Z" - }, - { - "name": "demo/", - "href": "/dashboard/download/dashboard/download/dashboard/demo/", - "type": "dir", - "lastModified": "2025-09-26T01:53:05Z" - }, - { - "name": "dl-index/", - "href": "/dashboard/download/dashboard/download/dashboard/dl-index/", - "type": "dir", - "lastModified": "2025-09-26T01:53:05Z" - }, - { - "name": "docs/", - "href": "/dashboard/download/dashboard/download/dashboard/docs/", - "type": "dir", - "lastModified": "2025-09-26T01:53:12Z" - }, - { - "name": "download/", - "href": "/dashboard/download/dashboard/download/dashboard/download/", - "type": "dir", - "lastModified": "2025-09-26T01:53:16Z" - }, - { - "name": "icons/", - "href": "/dashboard/download/dashboard/download/dashboard/icons/", - "type": "dir", - "lastModified": "2025-09-26T01:53:16Z" - }, - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/index.html", - "type": "file", - "size": 24379, - "lastModified": "2025-09-26T01:52:54Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/index.txt", - "type": "file", - "size": 6712, - "lastModified": "2025-09-26T01:52:54Z" - }, - { - "name": "insight/", - "href": "/dashboard/download/dashboard/download/dashboard/insight/", - "type": "dir", - "lastModified": "2025-09-26T01:53:16Z" - }, - { - "name": "login/", - "href": "/dashboard/download/dashboard/download/dashboard/login/", - "type": "dir", - "lastModified": "2025-09-26T01:53:16Z" - }, - { - "name": "panel/", - "href": "/dashboard/download/dashboard/download/dashboard/panel/", - "type": "dir", - "lastModified": "2025-09-26T01:53:17Z" - }, - { - "name": "register/", - "href": "/dashboard/download/dashboard/download/dashboard/register/", - "type": "dir", - "lastModified": "2025-09-26T01:53:17Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/404/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/404/index.html", - "type": "file", - "size": 11478, - "lastModified": "2025-09-26T01:52:54Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/404/index.txt", - "type": "file", - "size": 4154, - "lastModified": "2025-09-26T01:52:54Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/500/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/500/index.html", - "type": "file", - "size": 11476, - "lastModified": "2025-09-26T01:52:55Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/500/index.txt", - "type": "file", - "size": 4153, - "lastModified": "2025-09-26T01:52:55Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/_build/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/_build/index.html", - "type": "file", - "size": 11536, - "lastModified": "2025-09-26T01:52:55Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/_build/index.txt", - "type": "file", - "size": 4186, - "lastModified": "2025-09-26T01:52:55Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/_next/", - "entries": [ - { - "name": "54pjtS5iaMbvVeyaFusyy/", - "href": "/dashboard/download/dashboard/download/dashboard/_next/54pjtS5iaMbvVeyaFusyy/", - "type": "dir", - "lastModified": "2025-09-26T01:52:55Z" - }, - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/_next/index.html", - "type": "file", - "size": 14081, - "lastModified": "2025-09-26T01:52:55Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/_next/index.txt", - "type": "file", - "size": 4617, - "lastModified": "2025-09-26T01:52:55Z" - }, - { - "name": "static/", - "href": "/dashboard/download/dashboard/download/dashboard/_next/static/", - "type": "dir", - "lastModified": "2025-09-26T01:52:58Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/_next/54pjtS5iaMbvVeyaFusyy/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/_next/54pjtS5iaMbvVeyaFusyy/index.html", - "type": "file", - "size": 12129, - "lastModified": "2025-09-26T01:52:55Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/_next/54pjtS5iaMbvVeyaFusyy/index.txt", - "type": "file", - "size": 4417, - "lastModified": "2025-09-26T01:52:55Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/_next/static/", - "entries": [ - { - "name": "54pjtS5iaMbvVeyaFusyy/", - "href": "/dashboard/download/dashboard/download/dashboard/_next/static/54pjtS5iaMbvVeyaFusyy/", - "type": "dir", - "lastModified": "2025-09-26T01:52:55Z" - }, - { - "name": "chunks/", - "href": "/dashboard/download/dashboard/download/dashboard/_next/static/chunks/", - "type": "dir", - "lastModified": "2025-09-26T01:52:58Z" - }, - { - "name": "css/", - "href": "/dashboard/download/dashboard/download/dashboard/_next/static/css/", - "type": "dir", - "lastModified": "2025-09-26T01:52:58Z" - }, - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/_next/static/index.html", - "type": "file", - "size": 15338, - "lastModified": "2025-09-26T01:52:55Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/_next/static/index.txt", - "type": "file", - "size": 4926, - "lastModified": "2025-09-26T01:52:55Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/_next/static/54pjtS5iaMbvVeyaFusyy/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/_next/static/54pjtS5iaMbvVeyaFusyy/index.html", - "type": "file", - "size": 12432, - "lastModified": "2025-09-26T01:52:55Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/_next/static/54pjtS5iaMbvVeyaFusyy/index.txt", - "type": "file", - "size": 4494, - "lastModified": "2025-09-26T01:52:55Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/_next/static/chunks/", - "entries": [ - { - "name": "app/", - "href": "/dashboard/download/dashboard/download/dashboard/_next/static/chunks/app/", - "type": "dir", - "lastModified": "2025-09-26T01:52:57Z" - }, - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/_next/static/chunks/index.html", - "type": "file", - "size": 14674, - "lastModified": "2025-09-26T01:52:55Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/_next/static/chunks/index.txt", - "type": "file", - "size": 4770, - "lastModified": "2025-09-26T01:52:55Z" - }, - { - "name": "pages/", - "href": "/dashboard/download/dashboard/download/dashboard/_next/static/chunks/pages/", - "type": "dir", - "lastModified": "2025-09-26T01:52:58Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/_next/static/chunks/app/", - "entries": [ - { - "name": "404/", - "href": "/dashboard/download/dashboard/download/dashboard/_next/static/chunks/app/404/", - "type": "dir", - "lastModified": "2025-09-26T01:52:55Z" - }, - { - "name": "_not-found/", - "href": "/dashboard/download/dashboard/download/dashboard/_next/static/chunks/app/_not-found/", - "type": "dir", - "lastModified": "2025-09-26T01:52:55Z" - }, - { - "name": "cloud_iac/", - "href": "/dashboard/download/dashboard/download/dashboard/_next/static/chunks/app/cloud_iac/", - "type": "dir", - "lastModified": "2025-09-26T01:52:56Z" - }, - { - "name": "demo/", - "href": "/dashboard/download/dashboard/download/dashboard/_next/static/chunks/app/demo/", - "type": "dir", - "lastModified": "2025-09-26T01:52:56Z" - }, - { - "name": "docs/", - "href": "/dashboard/download/dashboard/download/dashboard/_next/static/chunks/app/docs/", - "type": "dir", - "lastModified": "2025-09-26T01:52:56Z" - }, - { - "name": "download/", - "href": "/dashboard/download/dashboard/download/dashboard/_next/static/chunks/app/download/", - "type": "dir", - "lastModified": "2025-09-26T01:52:56Z" - }, - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/_next/static/chunks/app/index.html", - "type": "file", - "size": 22663, - "lastModified": "2025-09-26T01:52:55Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/_next/static/chunks/app/index.txt", - "type": "file", - "size": 6721, - "lastModified": "2025-09-26T01:52:55Z" - }, - { - "name": "insight/", - "href": "/dashboard/download/dashboard/download/dashboard/_next/static/chunks/app/insight/", - "type": "dir", - "lastModified": "2025-09-26T01:52:56Z" - }, - { - "name": "login/", - "href": "/dashboard/download/dashboard/download/dashboard/_next/static/chunks/app/login/", - "type": "dir", - "lastModified": "2025-09-26T01:52:57Z" - }, - { - "name": "panel/", - "href": "/dashboard/download/dashboard/download/dashboard/_next/static/chunks/app/panel/", - "type": "dir", - "lastModified": "2025-09-26T01:52:57Z" - }, - { - "name": "register/", - "href": "/dashboard/download/dashboard/download/dashboard/_next/static/chunks/app/register/", - "type": "dir", - "lastModified": "2025-09-26T01:52:57Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/_next/static/chunks/app/404/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/_next/static/chunks/app/404/index.html", - "type": "file", - "size": 12617, - "lastModified": "2025-09-26T01:52:55Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/_next/static/chunks/app/404/index.txt", - "type": "file", - "size": 4418, - "lastModified": "2025-09-26T01:52:55Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/_next/static/chunks/app/_not-found/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/_next/static/chunks/app/_not-found/index.html", - "type": "file", - "size": 12763, - "lastModified": "2025-09-26T01:52:55Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/_next/static/chunks/app/_not-found/index.txt", - "type": "file", - "size": 4494, - "lastModified": "2025-09-26T01:52:55Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/_next/static/chunks/app/cloud_iac/", - "entries": [ - { - "name": "[provider]/", - "href": "/dashboard/download/dashboard/download/dashboard/_next/static/chunks/app/cloud_iac/[provider]/", - "type": "dir", - "lastModified": "2025-09-26T01:52:56Z" - }, - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/_next/static/chunks/app/cloud_iac/index.html", - "type": "file", - "size": 14430, - "lastModified": "2025-09-26T01:52:56Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/_next/static/chunks/app/cloud_iac/index.txt", - "type": "file", - "size": 4749, - "lastModified": "2025-09-26T01:52:56Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/_next/static/chunks/app/cloud_iac/[provider]/", - "entries": [ - { - "name": "[service]/", - "href": "/dashboard/download/dashboard/download/dashboard/_next/static/chunks/app/cloud_iac/[provider]/[service]/", - "type": "dir", - "lastModified": "2025-09-26T01:52:56Z" - }, - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/_next/static/chunks/app/cloud_iac/[provider]/index.html", - "type": "file", - "size": 6322, - "lastModified": "2025-09-26T01:52:56Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/_next/static/chunks/app/cloud_iac/[provider]/index.txt", - "type": "file", - "size": 3671, - "lastModified": "2025-09-26T01:52:56Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/_next/static/chunks/app/cloud_iac/[provider]/[service]/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/_next/static/chunks/app/cloud_iac/[provider]/[service]/index.html", - "type": "file", - "size": 6400, - "lastModified": "2025-09-26T01:52:56Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/_next/static/chunks/app/cloud_iac/[provider]/[service]/index.txt", - "type": "file", - "size": 3727, - "lastModified": "2025-09-26T01:52:56Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/_next/static/chunks/app/demo/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/_next/static/chunks/app/demo/index.html", - "type": "file", - "size": 12641, - "lastModified": "2025-09-26T01:52:56Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/_next/static/chunks/app/demo/index.txt", - "type": "file", - "size": 4429, - "lastModified": "2025-09-26T01:52:56Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/_next/static/chunks/app/docs/", - "entries": [ - { - "name": "[name]/", - "href": "/dashboard/download/dashboard/download/dashboard/_next/static/chunks/app/docs/[name]/", - "type": "dir", - "lastModified": "2025-09-26T01:52:56Z" - }, - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/_next/static/chunks/app/docs/index.html", - "type": "file", - "size": 14289, - "lastModified": "2025-09-26T01:52:56Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/_next/static/chunks/app/docs/index.txt", - "type": "file", - "size": 4672, - "lastModified": "2025-09-26T01:52:56Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/_next/static/chunks/app/docs/[name]/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/_next/static/chunks/app/docs/[name]/index.html", - "type": "file", - "size": 6277, - "lastModified": "2025-09-26T01:52:56Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/_next/static/chunks/app/docs/[name]/index.txt", - "type": "file", - "size": 3635, - "lastModified": "2025-09-26T01:52:56Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/_next/static/chunks/app/download/", - "entries": [ - { - "name": "[...segments]/", - "href": "/dashboard/download/dashboard/download/dashboard/_next/static/chunks/app/download/[...segments]/", - "type": "dir", - "lastModified": "2025-09-26T01:52:56Z" - }, - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/_next/static/chunks/app/download/index.html", - "type": "file", - "size": 14420, - "lastModified": "2025-09-26T01:52:56Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/_next/static/chunks/app/download/index.txt", - "type": "file", - "size": 4745, - "lastModified": "2025-09-26T01:52:56Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/_next/static/chunks/app/download/[...segments]/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/_next/static/chunks/app/download/[...segments]/index.html", - "type": "file", - "size": 6332, - "lastModified": "2025-09-26T01:52:56Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/_next/static/chunks/app/download/[...segments]/index.txt", - "type": "file", - "size": 3679, - "lastModified": "2025-09-26T01:52:56Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/_next/static/chunks/app/insight/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/_next/static/chunks/app/insight/index.html", - "type": "file", - "size": 12704, - "lastModified": "2025-09-26T01:52:56Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/_next/static/chunks/app/insight/index.txt", - "type": "file", - "size": 4462, - "lastModified": "2025-09-26T01:52:56Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/_next/static/chunks/app/login/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/_next/static/chunks/app/login/index.html", - "type": "file", - "size": 12662, - "lastModified": "2025-09-26T01:52:57Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/_next/static/chunks/app/login/index.txt", - "type": "file", - "size": 4440, - "lastModified": "2025-09-26T01:52:57Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/_next/static/chunks/app/panel/", - "entries": [ - { - "name": "account/", - "href": "/dashboard/download/dashboard/download/dashboard/_next/static/chunks/app/panel/account/", - "type": "dir", - "lastModified": "2025-09-26T01:52:57Z" - }, - { - "name": "agent/", - "href": "/dashboard/download/dashboard/download/dashboard/_next/static/chunks/app/panel/agent/", - "type": "dir", - "lastModified": "2025-09-26T01:52:57Z" - }, - { - "name": "api/", - "href": "/dashboard/download/dashboard/download/dashboard/_next/static/chunks/app/panel/api/", - "type": "dir", - "lastModified": "2025-09-26T01:52:57Z" - }, - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/_next/static/chunks/app/panel/index.html", - "type": "file", - "size": 19203, - "lastModified": "2025-09-26T01:52:57Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/_next/static/chunks/app/panel/index.txt", - "type": "file", - "size": 5910, - "lastModified": "2025-09-26T01:52:57Z" - }, - { - "name": "ldp/", - "href": "/dashboard/download/dashboard/download/dashboard/_next/static/chunks/app/panel/ldp/", - "type": "dir", - "lastModified": "2025-09-26T01:52:57Z" - }, - { - "name": "subscription/", - "href": "/dashboard/download/dashboard/download/dashboard/_next/static/chunks/app/panel/subscription/", - "type": "dir", - "lastModified": "2025-09-26T01:52:57Z" - }, - { - "name": "xray/", - "href": "/dashboard/download/dashboard/download/dashboard/_next/static/chunks/app/panel/xray/", - "type": "dir", - "lastModified": "2025-09-26T01:52:57Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/_next/static/chunks/app/panel/account/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/_next/static/chunks/app/panel/account/index.html", - "type": "file", - "size": 13003, - "lastModified": "2025-09-26T01:52:57Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/_next/static/chunks/app/panel/account/index.txt", - "type": "file", - "size": 4528, - "lastModified": "2025-09-26T01:52:57Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/_next/static/chunks/app/panel/agent/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/_next/static/chunks/app/panel/agent/index.html", - "type": "file", - "size": 12962, - "lastModified": "2025-09-26T01:52:57Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/_next/static/chunks/app/panel/agent/index.txt", - "type": "file", - "size": 4506, - "lastModified": "2025-09-26T01:52:57Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/_next/static/chunks/app/panel/api/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/_next/static/chunks/app/panel/api/index.html", - "type": "file", - "size": 12920, - "lastModified": "2025-09-26T01:52:57Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/_next/static/chunks/app/panel/api/index.txt", - "type": "file", - "size": 4484, - "lastModified": "2025-09-26T01:52:57Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/_next/static/chunks/app/panel/ldp/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/_next/static/chunks/app/panel/ldp/index.html", - "type": "file", - "size": 12920, - "lastModified": "2025-09-26T01:52:57Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/_next/static/chunks/app/panel/ldp/index.txt", - "type": "file", - "size": 4484, - "lastModified": "2025-09-26T01:52:57Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/_next/static/chunks/app/panel/subscription/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/_next/static/chunks/app/panel/subscription/index.html", - "type": "file", - "size": 13109, - "lastModified": "2025-09-26T01:52:57Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/_next/static/chunks/app/panel/subscription/index.txt", - "type": "file", - "size": 4583, - "lastModified": "2025-09-26T01:52:57Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/_next/static/chunks/app/panel/xray/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/_next/static/chunks/app/panel/xray/index.html", - "type": "file", - "size": 12941, - "lastModified": "2025-09-26T01:52:57Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/_next/static/chunks/app/panel/xray/index.txt", - "type": "file", - "size": 4495, - "lastModified": "2025-09-26T01:52:57Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/_next/static/chunks/app/register/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/_next/static/chunks/app/register/index.html", - "type": "file", - "size": 12725, - "lastModified": "2025-09-26T01:52:57Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/_next/static/chunks/app/register/index.txt", - "type": "file", - "size": 4473, - "lastModified": "2025-09-26T01:52:57Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/_next/static/chunks/pages/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/_next/static/chunks/pages/index.html", - "type": "file", - "size": 12404, - "lastModified": "2025-09-26T01:52:58Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/_next/static/chunks/pages/index.txt", - "type": "file", - "size": 4394, - "lastModified": "2025-09-26T01:52:58Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/_next/static/css/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/_next/static/css/index.html", - "type": "file", - "size": 12054, - "lastModified": "2025-09-26T01:52:58Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/_next/static/css/index.txt", - "type": "file", - "size": 4296, - "lastModified": "2025-09-26T01:52:58Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/cloud_iac/", - "entries": [ - { - "name": "aliyun/", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aliyun/", - "type": "dir", - "lastModified": "2025-09-26T01:53:00Z" - }, - { - "name": "aws/", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aws/", - "type": "dir", - "lastModified": "2025-09-26T01:53:01Z" - }, - { - "name": "azure/", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/azure/", - "type": "dir", - "lastModified": "2025-09-26T01:53:03Z" - }, - { - "name": "gcp/", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/gcp/", - "type": "dir", - "lastModified": "2025-09-26T01:53:04Z" - }, - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/index.html", - "type": "file", - "size": 15931, - "lastModified": "2025-09-26T01:52:58Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/index.txt", - "type": "file", - "size": 5028, - "lastModified": "2025-09-26T01:52:58Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/cloud_iac/aliyun/", - "entries": [ - { - "name": "ack/", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aliyun/ack/", - "type": "dir", - "lastModified": "2025-09-26T01:52:58Z" - }, - { - "name": "aliyun-emr/", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aliyun/aliyun-emr/", - "type": "dir", - "lastModified": "2025-09-26T01:52:58Z" - }, - { - "name": "aliyun-iot/", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aliyun/aliyun-iot/", - "type": "dir", - "lastModified": "2025-09-26T01:52:58Z" - }, - { - "name": "apigateway-dataworks/", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aliyun/apigateway-dataworks/", - "type": "dir", - "lastModified": "2025-09-26T01:52:58Z" - }, - { - "name": "apsaradb-rds/", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aliyun/apsaradb-rds/", - "type": "dir", - "lastModified": "2025-09-26T01:52:59Z" - }, - { - "name": "apsaradb-redis/", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aliyun/apsaradb-redis/", - "type": "dir", - "lastModified": "2025-09-26T01:52:59Z" - }, - { - "name": "cloudmonitor-eventbridge/", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aliyun/cloudmonitor-eventbridge/", - "type": "dir", - "lastModified": "2025-09-26T01:52:59Z" - }, - { - "name": "dns-acceleration/", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aliyun/dns-acceleration/", - "type": "dir", - "lastModified": "2025-09-26T01:52:59Z" - }, - { - "name": "ecs/", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aliyun/ecs/", - "type": "dir", - "lastModified": "2025-09-26T01:52:59Z" - }, - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aliyun/index.html", - "type": "file", - "size": 26926, - "lastModified": "2025-09-26T01:52:58Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aliyun/index.txt", - "type": "file", - "size": 7746, - "lastModified": "2025-09-26T01:52:58Z" - }, - { - "name": "mns/", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aliyun/mns/", - "type": "dir", - "lastModified": "2025-09-26T01:52:59Z" - }, - { - "name": "oss/", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aliyun/oss/", - "type": "dir", - "lastModified": "2025-09-26T01:52:59Z" - }, - { - "name": "ram/", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aliyun/ram/", - "type": "dir", - "lastModified": "2025-09-26T01:52:59Z" - }, - { - "name": "security-group/", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aliyun/security-group/", - "type": "dir", - "lastModified": "2025-09-26T01:52:59Z" - }, - { - "name": "slb/", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aliyun/slb/", - "type": "dir", - "lastModified": "2025-09-26T01:52:59Z" - }, - { - "name": "vpc/", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aliyun/vpc/", - "type": "dir", - "lastModified": "2025-09-26T01:53:00Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/cloud_iac/aliyun/ack/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aliyun/ack/index.html", - "type": "file", - "size": 12135, - "lastModified": "2025-09-26T01:52:58Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aliyun/ack/index.txt", - "type": "file", - "size": 4336, - "lastModified": "2025-09-26T01:52:58Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/cloud_iac/aliyun/aliyun-emr/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aliyun/aliyun-emr/index.html", - "type": "file", - "size": 12282, - "lastModified": "2025-09-26T01:52:58Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aliyun/aliyun-emr/index.txt", - "type": "file", - "size": 4413, - "lastModified": "2025-09-26T01:52:58Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/cloud_iac/aliyun/aliyun-iot/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aliyun/aliyun-iot/index.html", - "type": "file", - "size": 12282, - "lastModified": "2025-09-26T01:52:58Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aliyun/aliyun-iot/index.txt", - "type": "file", - "size": 4413, - "lastModified": "2025-09-26T01:52:58Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/cloud_iac/aliyun/apigateway-dataworks/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aliyun/apigateway-dataworks/index.html", - "type": "file", - "size": 12492, - "lastModified": "2025-09-26T01:52:58Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aliyun/apigateway-dataworks/index.txt", - "type": "file", - "size": 4523, - "lastModified": "2025-09-26T01:52:58Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/cloud_iac/aliyun/apsaradb-rds/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aliyun/apsaradb-rds/index.html", - "type": "file", - "size": 12324, - "lastModified": "2025-09-26T01:52:58Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aliyun/apsaradb-rds/index.txt", - "type": "file", - "size": 4435, - "lastModified": "2025-09-26T01:52:59Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/cloud_iac/aliyun/apsaradb-redis/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aliyun/apsaradb-redis/index.html", - "type": "file", - "size": 12365, - "lastModified": "2025-09-26T01:52:59Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aliyun/apsaradb-redis/index.txt", - "type": "file", - "size": 4457, - "lastModified": "2025-09-26T01:52:59Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/cloud_iac/aliyun/cloudmonitor-eventbridge/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aliyun/cloudmonitor-eventbridge/index.html", - "type": "file", - "size": 12575, - "lastModified": "2025-09-26T01:52:59Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aliyun/cloudmonitor-eventbridge/index.txt", - "type": "file", - "size": 4567, - "lastModified": "2025-09-26T01:52:59Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/cloud_iac/aliyun/dns-acceleration/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aliyun/dns-acceleration/index.html", - "type": "file", - "size": 12408, - "lastModified": "2025-09-26T01:52:59Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aliyun/dns-acceleration/index.txt", - "type": "file", - "size": 4479, - "lastModified": "2025-09-26T01:52:59Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/cloud_iac/aliyun/ecs/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aliyun/ecs/index.html", - "type": "file", - "size": 12135, - "lastModified": "2025-09-26T01:52:59Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aliyun/ecs/index.txt", - "type": "file", - "size": 4336, - "lastModified": "2025-09-26T01:52:59Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/cloud_iac/aliyun/mns/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aliyun/mns/index.html", - "type": "file", - "size": 12135, - "lastModified": "2025-09-26T01:52:59Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aliyun/mns/index.txt", - "type": "file", - "size": 4336, - "lastModified": "2025-09-26T01:52:59Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/cloud_iac/aliyun/oss/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aliyun/oss/index.html", - "type": "file", - "size": 12135, - "lastModified": "2025-09-26T01:52:59Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aliyun/oss/index.txt", - "type": "file", - "size": 4336, - "lastModified": "2025-09-26T01:52:59Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/cloud_iac/aliyun/ram/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aliyun/ram/index.html", - "type": "file", - "size": 12135, - "lastModified": "2025-09-26T01:52:59Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aliyun/ram/index.txt", - "type": "file", - "size": 4336, - "lastModified": "2025-09-26T01:52:59Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/cloud_iac/aliyun/security-group/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aliyun/security-group/index.html", - "type": "file", - "size": 12365, - "lastModified": "2025-09-26T01:52:59Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aliyun/security-group/index.txt", - "type": "file", - "size": 4457, - "lastModified": "2025-09-26T01:52:59Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/cloud_iac/aliyun/slb/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aliyun/slb/index.html", - "type": "file", - "size": 12135, - "lastModified": "2025-09-26T01:52:59Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aliyun/slb/index.txt", - "type": "file", - "size": 4336, - "lastModified": "2025-09-26T01:52:59Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/cloud_iac/aliyun/vpc/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aliyun/vpc/index.html", - "type": "file", - "size": 12135, - "lastModified": "2025-09-26T01:53:00Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aliyun/vpc/index.txt", - "type": "file", - "size": 4336, - "lastModified": "2025-09-26T01:53:00Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/cloud_iac/aws/", - "entries": [ - { - "name": "alb/", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aws/alb/", - "type": "dir", - "lastModified": "2025-09-26T01:53:00Z" - }, - { - "name": "api-gateway-appflow/", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aws/api-gateway-appflow/", - "type": "dir", - "lastModified": "2025-09-26T01:53:00Z" - }, - { - "name": "aws-iot/", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aws/aws-iot/", - "type": "dir", - "lastModified": "2025-09-26T01:53:00Z" - }, - { - "name": "cloudwatch-eventbridge/", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aws/cloudwatch-eventbridge/", - "type": "dir", - "lastModified": "2025-09-26T01:53:00Z" - }, - { - "name": "ec2/", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aws/ec2/", - "type": "dir", - "lastModified": "2025-09-26T01:53:00Z" - }, - { - "name": "eks/", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aws/eks/", - "type": "dir", - "lastModified": "2025-09-26T01:53:00Z" - }, - { - "name": "elasticache/", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aws/elasticache/", - "type": "dir", - "lastModified": "2025-09-26T01:53:00Z" - }, - { - "name": "emr/", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aws/emr/", - "type": "dir", - "lastModified": "2025-09-26T01:53:01Z" - }, - { - "name": "iam/", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aws/iam/", - "type": "dir", - "lastModified": "2025-09-26T01:53:01Z" - }, - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aws/index.html", - "type": "file", - "size": 26609, - "lastModified": "2025-09-26T01:53:00Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aws/index.txt", - "type": "file", - "size": 7551, - "lastModified": "2025-09-26T01:53:00Z" - }, - { - "name": "rds/", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aws/rds/", - "type": "dir", - "lastModified": "2025-09-26T01:53:01Z" - }, - { - "name": "route53-cloudfront/", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aws/route53-cloudfront/", - "type": "dir", - "lastModified": "2025-09-26T01:53:01Z" - }, - { - "name": "s3/", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aws/s3/", - "type": "dir", - "lastModified": "2025-09-26T01:53:01Z" - }, - { - "name": "security-group/", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aws/security-group/", - "type": "dir", - "lastModified": "2025-09-26T01:53:01Z" - }, - { - "name": "sqs/", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aws/sqs/", - "type": "dir", - "lastModified": "2025-09-26T01:53:01Z" - }, - { - "name": "vpc/", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aws/vpc/", - "type": "dir", - "lastModified": "2025-09-26T01:53:01Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/cloud_iac/aws/alb/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aws/alb/index.html", - "type": "file", - "size": 12078, - "lastModified": "2025-09-26T01:53:00Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aws/alb/index.txt", - "type": "file", - "size": 4306, - "lastModified": "2025-09-26T01:53:00Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/cloud_iac/aws/api-gateway-appflow/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aws/api-gateway-appflow/index.html", - "type": "file", - "size": 12414, - "lastModified": "2025-09-26T01:53:00Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aws/api-gateway-appflow/index.txt", - "type": "file", - "size": 4482, - "lastModified": "2025-09-26T01:53:00Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/cloud_iac/aws/aws-iot/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aws/aws-iot/index.html", - "type": "file", - "size": 12161, - "lastModified": "2025-09-26T01:53:00Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aws/aws-iot/index.txt", - "type": "file", - "size": 4350, - "lastModified": "2025-09-26T01:53:00Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/cloud_iac/aws/cloudwatch-eventbridge/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aws/cloudwatch-eventbridge/index.html", - "type": "file", - "size": 12477, - "lastModified": "2025-09-26T01:53:00Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aws/cloudwatch-eventbridge/index.txt", - "type": "file", - "size": 4515, - "lastModified": "2025-09-26T01:53:00Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/cloud_iac/aws/ec2/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aws/ec2/index.html", - "type": "file", - "size": 12078, - "lastModified": "2025-09-26T01:53:00Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aws/ec2/index.txt", - "type": "file", - "size": 4306, - "lastModified": "2025-09-26T01:53:00Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/cloud_iac/aws/eks/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aws/eks/index.html", - "type": "file", - "size": 12078, - "lastModified": "2025-09-26T01:53:00Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aws/eks/index.txt", - "type": "file", - "size": 4306, - "lastModified": "2025-09-26T01:53:00Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/cloud_iac/aws/elasticache/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aws/elasticache/index.html", - "type": "file", - "size": 12246, - "lastModified": "2025-09-26T01:53:00Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aws/elasticache/index.txt", - "type": "file", - "size": 4394, - "lastModified": "2025-09-26T01:53:00Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/cloud_iac/aws/emr/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aws/emr/index.html", - "type": "file", - "size": 12078, - "lastModified": "2025-09-26T01:53:00Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aws/emr/index.txt", - "type": "file", - "size": 4306, - "lastModified": "2025-09-26T01:53:01Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/cloud_iac/aws/iam/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aws/iam/index.html", - "type": "file", - "size": 12078, - "lastModified": "2025-09-26T01:53:01Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aws/iam/index.txt", - "type": "file", - "size": 4306, - "lastModified": "2025-09-26T01:53:01Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/cloud_iac/aws/rds/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aws/rds/index.html", - "type": "file", - "size": 12078, - "lastModified": "2025-09-26T01:53:01Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aws/rds/index.txt", - "type": "file", - "size": 4306, - "lastModified": "2025-09-26T01:53:01Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/cloud_iac/aws/route53-cloudfront/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aws/route53-cloudfront/index.html", - "type": "file", - "size": 12393, - "lastModified": "2025-09-26T01:53:01Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aws/route53-cloudfront/index.txt", - "type": "file", - "size": 4471, - "lastModified": "2025-09-26T01:53:01Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/cloud_iac/aws/s3/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aws/s3/index.html", - "type": "file", - "size": 12053, - "lastModified": "2025-09-26T01:53:01Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aws/s3/index.txt", - "type": "file", - "size": 4295, - "lastModified": "2025-09-26T01:53:01Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/cloud_iac/aws/security-group/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aws/security-group/index.html", - "type": "file", - "size": 12309, - "lastModified": "2025-09-26T01:53:01Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aws/security-group/index.txt", - "type": "file", - "size": 4427, - "lastModified": "2025-09-26T01:53:01Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/cloud_iac/aws/sqs/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aws/sqs/index.html", - "type": "file", - "size": 12078, - "lastModified": "2025-09-26T01:53:01Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aws/sqs/index.txt", - "type": "file", - "size": 4306, - "lastModified": "2025-09-26T01:53:01Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/cloud_iac/aws/vpc/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aws/vpc/index.html", - "type": "file", - "size": 12078, - "lastModified": "2025-09-26T01:53:01Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/aws/vpc/index.txt", - "type": "file", - "size": 4306, - "lastModified": "2025-09-26T01:53:01Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/cloud_iac/azure/", - "entries": [ - { - "name": "aks/", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/azure/aks/", - "type": "dir", - "lastModified": "2025-09-26T01:53:01Z" - }, - { - "name": "apim-data-factory/", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/azure/apim-data-factory/", - "type": "dir", - "lastModified": "2025-09-26T01:53:02Z" - }, - { - "name": "azure-ad/", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/azure/azure-ad/", - "type": "dir", - "lastModified": "2025-09-26T01:53:02Z" - }, - { - "name": "azure-database/", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/azure/azure-database/", - "type": "dir", - "lastModified": "2025-09-26T01:53:02Z" - }, - { - "name": "azure-dns-front-door/", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/azure/azure-dns-front-door/", - "type": "dir", - "lastModified": "2025-09-26T01:53:02Z" - }, - { - "name": "azure-iot/", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/azure/azure-iot/", - "type": "dir", - "lastModified": "2025-09-26T01:53:02Z" - }, - { - "name": "azure-load-balancer/", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/azure/azure-load-balancer/", - "type": "dir", - "lastModified": "2025-09-26T01:53:02Z" - }, - { - "name": "blob-storage/", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/azure/blob-storage/", - "type": "dir", - "lastModified": "2025-09-26T01:53:02Z" - }, - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/azure/index.html", - "type": "file", - "size": 27166, - "lastModified": "2025-09-26T01:53:01Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/azure/index.txt", - "type": "file", - "size": 7888, - "lastModified": "2025-09-26T01:53:01Z" - }, - { - "name": "monitor-event-grid/", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/azure/monitor-event-grid/", - "type": "dir", - "lastModified": "2025-09-26T01:53:02Z" - }, - { - "name": "network-security-group/", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/azure/network-security-group/", - "type": "dir", - "lastModified": "2025-09-26T01:53:02Z" - }, - { - "name": "redis-cache/", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/azure/redis-cache/", - "type": "dir", - "lastModified": "2025-09-26T01:53:02Z" - }, - { - "name": "service-bus/", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/azure/service-bus/", - "type": "dir", - "lastModified": "2025-09-26T01:53:03Z" - }, - { - "name": "synapse/", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/azure/synapse/", - "type": "dir", - "lastModified": "2025-09-26T01:53:03Z" - }, - { - "name": "virtual-machines/", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/azure/virtual-machines/", - "type": "dir", - "lastModified": "2025-09-26T01:53:03Z" - }, - { - "name": "virtual-network/", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/azure/virtual-network/", - "type": "dir", - "lastModified": "2025-09-26T01:53:03Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/cloud_iac/azure/aks/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/azure/aks/index.html", - "type": "file", - "size": 12116, - "lastModified": "2025-09-26T01:53:01Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/azure/aks/index.txt", - "type": "file", - "size": 4326, - "lastModified": "2025-09-26T01:53:01Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/cloud_iac/azure/apim-data-factory/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/azure/apim-data-factory/index.html", - "type": "file", - "size": 12410, - "lastModified": "2025-09-26T01:53:01Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/azure/apim-data-factory/index.txt", - "type": "file", - "size": 4480, - "lastModified": "2025-09-26T01:53:02Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/cloud_iac/azure/azure-ad/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/azure/azure-ad/index.html", - "type": "file", - "size": 12221, - "lastModified": "2025-09-26T01:53:02Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/azure/azure-ad/index.txt", - "type": "file", - "size": 4381, - "lastModified": "2025-09-26T01:53:02Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/cloud_iac/azure/azure-database/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/azure/azure-database/index.html", - "type": "file", - "size": 12347, - "lastModified": "2025-09-26T01:53:02Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/azure/azure-database/index.txt", - "type": "file", - "size": 4447, - "lastModified": "2025-09-26T01:53:02Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/cloud_iac/azure/azure-dns-front-door/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/azure/azure-dns-front-door/index.html", - "type": "file", - "size": 12472, - "lastModified": "2025-09-26T01:53:02Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/azure/azure-dns-front-door/index.txt", - "type": "file", - "size": 4513, - "lastModified": "2025-09-26T01:53:02Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/cloud_iac/azure/azure-iot/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/azure/azure-iot/index.html", - "type": "file", - "size": 12242, - "lastModified": "2025-09-26T01:53:02Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/azure/azure-iot/index.txt", - "type": "file", - "size": 4392, - "lastModified": "2025-09-26T01:53:02Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/cloud_iac/azure/azure-load-balancer/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/azure/azure-load-balancer/index.html", - "type": "file", - "size": 12451, - "lastModified": "2025-09-26T01:53:02Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/azure/azure-load-balancer/index.txt", - "type": "file", - "size": 4502, - "lastModified": "2025-09-26T01:53:02Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/cloud_iac/azure/blob-storage/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/azure/blob-storage/index.html", - "type": "file", - "size": 12305, - "lastModified": "2025-09-26T01:53:02Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/azure/blob-storage/index.txt", - "type": "file", - "size": 4425, - "lastModified": "2025-09-26T01:53:02Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/cloud_iac/azure/monitor-event-grid/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/azure/monitor-event-grid/index.html", - "type": "file", - "size": 12431, - "lastModified": "2025-09-26T01:53:02Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/azure/monitor-event-grid/index.txt", - "type": "file", - "size": 4491, - "lastModified": "2025-09-26T01:53:02Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/cloud_iac/azure/network-security-group/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/azure/network-security-group/index.html", - "type": "file", - "size": 12515, - "lastModified": "2025-09-26T01:53:02Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/azure/network-security-group/index.txt", - "type": "file", - "size": 4535, - "lastModified": "2025-09-26T01:53:02Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/cloud_iac/azure/redis-cache/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/azure/redis-cache/index.html", - "type": "file", - "size": 12284, - "lastModified": "2025-09-26T01:53:02Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/azure/redis-cache/index.txt", - "type": "file", - "size": 4414, - "lastModified": "2025-09-26T01:53:02Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/cloud_iac/azure/service-bus/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/azure/service-bus/index.html", - "type": "file", - "size": 12284, - "lastModified": "2025-09-26T01:53:02Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/azure/service-bus/index.txt", - "type": "file", - "size": 4414, - "lastModified": "2025-09-26T01:53:03Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/cloud_iac/azure/synapse/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/azure/synapse/index.html", - "type": "file", - "size": 12200, - "lastModified": "2025-09-26T01:53:03Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/azure/synapse/index.txt", - "type": "file", - "size": 4370, - "lastModified": "2025-09-26T01:53:03Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/cloud_iac/azure/virtual-machines/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/azure/virtual-machines/index.html", - "type": "file", - "size": 12389, - "lastModified": "2025-09-26T01:53:03Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/azure/virtual-machines/index.txt", - "type": "file", - "size": 4469, - "lastModified": "2025-09-26T01:53:03Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/cloud_iac/azure/virtual-network/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/azure/virtual-network/index.html", - "type": "file", - "size": 12367, - "lastModified": "2025-09-26T01:53:03Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/azure/virtual-network/index.txt", - "type": "file", - "size": 4458, - "lastModified": "2025-09-26T01:53:03Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/cloud_iac/gcp/", - "entries": [ - { - "name": "apigateway-integration/", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/gcp/apigateway-integration/", - "type": "dir", - "lastModified": "2025-09-26T01:53:03Z" - }, - { - "name": "cloud-dns-cdn/", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/gcp/cloud-dns-cdn/", - "type": "dir", - "lastModified": "2025-09-26T01:53:03Z" - }, - { - "name": "cloud-iam/", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/gcp/cloud-iam/", - "type": "dir", - "lastModified": "2025-09-26T01:53:03Z" - }, - { - "name": "cloud-load-balancing/", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/gcp/cloud-load-balancing/", - "type": "dir", - "lastModified": "2025-09-26T01:53:03Z" - }, - { - "name": "cloud-sql/", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/gcp/cloud-sql/", - "type": "dir", - "lastModified": "2025-09-26T01:53:03Z" - }, - { - "name": "cloud-storage/", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/gcp/cloud-storage/", - "type": "dir", - "lastModified": "2025-09-26T01:53:04Z" - }, - { - "name": "compute-engine/", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/gcp/compute-engine/", - "type": "dir", - "lastModified": "2025-09-26T01:53:04Z" - }, - { - "name": "dataproc/", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/gcp/dataproc/", - "type": "dir", - "lastModified": "2025-09-26T01:53:04Z" - }, - { - "name": "gcp-iot/", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/gcp/gcp-iot/", - "type": "dir", - "lastModified": "2025-09-26T01:53:04Z" - }, - { - "name": "gke/", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/gcp/gke/", - "type": "dir", - "lastModified": "2025-09-26T01:53:04Z" - }, - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/gcp/index.html", - "type": "file", - "size": 26869, - "lastModified": "2025-09-26T01:53:03Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/gcp/index.txt", - "type": "file", - "size": 7707, - "lastModified": "2025-09-26T01:53:03Z" - }, - { - "name": "memorystore/", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/gcp/memorystore/", - "type": "dir", - "lastModified": "2025-09-26T01:53:04Z" - }, - { - "name": "operations-eventarc/", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/gcp/operations-eventarc/", - "type": "dir", - "lastModified": "2025-09-26T01:53:04Z" - }, - { - "name": "pubsub/", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/gcp/pubsub/", - "type": "dir", - "lastModified": "2025-09-26T01:53:04Z" - }, - { - "name": "vpc/", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/gcp/vpc/", - "type": "dir", - "lastModified": "2025-09-26T01:53:04Z" - }, - { - "name": "vpc-firewall/", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/gcp/vpc-firewall/", - "type": "dir", - "lastModified": "2025-09-26T01:53:04Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/cloud_iac/gcp/apigateway-integration/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/gcp/apigateway-integration/index.html", - "type": "file", - "size": 12477, - "lastModified": "2025-09-26T01:53:03Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/gcp/apigateway-integration/index.txt", - "type": "file", - "size": 4515, - "lastModified": "2025-09-26T01:53:03Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/cloud_iac/gcp/cloud-dns-cdn/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/gcp/cloud-dns-cdn/index.html", - "type": "file", - "size": 12288, - "lastModified": "2025-09-26T01:53:03Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/gcp/cloud-dns-cdn/index.txt", - "type": "file", - "size": 4416, - "lastModified": "2025-09-26T01:53:03Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/cloud_iac/gcp/cloud-iam/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/gcp/cloud-iam/index.html", - "type": "file", - "size": 12204, - "lastModified": "2025-09-26T01:53:03Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/gcp/cloud-iam/index.txt", - "type": "file", - "size": 4372, - "lastModified": "2025-09-26T01:53:03Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/cloud_iac/gcp/cloud-load-balancing/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/gcp/cloud-load-balancing/index.html", - "type": "file", - "size": 12435, - "lastModified": "2025-09-26T01:53:03Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/gcp/cloud-load-balancing/index.txt", - "type": "file", - "size": 4493, - "lastModified": "2025-09-26T01:53:03Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/cloud_iac/gcp/cloud-sql/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/gcp/cloud-sql/index.html", - "type": "file", - "size": 12204, - "lastModified": "2025-09-26T01:53:03Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/gcp/cloud-sql/index.txt", - "type": "file", - "size": 4372, - "lastModified": "2025-09-26T01:53:03Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/cloud_iac/gcp/cloud-storage/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/gcp/cloud-storage/index.html", - "type": "file", - "size": 12288, - "lastModified": "2025-09-26T01:53:04Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/gcp/cloud-storage/index.txt", - "type": "file", - "size": 4416, - "lastModified": "2025-09-26T01:53:04Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/cloud_iac/gcp/compute-engine/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/gcp/compute-engine/index.html", - "type": "file", - "size": 12309, - "lastModified": "2025-09-26T01:53:04Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/gcp/compute-engine/index.txt", - "type": "file", - "size": 4427, - "lastModified": "2025-09-26T01:53:04Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/cloud_iac/gcp/dataproc/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/gcp/dataproc/index.html", - "type": "file", - "size": 12183, - "lastModified": "2025-09-26T01:53:04Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/gcp/dataproc/index.txt", - "type": "file", - "size": 4361, - "lastModified": "2025-09-26T01:53:04Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/cloud_iac/gcp/gcp-iot/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/gcp/gcp-iot/index.html", - "type": "file", - "size": 12161, - "lastModified": "2025-09-26T01:53:04Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/gcp/gcp-iot/index.txt", - "type": "file", - "size": 4350, - "lastModified": "2025-09-26T01:53:04Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/cloud_iac/gcp/gke/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/gcp/gke/index.html", - "type": "file", - "size": 12078, - "lastModified": "2025-09-26T01:53:04Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/gcp/gke/index.txt", - "type": "file", - "size": 4306, - "lastModified": "2025-09-26T01:53:04Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/cloud_iac/gcp/memorystore/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/gcp/memorystore/index.html", - "type": "file", - "size": 12246, - "lastModified": "2025-09-26T01:53:04Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/gcp/memorystore/index.txt", - "type": "file", - "size": 4394, - "lastModified": "2025-09-26T01:53:04Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/cloud_iac/gcp/operations-eventarc/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/gcp/operations-eventarc/index.html", - "type": "file", - "size": 12414, - "lastModified": "2025-09-26T01:53:04Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/gcp/operations-eventarc/index.txt", - "type": "file", - "size": 4482, - "lastModified": "2025-09-26T01:53:04Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/cloud_iac/gcp/pubsub/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/gcp/pubsub/index.html", - "type": "file", - "size": 12141, - "lastModified": "2025-09-26T01:53:04Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/gcp/pubsub/index.txt", - "type": "file", - "size": 4339, - "lastModified": "2025-09-26T01:53:04Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/cloud_iac/gcp/vpc/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/gcp/vpc/index.html", - "type": "file", - "size": 12078, - "lastModified": "2025-09-26T01:53:04Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/gcp/vpc/index.txt", - "type": "file", - "size": 4306, - "lastModified": "2025-09-26T01:53:04Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/cloud_iac/gcp/vpc-firewall/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/gcp/vpc-firewall/index.html", - "type": "file", - "size": 12265, - "lastModified": "2025-09-26T01:53:04Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/cloud_iac/gcp/vpc-firewall/index.txt", - "type": "file", - "size": 4405, - "lastModified": "2025-09-26T01:53:04Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/demo/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/demo/index.html", - "type": "file", - "size": 11499, - "lastModified": "2025-09-26T01:53:04Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/demo/index.txt", - "type": "file", - "size": 4165, - "lastModified": "2025-09-26T01:53:05Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/dl-index/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/dl-index/index.html", - "type": "file", - "size": 11583, - "lastModified": "2025-09-26T01:53:05Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/dl-index/index.txt", - "type": "file", - "size": 4209, - "lastModified": "2025-09-26T01:53:05Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/docs/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/docs/index.html", - "type": "file", - "size": 95450, - "lastModified": "2025-09-26T01:53:05Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/docs/index.txt", - "type": "file", - "size": 29187, - "lastModified": "2025-09-26T01:53:05Z" - }, - { - "name": "interview-qa-cn-v23-17739490366-interview-qa-guide/", - "href": "/dashboard/download/dashboard/download/dashboard/docs/interview-qa-cn-v23-17739490366-interview-qa-guide/", - "type": "dir", - "lastModified": "2025-09-26T01:53:05Z" - }, - { - "name": "interview-qa-cn-v26-17740473328-interview-qa-guide/", - "href": "/dashboard/download/dashboard/download/dashboard/docs/interview-qa-cn-v26-17740473328-interview-qa-guide/", - "type": "dir", - "lastModified": "2025-09-26T01:53:05Z" - }, - { - "name": "interview-qa-cn-v27-17740487419-interview-qa-guide/", - "href": "/dashboard/download/dashboard/download/dashboard/docs/interview-qa-cn-v27-17740487419-interview-qa-guide/", - "type": "dir", - "lastModified": "2025-09-26T01:53:05Z" - }, - { - "name": "interview-qa-cn-v28-17749789283-interview-qa-guide/", - "href": "/dashboard/download/dashboard/download/dashboard/docs/interview-qa-cn-v28-17749789283-interview-qa-guide/", - "type": "dir", - "lastModified": "2025-09-26T01:53:05Z" - }, - { - "name": "interview-qa-cn-v29-17749815392-interview-qa-guide/", - "href": "/dashboard/download/dashboard/download/dashboard/docs/interview-qa-cn-v29-17749815392-interview-qa-guide/", - "type": "dir", - "lastModified": "2025-09-26T01:53:05Z" - }, - { - "name": "keycloak-keycloak-v24-17740025432-keycloak-sso-design-and-implementation/", - "href": "/dashboard/download/dashboard/download/dashboard/docs/keycloak-keycloak-v24-17740025432-keycloak-sso-design-and-implementation/", - "type": "dir", - "lastModified": "2025-09-26T01:53:05Z" - }, - { - "name": "keycloak-keycloak-v26-17740473328-keycloak-sso-design-and-implementation/", - "href": "/dashboard/download/dashboard/download/dashboard/docs/keycloak-keycloak-v26-17740473328-keycloak-sso-design-and-implementation/", - "type": "dir", - "lastModified": "2025-09-26T01:53:05Z" - }, - { - "name": "keycloak-keycloak-v28-17749789283-keycloak-sso-design-and-implementation/", - "href": "/dashboard/download/dashboard/download/dashboard/docs/keycloak-keycloak-v28-17749789283-keycloak-sso-design-and-implementation/", - "type": "dir", - "lastModified": "2025-09-26T01:53:06Z" - }, - { - "name": "keycloak-keycloak-v29-17749815392-keycloak-sso-design-and-implementation/", - "href": "/dashboard/download/dashboard/download/dashboard/docs/keycloak-keycloak-v29-17749815392-keycloak-sso-design-and-implementation/", - "type": "dir", - "lastModified": "2025-09-26T01:53:06Z" - }, - { - "name": "landingzone-landingzone-v27-17740487419-landing-zone-design-and-implementation/", - "href": "/dashboard/download/dashboard/download/dashboard/docs/landingzone-landingzone-v27-17740487419-landing-zone-design-and-implementation/", - "type": "dir", - "lastModified": "2025-09-26T01:53:06Z" - }, - { - "name": "landingzone-landingzone-v28-17749789283-landing-zone-design-and-implementation/", - "href": "/dashboard/download/dashboard/download/dashboard/docs/landingzone-landingzone-v28-17749789283-landing-zone-design-and-implementation/", - "type": "dir", - "lastModified": "2025-09-26T01:53:06Z" - }, - { - "name": "landingzone-landingzone-v29-17749815392-landing-zone-design-and-implementation/", - "href": "/dashboard/download/dashboard/download/dashboard/docs/landingzone-landingzone-v29-17749815392-landing-zone-design-and-implementation/", - "type": "dir", - "lastModified": "2025-09-26T01:53:06Z" - }, - { - "name": "linux-k8s-ops-cn-v25-17740048053-linux-k8s-ops-guide/", - "href": "/dashboard/download/dashboard/download/dashboard/docs/linux-k8s-ops-cn-v25-17740048053-linux-k8s-ops-guide/", - "type": "dir", - "lastModified": "2025-09-26T01:53:06Z" - }, - { - "name": "linux-k8s-ops-cn-v27-17740487419-linux-k8s-ops-guide/", - "href": "/dashboard/download/dashboard/download/dashboard/docs/linux-k8s-ops-cn-v27-17740487419-linux-k8s-ops-guide/", - "type": "dir", - "lastModified": "2025-09-26T01:53:06Z" - }, - { - "name": "linux-k8s-ops-cn-v28-17749789283-linux-k8s-ops-guide/", - "href": "/dashboard/download/dashboard/download/dashboard/docs/linux-k8s-ops-cn-v28-17749789283-linux-k8s-ops-guide/", - "type": "dir", - "lastModified": "2025-09-26T01:53:06Z" - }, - { - "name": "linux-k8s-ops-cn-v29-17749815392-linux-k8s-ops-guide/", - "href": "/dashboard/download/dashboard/download/dashboard/docs/linux-k8s-ops-cn-v29-17749815392-linux-k8s-ops-guide/", - "type": "dir", - "lastModified": "2025-09-26T01:53:06Z" - }, - { - "name": "observability-cn-v20-17738959811-observability-design-and-implementation/", - "href": "/dashboard/download/dashboard/download/dashboard/docs/observability-cn-v20-17738959811-observability-design-and-implementation/", - "type": "dir", - "lastModified": "2025-09-26T01:53:07Z" - }, - { - "name": "observability-cn-v23-17739490366-observability-design-and-implementation/", - "href": "/dashboard/download/dashboard/download/dashboard/docs/observability-cn-v23-17739490366-observability-design-and-implementation/", - "type": "dir", - "lastModified": "2025-09-26T01:53:07Z" - }, - { - "name": "observability-cn-v28-17749789283-observability-design-and-implementation/", - "href": "/dashboard/download/dashboard/download/dashboard/docs/observability-cn-v28-17749789283-observability-design-and-implementation/", - "type": "dir", - "lastModified": "2025-09-26T01:53:07Z" - }, - { - "name": "observability-cn-v29-17749815392-observability-design-and-implementation/", - "href": "/dashboard/download/dashboard/download/dashboard/docs/observability-cn-v29-17749815392-observability-design-and-implementation/", - "type": "dir", - "lastModified": "2025-09-26T01:53:07Z" - }, - { - "name": "personal-personal-v27-17740487419-activebalance-plan/", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v27-17740487419-activebalance-plan/", - "type": "dir", - "lastModified": "2025-09-26T01:53:07Z" - }, - { - "name": "personal-personal-v27-17740487419-cet-6/", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v27-17740487419-cet-6/", - "type": "dir", - "lastModified": "2025-09-26T01:53:07Z" - }, - { - "name": "personal-personal-v27-17740487419-cv-ai-dev-en/", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v27-17740487419-cv-ai-dev-en/", - "type": "dir", - "lastModified": "2025-09-26T01:53:07Z" - }, - { - "name": "personal-personal-v27-17740487419-cv-ai-dev-zh/", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v27-17740487419-cv-ai-dev-zh/", - "type": "dir", - "lastModified": "2025-09-26T01:53:07Z" - }, - { - "name": "personal-personal-v27-17740487419-cv-en/", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v27-17740487419-cv-en/", - "type": "dir", - "lastModified": "2025-09-26T01:53:07Z" - }, - { - "name": "personal-personal-v27-17740487419-cv-zh/", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v27-17740487419-cv-zh/", - "type": "dir", - "lastModified": "2025-09-26T01:53:07Z" - }, - { - "name": "personal-personal-v27-17740487419-fullstack-language-core/", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v27-17740487419-fullstack-language-core/", - "type": "dir", - "lastModified": "2025-09-26T01:53:08Z" - }, - { - "name": "personal-personal-v27-17740487419-readme/", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v27-17740487419-readme/", - "type": "dir", - "lastModified": "2025-09-26T01:53:08Z" - }, - { - "name": "personal-personal-v27-17740487419-resume-devops-en/", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v27-17740487419-resume-devops-en/", - "type": "dir", - "lastModified": "2025-09-26T01:53:08Z" - }, - { - "name": "personal-personal-v27-17740487419-resume-devops-zh/", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v27-17740487419-resume-devops-zh/", - "type": "dir", - "lastModified": "2025-09-26T01:53:08Z" - }, - { - "name": "personal-personal-v27-17740487419-resume-en/", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v27-17740487419-resume-en/", - "type": "dir", - "lastModified": "2025-09-26T01:53:08Z" - }, - { - "name": "personal-personal-v27-17740487419-resume-zh/", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v27-17740487419-resume-zh/", - "type": "dir", - "lastModified": "2025-09-26T01:53:08Z" - }, - { - "name": "personal-personal-v28-17749789283-activebalance-plan/", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v28-17749789283-activebalance-plan/", - "type": "dir", - "lastModified": "2025-09-26T01:53:08Z" - }, - { - "name": "personal-personal-v28-17749789283-cet-6/", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v28-17749789283-cet-6/", - "type": "dir", - "lastModified": "2025-09-26T01:53:08Z" - }, - { - "name": "personal-personal-v28-17749789283-cv-ai-dev-en/", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v28-17749789283-cv-ai-dev-en/", - "type": "dir", - "lastModified": "2025-09-26T01:53:08Z" - }, - { - "name": "personal-personal-v28-17749789283-cv-ai-dev-zh/", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v28-17749789283-cv-ai-dev-zh/", - "type": "dir", - "lastModified": "2025-09-26T01:53:08Z" - }, - { - "name": "personal-personal-v28-17749789283-cv-en/", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v28-17749789283-cv-en/", - "type": "dir", - "lastModified": "2025-09-26T01:53:09Z" - }, - { - "name": "personal-personal-v28-17749789283-cv-zh/", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v28-17749789283-cv-zh/", - "type": "dir", - "lastModified": "2025-09-26T01:53:09Z" - }, - { - "name": "personal-personal-v28-17749789283-fullstack-language-core/", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v28-17749789283-fullstack-language-core/", - "type": "dir", - "lastModified": "2025-09-26T01:53:09Z" - }, - { - "name": "personal-personal-v28-17749789283-readme/", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v28-17749789283-readme/", - "type": "dir", - "lastModified": "2025-09-26T01:53:09Z" - }, - { - "name": "personal-personal-v28-17749789283-resume-devops-en/", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v28-17749789283-resume-devops-en/", - "type": "dir", - "lastModified": "2025-09-26T01:53:09Z" - }, - { - "name": "personal-personal-v28-17749789283-resume-devops-zh/", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v28-17749789283-resume-devops-zh/", - "type": "dir", - "lastModified": "2025-09-26T01:53:09Z" - }, - { - "name": "personal-personal-v28-17749789283-resume-en/", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v28-17749789283-resume-en/", - "type": "dir", - "lastModified": "2025-09-26T01:53:09Z" - }, - { - "name": "personal-personal-v28-17749789283-resume-zh/", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v28-17749789283-resume-zh/", - "type": "dir", - "lastModified": "2025-09-26T01:53:09Z" - }, - { - "name": "personal-personal-v29-17749815392-activebalance-plan/", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v29-17749815392-activebalance-plan/", - "type": "dir", - "lastModified": "2025-09-26T01:53:09Z" - }, - { - "name": "personal-personal-v29-17749815392-cet-6/", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v29-17749815392-cet-6/", - "type": "dir", - "lastModified": "2025-09-26T01:53:09Z" - }, - { - "name": "personal-personal-v29-17749815392-cv-ai-dev-en/", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v29-17749815392-cv-ai-dev-en/", - "type": "dir", - "lastModified": "2025-09-26T01:53:10Z" - }, - { - "name": "personal-personal-v29-17749815392-cv-ai-dev-zh/", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v29-17749815392-cv-ai-dev-zh/", - "type": "dir", - "lastModified": "2025-09-26T01:53:10Z" - }, - { - "name": "personal-personal-v29-17749815392-cv-en/", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v29-17749815392-cv-en/", - "type": "dir", - "lastModified": "2025-09-26T01:53:10Z" - }, - { - "name": "personal-personal-v29-17749815392-cv-zh/", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v29-17749815392-cv-zh/", - "type": "dir", - "lastModified": "2025-09-26T01:53:10Z" - }, - { - "name": "personal-personal-v29-17749815392-fullstack-language-core/", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v29-17749815392-fullstack-language-core/", - "type": "dir", - "lastModified": "2025-09-26T01:53:10Z" - }, - { - "name": "personal-personal-v29-17749815392-readme/", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v29-17749815392-readme/", - "type": "dir", - "lastModified": "2025-09-26T01:53:10Z" - }, - { - "name": "personal-personal-v29-17749815392-resume-devops-en/", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v29-17749815392-resume-devops-en/", - "type": "dir", - "lastModified": "2025-09-26T01:53:10Z" - }, - { - "name": "personal-personal-v29-17749815392-resume-devops-zh/", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v29-17749815392-resume-devops-zh/", - "type": "dir", - "lastModified": "2025-09-26T01:53:10Z" - }, - { - "name": "personal-personal-v29-17749815392-resume-en/", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v29-17749815392-resume-en/", - "type": "dir", - "lastModified": "2025-09-26T01:53:10Z" - }, - { - "name": "personal-personal-v29-17749815392-resume-zh/", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v29-17749815392-resume-zh/", - "type": "dir", - "lastModified": "2025-09-26T01:53:10Z" - }, - { - "name": "techexploration-techexploration-v25-17740048053-tech-exploration/", - "href": "/dashboard/download/dashboard/download/dashboard/docs/techexploration-techexploration-v25-17740048053-tech-exploration/", - "type": "dir", - "lastModified": "2025-09-26T01:53:10Z" - }, - { - "name": "techexploration-techexploration-v27-17740487419-tech-exploration/", - "href": "/dashboard/download/dashboard/download/dashboard/docs/techexploration-techexploration-v27-17740487419-tech-exploration/", - "type": "dir", - "lastModified": "2025-09-26T01:53:11Z" - }, - { - "name": "techexploration-techexploration-v28-17749789283-tech-exploration/", - "href": "/dashboard/download/dashboard/download/dashboard/docs/techexploration-techexploration-v28-17749789283-tech-exploration/", - "type": "dir", - "lastModified": "2025-09-26T01:53:11Z" - }, - { - "name": "techexploration-techexploration-v29-17749815392-tech-exploration/", - "href": "/dashboard/download/dashboard/download/dashboard/docs/techexploration-techexploration-v29-17749815392-tech-exploration/", - "type": "dir", - "lastModified": "2025-09-26T01:53:11Z" - }, - { - "name": "the-indiedeveloper-fullstack-roadmap-cn-v20-17738959811-fullstack-roadmap-cn/", - "href": "/dashboard/download/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap-cn-v20-17738959811-fullstack-roadmap-cn/", - "type": "dir", - "lastModified": "2025-09-26T01:53:11Z" - }, - { - "name": "the-indiedeveloper-fullstack-roadmap-cn-v21-17739112034-fullstack-roadmap-cn/", - "href": "/dashboard/download/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap-cn-v21-17739112034-fullstack-roadmap-cn/", - "type": "dir", - "lastModified": "2025-09-26T01:53:11Z" - }, - { - "name": "the-indiedeveloper-fullstack-roadmap-cn-v23-17739490366-fullstack-roadmap-cn/", - "href": "/dashboard/download/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap-cn-v23-17739490366-fullstack-roadmap-cn/", - "type": "dir", - "lastModified": "2025-09-26T01:53:11Z" - }, - { - "name": "the-indiedeveloper-fullstack-roadmap-cn-v28-17749789283-fullstack-roadmap-cn/", - "href": "/dashboard/download/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap-cn-v28-17749789283-fullstack-roadmap-cn/", - "type": "dir", - "lastModified": "2025-09-26T01:53:11Z" - }, - { - "name": "the-indiedeveloper-fullstack-roadmap-cn-v29-17749815392-fullstack-roadmap-cn/", - "href": "/dashboard/download/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap-cn-v29-17749815392-fullstack-roadmap-cn/", - "type": "dir", - "lastModified": "2025-09-26T01:53:11Z" - }, - { - "name": "the-indiedeveloper-fullstack-roadmap-en-v21-17739112034-fullstack-roadmap-en/", - "href": "/dashboard/download/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap-en-v21-17739112034-fullstack-roadmap-en/", - "type": "dir", - "lastModified": "2025-09-26T01:53:11Z" - }, - { - "name": "the-indiedeveloper-fullstack-roadmap-en-v22-17739462094-fullstack-roadmap-en/", - "href": "/dashboard/download/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap-en-v22-17739462094-fullstack-roadmap-en/", - "type": "dir", - "lastModified": "2025-09-26T01:53:11Z" - }, - { - "name": "the-indiedeveloper-fullstack-roadmap-en-v23-17739490366-fullstack-roadmap-en/", - "href": "/dashboard/download/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap-en-v23-17739490366-fullstack-roadmap-en/", - "type": "dir", - "lastModified": "2025-09-26T01:53:12Z" - }, - { - "name": "the-indiedeveloper-fullstack-roadmap-en-v26-17740473328-fullstack-roadmap-en/", - "href": "/dashboard/download/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap-en-v26-17740473328-fullstack-roadmap-en/", - "type": "dir", - "lastModified": "2025-09-26T01:53:12Z" - }, - { - "name": "the-indiedeveloper-fullstack-roadmap-en-v27-17740487419-fullstack-roadmap-en/", - "href": "/dashboard/download/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap-en-v27-17740487419-fullstack-roadmap-en/", - "type": "dir", - "lastModified": "2025-09-26T01:53:12Z" - }, - { - "name": "the-indiedeveloper-fullstack-roadmap-en-v28-17749789283-fullstack-roadmap-en/", - "href": "/dashboard/download/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap-en-v28-17749789283-fullstack-roadmap-en/", - "type": "dir", - "lastModified": "2025-09-26T01:53:12Z" - }, - { - "name": "the-indiedeveloper-fullstack-roadmap-en-v29-17749815392-fullstack-roadmap-en/", - "href": "/dashboard/download/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap-en-v29-17749815392-fullstack-roadmap-en/", - "type": "dir", - "lastModified": "2025-09-26T01:53:12Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/docs/interview-qa-cn-v23-17739490366-interview-qa-guide/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/docs/interview-qa-cn-v23-17739490366-interview-qa-guide/index.html", - "type": "file", - "size": 12722, - "lastModified": "2025-09-26T01:53:05Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/docs/interview-qa-cn-v23-17739490366-interview-qa-guide/index.txt", - "type": "file", - "size": 4727, - "lastModified": "2025-09-26T01:53:05Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/docs/interview-qa-cn-v26-17740473328-interview-qa-guide/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/docs/interview-qa-cn-v26-17740473328-interview-qa-guide/index.html", - "type": "file", - "size": 12722, - "lastModified": "2025-09-26T01:53:05Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/docs/interview-qa-cn-v26-17740473328-interview-qa-guide/index.txt", - "type": "file", - "size": 4727, - "lastModified": "2025-09-26T01:53:05Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/docs/interview-qa-cn-v27-17740487419-interview-qa-guide/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/docs/interview-qa-cn-v27-17740487419-interview-qa-guide/index.html", - "type": "file", - "size": 12722, - "lastModified": "2025-09-26T01:53:05Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/docs/interview-qa-cn-v27-17740487419-interview-qa-guide/index.txt", - "type": "file", - "size": 4727, - "lastModified": "2025-09-26T01:53:05Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/docs/interview-qa-cn-v28-17749789283-interview-qa-guide/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/docs/interview-qa-cn-v28-17749789283-interview-qa-guide/index.html", - "type": "file", - "size": 12722, - "lastModified": "2025-09-26T01:53:05Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/docs/interview-qa-cn-v28-17749789283-interview-qa-guide/index.txt", - "type": "file", - "size": 4727, - "lastModified": "2025-09-26T01:53:05Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/docs/interview-qa-cn-v29-17749815392-interview-qa-guide/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/docs/interview-qa-cn-v29-17749815392-interview-qa-guide/index.html", - "type": "file", - "size": 12722, - "lastModified": "2025-09-26T01:53:05Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/docs/interview-qa-cn-v29-17749815392-interview-qa-guide/index.txt", - "type": "file", - "size": 4727, - "lastModified": "2025-09-26T01:53:05Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/docs/keycloak-keycloak-v24-17740025432-keycloak-sso-design-and-implementation/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/docs/keycloak-keycloak-v24-17740025432-keycloak-sso-design-and-implementation/index.html", - "type": "file", - "size": 13184, - "lastModified": "2025-09-26T01:53:05Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/docs/keycloak-keycloak-v24-17740025432-keycloak-sso-design-and-implementation/index.txt", - "type": "file", - "size": 4969, - "lastModified": "2025-09-26T01:53:05Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/docs/keycloak-keycloak-v26-17740473328-keycloak-sso-design-and-implementation/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/docs/keycloak-keycloak-v26-17740473328-keycloak-sso-design-and-implementation/index.html", - "type": "file", - "size": 13184, - "lastModified": "2025-09-26T01:53:05Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/docs/keycloak-keycloak-v26-17740473328-keycloak-sso-design-and-implementation/index.txt", - "type": "file", - "size": 4969, - "lastModified": "2025-09-26T01:53:05Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/docs/keycloak-keycloak-v28-17749789283-keycloak-sso-design-and-implementation/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/docs/keycloak-keycloak-v28-17749789283-keycloak-sso-design-and-implementation/index.html", - "type": "file", - "size": 13184, - "lastModified": "2025-09-26T01:53:05Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/docs/keycloak-keycloak-v28-17749789283-keycloak-sso-design-and-implementation/index.txt", - "type": "file", - "size": 4969, - "lastModified": "2025-09-26T01:53:06Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/docs/keycloak-keycloak-v29-17749815392-keycloak-sso-design-and-implementation/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/docs/keycloak-keycloak-v29-17749815392-keycloak-sso-design-and-implementation/index.html", - "type": "file", - "size": 13184, - "lastModified": "2025-09-26T01:53:06Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/docs/keycloak-keycloak-v29-17749815392-keycloak-sso-design-and-implementation/index.txt", - "type": "file", - "size": 4969, - "lastModified": "2025-09-26T01:53:06Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/docs/landingzone-landingzone-v27-17740487419-landing-zone-design-and-implementation/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/docs/landingzone-landingzone-v27-17740487419-landing-zone-design-and-implementation/index.html", - "type": "file", - "size": 13310, - "lastModified": "2025-09-26T01:53:06Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/docs/landingzone-landingzone-v27-17740487419-landing-zone-design-and-implementation/index.txt", - "type": "file", - "size": 5035, - "lastModified": "2025-09-26T01:53:06Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/docs/landingzone-landingzone-v28-17749789283-landing-zone-design-and-implementation/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/docs/landingzone-landingzone-v28-17749789283-landing-zone-design-and-implementation/index.html", - "type": "file", - "size": 13310, - "lastModified": "2025-09-26T01:53:06Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/docs/landingzone-landingzone-v28-17749789283-landing-zone-design-and-implementation/index.txt", - "type": "file", - "size": 5035, - "lastModified": "2025-09-26T01:53:06Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/docs/landingzone-landingzone-v29-17749815392-landing-zone-design-and-implementation/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/docs/landingzone-landingzone-v29-17749815392-landing-zone-design-and-implementation/index.html", - "type": "file", - "size": 13310, - "lastModified": "2025-09-26T01:53:06Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/docs/landingzone-landingzone-v29-17749815392-landing-zone-design-and-implementation/index.txt", - "type": "file", - "size": 5035, - "lastModified": "2025-09-26T01:53:06Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/docs/linux-k8s-ops-cn-v25-17740048053-linux-k8s-ops-guide/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/docs/linux-k8s-ops-cn-v25-17740048053-linux-k8s-ops-guide/index.html", - "type": "file", - "size": 12764, - "lastModified": "2025-09-26T01:53:06Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/docs/linux-k8s-ops-cn-v25-17740048053-linux-k8s-ops-guide/index.txt", - "type": "file", - "size": 4749, - "lastModified": "2025-09-26T01:53:06Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/docs/linux-k8s-ops-cn-v27-17740487419-linux-k8s-ops-guide/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/docs/linux-k8s-ops-cn-v27-17740487419-linux-k8s-ops-guide/index.html", - "type": "file", - "size": 12764, - "lastModified": "2025-09-26T01:53:06Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/docs/linux-k8s-ops-cn-v27-17740487419-linux-k8s-ops-guide/index.txt", - "type": "file", - "size": 4749, - "lastModified": "2025-09-26T01:53:06Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/docs/linux-k8s-ops-cn-v28-17749789283-linux-k8s-ops-guide/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/docs/linux-k8s-ops-cn-v28-17749789283-linux-k8s-ops-guide/index.html", - "type": "file", - "size": 12764, - "lastModified": "2025-09-26T01:53:06Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/docs/linux-k8s-ops-cn-v28-17749789283-linux-k8s-ops-guide/index.txt", - "type": "file", - "size": 4749, - "lastModified": "2025-09-26T01:53:06Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/docs/linux-k8s-ops-cn-v29-17749815392-linux-k8s-ops-guide/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/docs/linux-k8s-ops-cn-v29-17749815392-linux-k8s-ops-guide/index.html", - "type": "file", - "size": 12764, - "lastModified": "2025-09-26T01:53:06Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/docs/linux-k8s-ops-cn-v29-17749815392-linux-k8s-ops-guide/index.txt", - "type": "file", - "size": 4749, - "lastModified": "2025-09-26T01:53:06Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/docs/observability-cn-v20-17738959811-observability-design-and-implementation/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/docs/observability-cn-v20-17738959811-observability-design-and-implementation/index.html", - "type": "file", - "size": 13184, - "lastModified": "2025-09-26T01:53:06Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/docs/observability-cn-v20-17738959811-observability-design-and-implementation/index.txt", - "type": "file", - "size": 4969, - "lastModified": "2025-09-26T01:53:07Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/docs/observability-cn-v23-17739490366-observability-design-and-implementation/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/docs/observability-cn-v23-17739490366-observability-design-and-implementation/index.html", - "type": "file", - "size": 13184, - "lastModified": "2025-09-26T01:53:07Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/docs/observability-cn-v23-17739490366-observability-design-and-implementation/index.txt", - "type": "file", - "size": 4969, - "lastModified": "2025-09-26T01:53:07Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/docs/observability-cn-v28-17749789283-observability-design-and-implementation/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/docs/observability-cn-v28-17749789283-observability-design-and-implementation/index.html", - "type": "file", - "size": 13184, - "lastModified": "2025-09-26T01:53:07Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/docs/observability-cn-v28-17749789283-observability-design-and-implementation/index.txt", - "type": "file", - "size": 4969, - "lastModified": "2025-09-26T01:53:07Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/docs/observability-cn-v29-17749815392-observability-design-and-implementation/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/docs/observability-cn-v29-17749815392-observability-design-and-implementation/index.html", - "type": "file", - "size": 13184, - "lastModified": "2025-09-26T01:53:07Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/docs/observability-cn-v29-17749815392-observability-design-and-implementation/index.txt", - "type": "file", - "size": 4969, - "lastModified": "2025-09-26T01:53:07Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/docs/personal-personal-v27-17740487419-activebalance-plan/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v27-17740487419-activebalance-plan/index.html", - "type": "file", - "size": 12764, - "lastModified": "2025-09-26T01:53:07Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v27-17740487419-activebalance-plan/index.txt", - "type": "file", - "size": 4749, - "lastModified": "2025-09-26T01:53:07Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/docs/personal-personal-v27-17740487419-cet-6/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v27-17740487419-cet-6/index.html", - "type": "file", - "size": 12490, - "lastModified": "2025-09-26T01:53:07Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v27-17740487419-cet-6/index.txt", - "type": "file", - "size": 4606, - "lastModified": "2025-09-26T01:53:07Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/docs/personal-personal-v27-17740487419-cv-ai-dev-en/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v27-17740487419-cv-ai-dev-en/index.html", - "type": "file", - "size": 12638, - "lastModified": "2025-09-26T01:53:07Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v27-17740487419-cv-ai-dev-en/index.txt", - "type": "file", - "size": 4683, - "lastModified": "2025-09-26T01:53:07Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/docs/personal-personal-v27-17740487419-cv-ai-dev-zh/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v27-17740487419-cv-ai-dev-zh/index.html", - "type": "file", - "size": 12638, - "lastModified": "2025-09-26T01:53:07Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v27-17740487419-cv-ai-dev-zh/index.txt", - "type": "file", - "size": 4683, - "lastModified": "2025-09-26T01:53:07Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/docs/personal-personal-v27-17740487419-cv-en/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v27-17740487419-cv-en/index.html", - "type": "file", - "size": 12490, - "lastModified": "2025-09-26T01:53:07Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v27-17740487419-cv-en/index.txt", - "type": "file", - "size": 4606, - "lastModified": "2025-09-26T01:53:07Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/docs/personal-personal-v27-17740487419-cv-zh/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v27-17740487419-cv-zh/index.html", - "type": "file", - "size": 12490, - "lastModified": "2025-09-26T01:53:07Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v27-17740487419-cv-zh/index.txt", - "type": "file", - "size": 4606, - "lastModified": "2025-09-26T01:53:07Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/docs/personal-personal-v27-17740487419-fullstack-language-core/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v27-17740487419-fullstack-language-core/index.html", - "type": "file", - "size": 12869, - "lastModified": "2025-09-26T01:53:07Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v27-17740487419-fullstack-language-core/index.txt", - "type": "file", - "size": 4804, - "lastModified": "2025-09-26T01:53:08Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/docs/personal-personal-v27-17740487419-readme/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v27-17740487419-readme/index.html", - "type": "file", - "size": 12512, - "lastModified": "2025-09-26T01:53:08Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v27-17740487419-readme/index.txt", - "type": "file", - "size": 4617, - "lastModified": "2025-09-26T01:53:08Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/docs/personal-personal-v27-17740487419-resume-devops-en/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v27-17740487419-resume-devops-en/index.html", - "type": "file", - "size": 12722, - "lastModified": "2025-09-26T01:53:08Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v27-17740487419-resume-devops-en/index.txt", - "type": "file", - "size": 4727, - "lastModified": "2025-09-26T01:53:08Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/docs/personal-personal-v27-17740487419-resume-devops-zh/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v27-17740487419-resume-devops-zh/index.html", - "type": "file", - "size": 12722, - "lastModified": "2025-09-26T01:53:08Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v27-17740487419-resume-devops-zh/index.txt", - "type": "file", - "size": 4727, - "lastModified": "2025-09-26T01:53:08Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/docs/personal-personal-v27-17740487419-resume-en/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v27-17740487419-resume-en/index.html", - "type": "file", - "size": 12575, - "lastModified": "2025-09-26T01:53:08Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v27-17740487419-resume-en/index.txt", - "type": "file", - "size": 4650, - "lastModified": "2025-09-26T01:53:08Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/docs/personal-personal-v27-17740487419-resume-zh/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v27-17740487419-resume-zh/index.html", - "type": "file", - "size": 12575, - "lastModified": "2025-09-26T01:53:08Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v27-17740487419-resume-zh/index.txt", - "type": "file", - "size": 4650, - "lastModified": "2025-09-26T01:53:08Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/docs/personal-personal-v28-17749789283-activebalance-plan/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v28-17749789283-activebalance-plan/index.html", - "type": "file", - "size": 12764, - "lastModified": "2025-09-26T01:53:08Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v28-17749789283-activebalance-plan/index.txt", - "type": "file", - "size": 4749, - "lastModified": "2025-09-26T01:53:08Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/docs/personal-personal-v28-17749789283-cet-6/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v28-17749789283-cet-6/index.html", - "type": "file", - "size": 12490, - "lastModified": "2025-09-26T01:53:08Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v28-17749789283-cet-6/index.txt", - "type": "file", - "size": 4606, - "lastModified": "2025-09-26T01:53:08Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/docs/personal-personal-v28-17749789283-cv-ai-dev-en/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v28-17749789283-cv-ai-dev-en/index.html", - "type": "file", - "size": 12638, - "lastModified": "2025-09-26T01:53:08Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v28-17749789283-cv-ai-dev-en/index.txt", - "type": "file", - "size": 4683, - "lastModified": "2025-09-26T01:53:08Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/docs/personal-personal-v28-17749789283-cv-ai-dev-zh/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v28-17749789283-cv-ai-dev-zh/index.html", - "type": "file", - "size": 12638, - "lastModified": "2025-09-26T01:53:08Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v28-17749789283-cv-ai-dev-zh/index.txt", - "type": "file", - "size": 4683, - "lastModified": "2025-09-26T01:53:08Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/docs/personal-personal-v28-17749789283-cv-en/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v28-17749789283-cv-en/index.html", - "type": "file", - "size": 12490, - "lastModified": "2025-09-26T01:53:09Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v28-17749789283-cv-en/index.txt", - "type": "file", - "size": 4606, - "lastModified": "2025-09-26T01:53:09Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/docs/personal-personal-v28-17749789283-cv-zh/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v28-17749789283-cv-zh/index.html", - "type": "file", - "size": 12490, - "lastModified": "2025-09-26T01:53:09Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v28-17749789283-cv-zh/index.txt", - "type": "file", - "size": 4606, - "lastModified": "2025-09-26T01:53:09Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/docs/personal-personal-v28-17749789283-fullstack-language-core/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v28-17749789283-fullstack-language-core/index.html", - "type": "file", - "size": 12869, - "lastModified": "2025-09-26T01:53:09Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v28-17749789283-fullstack-language-core/index.txt", - "type": "file", - "size": 4804, - "lastModified": "2025-09-26T01:53:09Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/docs/personal-personal-v28-17749789283-readme/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v28-17749789283-readme/index.html", - "type": "file", - "size": 12512, - "lastModified": "2025-09-26T01:53:09Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v28-17749789283-readme/index.txt", - "type": "file", - "size": 4617, - "lastModified": "2025-09-26T01:53:09Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/docs/personal-personal-v28-17749789283-resume-devops-en/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v28-17749789283-resume-devops-en/index.html", - "type": "file", - "size": 12722, - "lastModified": "2025-09-26T01:53:09Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v28-17749789283-resume-devops-en/index.txt", - "type": "file", - "size": 4727, - "lastModified": "2025-09-26T01:53:09Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/docs/personal-personal-v28-17749789283-resume-devops-zh/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v28-17749789283-resume-devops-zh/index.html", - "type": "file", - "size": 12722, - "lastModified": "2025-09-26T01:53:09Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v28-17749789283-resume-devops-zh/index.txt", - "type": "file", - "size": 4727, - "lastModified": "2025-09-26T01:53:09Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/docs/personal-personal-v28-17749789283-resume-en/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v28-17749789283-resume-en/index.html", - "type": "file", - "size": 12575, - "lastModified": "2025-09-26T01:53:09Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v28-17749789283-resume-en/index.txt", - "type": "file", - "size": 4650, - "lastModified": "2025-09-26T01:53:09Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/docs/personal-personal-v28-17749789283-resume-zh/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v28-17749789283-resume-zh/index.html", - "type": "file", - "size": 12575, - "lastModified": "2025-09-26T01:53:09Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v28-17749789283-resume-zh/index.txt", - "type": "file", - "size": 4650, - "lastModified": "2025-09-26T01:53:09Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/docs/personal-personal-v29-17749815392-activebalance-plan/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v29-17749815392-activebalance-plan/index.html", - "type": "file", - "size": 12764, - "lastModified": "2025-09-26T01:53:09Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v29-17749815392-activebalance-plan/index.txt", - "type": "file", - "size": 4749, - "lastModified": "2025-09-26T01:53:09Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/docs/personal-personal-v29-17749815392-cet-6/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v29-17749815392-cet-6/index.html", - "type": "file", - "size": 12490, - "lastModified": "2025-09-26T01:53:09Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v29-17749815392-cet-6/index.txt", - "type": "file", - "size": 4606, - "lastModified": "2025-09-26T01:53:09Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/docs/personal-personal-v29-17749815392-cv-ai-dev-en/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v29-17749815392-cv-ai-dev-en/index.html", - "type": "file", - "size": 12638, - "lastModified": "2025-09-26T01:53:09Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v29-17749815392-cv-ai-dev-en/index.txt", - "type": "file", - "size": 4683, - "lastModified": "2025-09-26T01:53:10Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/docs/personal-personal-v29-17749815392-cv-ai-dev-zh/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v29-17749815392-cv-ai-dev-zh/index.html", - "type": "file", - "size": 12638, - "lastModified": "2025-09-26T01:53:10Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v29-17749815392-cv-ai-dev-zh/index.txt", - "type": "file", - "size": 4683, - "lastModified": "2025-09-26T01:53:10Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/docs/personal-personal-v29-17749815392-cv-en/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v29-17749815392-cv-en/index.html", - "type": "file", - "size": 12490, - "lastModified": "2025-09-26T01:53:10Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v29-17749815392-cv-en/index.txt", - "type": "file", - "size": 4606, - "lastModified": "2025-09-26T01:53:10Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/docs/personal-personal-v29-17749815392-cv-zh/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v29-17749815392-cv-zh/index.html", - "type": "file", - "size": 12490, - "lastModified": "2025-09-26T01:53:10Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v29-17749815392-cv-zh/index.txt", - "type": "file", - "size": 4606, - "lastModified": "2025-09-26T01:53:10Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/docs/personal-personal-v29-17749815392-fullstack-language-core/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v29-17749815392-fullstack-language-core/index.html", - "type": "file", - "size": 12869, - "lastModified": "2025-09-26T01:53:10Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v29-17749815392-fullstack-language-core/index.txt", - "type": "file", - "size": 4804, - "lastModified": "2025-09-26T01:53:10Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/docs/personal-personal-v29-17749815392-readme/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v29-17749815392-readme/index.html", - "type": "file", - "size": 12512, - "lastModified": "2025-09-26T01:53:10Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v29-17749815392-readme/index.txt", - "type": "file", - "size": 4617, - "lastModified": "2025-09-26T01:53:10Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/docs/personal-personal-v29-17749815392-resume-devops-en/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v29-17749815392-resume-devops-en/index.html", - "type": "file", - "size": 12722, - "lastModified": "2025-09-26T01:53:10Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v29-17749815392-resume-devops-en/index.txt", - "type": "file", - "size": 4727, - "lastModified": "2025-09-26T01:53:10Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/docs/personal-personal-v29-17749815392-resume-devops-zh/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v29-17749815392-resume-devops-zh/index.html", - "type": "file", - "size": 12722, - "lastModified": "2025-09-26T01:53:10Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v29-17749815392-resume-devops-zh/index.txt", - "type": "file", - "size": 4727, - "lastModified": "2025-09-26T01:53:10Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/docs/personal-personal-v29-17749815392-resume-en/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v29-17749815392-resume-en/index.html", - "type": "file", - "size": 12575, - "lastModified": "2025-09-26T01:53:10Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v29-17749815392-resume-en/index.txt", - "type": "file", - "size": 4650, - "lastModified": "2025-09-26T01:53:10Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/docs/personal-personal-v29-17749815392-resume-zh/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v29-17749815392-resume-zh/index.html", - "type": "file", - "size": 12575, - "lastModified": "2025-09-26T01:53:10Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/docs/personal-personal-v29-17749815392-resume-zh/index.txt", - "type": "file", - "size": 4650, - "lastModified": "2025-09-26T01:53:10Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/docs/techexploration-techexploration-v25-17740048053-tech-exploration/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/docs/techexploration-techexploration-v25-17740048053-tech-exploration/index.html", - "type": "file", - "size": 13016, - "lastModified": "2025-09-26T01:53:10Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/docs/techexploration-techexploration-v25-17740048053-tech-exploration/index.txt", - "type": "file", - "size": 4881, - "lastModified": "2025-09-26T01:53:10Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/docs/techexploration-techexploration-v27-17740487419-tech-exploration/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/docs/techexploration-techexploration-v27-17740487419-tech-exploration/index.html", - "type": "file", - "size": 13016, - "lastModified": "2025-09-26T01:53:11Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/docs/techexploration-techexploration-v27-17740487419-tech-exploration/index.txt", - "type": "file", - "size": 4881, - "lastModified": "2025-09-26T01:53:11Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/docs/techexploration-techexploration-v28-17749789283-tech-exploration/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/docs/techexploration-techexploration-v28-17749789283-tech-exploration/index.html", - "type": "file", - "size": 13016, - "lastModified": "2025-09-26T01:53:11Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/docs/techexploration-techexploration-v28-17749789283-tech-exploration/index.txt", - "type": "file", - "size": 4881, - "lastModified": "2025-09-26T01:53:11Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/docs/techexploration-techexploration-v29-17749815392-tech-exploration/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/docs/techexploration-techexploration-v29-17749815392-tech-exploration/index.html", - "type": "file", - "size": 13016, - "lastModified": "2025-09-26T01:53:11Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/docs/techexploration-techexploration-v29-17749815392-tech-exploration/index.txt", - "type": "file", - "size": 4881, - "lastModified": "2025-09-26T01:53:11Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap-cn-v20-17738959811-fullstack-roadmap-cn/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap-cn-v20-17738959811-fullstack-roadmap-cn/index.html", - "type": "file", - "size": 13266, - "lastModified": "2025-09-26T01:53:11Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap-cn-v20-17738959811-fullstack-roadmap-cn/index.txt", - "type": "file", - "size": 5013, - "lastModified": "2025-09-26T01:53:11Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap-cn-v21-17739112034-fullstack-roadmap-cn/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap-cn-v21-17739112034-fullstack-roadmap-cn/index.html", - "type": "file", - "size": 13266, - "lastModified": "2025-09-26T01:53:11Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap-cn-v21-17739112034-fullstack-roadmap-cn/index.txt", - "type": "file", - "size": 5013, - "lastModified": "2025-09-26T01:53:11Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap-cn-v23-17739490366-fullstack-roadmap-cn/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap-cn-v23-17739490366-fullstack-roadmap-cn/index.html", - "type": "file", - "size": 13266, - "lastModified": "2025-09-26T01:53:11Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap-cn-v23-17739490366-fullstack-roadmap-cn/index.txt", - "type": "file", - "size": 5013, - "lastModified": "2025-09-26T01:53:11Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap-cn-v28-17749789283-fullstack-roadmap-cn/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap-cn-v28-17749789283-fullstack-roadmap-cn/index.html", - "type": "file", - "size": 13266, - "lastModified": "2025-09-26T01:53:11Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap-cn-v28-17749789283-fullstack-roadmap-cn/index.txt", - "type": "file", - "size": 5013, - "lastModified": "2025-09-26T01:53:11Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap-cn-v29-17749815392-fullstack-roadmap-cn/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap-cn-v29-17749815392-fullstack-roadmap-cn/index.html", - "type": "file", - "size": 13266, - "lastModified": "2025-09-26T01:53:11Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap-cn-v29-17749815392-fullstack-roadmap-cn/index.txt", - "type": "file", - "size": 5013, - "lastModified": "2025-09-26T01:53:11Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap-en-v21-17739112034-fullstack-roadmap-en/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap-en-v21-17739112034-fullstack-roadmap-en/index.html", - "type": "file", - "size": 13266, - "lastModified": "2025-09-26T01:53:11Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap-en-v21-17739112034-fullstack-roadmap-en/index.txt", - "type": "file", - "size": 5013, - "lastModified": "2025-09-26T01:53:11Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap-en-v22-17739462094-fullstack-roadmap-en/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap-en-v22-17739462094-fullstack-roadmap-en/index.html", - "type": "file", - "size": 13266, - "lastModified": "2025-09-26T01:53:11Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap-en-v22-17739462094-fullstack-roadmap-en/index.txt", - "type": "file", - "size": 5013, - "lastModified": "2025-09-26T01:53:11Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap-en-v23-17739490366-fullstack-roadmap-en/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap-en-v23-17739490366-fullstack-roadmap-en/index.html", - "type": "file", - "size": 13266, - "lastModified": "2025-09-26T01:53:11Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap-en-v23-17739490366-fullstack-roadmap-en/index.txt", - "type": "file", - "size": 5013, - "lastModified": "2025-09-26T01:53:12Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap-en-v26-17740473328-fullstack-roadmap-en/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap-en-v26-17740473328-fullstack-roadmap-en/index.html", - "type": "file", - "size": 13266, - "lastModified": "2025-09-26T01:53:12Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap-en-v26-17740473328-fullstack-roadmap-en/index.txt", - "type": "file", - "size": 5013, - "lastModified": "2025-09-26T01:53:12Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap-en-v27-17740487419-fullstack-roadmap-en/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap-en-v27-17740487419-fullstack-roadmap-en/index.html", - "type": "file", - "size": 13266, - "lastModified": "2025-09-26T01:53:12Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap-en-v27-17740487419-fullstack-roadmap-en/index.txt", - "type": "file", - "size": 5013, - "lastModified": "2025-09-26T01:53:12Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap-en-v28-17749789283-fullstack-roadmap-en/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap-en-v28-17749789283-fullstack-roadmap-en/index.html", - "type": "file", - "size": 13266, - "lastModified": "2025-09-26T01:53:12Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap-en-v28-17749789283-fullstack-roadmap-en/index.txt", - "type": "file", - "size": 5013, - "lastModified": "2025-09-26T01:53:12Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap-en-v29-17749815392-fullstack-roadmap-en/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap-en-v29-17749815392-fullstack-roadmap-en/index.html", - "type": "file", - "size": 13266, - "lastModified": "2025-09-26T01:53:12Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/docs/the-indiedeveloper-fullstack-roadmap-en-v29-17749815392-fullstack-roadmap-en/index.txt", - "type": "file", - "size": 5013, - "lastModified": "2025-09-26T01:53:12Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/download/", - "entries": [ - { - "name": "deb/", - "href": "/dashboard/download/dashboard/download/dashboard/download/deb/", - "type": "dir", - "lastModified": "2025-09-26T01:53:12Z" - }, - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/download/index.html", - "type": "file", - "size": 17770, - "lastModified": "2025-09-26T01:53:12Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/download/index.txt", - "type": "file", - "size": 5441, - "lastModified": "2025-09-26T01:53:12Z" - }, - { - "name": "offline-package/", - "href": "/dashboard/download/dashboard/download/dashboard/download/offline-package/", - "type": "dir", - "lastModified": "2025-09-26T01:53:13Z" - }, - { - "name": "otel/", - "href": "/dashboard/download/dashboard/download/dashboard/download/otel/", - "type": "dir", - "lastModified": "2025-09-26T01:53:13Z" - }, - { - "name": "rpm/", - "href": "/dashboard/download/dashboard/download/dashboard/download/rpm/", - "type": "dir", - "lastModified": "2025-09-26T01:53:13Z" - }, - { - "name": "sealos/", - "href": "/dashboard/download/dashboard/download/dashboard/download/sealos/", - "type": "dir", - "lastModified": "2025-09-26T01:53:14Z" - }, - { - "name": "xstream/", - "href": "/dashboard/download/dashboard/download/dashboard/download/xstream/", - "type": "dir", - "lastModified": "2025-09-26T01:53:16Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/download/deb/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/download/deb/index.html", - "type": "file", - "size": 11811, - "lastModified": "2025-09-26T01:53:12Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/download/deb/index.txt", - "type": "file", - "size": 4250, - "lastModified": "2025-09-26T01:53:12Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/download/offline-package/", - "entries": [ - { - "name": "apisix-gateway/", - "href": "/dashboard/download/dashboard/download/dashboard/download/offline-package/apisix-gateway/", - "type": "dir", - "lastModified": "2025-09-26T01:53:12Z" - }, - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/download/offline-package/index.html", - "type": "file", - "size": 17648, - "lastModified": "2025-09-26T01:53:12Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/download/offline-package/index.txt", - "type": "file", - "size": 5616, - "lastModified": "2025-09-26T01:53:12Z" - }, - { - "name": "k3s/", - "href": "/dashboard/download/dashboard/download/dashboard/download/offline-package/k3s/", - "type": "dir", - "lastModified": "2025-09-26T01:53:12Z" - }, - { - "name": "kong-gateway/", - "href": "/dashboard/download/dashboard/download/dashboard/download/offline-package/kong-gateway/", - "type": "dir", - "lastModified": "2025-09-26T01:53:12Z" - }, - { - "name": "nginx-ingress/", - "href": "/dashboard/download/dashboard/download/dashboard/download/offline-package/nginx-ingress/", - "type": "dir", - "lastModified": "2025-09-26T01:53:13Z" - }, - { - "name": "sealos/", - "href": "/dashboard/download/dashboard/download/dashboard/download/offline-package/sealos/", - "type": "dir", - "lastModified": "2025-09-26T01:53:13Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/download/offline-package/apisix-gateway/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/download/offline-package/apisix-gateway/index.html", - "type": "file", - "size": 12517, - "lastModified": "2025-09-26T01:53:12Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/download/offline-package/apisix-gateway/index.txt", - "type": "file", - "size": 4537, - "lastModified": "2025-09-26T01:53:12Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/download/offline-package/k3s/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/download/offline-package/k3s/index.html", - "type": "file", - "size": 12286, - "lastModified": "2025-09-26T01:53:12Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/download/offline-package/k3s/index.txt", - "type": "file", - "size": 4416, - "lastModified": "2025-09-26T01:53:12Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/download/offline-package/kong-gateway/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/download/offline-package/kong-gateway/index.html", - "type": "file", - "size": 12474, - "lastModified": "2025-09-26T01:53:12Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/download/offline-package/kong-gateway/index.txt", - "type": "file", - "size": 4515, - "lastModified": "2025-09-26T01:53:12Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/download/offline-package/nginx-ingress/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/download/offline-package/nginx-ingress/index.html", - "type": "file", - "size": 12496, - "lastModified": "2025-09-26T01:53:13Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/download/offline-package/nginx-ingress/index.txt", - "type": "file", - "size": 4526, - "lastModified": "2025-09-26T01:53:13Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/download/offline-package/sealos/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/download/offline-package/sealos/index.html", - "type": "file", - "size": 12349, - "lastModified": "2025-09-26T01:53:13Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/download/offline-package/sealos/index.txt", - "type": "file", - "size": 4449, - "lastModified": "2025-09-26T01:53:13Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/download/otel/", - "entries": [ - { - "name": "OpenTelemetry/", - "href": "/dashboard/download/dashboard/download/dashboard/download/otel/OpenTelemetry/", - "type": "dir", - "lastModified": "2025-09-26T01:53:13Z" - }, - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/download/otel/index.html", - "type": "file", - "size": 13471, - "lastModified": "2025-09-26T01:53:13Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/download/otel/index.txt", - "type": "file", - "size": 4495, - "lastModified": "2025-09-26T01:53:13Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/download/otel/OpenTelemetry/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/download/otel/OpenTelemetry/index.html", - "type": "file", - "size": 13942, - "lastModified": "2025-09-26T01:53:13Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/download/otel/OpenTelemetry/index.txt", - "type": "file", - "size": 4663, - "lastModified": "2025-09-26T01:53:13Z" - }, - { - "name": "v0.133.0/", - "href": "/dashboard/download/dashboard/download/dashboard/download/otel/OpenTelemetry/v0.133.0/", - "type": "dir", - "lastModified": "2025-09-26T01:53:13Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/download/otel/OpenTelemetry/v0.133.0/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/download/otel/OpenTelemetry/v0.133.0/index.html", - "type": "file", - "size": 12622, - "lastModified": "2025-09-26T01:53:13Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/download/otel/OpenTelemetry/v0.133.0/index.txt", - "type": "file", - "size": 4507, - "lastModified": "2025-09-26T01:53:13Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/download/rpm/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/download/rpm/index.html", - "type": "file", - "size": 11811, - "lastModified": "2025-09-26T01:53:13Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/download/rpm/index.txt", - "type": "file", - "size": 4250, - "lastModified": "2025-09-26T01:53:13Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/download/sealos/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/download/sealos/index.html", - "type": "file", - "size": 15509, - "lastModified": "2025-09-26T01:53:13Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/download/sealos/index.txt", - "type": "file", - "size": 5026, - "lastModified": "2025-09-26T01:53:13Z" - }, - { - "name": "offline-sealos-5/", - "href": "/dashboard/download/dashboard/download/dashboard/download/sealos/offline-sealos-5/", - "type": "dir", - "lastModified": "2025-09-26T01:53:13Z" - }, - { - "name": "offline-sealos-6/", - "href": "/dashboard/download/dashboard/download/dashboard/download/sealos/offline-sealos-6/", - "type": "dir", - "lastModified": "2025-09-26T01:53:14Z" - }, - { - "name": "offline-sealos-8/", - "href": "/dashboard/download/dashboard/download/dashboard/download/sealos/offline-sealos-8/", - "type": "dir", - "lastModified": "2025-09-26T01:53:14Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/download/sealos/offline-sealos-5/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/download/sealos/offline-sealos-5/index.html", - "type": "file", - "size": 12388, - "lastModified": "2025-09-26T01:53:13Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/download/sealos/offline-sealos-5/index.txt", - "type": "file", - "size": 4469, - "lastModified": "2025-09-26T01:53:13Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/download/sealos/offline-sealos-6/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/download/sealos/offline-sealos-6/index.html", - "type": "file", - "size": 12388, - "lastModified": "2025-09-26T01:53:13Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/download/sealos/offline-sealos-6/index.txt", - "type": "file", - "size": 4469, - "lastModified": "2025-09-26T01:53:14Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/download/sealos/offline-sealos-8/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/download/sealos/offline-sealos-8/index.html", - "type": "file", - "size": 12388, - "lastModified": "2025-09-26T01:53:14Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/download/sealos/offline-sealos-8/index.txt", - "type": "file", - "size": 4469, - "lastModified": "2025-09-26T01:53:14Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/download/xstream/", - "entries": [ - { - "name": "android/", - "href": "/dashboard/download/dashboard/download/dashboard/download/xstream/android/", - "type": "dir", - "lastModified": "2025-09-26T01:53:14Z" - }, - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/download/xstream/index.html", - "type": "file", - "size": 17259, - "lastModified": "2025-09-26T01:53:14Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/download/xstream/index.txt", - "type": "file", - "size": 5386, - "lastModified": "2025-09-26T01:53:14Z" - }, - { - "name": "ios/", - "href": "/dashboard/download/dashboard/download/dashboard/download/xstream/ios/", - "type": "dir", - "lastModified": "2025-09-26T01:53:14Z" - }, - { - "name": "linux/", - "href": "/dashboard/download/dashboard/download/dashboard/download/xstream/linux/", - "type": "dir", - "lastModified": "2025-09-26T01:53:15Z" - }, - { - "name": "macos/", - "href": "/dashboard/download/dashboard/download/dashboard/download/xstream/macos/", - "type": "dir", - "lastModified": "2025-09-26T01:53:15Z" - }, - { - "name": "windows/", - "href": "/dashboard/download/dashboard/download/dashboard/download/xstream/windows/", - "type": "dir", - "lastModified": "2025-09-26T01:53:16Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/download/xstream/android/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/download/xstream/android/index.html", - "type": "file", - "size": 13855, - "lastModified": "2025-09-26T01:53:14Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/download/xstream/android/index.txt", - "type": "file", - "size": 4615, - "lastModified": "2025-09-26T01:53:14Z" - }, - { - "name": "latest/", - "href": "/dashboard/download/dashboard/download/dashboard/download/xstream/android/latest/", - "type": "dir", - "lastModified": "2025-09-26T01:53:14Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/download/xstream/android/latest/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/download/xstream/android/latest/index.html", - "type": "file", - "size": 12528, - "lastModified": "2025-09-26T01:53:14Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/download/xstream/android/latest/index.txt", - "type": "file", - "size": 4455, - "lastModified": "2025-09-26T01:53:14Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/download/xstream/ios/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/download/xstream/ios/index.html", - "type": "file", - "size": 13758, - "lastModified": "2025-09-26T01:53:14Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/download/xstream/ios/index.txt", - "type": "file", - "size": 4563, - "lastModified": "2025-09-26T01:53:14Z" - }, - { - "name": "latest/", - "href": "/dashboard/download/dashboard/download/dashboard/download/xstream/ios/latest/", - "type": "dir", - "lastModified": "2025-09-26T01:53:14Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/download/xstream/ios/latest/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/download/xstream/ios/latest/index.html", - "type": "file", - "size": 12452, - "lastModified": "2025-09-26T01:53:14Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/download/xstream/ios/latest/index.txt", - "type": "file", - "size": 4415, - "lastModified": "2025-09-26T01:53:14Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/download/xstream/linux/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/download/xstream/linux/index.html", - "type": "file", - "size": 14767, - "lastModified": "2025-09-26T01:53:14Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/download/xstream/linux/index.txt", - "type": "file", - "size": 4821, - "lastModified": "2025-09-26T01:53:14Z" - }, - { - "name": "latest/", - "href": "/dashboard/download/dashboard/download/dashboard/download/xstream/linux/latest/", - "type": "dir", - "lastModified": "2025-09-26T01:53:14Z" - }, - { - "name": "stable/", - "href": "/dashboard/download/dashboard/download/dashboard/download/xstream/linux/stable/", - "type": "dir", - "lastModified": "2025-09-26T01:53:15Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/download/xstream/linux/latest/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/download/xstream/linux/latest/index.html", - "type": "file", - "size": 12489, - "lastModified": "2025-09-26T01:53:14Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/download/xstream/linux/latest/index.txt", - "type": "file", - "size": 4435, - "lastModified": "2025-09-26T01:53:14Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/download/xstream/linux/stable/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/download/xstream/linux/stable/index.html", - "type": "file", - "size": 12489, - "lastModified": "2025-09-26T01:53:14Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/download/xstream/linux/stable/index.txt", - "type": "file", - "size": 4435, - "lastModified": "2025-09-26T01:53:15Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/download/xstream/macos/", - "entries": [ - { - "name": "docs/", - "href": "/dashboard/download/dashboard/download/dashboard/download/xstream/macos/docs/", - "type": "dir", - "lastModified": "2025-09-26T01:53:15Z" - }, - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/download/xstream/macos/index.html", - "type": "file", - "size": 15714, - "lastModified": "2025-09-26T01:53:15Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/download/xstream/macos/index.txt", - "type": "file", - "size": 5047, - "lastModified": "2025-09-26T01:53:15Z" - }, - { - "name": "latest/", - "href": "/dashboard/download/dashboard/download/dashboard/download/xstream/macos/latest/", - "type": "dir", - "lastModified": "2025-09-26T01:53:15Z" - }, - { - "name": "stable/", - "href": "/dashboard/download/dashboard/download/dashboard/download/xstream/macos/stable/", - "type": "dir", - "lastModified": "2025-09-26T01:53:15Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/download/xstream/macos/docs/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/download/xstream/macos/docs/index.html", - "type": "file", - "size": 12448, - "lastModified": "2025-09-26T01:53:15Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/download/xstream/macos/docs/index.txt", - "type": "file", - "size": 4413, - "lastModified": "2025-09-26T01:53:15Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/download/xstream/macos/latest/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/download/xstream/macos/latest/index.html", - "type": "file", - "size": 12489, - "lastModified": "2025-09-26T01:53:15Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/download/xstream/macos/latest/index.txt", - "type": "file", - "size": 4435, - "lastModified": "2025-09-26T01:53:15Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/download/xstream/macos/stable/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/download/xstream/macos/stable/index.html", - "type": "file", - "size": 12489, - "lastModified": "2025-09-26T01:53:15Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/download/xstream/macos/stable/index.txt", - "type": "file", - "size": 4435, - "lastModified": "2025-09-26T01:53:15Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/download/xstream/windows/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/download/xstream/windows/index.html", - "type": "file", - "size": 16741, - "lastModified": "2025-09-26T01:53:15Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/download/xstream/windows/index.txt", - "type": "file", - "size": 5318, - "lastModified": "2025-09-26T01:53:15Z" - }, - { - "name": "latest/", - "href": "/dashboard/download/dashboard/download/dashboard/download/xstream/windows/latest/", - "type": "dir", - "lastModified": "2025-09-26T01:53:15Z" - }, - { - "name": "stable/", - "href": "/dashboard/download/dashboard/download/dashboard/download/xstream/windows/stable/", - "type": "dir", - "lastModified": "2025-09-26T01:53:15Z" - }, - { - "name": "win10/", - "href": "/dashboard/download/dashboard/download/dashboard/download/xstream/windows/win10/", - "type": "dir", - "lastModified": "2025-09-26T01:53:15Z" - }, - { - "name": "win11/", - "href": "/dashboard/download/dashboard/download/dashboard/download/xstream/windows/win11/", - "type": "dir", - "lastModified": "2025-09-26T01:53:16Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/download/xstream/windows/latest/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/download/xstream/windows/latest/index.html", - "type": "file", - "size": 12528, - "lastModified": "2025-09-26T01:53:15Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/download/xstream/windows/latest/index.txt", - "type": "file", - "size": 4455, - "lastModified": "2025-09-26T01:53:15Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/download/xstream/windows/stable/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/download/xstream/windows/stable/index.html", - "type": "file", - "size": 12528, - "lastModified": "2025-09-26T01:53:15Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/download/xstream/windows/stable/index.txt", - "type": "file", - "size": 4455, - "lastModified": "2025-09-26T01:53:15Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/download/xstream/windows/win10/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/download/xstream/windows/win10/index.html", - "type": "file", - "size": 12507, - "lastModified": "2025-09-26T01:53:15Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/download/xstream/windows/win10/index.txt", - "type": "file", - "size": 4444, - "lastModified": "2025-09-26T01:53:15Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/download/xstream/windows/win11/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/download/xstream/windows/win11/index.html", - "type": "file", - "size": 12507, - "lastModified": "2025-09-26T01:53:15Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/download/xstream/windows/win11/index.txt", - "type": "file", - "size": 4444, - "lastModified": "2025-09-26T01:53:16Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/icons/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/icons/index.html", - "type": "file", - "size": 11518, - "lastModified": "2025-09-26T01:53:16Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/icons/index.txt", - "type": "file", - "size": 4175, - "lastModified": "2025-09-26T01:53:16Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/insight/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/insight/index.html", - "type": "file", - "size": 11561, - "lastModified": "2025-09-26T01:53:16Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/insight/index.txt", - "type": "file", - "size": 4198, - "lastModified": "2025-09-26T01:53:16Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/login/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/login/index.html", - "type": "file", - "size": 11520, - "lastModified": "2025-09-26T01:53:16Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/login/index.txt", - "type": "file", - "size": 4176, - "lastModified": "2025-09-26T01:53:16Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/panel/", - "entries": [ - { - "name": "account/", - "href": "/dashboard/download/dashboard/download/dashboard/panel/account/", - "type": "dir", - "lastModified": "2025-09-26T01:53:16Z" - }, - { - "name": "agent/", - "href": "/dashboard/download/dashboard/download/dashboard/panel/agent/", - "type": "dir", - "lastModified": "2025-09-26T01:53:16Z" - }, - { - "name": "api/", - "href": "/dashboard/download/dashboard/download/dashboard/panel/api/", - "type": "dir", - "lastModified": "2025-09-26T01:53:16Z" - }, - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/panel/index.html", - "type": "file", - "size": 17629, - "lastModified": "2025-09-26T01:53:16Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/panel/index.txt", - "type": "file", - "size": 5358, - "lastModified": "2025-09-26T01:53:16Z" - }, - { - "name": "ldp/", - "href": "/dashboard/download/dashboard/download/dashboard/panel/ldp/", - "type": "dir", - "lastModified": "2025-09-26T01:53:16Z" - }, - { - "name": "subscription/", - "href": "/dashboard/download/dashboard/download/dashboard/panel/subscription/", - "type": "dir", - "lastModified": "2025-09-26T01:53:16Z" - }, - { - "name": "xray/", - "href": "/dashboard/download/dashboard/download/dashboard/panel/xray/", - "type": "dir", - "lastModified": "2025-09-26T01:53:17Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/panel/account/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/panel/account/index.html", - "type": "file", - "size": 11837, - "lastModified": "2025-09-26T01:53:16Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/panel/account/index.txt", - "type": "file", - "size": 4264, - "lastModified": "2025-09-26T01:53:16Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/panel/agent/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/panel/agent/index.html", - "type": "file", - "size": 11796, - "lastModified": "2025-09-26T01:53:16Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/panel/agent/index.txt", - "type": "file", - "size": 4242, - "lastModified": "2025-09-26T01:53:16Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/panel/api/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/panel/api/index.html", - "type": "file", - "size": 11754, - "lastModified": "2025-09-26T01:53:16Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/panel/api/index.txt", - "type": "file", - "size": 4220, - "lastModified": "2025-09-26T01:53:16Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/panel/ldp/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/panel/ldp/index.html", - "type": "file", - "size": 11754, - "lastModified": "2025-09-26T01:53:16Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/panel/ldp/index.txt", - "type": "file", - "size": 4220, - "lastModified": "2025-09-26T01:53:16Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/panel/subscription/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/panel/subscription/index.html", - "type": "file", - "size": 11940, - "lastModified": "2025-09-26T01:53:16Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/panel/subscription/index.txt", - "type": "file", - "size": 4319, - "lastModified": "2025-09-26T01:53:16Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/panel/xray/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/panel/xray/index.html", - "type": "file", - "size": 11775, - "lastModified": "2025-09-26T01:53:16Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/panel/xray/index.txt", - "type": "file", - "size": 4231, - "lastModified": "2025-09-26T01:53:17Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/dashboard/register/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/dashboard/register/index.html", - "type": "file", - "size": 11583, - "lastModified": "2025-09-26T01:53:17Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/dashboard/register/index.txt", - "type": "file", - "size": 4209, - "lastModified": "2025-09-26T01:53:17Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/deb/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/deb/index.html", - "type": "file", - "size": 11134, - "lastModified": "2025-09-26T01:53:17Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/deb/index.txt", - "type": "file", - "size": 4047, - "lastModified": "2025-09-26T01:53:17Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/docs/", - "entries": [ - { - "name": "Keycloak/", - "href": "/dashboard/download/dashboard/download/docs/Keycloak/", - "type": "dir", - "lastModified": "2025-09-26T01:53:18Z" - }, - { - "name": "Keycloak-v30-17935243600/", - "href": "/dashboard/download/dashboard/download/docs/Keycloak-v30-17935243600/", - "type": "dir", - "lastModified": "2025-09-26T01:53:17Z" - }, - { - "name": "LandingZone/", - "href": "/dashboard/download/dashboard/download/docs/LandingZone/", - "type": "dir", - "lastModified": "2025-09-26T01:53:18Z" - }, - { - "name": "LandingZone-v30-17935243600/", - "href": "/dashboard/download/dashboard/download/docs/LandingZone-v30-17935243600/", - "type": "dir", - "lastModified": "2025-09-26T01:53:18Z" - }, - { - "name": "Linux-K8S-OPS/", - "href": "/dashboard/download/dashboard/download/docs/Linux-K8S-OPS/", - "type": "dir", - "lastModified": "2025-09-26T01:53:19Z" - }, - { - "name": "Observability/", - "href": "/dashboard/download/dashboard/download/docs/Observability/", - "type": "dir", - "lastModified": "2025-09-26T01:53:20Z" - }, - { - "name": "Personal/", - "href": "/dashboard/download/dashboard/download/docs/Personal/", - "type": "dir", - "lastModified": "2025-09-26T01:53:21Z" - }, - { - "name": "Personal-v30-17935243600/", - "href": "/dashboard/download/dashboard/download/docs/Personal-v30-17935243600/", - "type": "dir", - "lastModified": "2025-09-26T01:53:20Z" - }, - { - "name": "TechExploration/", - "href": "/dashboard/download/dashboard/download/docs/TechExploration/", - "type": "dir", - "lastModified": "2025-09-26T01:53:22Z" - }, - { - "name": "TechExploration-v30-17935243600/", - "href": "/dashboard/download/dashboard/download/docs/TechExploration-v30-17935243600/", - "type": "dir", - "lastModified": "2025-09-26T01:53:21Z" - }, - { - "name": "The-IndieDeveloper-Fullstack-Roadmap/", - "href": "/dashboard/download/dashboard/download/docs/The-IndieDeveloper-Fullstack-Roadmap/", - "type": "dir", - "lastModified": "2025-09-26T01:53:24Z" - }, - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/docs/index.html", - "type": "file", - "size": 23092, - "lastModified": "2025-09-26T01:53:17Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/docs/index.txt", - "type": "file", - "size": 6630, - "lastModified": "2025-09-26T01:53:17Z" - }, - { - "name": "interview-qa/", - "href": "/dashboard/download/dashboard/download/docs/interview-qa/", - "type": "dir", - "lastModified": "2025-09-26T01:53:25Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/docs/Keycloak/", - "entries": [ - { - "name": "EN-v31-17976868329/", - "href": "/dashboard/download/dashboard/download/docs/Keycloak/EN-v31-17976868329/", - "type": "dir", - "lastModified": "2025-09-26T01:53:17Z" - }, - { - "name": "EN-v32-17977204714/", - "href": "/dashboard/download/dashboard/download/docs/Keycloak/EN-v32-17977204714/", - "type": "dir", - "lastModified": "2025-09-26T01:53:17Z" - }, - { - "name": "Keycloak-v24-17740025432/", - "href": "/dashboard/download/dashboard/download/docs/Keycloak/Keycloak-v24-17740025432/", - "type": "dir", - "lastModified": "2025-09-26T01:53:17Z" - }, - { - "name": "Keycloak-v26-17740473328/", - "href": "/dashboard/download/dashboard/download/docs/Keycloak/Keycloak-v26-17740473328/", - "type": "dir", - "lastModified": "2025-09-26T01:53:17Z" - }, - { - "name": "Keycloak-v28-17749789283/", - "href": "/dashboard/download/dashboard/download/docs/Keycloak/Keycloak-v28-17749789283/", - "type": "dir", - "lastModified": "2025-09-26T01:53:18Z" - }, - { - "name": "Keycloak-v29-17749815392/", - "href": "/dashboard/download/dashboard/download/docs/Keycloak/Keycloak-v29-17749815392/", - "type": "dir", - "lastModified": "2025-09-26T01:53:18Z" - }, - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/docs/Keycloak/index.html", - "type": "file", - "size": 18051, - "lastModified": "2025-09-26T01:53:17Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/docs/Keycloak/index.txt", - "type": "file", - "size": 5611, - "lastModified": "2025-09-26T01:53:17Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/docs/Keycloak/EN-v31-17976868329/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/docs/Keycloak/EN-v31-17976868329/index.html", - "type": "file", - "size": 12023, - "lastModified": "2025-09-26T01:53:17Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/docs/Keycloak/EN-v31-17976868329/index.txt", - "type": "file", - "size": 4365, - "lastModified": "2025-09-26T01:53:17Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/docs/Keycloak/EN-v32-17977204714/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/docs/Keycloak/EN-v32-17977204714/index.html", - "type": "file", - "size": 12023, - "lastModified": "2025-09-26T01:53:17Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/docs/Keycloak/EN-v32-17977204714/index.txt", - "type": "file", - "size": 4365, - "lastModified": "2025-09-26T01:53:17Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/docs/Keycloak/Keycloak-v24-17740025432/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/docs/Keycloak/Keycloak-v24-17740025432/index.html", - "type": "file", - "size": 12151, - "lastModified": "2025-09-26T01:53:17Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/docs/Keycloak/Keycloak-v24-17740025432/index.txt", - "type": "file", - "size": 4431, - "lastModified": "2025-09-26T01:53:17Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/docs/Keycloak/Keycloak-v26-17740473328/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/docs/Keycloak/Keycloak-v26-17740473328/index.html", - "type": "file", - "size": 12151, - "lastModified": "2025-09-26T01:53:17Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/docs/Keycloak/Keycloak-v26-17740473328/index.txt", - "type": "file", - "size": 4431, - "lastModified": "2025-09-26T01:53:17Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/docs/Keycloak/Keycloak-v28-17749789283/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/docs/Keycloak/Keycloak-v28-17749789283/index.html", - "type": "file", - "size": 12151, - "lastModified": "2025-09-26T01:53:17Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/docs/Keycloak/Keycloak-v28-17749789283/index.txt", - "type": "file", - "size": 4431, - "lastModified": "2025-09-26T01:53:18Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/docs/Keycloak/Keycloak-v29-17749815392/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/docs/Keycloak/Keycloak-v29-17749815392/index.html", - "type": "file", - "size": 12151, - "lastModified": "2025-09-26T01:53:18Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/docs/Keycloak/Keycloak-v29-17749815392/index.txt", - "type": "file", - "size": 4431, - "lastModified": "2025-09-26T01:53:18Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/docs/Keycloak-v30-17935243600/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/docs/Keycloak-v30-17935243600/index.html", - "type": "file", - "size": 11824, - "lastModified": "2025-09-26T01:53:17Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/docs/Keycloak-v30-17935243600/index.txt", - "type": "file", - "size": 4335, - "lastModified": "2025-09-26T01:53:17Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/docs/LandingZone/", - "entries": [ - { - "name": "EN-v31-17976868329/", - "href": "/dashboard/download/dashboard/download/docs/LandingZone/EN-v31-17976868329/", - "type": "dir", - "lastModified": "2025-09-26T01:53:18Z" - }, - { - "name": "EN-v32-17977204714/", - "href": "/dashboard/download/dashboard/download/docs/LandingZone/EN-v32-17977204714/", - "type": "dir", - "lastModified": "2025-09-26T01:53:18Z" - }, - { - "name": "LandingZone-v27-17740487419/", - "href": "/dashboard/download/dashboard/download/docs/LandingZone/LandingZone-v27-17740487419/", - "type": "dir", - "lastModified": "2025-09-26T01:53:18Z" - }, - { - "name": "LandingZone-v28-17749789283/", - "href": "/dashboard/download/dashboard/download/docs/LandingZone/LandingZone-v28-17749789283/", - "type": "dir", - "lastModified": "2025-09-26T01:53:18Z" - }, - { - "name": "LandingZone-v29-17749815392/", - "href": "/dashboard/download/dashboard/download/docs/LandingZone/LandingZone-v29-17749815392/", - "type": "dir", - "lastModified": "2025-09-26T01:53:18Z" - }, - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/docs/LandingZone/index.html", - "type": "file", - "size": 17213, - "lastModified": "2025-09-26T01:53:18Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/docs/LandingZone/index.txt", - "type": "file", - "size": 5453, - "lastModified": "2025-09-26T01:53:18Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/docs/LandingZone/EN-v31-17976868329/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/docs/LandingZone/EN-v31-17976868329/index.html", - "type": "file", - "size": 12083, - "lastModified": "2025-09-26T01:53:18Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/docs/LandingZone/EN-v31-17976868329/index.txt", - "type": "file", - "size": 4395, - "lastModified": "2025-09-26T01:53:18Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/docs/LandingZone/EN-v32-17977204714/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/docs/LandingZone/EN-v32-17977204714/index.html", - "type": "file", - "size": 12083, - "lastModified": "2025-09-26T01:53:18Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/docs/LandingZone/EN-v32-17977204714/index.txt", - "type": "file", - "size": 4395, - "lastModified": "2025-09-26T01:53:18Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/docs/LandingZone/LandingZone-v27-17740487419/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/docs/LandingZone/LandingZone-v27-17740487419/index.html", - "type": "file", - "size": 12271, - "lastModified": "2025-09-26T01:53:18Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/docs/LandingZone/LandingZone-v27-17740487419/index.txt", - "type": "file", - "size": 4494, - "lastModified": "2025-09-26T01:53:18Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/docs/LandingZone/LandingZone-v28-17749789283/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/docs/LandingZone/LandingZone-v28-17749789283/index.html", - "type": "file", - "size": 12272, - "lastModified": "2025-09-26T01:53:18Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/docs/LandingZone/LandingZone-v28-17749789283/index.txt", - "type": "file", - "size": 4494, - "lastModified": "2025-09-26T01:53:18Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/docs/LandingZone/LandingZone-v29-17749815392/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/docs/LandingZone/LandingZone-v29-17749815392/index.html", - "type": "file", - "size": 12272, - "lastModified": "2025-09-26T01:53:18Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/docs/LandingZone/LandingZone-v29-17749815392/index.txt", - "type": "file", - "size": 4494, - "lastModified": "2025-09-26T01:53:18Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/docs/LandingZone-v30-17935243600/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/docs/LandingZone-v30-17935243600/index.html", - "type": "file", - "size": 11884, - "lastModified": "2025-09-26T01:53:18Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/docs/LandingZone-v30-17935243600/index.txt", - "type": "file", - "size": 4368, - "lastModified": "2025-09-26T01:53:18Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/docs/Linux-K8S-OPS/", - "entries": [ - { - "name": "CN-v25-17740048053/", - "href": "/dashboard/download/dashboard/download/docs/Linux-K8S-OPS/CN-v25-17740048053/", - "type": "dir", - "lastModified": "2025-09-26T01:53:19Z" - }, - { - "name": "CN-v27-17740487419/", - "href": "/dashboard/download/dashboard/download/docs/Linux-K8S-OPS/CN-v27-17740487419/", - "type": "dir", - "lastModified": "2025-09-26T01:53:19Z" - }, - { - "name": "CN-v28-17749789283/", - "href": "/dashboard/download/dashboard/download/docs/Linux-K8S-OPS/CN-v28-17749789283/", - "type": "dir", - "lastModified": "2025-09-26T01:53:19Z" - }, - { - "name": "CN-v29-17749815392/", - "href": "/dashboard/download/dashboard/download/docs/Linux-K8S-OPS/CN-v29-17749815392/", - "type": "dir", - "lastModified": "2025-09-26T01:53:19Z" - }, - { - "name": "CN-v30-17935243600/", - "href": "/dashboard/download/dashboard/download/docs/Linux-K8S-OPS/CN-v30-17935243600/", - "type": "dir", - "lastModified": "2025-09-26T01:53:19Z" - }, - { - "name": "CN-v31-17976868329/", - "href": "/dashboard/download/dashboard/download/docs/Linux-K8S-OPS/CN-v31-17976868329/", - "type": "dir", - "lastModified": "2025-09-26T01:53:19Z" - }, - { - "name": "CN-v32-17977204714/", - "href": "/dashboard/download/dashboard/download/docs/Linux-K8S-OPS/CN-v32-17977204714/", - "type": "dir", - "lastModified": "2025-09-26T01:53:19Z" - }, - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/docs/Linux-K8S-OPS/index.html", - "type": "file", - "size": 19102, - "lastModified": "2025-09-26T01:53:18Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/docs/Linux-K8S-OPS/index.txt", - "type": "file", - "size": 5894, - "lastModified": "2025-09-26T01:53:18Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/docs/Linux-K8S-OPS/CN-v25-17740048053/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/docs/Linux-K8S-OPS/CN-v25-17740048053/index.html", - "type": "file", - "size": 12121, - "lastModified": "2025-09-26T01:53:19Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/docs/Linux-K8S-OPS/CN-v25-17740048053/index.txt", - "type": "file", - "size": 4415, - "lastModified": "2025-09-26T01:53:19Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/docs/Linux-K8S-OPS/CN-v27-17740487419/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/docs/Linux-K8S-OPS/CN-v27-17740487419/index.html", - "type": "file", - "size": 12121, - "lastModified": "2025-09-26T01:53:19Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/docs/Linux-K8S-OPS/CN-v27-17740487419/index.txt", - "type": "file", - "size": 4415, - "lastModified": "2025-09-26T01:53:19Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/docs/Linux-K8S-OPS/CN-v28-17749789283/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/docs/Linux-K8S-OPS/CN-v28-17749789283/index.html", - "type": "file", - "size": 12121, - "lastModified": "2025-09-26T01:53:19Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/docs/Linux-K8S-OPS/CN-v28-17749789283/index.txt", - "type": "file", - "size": 4415, - "lastModified": "2025-09-26T01:53:19Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/docs/Linux-K8S-OPS/CN-v29-17749815392/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/docs/Linux-K8S-OPS/CN-v29-17749815392/index.html", - "type": "file", - "size": 12121, - "lastModified": "2025-09-26T01:53:19Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/docs/Linux-K8S-OPS/CN-v29-17749815392/index.txt", - "type": "file", - "size": 4415, - "lastModified": "2025-09-26T01:53:19Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/docs/Linux-K8S-OPS/CN-v30-17935243600/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/docs/Linux-K8S-OPS/CN-v30-17935243600/index.html", - "type": "file", - "size": 12121, - "lastModified": "2025-09-26T01:53:19Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/docs/Linux-K8S-OPS/CN-v30-17935243600/index.txt", - "type": "file", - "size": 4415, - "lastModified": "2025-09-26T01:53:19Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/docs/Linux-K8S-OPS/CN-v31-17976868329/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/docs/Linux-K8S-OPS/CN-v31-17976868329/index.html", - "type": "file", - "size": 12121, - "lastModified": "2025-09-26T01:53:19Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/docs/Linux-K8S-OPS/CN-v31-17976868329/index.txt", - "type": "file", - "size": 4415, - "lastModified": "2025-09-26T01:53:19Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/docs/Linux-K8S-OPS/CN-v32-17977204714/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/docs/Linux-K8S-OPS/CN-v32-17977204714/index.html", - "type": "file", - "size": 12121, - "lastModified": "2025-09-26T01:53:19Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/docs/Linux-K8S-OPS/CN-v32-17977204714/index.txt", - "type": "file", - "size": 4415, - "lastModified": "2025-09-26T01:53:19Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/docs/Observability/", - "entries": [ - { - "name": "CN-v20-17738959811/", - "href": "/dashboard/download/dashboard/download/docs/Observability/CN-v20-17738959811/", - "type": "dir", - "lastModified": "2025-09-26T01:53:19Z" - }, - { - "name": "CN-v23-17739490366/", - "href": "/dashboard/download/dashboard/download/docs/Observability/CN-v23-17739490366/", - "type": "dir", - "lastModified": "2025-09-26T01:53:19Z" - }, - { - "name": "CN-v28-17749789283/", - "href": "/dashboard/download/dashboard/download/docs/Observability/CN-v28-17749789283/", - "type": "dir", - "lastModified": "2025-09-26T01:53:20Z" - }, - { - "name": "CN-v29-17749815392/", - "href": "/dashboard/download/dashboard/download/docs/Observability/CN-v29-17749815392/", - "type": "dir", - "lastModified": "2025-09-26T01:53:20Z" - }, - { - "name": "CN-v30-17935243600/", - "href": "/dashboard/download/dashboard/download/docs/Observability/CN-v30-17935243600/", - "type": "dir", - "lastModified": "2025-09-26T01:53:20Z" - }, - { - "name": "CN-v31-17976868329/", - "href": "/dashboard/download/dashboard/download/docs/Observability/CN-v31-17976868329/", - "type": "dir", - "lastModified": "2025-09-26T01:53:20Z" - }, - { - "name": "CN-v32-17977204714/", - "href": "/dashboard/download/dashboard/download/docs/Observability/CN-v32-17977204714/", - "type": "dir", - "lastModified": "2025-09-26T01:53:20Z" - }, - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/docs/Observability/index.html", - "type": "file", - "size": 19102, - "lastModified": "2025-09-26T01:53:19Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/docs/Observability/index.txt", - "type": "file", - "size": 5894, - "lastModified": "2025-09-26T01:53:19Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/docs/Observability/CN-v20-17738959811/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/docs/Observability/CN-v20-17738959811/index.html", - "type": "file", - "size": 12121, - "lastModified": "2025-09-26T01:53:19Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/docs/Observability/CN-v20-17738959811/index.txt", - "type": "file", - "size": 4415, - "lastModified": "2025-09-26T01:53:19Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/docs/Observability/CN-v23-17739490366/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/docs/Observability/CN-v23-17739490366/index.html", - "type": "file", - "size": 12121, - "lastModified": "2025-09-26T01:53:19Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/docs/Observability/CN-v23-17739490366/index.txt", - "type": "file", - "size": 4415, - "lastModified": "2025-09-26T01:53:19Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/docs/Observability/CN-v28-17749789283/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/docs/Observability/CN-v28-17749789283/index.html", - "type": "file", - "size": 12121, - "lastModified": "2025-09-26T01:53:20Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/docs/Observability/CN-v28-17749789283/index.txt", - "type": "file", - "size": 4415, - "lastModified": "2025-09-26T01:53:20Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/docs/Observability/CN-v29-17749815392/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/docs/Observability/CN-v29-17749815392/index.html", - "type": "file", - "size": 12121, - "lastModified": "2025-09-26T01:53:20Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/docs/Observability/CN-v29-17749815392/index.txt", - "type": "file", - "size": 4415, - "lastModified": "2025-09-26T01:53:20Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/docs/Observability/CN-v30-17935243600/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/docs/Observability/CN-v30-17935243600/index.html", - "type": "file", - "size": 12121, - "lastModified": "2025-09-26T01:53:20Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/docs/Observability/CN-v30-17935243600/index.txt", - "type": "file", - "size": 4415, - "lastModified": "2025-09-26T01:53:20Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/docs/Observability/CN-v31-17976868329/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/docs/Observability/CN-v31-17976868329/index.html", - "type": "file", - "size": 12121, - "lastModified": "2025-09-26T01:53:20Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/docs/Observability/CN-v31-17976868329/index.txt", - "type": "file", - "size": 4415, - "lastModified": "2025-09-26T01:53:20Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/docs/Observability/CN-v32-17977204714/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/docs/Observability/CN-v32-17977204714/index.html", - "type": "file", - "size": 12121, - "lastModified": "2025-09-26T01:53:20Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/docs/Observability/CN-v32-17977204714/index.txt", - "type": "file", - "size": 4415, - "lastModified": "2025-09-26T01:53:20Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/docs/Personal/", - "entries": [ - { - "name": "EN-v31-17976868329/", - "href": "/dashboard/download/dashboard/download/docs/Personal/EN-v31-17976868329/", - "type": "dir", - "lastModified": "2025-09-26T01:53:20Z" - }, - { - "name": "EN-v32-17977204714/", - "href": "/dashboard/download/dashboard/download/docs/Personal/EN-v32-17977204714/", - "type": "dir", - "lastModified": "2025-09-26T01:53:20Z" - }, - { - "name": "Personal-v27-17740487419/", - "href": "/dashboard/download/dashboard/download/docs/Personal/Personal-v27-17740487419/", - "type": "dir", - "lastModified": "2025-09-26T01:53:20Z" - }, - { - "name": "Personal-v28-17749789283/", - "href": "/dashboard/download/dashboard/download/docs/Personal/Personal-v28-17749789283/", - "type": "dir", - "lastModified": "2025-09-26T01:53:21Z" - }, - { - "name": "Personal-v29-17749815392/", - "href": "/dashboard/download/dashboard/download/docs/Personal/Personal-v29-17749815392/", - "type": "dir", - "lastModified": "2025-09-26T01:53:21Z" - }, - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/docs/Personal/index.html", - "type": "file", - "size": 17059, - "lastModified": "2025-09-26T01:53:20Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/docs/Personal/index.txt", - "type": "file", - "size": 5363, - "lastModified": "2025-09-26T01:53:20Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/docs/Personal/EN-v31-17976868329/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/docs/Personal/EN-v31-17976868329/index.html", - "type": "file", - "size": 12026, - "lastModified": "2025-09-26T01:53:20Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/docs/Personal/EN-v31-17976868329/index.txt", - "type": "file", - "size": 4365, - "lastModified": "2025-09-26T01:53:20Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/docs/Personal/EN-v32-17977204714/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/docs/Personal/EN-v32-17977204714/index.html", - "type": "file", - "size": 12026, - "lastModified": "2025-09-26T01:53:20Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/docs/Personal/EN-v32-17977204714/index.txt", - "type": "file", - "size": 4365, - "lastModified": "2025-09-26T01:53:20Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/docs/Personal/Personal-v27-17740487419/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/docs/Personal/Personal-v27-17740487419/index.html", - "type": "file", - "size": 12152, - "lastModified": "2025-09-26T01:53:20Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/docs/Personal/Personal-v27-17740487419/index.txt", - "type": "file", - "size": 4431, - "lastModified": "2025-09-26T01:53:20Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/docs/Personal/Personal-v28-17749789283/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/docs/Personal/Personal-v28-17749789283/index.html", - "type": "file", - "size": 12152, - "lastModified": "2025-09-26T01:53:21Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/docs/Personal/Personal-v28-17749789283/index.txt", - "type": "file", - "size": 4431, - "lastModified": "2025-09-26T01:53:21Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/docs/Personal/Personal-v29-17749815392/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/docs/Personal/Personal-v29-17749815392/index.html", - "type": "file", - "size": 12152, - "lastModified": "2025-09-26T01:53:21Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/docs/Personal/Personal-v29-17749815392/index.txt", - "type": "file", - "size": 4431, - "lastModified": "2025-09-26T01:53:21Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/docs/Personal-v30-17935243600/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/docs/Personal-v30-17935243600/index.html", - "type": "file", - "size": 11821, - "lastModified": "2025-09-26T01:53:20Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/docs/Personal-v30-17935243600/index.txt", - "type": "file", - "size": 4335, - "lastModified": "2025-09-26T01:53:20Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/docs/TechExploration/", - "entries": [ - { - "name": "EN-v31-17976868329/", - "href": "/dashboard/download/dashboard/download/docs/TechExploration/EN-v31-17976868329/", - "type": "dir", - "lastModified": "2025-09-26T01:53:21Z" - }, - { - "name": "EN-v32-17977204714/", - "href": "/dashboard/download/dashboard/download/docs/TechExploration/EN-v32-17977204714/", - "type": "dir", - "lastModified": "2025-09-26T01:53:21Z" - }, - { - "name": "TechExploration-v25-17740048053/", - "href": "/dashboard/download/dashboard/download/docs/TechExploration/TechExploration-v25-17740048053/", - "type": "dir", - "lastModified": "2025-09-26T01:53:21Z" - }, - { - "name": "TechExploration-v27-17740487419/", - "href": "/dashboard/download/dashboard/download/docs/TechExploration/TechExploration-v27-17740487419/", - "type": "dir", - "lastModified": "2025-09-26T01:53:21Z" - }, - { - "name": "TechExploration-v28-17749789283/", - "href": "/dashboard/download/dashboard/download/docs/TechExploration/TechExploration-v28-17749789283/", - "type": "dir", - "lastModified": "2025-09-26T01:53:21Z" - }, - { - "name": "TechExploration-v29-17749815392/", - "href": "/dashboard/download/dashboard/download/docs/TechExploration/TechExploration-v29-17749815392/", - "type": "dir", - "lastModified": "2025-09-26T01:53:22Z" - }, - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/docs/TechExploration/index.html", - "type": "file", - "size": 18464, - "lastModified": "2025-09-26T01:53:21Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/docs/TechExploration/index.txt", - "type": "file", - "size": 5856, - "lastModified": "2025-09-26T01:53:21Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/docs/TechExploration/EN-v31-17976868329/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/docs/TechExploration/EN-v31-17976868329/index.html", - "type": "file", - "size": 12159, - "lastModified": "2025-09-26T01:53:21Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/docs/TechExploration/EN-v31-17976868329/index.txt", - "type": "file", - "size": 4435, - "lastModified": "2025-09-26T01:53:21Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/docs/TechExploration/EN-v32-17977204714/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/docs/TechExploration/EN-v32-17977204714/index.html", - "type": "file", - "size": 12159, - "lastModified": "2025-09-26T01:53:21Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/docs/TechExploration/EN-v32-17977204714/index.txt", - "type": "file", - "size": 4435, - "lastModified": "2025-09-26T01:53:21Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/docs/TechExploration/TechExploration-v25-17740048053/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/docs/TechExploration/TechExploration-v25-17740048053/index.html", - "type": "file", - "size": 12432, - "lastModified": "2025-09-26T01:53:21Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/docs/TechExploration/TechExploration-v25-17740048053/index.txt", - "type": "file", - "size": 4578, - "lastModified": "2025-09-26T01:53:21Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/docs/TechExploration/TechExploration-v27-17740487419/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/docs/TechExploration/TechExploration-v27-17740487419/index.html", - "type": "file", - "size": 12432, - "lastModified": "2025-09-26T01:53:21Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/docs/TechExploration/TechExploration-v27-17740487419/index.txt", - "type": "file", - "size": 4578, - "lastModified": "2025-09-26T01:53:21Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/docs/TechExploration/TechExploration-v28-17749789283/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/docs/TechExploration/TechExploration-v28-17749789283/index.html", - "type": "file", - "size": 12432, - "lastModified": "2025-09-26T01:53:21Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/docs/TechExploration/TechExploration-v28-17749789283/index.txt", - "type": "file", - "size": 4578, - "lastModified": "2025-09-26T01:53:21Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/docs/TechExploration/TechExploration-v29-17749815392/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/docs/TechExploration/TechExploration-v29-17749815392/index.html", - "type": "file", - "size": 12432, - "lastModified": "2025-09-26T01:53:21Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/docs/TechExploration/TechExploration-v29-17749815392/index.txt", - "type": "file", - "size": 4578, - "lastModified": "2025-09-26T01:53:22Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/docs/TechExploration-v30-17935243600/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/docs/TechExploration-v30-17935243600/index.html", - "type": "file", - "size": 11971, - "lastModified": "2025-09-26T01:53:21Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/docs/TechExploration-v30-17935243600/index.txt", - "type": "file", - "size": 4412, - "lastModified": "2025-09-26T01:53:21Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/docs/The-IndieDeveloper-Fullstack-Roadmap/", - "entries": [ - { - "name": "CN-v20-17738959811/", - "href": "/dashboard/download/dashboard/download/docs/The-IndieDeveloper-Fullstack-Roadmap/CN-v20-17738959811/", - "type": "dir", - "lastModified": "2025-09-26T01:53:22Z" - }, - { - "name": "CN-v21-17739112034/", - "href": "/dashboard/download/dashboard/download/docs/The-IndieDeveloper-Fullstack-Roadmap/CN-v21-17739112034/", - "type": "dir", - "lastModified": "2025-09-26T01:53:22Z" - }, - { - "name": "CN-v23-17739490366/", - "href": "/dashboard/download/dashboard/download/docs/The-IndieDeveloper-Fullstack-Roadmap/CN-v23-17739490366/", - "type": "dir", - "lastModified": "2025-09-26T01:53:22Z" - }, - { - "name": "CN-v28-17749789283/", - "href": "/dashboard/download/dashboard/download/docs/The-IndieDeveloper-Fullstack-Roadmap/CN-v28-17749789283/", - "type": "dir", - "lastModified": "2025-09-26T01:53:22Z" - }, - { - "name": "CN-v29-17749815392/", - "href": "/dashboard/download/dashboard/download/docs/The-IndieDeveloper-Fullstack-Roadmap/CN-v29-17749815392/", - "type": "dir", - "lastModified": "2025-09-26T01:53:22Z" - }, - { - "name": "CN-v30-17935243600/", - "href": "/dashboard/download/dashboard/download/docs/The-IndieDeveloper-Fullstack-Roadmap/CN-v30-17935243600/", - "type": "dir", - "lastModified": "2025-09-26T01:53:22Z" - }, - { - "name": "CN-v31-17976868329/", - "href": "/dashboard/download/dashboard/download/docs/The-IndieDeveloper-Fullstack-Roadmap/CN-v31-17976868329/", - "type": "dir", - "lastModified": "2025-09-26T01:53:22Z" - }, - { - "name": "CN-v32-17977204714/", - "href": "/dashboard/download/dashboard/download/docs/The-IndieDeveloper-Fullstack-Roadmap/CN-v32-17977204714/", - "type": "dir", - "lastModified": "2025-09-26T01:53:22Z" - }, - { - "name": "EN-v21-17739112034/", - "href": "/dashboard/download/dashboard/download/docs/The-IndieDeveloper-Fullstack-Roadmap/EN-v21-17739112034/", - "type": "dir", - "lastModified": "2025-09-26T01:53:23Z" - }, - { - "name": "EN-v22-17739462094/", - "href": "/dashboard/download/dashboard/download/docs/The-IndieDeveloper-Fullstack-Roadmap/EN-v22-17739462094/", - "type": "dir", - "lastModified": "2025-09-26T01:53:23Z" - }, - { - "name": "EN-v23-17739490366/", - "href": "/dashboard/download/dashboard/download/docs/The-IndieDeveloper-Fullstack-Roadmap/EN-v23-17739490366/", - "type": "dir", - "lastModified": "2025-09-26T01:53:23Z" - }, - { - "name": "EN-v26-17740473328/", - "href": "/dashboard/download/dashboard/download/docs/The-IndieDeveloper-Fullstack-Roadmap/EN-v26-17740473328/", - "type": "dir", - "lastModified": "2025-09-26T01:53:23Z" - }, - { - "name": "EN-v27-17740487419/", - "href": "/dashboard/download/dashboard/download/docs/The-IndieDeveloper-Fullstack-Roadmap/EN-v27-17740487419/", - "type": "dir", - "lastModified": "2025-09-26T01:53:23Z" - }, - { - "name": "EN-v28-17749789283/", - "href": "/dashboard/download/dashboard/download/docs/The-IndieDeveloper-Fullstack-Roadmap/EN-v28-17749789283/", - "type": "dir", - "lastModified": "2025-09-26T01:53:23Z" - }, - { - "name": "EN-v29-17749815392/", - "href": "/dashboard/download/dashboard/download/docs/The-IndieDeveloper-Fullstack-Roadmap/EN-v29-17749815392/", - "type": "dir", - "lastModified": "2025-09-26T01:53:23Z" - }, - { - "name": "EN-v30-17935243600/", - "href": "/dashboard/download/dashboard/download/docs/The-IndieDeveloper-Fullstack-Roadmap/EN-v30-17935243600/", - "type": "dir", - "lastModified": "2025-09-26T01:53:23Z" - }, - { - "name": "EN-v31-17976868329/", - "href": "/dashboard/download/dashboard/download/docs/The-IndieDeveloper-Fullstack-Roadmap/EN-v31-17976868329/", - "type": "dir", - "lastModified": "2025-09-26T01:53:23Z" - }, - { - "name": "EN-v32-17977204714/", - "href": "/dashboard/download/dashboard/download/docs/The-IndieDeveloper-Fullstack-Roadmap/EN-v32-17977204714/", - "type": "dir", - "lastModified": "2025-09-26T01:53:24Z" - }, - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/docs/The-IndieDeveloper-Fullstack-Roadmap/index.html", - "type": "file", - "size": 31564, - "lastModified": "2025-09-26T01:53:22Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/docs/The-IndieDeveloper-Fullstack-Roadmap/index.txt", - "type": "file", - "size": 9615, - "lastModified": "2025-09-26T01:53:22Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/docs/The-IndieDeveloper-Fullstack-Roadmap/CN-v20-17738959811/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/docs/The-IndieDeveloper-Fullstack-Roadmap/CN-v20-17738959811/index.html", - "type": "file", - "size": 12558, - "lastModified": "2025-09-26T01:53:22Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/docs/The-IndieDeveloper-Fullstack-Roadmap/CN-v20-17738959811/index.txt", - "type": "file", - "size": 4645, - "lastModified": "2025-09-26T01:53:22Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/docs/The-IndieDeveloper-Fullstack-Roadmap/CN-v21-17739112034/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/docs/The-IndieDeveloper-Fullstack-Roadmap/CN-v21-17739112034/index.html", - "type": "file", - "size": 12558, - "lastModified": "2025-09-26T01:53:22Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/docs/The-IndieDeveloper-Fullstack-Roadmap/CN-v21-17739112034/index.txt", - "type": "file", - "size": 4645, - "lastModified": "2025-09-26T01:53:22Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/docs/The-IndieDeveloper-Fullstack-Roadmap/CN-v23-17739490366/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/docs/The-IndieDeveloper-Fullstack-Roadmap/CN-v23-17739490366/index.html", - "type": "file", - "size": 12557, - "lastModified": "2025-09-26T01:53:22Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/docs/The-IndieDeveloper-Fullstack-Roadmap/CN-v23-17739490366/index.txt", - "type": "file", - "size": 4645, - "lastModified": "2025-09-26T01:53:22Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/docs/The-IndieDeveloper-Fullstack-Roadmap/CN-v28-17749789283/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/docs/The-IndieDeveloper-Fullstack-Roadmap/CN-v28-17749789283/index.html", - "type": "file", - "size": 12557, - "lastModified": "2025-09-26T01:53:22Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/docs/The-IndieDeveloper-Fullstack-Roadmap/CN-v28-17749789283/index.txt", - "type": "file", - "size": 4645, - "lastModified": "2025-09-26T01:53:22Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/docs/The-IndieDeveloper-Fullstack-Roadmap/CN-v29-17749815392/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/docs/The-IndieDeveloper-Fullstack-Roadmap/CN-v29-17749815392/index.html", - "type": "file", - "size": 12557, - "lastModified": "2025-09-26T01:53:22Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/docs/The-IndieDeveloper-Fullstack-Roadmap/CN-v29-17749815392/index.txt", - "type": "file", - "size": 4645, - "lastModified": "2025-09-26T01:53:22Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/docs/The-IndieDeveloper-Fullstack-Roadmap/CN-v30-17935243600/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/docs/The-IndieDeveloper-Fullstack-Roadmap/CN-v30-17935243600/index.html", - "type": "file", - "size": 12557, - "lastModified": "2025-09-26T01:53:22Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/docs/The-IndieDeveloper-Fullstack-Roadmap/CN-v30-17935243600/index.txt", - "type": "file", - "size": 4645, - "lastModified": "2025-09-26T01:53:22Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/docs/The-IndieDeveloper-Fullstack-Roadmap/CN-v31-17976868329/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/docs/The-IndieDeveloper-Fullstack-Roadmap/CN-v31-17976868329/index.html", - "type": "file", - "size": 12557, - "lastModified": "2025-09-26T01:53:22Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/docs/The-IndieDeveloper-Fullstack-Roadmap/CN-v31-17976868329/index.txt", - "type": "file", - "size": 4645, - "lastModified": "2025-09-26T01:53:22Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/docs/The-IndieDeveloper-Fullstack-Roadmap/CN-v32-17977204714/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/docs/The-IndieDeveloper-Fullstack-Roadmap/CN-v32-17977204714/index.html", - "type": "file", - "size": 12557, - "lastModified": "2025-09-26T01:53:22Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/docs/The-IndieDeveloper-Fullstack-Roadmap/CN-v32-17977204714/index.txt", - "type": "file", - "size": 4645, - "lastModified": "2025-09-26T01:53:22Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/docs/The-IndieDeveloper-Fullstack-Roadmap/EN-v21-17739112034/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/docs/The-IndieDeveloper-Fullstack-Roadmap/EN-v21-17739112034/index.html", - "type": "file", - "size": 12558, - "lastModified": "2025-09-26T01:53:23Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/docs/The-IndieDeveloper-Fullstack-Roadmap/EN-v21-17739112034/index.txt", - "type": "file", - "size": 4645, - "lastModified": "2025-09-26T01:53:23Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/docs/The-IndieDeveloper-Fullstack-Roadmap/EN-v22-17739462094/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/docs/The-IndieDeveloper-Fullstack-Roadmap/EN-v22-17739462094/index.html", - "type": "file", - "size": 12558, - "lastModified": "2025-09-26T01:53:23Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/docs/The-IndieDeveloper-Fullstack-Roadmap/EN-v22-17739462094/index.txt", - "type": "file", - "size": 4645, - "lastModified": "2025-09-26T01:53:23Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/docs/The-IndieDeveloper-Fullstack-Roadmap/EN-v23-17739490366/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/docs/The-IndieDeveloper-Fullstack-Roadmap/EN-v23-17739490366/index.html", - "type": "file", - "size": 12558, - "lastModified": "2025-09-26T01:53:23Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/docs/The-IndieDeveloper-Fullstack-Roadmap/EN-v23-17739490366/index.txt", - "type": "file", - "size": 4645, - "lastModified": "2025-09-26T01:53:23Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/docs/The-IndieDeveloper-Fullstack-Roadmap/EN-v26-17740473328/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/docs/The-IndieDeveloper-Fullstack-Roadmap/EN-v26-17740473328/index.html", - "type": "file", - "size": 12557, - "lastModified": "2025-09-26T01:53:23Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/docs/The-IndieDeveloper-Fullstack-Roadmap/EN-v26-17740473328/index.txt", - "type": "file", - "size": 4645, - "lastModified": "2025-09-26T01:53:23Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/docs/The-IndieDeveloper-Fullstack-Roadmap/EN-v27-17740487419/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/docs/The-IndieDeveloper-Fullstack-Roadmap/EN-v27-17740487419/index.html", - "type": "file", - "size": 12557, - "lastModified": "2025-09-26T01:53:23Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/docs/The-IndieDeveloper-Fullstack-Roadmap/EN-v27-17740487419/index.txt", - "type": "file", - "size": 4645, - "lastModified": "2025-09-26T01:53:23Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/docs/The-IndieDeveloper-Fullstack-Roadmap/EN-v28-17749789283/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/docs/The-IndieDeveloper-Fullstack-Roadmap/EN-v28-17749789283/index.html", - "type": "file", - "size": 12557, - "lastModified": "2025-09-26T01:53:23Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/docs/The-IndieDeveloper-Fullstack-Roadmap/EN-v28-17749789283/index.txt", - "type": "file", - "size": 4645, - "lastModified": "2025-09-26T01:53:23Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/docs/The-IndieDeveloper-Fullstack-Roadmap/EN-v29-17749815392/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/docs/The-IndieDeveloper-Fullstack-Roadmap/EN-v29-17749815392/index.html", - "type": "file", - "size": 12557, - "lastModified": "2025-09-26T01:53:23Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/docs/The-IndieDeveloper-Fullstack-Roadmap/EN-v29-17749815392/index.txt", - "type": "file", - "size": 4645, - "lastModified": "2025-09-26T01:53:23Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/docs/The-IndieDeveloper-Fullstack-Roadmap/EN-v30-17935243600/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/docs/The-IndieDeveloper-Fullstack-Roadmap/EN-v30-17935243600/index.html", - "type": "file", - "size": 12557, - "lastModified": "2025-09-26T01:53:23Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/docs/The-IndieDeveloper-Fullstack-Roadmap/EN-v30-17935243600/index.txt", - "type": "file", - "size": 4645, - "lastModified": "2025-09-26T01:53:23Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/docs/The-IndieDeveloper-Fullstack-Roadmap/EN-v31-17976868329/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/docs/The-IndieDeveloper-Fullstack-Roadmap/EN-v31-17976868329/index.html", - "type": "file", - "size": 12557, - "lastModified": "2025-09-26T01:53:23Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/docs/The-IndieDeveloper-Fullstack-Roadmap/EN-v31-17976868329/index.txt", - "type": "file", - "size": 4645, - "lastModified": "2025-09-26T01:53:23Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/docs/The-IndieDeveloper-Fullstack-Roadmap/EN-v32-17977204714/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/docs/The-IndieDeveloper-Fullstack-Roadmap/EN-v32-17977204714/index.html", - "type": "file", - "size": 12557, - "lastModified": "2025-09-26T01:53:24Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/docs/The-IndieDeveloper-Fullstack-Roadmap/EN-v32-17977204714/index.txt", - "type": "file", - "size": 4645, - "lastModified": "2025-09-26T01:53:24Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/docs/interview-qa/", - "entries": [ - { - "name": "CN-v23-17739490366/", - "href": "/dashboard/download/dashboard/download/docs/interview-qa/CN-v23-17739490366/", - "type": "dir", - "lastModified": "2025-09-26T01:53:24Z" - }, - { - "name": "CN-v26-17740473328/", - "href": "/dashboard/download/dashboard/download/docs/interview-qa/CN-v26-17740473328/", - "type": "dir", - "lastModified": "2025-09-26T01:53:24Z" - }, - { - "name": "CN-v27-17740487419/", - "href": "/dashboard/download/dashboard/download/docs/interview-qa/CN-v27-17740487419/", - "type": "dir", - "lastModified": "2025-09-26T01:53:24Z" - }, - { - "name": "CN-v28-17749789283/", - "href": "/dashboard/download/dashboard/download/docs/interview-qa/CN-v28-17749789283/", - "type": "dir", - "lastModified": "2025-09-26T01:53:24Z" - }, - { - "name": "CN-v29-17749815392/", - "href": "/dashboard/download/dashboard/download/docs/interview-qa/CN-v29-17749815392/", - "type": "dir", - "lastModified": "2025-09-26T01:53:24Z" - }, - { - "name": "CN-v30-17935243600/", - "href": "/dashboard/download/dashboard/download/docs/interview-qa/CN-v30-17935243600/", - "type": "dir", - "lastModified": "2025-09-26T01:53:24Z" - }, - { - "name": "CN-v31-17976868329/", - "href": "/dashboard/download/dashboard/download/docs/interview-qa/CN-v31-17976868329/", - "type": "dir", - "lastModified": "2025-09-26T01:53:24Z" - }, - { - "name": "CN-v32-17977204714/", - "href": "/dashboard/download/dashboard/download/docs/interview-qa/CN-v32-17977204714/", - "type": "dir", - "lastModified": "2025-09-26T01:53:25Z" - }, - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/docs/interview-qa/index.html", - "type": "file", - "size": 20033, - "lastModified": "2025-09-26T01:53:24Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/docs/interview-qa/index.txt", - "type": "file", - "size": 6107, - "lastModified": "2025-09-26T01:53:24Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/docs/interview-qa/CN-v23-17739490366/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/docs/interview-qa/CN-v23-17739490366/index.html", - "type": "file", - "size": 12102, - "lastModified": "2025-09-26T01:53:24Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/docs/interview-qa/CN-v23-17739490366/index.txt", - "type": "file", - "size": 4405, - "lastModified": "2025-09-26T01:53:24Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/docs/interview-qa/CN-v26-17740473328/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/docs/interview-qa/CN-v26-17740473328/index.html", - "type": "file", - "size": 12102, - "lastModified": "2025-09-26T01:53:24Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/docs/interview-qa/CN-v26-17740473328/index.txt", - "type": "file", - "size": 4405, - "lastModified": "2025-09-26T01:53:24Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/docs/interview-qa/CN-v27-17740487419/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/docs/interview-qa/CN-v27-17740487419/index.html", - "type": "file", - "size": 12102, - "lastModified": "2025-09-26T01:53:24Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/docs/interview-qa/CN-v27-17740487419/index.txt", - "type": "file", - "size": 4405, - "lastModified": "2025-09-26T01:53:24Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/docs/interview-qa/CN-v28-17749789283/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/docs/interview-qa/CN-v28-17749789283/index.html", - "type": "file", - "size": 12102, - "lastModified": "2025-09-26T01:53:24Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/docs/interview-qa/CN-v28-17749789283/index.txt", - "type": "file", - "size": 4405, - "lastModified": "2025-09-26T01:53:24Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/docs/interview-qa/CN-v29-17749815392/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/docs/interview-qa/CN-v29-17749815392/index.html", - "type": "file", - "size": 12102, - "lastModified": "2025-09-26T01:53:24Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/docs/interview-qa/CN-v29-17749815392/index.txt", - "type": "file", - "size": 4405, - "lastModified": "2025-09-26T01:53:24Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/docs/interview-qa/CN-v30-17935243600/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/docs/interview-qa/CN-v30-17935243600/index.html", - "type": "file", - "size": 12102, - "lastModified": "2025-09-26T01:53:24Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/docs/interview-qa/CN-v30-17935243600/index.txt", - "type": "file", - "size": 4405, - "lastModified": "2025-09-26T01:53:24Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/docs/interview-qa/CN-v31-17976868329/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/docs/interview-qa/CN-v31-17976868329/index.html", - "type": "file", - "size": 12102, - "lastModified": "2025-09-26T01:53:24Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/docs/interview-qa/CN-v31-17976868329/index.txt", - "type": "file", - "size": 4405, - "lastModified": "2025-09-26T01:53:24Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/docs/interview-qa/CN-v32-17977204714/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/docs/interview-qa/CN-v32-17977204714/index.html", - "type": "file", - "size": 12102, - "lastModified": "2025-09-26T01:53:24Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/docs/interview-qa/CN-v32-17977204714/index.txt", - "type": "file", - "size": 4405, - "lastModified": "2025-09-26T01:53:25Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/offline-package/", - "entries": [ - { - "name": "apisix-gateway/", - "href": "/dashboard/download/dashboard/download/offline-package/apisix-gateway/", - "type": "dir", - "lastModified": "2025-09-26T01:53:25Z" - }, - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/offline-package/index.html", - "type": "file", - "size": 16690, - "lastModified": "2025-09-26T01:53:25Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/offline-package/index.txt", - "type": "file", - "size": 5224, - "lastModified": "2025-09-26T01:53:25Z" - }, - { - "name": "k3s/", - "href": "/dashboard/download/dashboard/download/offline-package/k3s/", - "type": "dir", - "lastModified": "2025-09-26T01:53:25Z" - }, - { - "name": "kong-gateway/", - "href": "/dashboard/download/dashboard/download/offline-package/kong-gateway/", - "type": "dir", - "lastModified": "2025-09-26T01:53:25Z" - }, - { - "name": "nginx-ingress/", - "href": "/dashboard/download/dashboard/download/offline-package/nginx-ingress/", - "type": "dir", - "lastModified": "2025-09-26T01:53:25Z" - }, - { - "name": "sealos/", - "href": "/dashboard/download/dashboard/download/offline-package/sealos/", - "type": "dir", - "lastModified": "2025-09-26T01:53:25Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/offline-package/apisix-gateway/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/offline-package/apisix-gateway/index.html", - "type": "file", - "size": 11823, - "lastModified": "2025-09-26T01:53:25Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/offline-package/apisix-gateway/index.txt", - "type": "file", - "size": 4335, - "lastModified": "2025-09-26T01:53:25Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/offline-package/k3s/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/offline-package/k3s/index.html", - "type": "file", - "size": 11592, - "lastModified": "2025-09-26T01:53:25Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/offline-package/k3s/index.txt", - "type": "file", - "size": 4214, - "lastModified": "2025-09-26T01:53:25Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/offline-package/kong-gateway/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/offline-package/kong-gateway/index.html", - "type": "file", - "size": 11781, - "lastModified": "2025-09-26T01:53:25Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/offline-package/kong-gateway/index.txt", - "type": "file", - "size": 4313, - "lastModified": "2025-09-26T01:53:25Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/offline-package/nginx-ingress/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/offline-package/nginx-ingress/index.html", - "type": "file", - "size": 11802, - "lastModified": "2025-09-26T01:53:25Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/offline-package/nginx-ingress/index.txt", - "type": "file", - "size": 4324, - "lastModified": "2025-09-26T01:53:25Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/offline-package/sealos/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/offline-package/sealos/index.html", - "type": "file", - "size": 11654, - "lastModified": "2025-09-26T01:53:25Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/offline-package/sealos/index.txt", - "type": "file", - "size": 4247, - "lastModified": "2025-09-26T01:53:25Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/otel/", - "entries": [ - { - "name": "OpenTelemetry/", - "href": "/dashboard/download/dashboard/download/otel/OpenTelemetry/", - "type": "dir", - "lastModified": "2025-09-26T01:53:25Z" - }, - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/otel/index.html", - "type": "file", - "size": 12736, - "lastModified": "2025-09-26T01:53:25Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/otel/index.txt", - "type": "file", - "size": 4254, - "lastModified": "2025-09-26T01:53:25Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/otel/OpenTelemetry/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/otel/OpenTelemetry/index.html", - "type": "file", - "size": 13189, - "lastModified": "2025-09-26T01:53:25Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/otel/OpenTelemetry/index.txt", - "type": "file", - "size": 4422, - "lastModified": "2025-09-26T01:53:25Z" - }, - { - "name": "v0.133.0/", - "href": "/dashboard/download/dashboard/download/otel/OpenTelemetry/v0.133.0/", - "type": "dir", - "lastModified": "2025-09-26T01:53:25Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/otel/OpenTelemetry/v0.133.0/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/otel/OpenTelemetry/v0.133.0/index.html", - "type": "file", - "size": 11910, - "lastModified": "2025-09-26T01:53:25Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/otel/OpenTelemetry/v0.133.0/index.txt", - "type": "file", - "size": 4305, - "lastModified": "2025-09-26T01:53:25Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/rpm/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/rpm/index.html", - "type": "file", - "size": 11134, - "lastModified": "2025-09-26T01:53:26Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/rpm/index.txt", - "type": "file", - "size": 4047, - "lastModified": "2025-09-26T01:53:26Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/sealos/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/sealos/index.html", - "type": "file", - "size": 14664, - "lastModified": "2025-09-26T01:53:26Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/sealos/index.txt", - "type": "file", - "size": 4710, - "lastModified": "2025-09-26T01:53:26Z" - }, - { - "name": "offline-sealos-5/", - "href": "/dashboard/download/dashboard/download/sealos/offline-sealos-5/", - "type": "dir", - "lastModified": "2025-09-26T01:53:26Z" - }, - { - "name": "offline-sealos-6/", - "href": "/dashboard/download/dashboard/download/sealos/offline-sealos-6/", - "type": "dir", - "lastModified": "2025-09-26T01:53:26Z" - }, - { - "name": "offline-sealos-8/", - "href": "/dashboard/download/dashboard/download/sealos/offline-sealos-8/", - "type": "dir", - "lastModified": "2025-09-26T01:53:26Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/sealos/offline-sealos-5/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/sealos/offline-sealos-5/index.html", - "type": "file", - "size": 11692, - "lastModified": "2025-09-26T01:53:26Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/sealos/offline-sealos-5/index.txt", - "type": "file", - "size": 4266, - "lastModified": "2025-09-26T01:53:26Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/sealos/offline-sealos-6/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/sealos/offline-sealos-6/index.html", - "type": "file", - "size": 11692, - "lastModified": "2025-09-26T01:53:26Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/sealos/offline-sealos-6/index.txt", - "type": "file", - "size": 4266, - "lastModified": "2025-09-26T01:53:26Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/sealos/offline-sealos-8/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/sealos/offline-sealos-8/index.html", - "type": "file", - "size": 11692, - "lastModified": "2025-09-26T01:53:26Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/sealos/offline-sealos-8/index.txt", - "type": "file", - "size": 4266, - "lastModified": "2025-09-26T01:53:26Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/xray-core/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/xray-core/index.html", - "type": "file", - "size": 17317, - "lastModified": "2025-09-26T01:53:26Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/xray-core/index.txt", - "type": "file", - "size": 5260, - "lastModified": "2025-09-26T01:53:26Z" - }, - { - "name": "v25.8.29/", - "href": "/dashboard/download/dashboard/download/xray-core/v25.8.29/", - "type": "dir", - "lastModified": "2025-09-26T01:53:26Z" - }, - { - "name": "v25.8.3/", - "href": "/dashboard/download/dashboard/download/xray-core/v25.8.3/", - "type": "dir", - "lastModified": "2025-09-26T01:53:26Z" - }, - { - "name": "v25.8.31/", - "href": "/dashboard/download/dashboard/download/xray-core/v25.8.31/", - "type": "dir", - "lastModified": "2025-09-26T01:53:26Z" - }, - { - "name": "v25.9.10/", - "href": "/dashboard/download/dashboard/download/xray-core/v25.9.10/", - "type": "dir", - "lastModified": "2025-09-26T01:53:27Z" - }, - { - "name": "v25.9.11/", - "href": "/dashboard/download/dashboard/download/xray-core/v25.9.11/", - "type": "dir", - "lastModified": "2025-09-26T01:53:27Z" - }, - { - "name": "v25.9.5/", - "href": "/dashboard/download/dashboard/download/xray-core/v25.9.5/", - "type": "dir", - "lastModified": "2025-09-26T01:53:27Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/xray-core/v25.8.29/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/xray-core/v25.8.29/index.html", - "type": "file", - "size": 11582, - "lastModified": "2025-09-26T01:53:26Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/xray-core/v25.8.29/index.txt", - "type": "file", - "size": 4209, - "lastModified": "2025-09-26T01:53:26Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/xray-core/v25.8.3/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/xray-core/v25.8.3/index.html", - "type": "file", - "size": 11561, - "lastModified": "2025-09-26T01:53:26Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/xray-core/v25.8.3/index.txt", - "type": "file", - "size": 4198, - "lastModified": "2025-09-26T01:53:26Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/xray-core/v25.8.31/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/xray-core/v25.8.31/index.html", - "type": "file", - "size": 11582, - "lastModified": "2025-09-26T01:53:26Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/xray-core/v25.8.31/index.txt", - "type": "file", - "size": 4209, - "lastModified": "2025-09-26T01:53:26Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/xray-core/v25.9.10/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/xray-core/v25.9.10/index.html", - "type": "file", - "size": 11580, - "lastModified": "2025-09-26T01:53:26Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/xray-core/v25.9.10/index.txt", - "type": "file", - "size": 4208, - "lastModified": "2025-09-26T01:53:27Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/xray-core/v25.9.11/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/xray-core/v25.9.11/index.html", - "type": "file", - "size": 11580, - "lastModified": "2025-09-26T01:53:27Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/xray-core/v25.9.11/index.txt", - "type": "file", - "size": 4208, - "lastModified": "2025-09-26T01:53:27Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/xray-core/v25.9.5/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/xray-core/v25.9.5/index.html", - "type": "file", - "size": 11559, - "lastModified": "2025-09-26T01:53:27Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/xray-core/v25.9.5/index.txt", - "type": "file", - "size": 4197, - "lastModified": "2025-09-26T01:53:27Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/xstream/", - "entries": [ - { - "name": "android/", - "href": "/dashboard/download/dashboard/download/xstream/android/", - "type": "dir", - "lastModified": "2025-09-26T01:53:27Z" - }, - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/xstream/index.html", - "type": "file", - "size": 16299, - "lastModified": "2025-09-26T01:53:27Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/xstream/index.txt", - "type": "file", - "size": 4994, - "lastModified": "2025-09-26T01:53:27Z" - }, - { - "name": "ios/", - "href": "/dashboard/download/dashboard/download/xstream/ios/", - "type": "dir", - "lastModified": "2025-09-26T01:53:27Z" - }, - { - "name": "linux/", - "href": "/dashboard/download/dashboard/download/xstream/linux/", - "type": "dir", - "lastModified": "2025-09-26T01:53:28Z" - }, - { - "name": "macos/", - "href": "/dashboard/download/dashboard/download/xstream/macos/", - "type": "dir", - "lastModified": "2025-09-26T01:53:28Z" - }, - { - "name": "windows/", - "href": "/dashboard/download/dashboard/download/xstream/windows/", - "type": "dir", - "lastModified": "2025-09-26T01:53:29Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/xstream/android/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/xstream/android/index.html", - "type": "file", - "size": 13101, - "lastModified": "2025-09-26T01:53:27Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/xstream/android/index.txt", - "type": "file", - "size": 4374, - "lastModified": "2025-09-26T01:53:27Z" - }, - { - "name": "latest/", - "href": "/dashboard/download/dashboard/download/xstream/android/latest/", - "type": "dir", - "lastModified": "2025-09-26T01:53:27Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/xstream/android/latest/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/xstream/android/latest/index.html", - "type": "file", - "size": 11814, - "lastModified": "2025-09-26T01:53:27Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/xstream/android/latest/index.txt", - "type": "file", - "size": 4253, - "lastModified": "2025-09-26T01:53:27Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/xstream/ios/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/xstream/ios/index.html", - "type": "file", - "size": 13005, - "lastModified": "2025-09-26T01:53:27Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/xstream/ios/index.txt", - "type": "file", - "size": 4322, - "lastModified": "2025-09-26T01:53:27Z" - }, - { - "name": "latest/", - "href": "/dashboard/download/dashboard/download/xstream/ios/latest/", - "type": "dir", - "lastModified": "2025-09-26T01:53:27Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/xstream/ios/latest/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/xstream/ios/latest/index.html", - "type": "file", - "size": 11738, - "lastModified": "2025-09-26T01:53:27Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/xstream/ios/latest/index.txt", - "type": "file", - "size": 4213, - "lastModified": "2025-09-26T01:53:27Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/xstream/linux/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/xstream/linux/index.html", - "type": "file", - "size": 13959, - "lastModified": "2025-09-26T01:53:27Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/xstream/linux/index.txt", - "type": "file", - "size": 4543, - "lastModified": "2025-09-26T01:53:27Z" - }, - { - "name": "latest/", - "href": "/dashboard/download/dashboard/download/xstream/linux/latest/", - "type": "dir", - "lastModified": "2025-09-26T01:53:27Z" - }, - { - "name": "stable/", - "href": "/dashboard/download/dashboard/download/xstream/linux/stable/", - "type": "dir", - "lastModified": "2025-09-26T01:53:28Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/xstream/linux/latest/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/xstream/linux/latest/index.html", - "type": "file", - "size": 11775, - "lastModified": "2025-09-26T01:53:27Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/xstream/linux/latest/index.txt", - "type": "file", - "size": 4233, - "lastModified": "2025-09-26T01:53:27Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/xstream/linux/stable/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/xstream/linux/stable/index.html", - "type": "file", - "size": 11775, - "lastModified": "2025-09-26T01:53:28Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/xstream/linux/stable/index.txt", - "type": "file", - "size": 4233, - "lastModified": "2025-09-26T01:53:28Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/xstream/macos/", - "entries": [ - { - "name": "docs/", - "href": "/dashboard/download/dashboard/download/xstream/macos/docs/", - "type": "dir", - "lastModified": "2025-09-26T01:53:28Z" - }, - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/xstream/macos/index.html", - "type": "file", - "size": 14850, - "lastModified": "2025-09-26T01:53:28Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/xstream/macos/index.txt", - "type": "file", - "size": 4731, - "lastModified": "2025-09-26T01:53:28Z" - }, - { - "name": "latest/", - "href": "/dashboard/download/dashboard/download/xstream/macos/latest/", - "type": "dir", - "lastModified": "2025-09-26T01:53:28Z" - }, - { - "name": "stable/", - "href": "/dashboard/download/dashboard/download/xstream/macos/stable/", - "type": "dir", - "lastModified": "2025-09-26T01:53:28Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/xstream/macos/docs/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/xstream/macos/docs/index.html", - "type": "file", - "size": 11733, - "lastModified": "2025-09-26T01:53:28Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/xstream/macos/docs/index.txt", - "type": "file", - "size": 4210, - "lastModified": "2025-09-26T01:53:28Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/xstream/macos/latest/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/xstream/macos/latest/index.html", - "type": "file", - "size": 11775, - "lastModified": "2025-09-26T01:53:28Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/xstream/macos/latest/index.txt", - "type": "file", - "size": 4233, - "lastModified": "2025-09-26T01:53:28Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/xstream/macos/stable/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/xstream/macos/stable/index.html", - "type": "file", - "size": 11774, - "lastModified": "2025-09-26T01:53:28Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/xstream/macos/stable/index.txt", - "type": "file", - "size": 4233, - "lastModified": "2025-09-26T01:53:28Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/xstream/windows/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/xstream/windows/index.html", - "type": "file", - "size": 15819, - "lastModified": "2025-09-26T01:53:28Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/xstream/windows/index.txt", - "type": "file", - "size": 4964, - "lastModified": "2025-09-26T01:53:28Z" - }, - { - "name": "latest/", - "href": "/dashboard/download/dashboard/download/xstream/windows/latest/", - "type": "dir", - "lastModified": "2025-09-26T01:53:28Z" - }, - { - "name": "stable/", - "href": "/dashboard/download/dashboard/download/xstream/windows/stable/", - "type": "dir", - "lastModified": "2025-09-26T01:53:28Z" - }, - { - "name": "win10/", - "href": "/dashboard/download/dashboard/download/xstream/windows/win10/", - "type": "dir", - "lastModified": "2025-09-26T01:53:29Z" - }, - { - "name": "win11/", - "href": "/dashboard/download/dashboard/download/xstream/windows/win11/", - "type": "dir", - "lastModified": "2025-09-26T01:53:29Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/xstream/windows/latest/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/xstream/windows/latest/index.html", - "type": "file", - "size": 11814, - "lastModified": "2025-09-26T01:53:28Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/xstream/windows/latest/index.txt", - "type": "file", - "size": 4253, - "lastModified": "2025-09-26T01:53:28Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/xstream/windows/stable/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/xstream/windows/stable/index.html", - "type": "file", - "size": 11814, - "lastModified": "2025-09-26T01:53:28Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/xstream/windows/stable/index.txt", - "type": "file", - "size": 4253, - "lastModified": "2025-09-26T01:53:28Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/xstream/windows/win10/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/xstream/windows/win10/index.html", - "type": "file", - "size": 11792, - "lastModified": "2025-09-26T01:53:28Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/xstream/windows/win10/index.txt", - "type": "file", - "size": 4241, - "lastModified": "2025-09-26T01:53:29Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/download/xstream/windows/win11/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/download/xstream/windows/win11/index.html", - "type": "file", - "size": 11792, - "lastModified": "2025-09-26T01:53:29Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/download/xstream/windows/win11/index.txt", - "type": "file", - "size": 4241, - "lastModified": "2025-09-26T01:53:29Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/icons/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/icons/index.html", - "type": "file", - "size": 9880, - "lastModified": "2025-09-26T01:53:29Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/icons/index.txt", - "type": "file", - "size": 3868, - "lastModified": "2025-09-26T01:53:29Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/insight/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/insight/index.html", - "type": "file", - "size": 10906, - "lastModified": "2025-09-26T01:53:29Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/insight/index.txt", - "type": "file", - "size": 3996, - "lastModified": "2025-09-26T01:53:29Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/login/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/login/index.html", - "type": "file", - "size": 10862, - "lastModified": "2025-09-26T01:53:29Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/login/index.txt", - "type": "file", - "size": 3973, - "lastModified": "2025-09-26T01:53:29Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/panel/", - "entries": [ - { - "name": "account/", - "href": "/dashboard/download/dashboard/panel/account/", - "type": "dir", - "lastModified": "2025-09-26T01:53:29Z" - }, - { - "name": "agent/", - "href": "/dashboard/download/dashboard/panel/agent/", - "type": "dir", - "lastModified": "2025-09-26T01:53:29Z" - }, - { - "name": "api/", - "href": "/dashboard/download/dashboard/panel/api/", - "type": "dir", - "lastModified": "2025-09-26T01:53:29Z" - }, - { - "name": "index.html", - "href": "/dashboard/download/dashboard/panel/index.html", - "type": "file", - "size": 16631, - "lastModified": "2025-09-26T01:53:29Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/panel/index.txt", - "type": "file", - "size": 4928, - "lastModified": "2025-09-26T01:53:29Z" - }, - { - "name": "ldp/", - "href": "/dashboard/download/dashboard/panel/ldp/", - "type": "dir", - "lastModified": "2025-09-26T01:53:29Z" - }, - { - "name": "subscription/", - "href": "/dashboard/download/dashboard/panel/subscription/", - "type": "dir", - "lastModified": "2025-09-26T01:53:30Z" - }, - { - "name": "xray/", - "href": "/dashboard/download/dashboard/panel/xray/", - "type": "dir", - "lastModified": "2025-09-26T01:53:30Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/panel/account/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/panel/account/index.html", - "type": "file", - "size": 11163, - "lastModified": "2025-09-26T01:53:29Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/panel/account/index.txt", - "type": "file", - "size": 4062, - "lastModified": "2025-09-26T01:53:29Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/panel/agent/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/panel/agent/index.html", - "type": "file", - "size": 11121, - "lastModified": "2025-09-26T01:53:29Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/panel/agent/index.txt", - "type": "file", - "size": 4040, - "lastModified": "2025-09-26T01:53:29Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/panel/api/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/panel/api/index.html", - "type": "file", - "size": 11079, - "lastModified": "2025-09-26T01:53:29Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/panel/api/index.txt", - "type": "file", - "size": 4018, - "lastModified": "2025-09-26T01:53:29Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/panel/ldp/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/panel/ldp/index.html", - "type": "file", - "size": 11079, - "lastModified": "2025-09-26T01:53:29Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/panel/ldp/index.txt", - "type": "file", - "size": 4018, - "lastModified": "2025-09-26T01:53:29Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/panel/subscription/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/panel/subscription/index.html", - "type": "file", - "size": 11267, - "lastModified": "2025-09-26T01:53:30Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/panel/subscription/index.txt", - "type": "file", - "size": 4117, - "lastModified": "2025-09-26T01:53:30Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/panel/xray/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/panel/xray/index.html", - "type": "file", - "size": 11100, - "lastModified": "2025-09-26T01:53:30Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/panel/xray/index.txt", - "type": "file", - "size": 4029, - "lastModified": "2025-09-26T01:53:30Z" - } - ] - }, - { - "path": "dashboard/download/dashboard/register/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/dashboard/register/index.html", - "type": "file", - "size": 10924, - "lastModified": "2025-09-26T01:53:30Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/dashboard/register/index.txt", - "type": "file", - "size": 4006, - "lastModified": "2025-09-26T01:53:30Z" - } - ] - }, - { - "path": "dashboard/download/deb/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/deb/index.html", - "type": "file", - "size": 9506, - "lastModified": "2025-09-26T01:53:30Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/deb/index.txt", - "type": "file", - "size": 3735, - "lastModified": "2025-09-26T01:53:30Z" - } - ] - }, - { - "path": "dashboard/download/docs/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/docs/index.html", - "type": "file", - "size": 7885, - "lastModified": "2025-09-26T01:53:30Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/docs/index.txt", - "type": "file", - "size": 3625, - "lastModified": "2025-09-26T01:53:30Z" - } - ] - }, - { - "path": "dashboard/download/offline-package/", - "entries": [ - { - "name": "apisix-gateway/", - "href": "/dashboard/download/offline-package/apisix-gateway/", - "type": "dir", - "lastModified": "2025-09-26T01:53:30Z" - }, - { - "name": "index.html", - "href": "/dashboard/download/offline-package/index.html", - "type": "file", - "size": 13148, - "lastModified": "2025-09-26T01:53:30Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/offline-package/index.txt", - "type": "file", - "size": 4618, - "lastModified": "2025-09-26T01:53:30Z" - }, - { - "name": "k3s/", - "href": "/dashboard/download/offline-package/k3s/", - "type": "dir", - "lastModified": "2025-09-26T01:53:30Z" - }, - { - "name": "kong-gateway/", - "href": "/dashboard/download/offline-package/kong-gateway/", - "type": "dir", - "lastModified": "2025-09-26T01:53:30Z" - }, - { - "name": "nginx-ingress/", - "href": "/dashboard/download/offline-package/nginx-ingress/", - "type": "dir", - "lastModified": "2025-09-26T01:53:31Z" - }, - { - "name": "sealos/", - "href": "/dashboard/download/offline-package/sealos/", - "type": "dir", - "lastModified": "2025-09-26T01:53:31Z" - } - ] - }, - { - "path": "dashboard/download/offline-package/apisix-gateway/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/offline-package/apisix-gateway/index.html", - "type": "file", - "size": 12650, - "lastModified": "2025-09-26T01:53:30Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/offline-package/apisix-gateway/index.txt", - "type": "file", - "size": 4567, - "lastModified": "2025-09-26T01:53:30Z" - } - ] - }, - { - "path": "dashboard/download/offline-package/k3s/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/offline-package/k3s/index.html", - "type": "file", - "size": 13768, - "lastModified": "2025-09-26T01:53:30Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/offline-package/k3s/index.txt", - "type": "file", - "size": 4741, - "lastModified": "2025-09-26T01:53:30Z" - } - ] - }, - { - "path": "dashboard/download/offline-package/kong-gateway/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/offline-package/kong-gateway/index.html", - "type": "file", - "size": 12580, - "lastModified": "2025-09-26T01:53:30Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/offline-package/kong-gateway/index.txt", - "type": "file", - "size": 4529, - "lastModified": "2025-09-26T01:53:30Z" - } - ] - }, - { - "path": "dashboard/download/offline-package/nginx-ingress/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/offline-package/nginx-ingress/index.html", - "type": "file", - "size": 12616, - "lastModified": "2025-09-26T01:53:30Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/offline-package/nginx-ingress/index.txt", - "type": "file", - "size": 4548, - "lastModified": "2025-09-26T01:53:31Z" - } - ] - }, - { - "path": "dashboard/download/offline-package/sealos/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/offline-package/sealos/index.html", - "type": "file", - "size": 12393, - "lastModified": "2025-09-26T01:53:31Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/offline-package/sealos/index.txt", - "type": "file", - "size": 4423, - "lastModified": "2025-09-26T01:53:31Z" - } - ] - }, - { - "path": "dashboard/download/otel/", - "entries": [ - { - "name": "OpenTelemetry/", - "href": "/dashboard/download/otel/OpenTelemetry/", - "type": "dir", - "lastModified": "2025-09-26T01:53:31Z" - }, - { - "name": "index.html", - "href": "/dashboard/download/otel/index.html", - "type": "file", - "size": 9395, - "lastModified": "2025-09-26T01:53:31Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/otel/index.txt", - "type": "file", - "size": 3788, - "lastModified": "2025-09-26T01:53:31Z" - } - ] - }, - { - "path": "dashboard/download/otel/OpenTelemetry/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/otel/OpenTelemetry/index.html", - "type": "file", - "size": 9772, - "lastModified": "2025-09-26T01:53:31Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/otel/OpenTelemetry/index.txt", - "type": "file", - "size": 3928, - "lastModified": "2025-09-26T01:53:31Z" - }, - { - "name": "v0.133.0/", - "href": "/dashboard/download/otel/OpenTelemetry/v0.133.0/", - "type": "dir", - "lastModified": "2025-09-26T01:53:31Z" - } - ] - }, - { - "path": "dashboard/download/otel/OpenTelemetry/v0.133.0/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/otel/OpenTelemetry/v0.133.0/index.html", - "type": "file", - "size": 13792, - "lastModified": "2025-09-26T01:53:31Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/otel/OpenTelemetry/v0.133.0/index.txt", - "type": "file", - "size": 4618, - "lastModified": "2025-09-26T01:53:31Z" - } - ] - }, - { - "path": "dashboard/download/rpm/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/rpm/index.html", - "type": "file", - "size": 7868, - "lastModified": "2025-09-26T01:53:31Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/rpm/index.txt", - "type": "file", - "size": 3616, - "lastModified": "2025-09-26T01:53:31Z" - } - ] - }, - { - "path": "dashboard/download/sealos/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/sealos/index.html", - "type": "file", - "size": 11192, - "lastModified": "2025-09-26T01:53:31Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/sealos/index.txt", - "type": "file", - "size": 4159, - "lastModified": "2025-09-26T01:53:31Z" - }, - { - "name": "offline-sealos-5/", - "href": "/dashboard/download/sealos/offline-sealos-5/", - "type": "dir", - "lastModified": "2025-09-26T01:53:31Z" - }, - { - "name": "offline-sealos-6/", - "href": "/dashboard/download/sealos/offline-sealos-6/", - "type": "dir", - "lastModified": "2025-09-26T01:53:31Z" - }, - { - "name": "offline-sealos-8/", - "href": "/dashboard/download/sealos/offline-sealos-8/", - "type": "dir", - "lastModified": "2025-09-26T01:53:32Z" - } - ] - }, - { - "path": "dashboard/download/sealos/offline-sealos-5/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/sealos/offline-sealos-5/index.html", - "type": "file", - "size": 8327, - "lastModified": "2025-09-26T01:53:31Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/sealos/offline-sealos-5/index.txt", - "type": "file", - "size": 3795, - "lastModified": "2025-09-26T01:53:31Z" - } - ] - }, - { - "path": "dashboard/download/sealos/offline-sealos-6/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/sealos/offline-sealos-6/index.html", - "type": "file", - "size": 8327, - "lastModified": "2025-09-26T01:53:31Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/sealos/offline-sealos-6/index.txt", - "type": "file", - "size": 3795, - "lastModified": "2025-09-26T01:53:31Z" - } - ] - }, - { - "path": "dashboard/download/sealos/offline-sealos-8/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/sealos/offline-sealos-8/index.html", - "type": "file", - "size": 8327, - "lastModified": "2025-09-26T01:53:32Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/sealos/offline-sealos-8/index.txt", - "type": "file", - "size": 3795, - "lastModified": "2025-09-26T01:53:32Z" - } - ] - }, - { - "path": "dashboard/download/xray-core/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/xray-core/index.html", - "type": "file", - "size": 13681, - "lastModified": "2025-09-26T01:53:32Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/xray-core/index.txt", - "type": "file", - "size": 4597, - "lastModified": "2025-09-26T01:53:32Z" - }, - { - "name": "v25.8.29/", - "href": "/dashboard/download/xray-core/v25.8.29/", - "type": "dir", - "lastModified": "2025-09-26T01:53:32Z" - }, - { - "name": "v25.8.3/", - "href": "/dashboard/download/xray-core/v25.8.3/", - "type": "dir", - "lastModified": "2025-09-26T01:53:32Z" - }, - { - "name": "v25.8.31/", - "href": "/dashboard/download/xray-core/v25.8.31/", - "type": "dir", - "lastModified": "2025-09-26T01:53:32Z" - }, - { - "name": "v25.9.10/", - "href": "/dashboard/download/xray-core/v25.9.10/", - "type": "dir", - "lastModified": "2025-09-26T01:53:32Z" - }, - { - "name": "v25.9.11/", - "href": "/dashboard/download/xray-core/v25.9.11/", - "type": "dir", - "lastModified": "2025-09-26T01:53:32Z" - }, - { - "name": "v25.9.5/", - "href": "/dashboard/download/xray-core/v25.9.5/", - "type": "dir", - "lastModified": "2025-09-26T01:53:32Z" - } - ] - }, - { - "path": "dashboard/download/xray-core/v25.8.29/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/xray-core/v25.8.29/index.html", - "type": "file", - "size": 12063, - "lastModified": "2025-09-26T01:53:32Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/xray-core/v25.8.29/index.txt", - "type": "file", - "size": 4192, - "lastModified": "2025-09-26T01:53:32Z" - } - ] - }, - { - "path": "dashboard/download/xray-core/v25.8.3/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/xray-core/v25.8.3/index.html", - "type": "file", - "size": 12036, - "lastModified": "2025-09-26T01:53:32Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/xray-core/v25.8.3/index.txt", - "type": "file", - "size": 4180, - "lastModified": "2025-09-26T01:53:32Z" - } - ] - }, - { - "path": "dashboard/download/xray-core/v25.8.31/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/xray-core/v25.8.31/index.html", - "type": "file", - "size": 12059, - "lastModified": "2025-09-26T01:53:32Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/xray-core/v25.8.31/index.txt", - "type": "file", - "size": 4192, - "lastModified": "2025-09-26T01:53:32Z" - } - ] - }, - { - "path": "dashboard/download/xray-core/v25.9.10/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/xray-core/v25.9.10/index.html", - "type": "file", - "size": 8235, - "lastModified": "2025-09-26T01:53:32Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/xray-core/v25.9.10/index.txt", - "type": "file", - "size": 3747, - "lastModified": "2025-09-26T01:53:32Z" - } - ] - }, - { - "path": "dashboard/download/xray-core/v25.9.11/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/xray-core/v25.9.11/index.html", - "type": "file", - "size": 8235, - "lastModified": "2025-09-26T01:53:32Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/xray-core/v25.9.11/index.txt", - "type": "file", - "size": 3747, - "lastModified": "2025-09-26T01:53:32Z" - } - ] - }, - { - "path": "dashboard/download/xray-core/v25.9.5/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/xray-core/v25.9.5/index.html", - "type": "file", - "size": 8218, - "lastModified": "2025-09-26T01:53:32Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/xray-core/v25.9.5/index.txt", - "type": "file", - "size": 3738, - "lastModified": "2025-09-26T01:53:32Z" - } - ] - }, - { - "path": "dashboard/download/xstream/", - "entries": [ - { - "name": "android/", - "href": "/dashboard/download/xstream/android/", - "type": "dir", - "lastModified": "2025-09-26T01:53:33Z" - }, - { - "name": "index.html", - "href": "/dashboard/download/xstream/index.html", - "type": "file", - "size": 12705, - "lastModified": "2025-09-26T01:53:32Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/xstream/index.txt", - "type": "file", - "size": 4362, - "lastModified": "2025-09-26T01:53:32Z" - }, - { - "name": "ios/", - "href": "/dashboard/download/xstream/ios/", - "type": "dir", - "lastModified": "2025-09-26T01:53:33Z" - }, - { - "name": "linux/", - "href": "/dashboard/download/xstream/linux/", - "type": "dir", - "lastModified": "2025-09-26T01:53:33Z" - }, - { - "name": "macos/", - "href": "/dashboard/download/xstream/macos/", - "type": "dir", - "lastModified": "2025-09-26T01:53:34Z" - }, - { - "name": "windows/", - "href": "/dashboard/download/xstream/windows/", - "type": "dir", - "lastModified": "2025-09-26T01:53:34Z" - } - ] - }, - { - "path": "dashboard/download/xstream/android/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/xstream/android/index.html", - "type": "file", - "size": 9703, - "lastModified": "2025-09-26T01:53:32Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/xstream/android/index.txt", - "type": "file", - "size": 3889, - "lastModified": "2025-09-26T01:53:33Z" - }, - { - "name": "latest/", - "href": "/dashboard/download/xstream/android/latest/", - "type": "dir", - "lastModified": "2025-09-26T01:53:33Z" - } - ] - }, - { - "path": "dashboard/download/xstream/android/latest/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/xstream/android/latest/index.html", - "type": "file", - "size": 10176, - "lastModified": "2025-09-26T01:53:33Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/xstream/android/latest/index.txt", - "type": "file", - "size": 3958, - "lastModified": "2025-09-26T01:53:33Z" - } - ] - }, - { - "path": "dashboard/download/xstream/ios/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/xstream/ios/index.html", - "type": "file", - "size": 9623, - "lastModified": "2025-09-26T01:53:33Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/xstream/ios/index.txt", - "type": "file", - "size": 3845, - "lastModified": "2025-09-26T01:53:33Z" - }, - { - "name": "latest/", - "href": "/dashboard/download/xstream/ios/latest/", - "type": "dir", - "lastModified": "2025-09-26T01:53:33Z" - } - ] - }, - { - "path": "dashboard/download/xstream/ios/latest/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/xstream/ios/latest/index.html", - "type": "file", - "size": 10093, - "lastModified": "2025-09-26T01:53:33Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/xstream/ios/latest/index.txt", - "type": "file", - "size": 3914, - "lastModified": "2025-09-26T01:53:33Z" - } - ] - }, - { - "path": "dashboard/download/xstream/linux/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/xstream/linux/index.html", - "type": "file", - "size": 10506, - "lastModified": "2025-09-26T01:53:33Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/xstream/linux/index.txt", - "type": "file", - "size": 4021, - "lastModified": "2025-09-26T01:53:33Z" - }, - { - "name": "latest/", - "href": "/dashboard/download/xstream/linux/latest/", - "type": "dir", - "lastModified": "2025-09-26T01:53:33Z" - }, - { - "name": "stable/", - "href": "/dashboard/download/xstream/linux/stable/", - "type": "dir", - "lastModified": "2025-09-26T01:53:33Z" - } - ] - }, - { - "path": "dashboard/download/xstream/linux/latest/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/xstream/linux/latest/index.html", - "type": "file", - "size": 10135, - "lastModified": "2025-09-26T01:53:33Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/xstream/linux/latest/index.txt", - "type": "file", - "size": 3936, - "lastModified": "2025-09-26T01:53:33Z" - } - ] - }, - { - "path": "dashboard/download/xstream/linux/stable/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/xstream/linux/stable/index.html", - "type": "file", - "size": 10137, - "lastModified": "2025-09-26T01:53:33Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/xstream/linux/stable/index.txt", - "type": "file", - "size": 3936, - "lastModified": "2025-09-26T01:53:33Z" - } - ] - }, - { - "path": "dashboard/download/xstream/macos/", - "entries": [ - { - "name": "docs/", - "href": "/dashboard/download/xstream/macos/docs/", - "type": "dir", - "lastModified": "2025-09-26T01:53:33Z" - }, - { - "name": "index.html", - "href": "/dashboard/download/xstream/macos/index.html", - "type": "file", - "size": 11337, - "lastModified": "2025-09-26T01:53:33Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/xstream/macos/index.txt", - "type": "file", - "size": 4169, - "lastModified": "2025-09-26T01:53:33Z" - }, - { - "name": "latest/", - "href": "/dashboard/download/xstream/macos/latest/", - "type": "dir", - "lastModified": "2025-09-26T01:53:34Z" - }, - { - "name": "stable/", - "href": "/dashboard/download/xstream/macos/stable/", - "type": "dir", - "lastModified": "2025-09-26T01:53:34Z" - } - ] - }, - { - "path": "dashboard/download/xstream/macos/docs/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/xstream/macos/docs/index.html", - "type": "file", - "size": 8369, - "lastModified": "2025-09-26T01:53:33Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/xstream/macos/docs/index.txt", - "type": "file", - "size": 3749, - "lastModified": "2025-09-26T01:53:33Z" - } - ] - }, - { - "path": "dashboard/download/xstream/macos/latest/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/xstream/macos/latest/index.html", - "type": "file", - "size": 10135, - "lastModified": "2025-09-26T01:53:33Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/xstream/macos/latest/index.txt", - "type": "file", - "size": 3936, - "lastModified": "2025-09-26T01:53:34Z" - } - ] - }, - { - "path": "dashboard/download/xstream/macos/stable/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/xstream/macos/stable/index.html", - "type": "file", - "size": 11234, - "lastModified": "2025-09-26T01:53:34Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/xstream/macos/stable/index.txt", - "type": "file", - "size": 4100, - "lastModified": "2025-09-26T01:53:34Z" - } - ] - }, - { - "path": "dashboard/download/xstream/windows/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/xstream/windows/index.html", - "type": "file", - "size": 12236, - "lastModified": "2025-09-26T01:53:34Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/xstream/windows/index.txt", - "type": "file", - "size": 4357, - "lastModified": "2025-09-26T01:53:34Z" - }, - { - "name": "latest/", - "href": "/dashboard/download/xstream/windows/latest/", - "type": "dir", - "lastModified": "2025-09-26T01:53:34Z" - }, - { - "name": "stable/", - "href": "/dashboard/download/xstream/windows/stable/", - "type": "dir", - "lastModified": "2025-09-26T01:53:34Z" - }, - { - "name": "win10/", - "href": "/dashboard/download/xstream/windows/win10/", - "type": "dir", - "lastModified": "2025-09-26T01:53:34Z" - }, - { - "name": "win11/", - "href": "/dashboard/download/xstream/windows/win11/", - "type": "dir", - "lastModified": "2025-09-26T01:53:34Z" - } - ] - }, - { - "path": "dashboard/download/xstream/windows/latest/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/xstream/windows/latest/index.html", - "type": "file", - "size": 10177, - "lastModified": "2025-09-26T01:53:34Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/xstream/windows/latest/index.txt", - "type": "file", - "size": 3958, - "lastModified": "2025-09-26T01:53:34Z" - } - ] - }, - { - "path": "dashboard/download/xstream/windows/stable/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/xstream/windows/stable/index.html", - "type": "file", - "size": 10179, - "lastModified": "2025-09-26T01:53:34Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/xstream/windows/stable/index.txt", - "type": "file", - "size": 3958, - "lastModified": "2025-09-26T01:53:34Z" - } - ] - }, - { - "path": "dashboard/download/xstream/windows/win10/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/xstream/windows/win10/index.html", - "type": "file", - "size": 8416, - "lastModified": "2025-09-26T01:53:34Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/xstream/windows/win10/index.txt", - "type": "file", - "size": 3774, - "lastModified": "2025-09-26T01:53:34Z" - } - ] - }, - { - "path": "dashboard/download/xstream/windows/win11/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/download/xstream/windows/win11/index.html", - "type": "file", - "size": 8416, - "lastModified": "2025-09-26T01:53:34Z" - }, - { - "name": "index.txt", - "href": "/dashboard/download/xstream/windows/win11/index.txt", - "type": "file", - "size": 3774, - "lastModified": "2025-09-26T01:53:34Z" - } - ] - }, - { - "path": "dashboard/icons/", - "entries": [ - { - "name": "cloudnative_32.png", - "href": "/dashboard/icons/cloudnative_32.png", - "type": "file", - "size": 1486, - "lastModified": "2025-09-26T01:53:34Z" - } - ] - }, - { - "path": "dashboard/insight/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/insight/index.html", - "type": "file", - "size": 23810, - "lastModified": "2025-09-26T01:53:34Z" - }, - { - "name": "index.txt", - "href": "/dashboard/insight/index.txt", - "type": "file", - "size": 2739, - "lastModified": "2025-09-26T01:53:34Z" - } - ] - }, - { - "path": "dashboard/login/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/login/index.html", - "type": "file", - "size": 4454, - "lastModified": "2025-09-26T01:53:34Z" - }, - { - "name": "index.txt", - "href": "/dashboard/login/index.txt", - "type": "file", - "size": 2647, - "lastModified": "2025-09-26T01:53:34Z" - } - ] - }, - { - "path": "dashboard/panel/", - "entries": [ - { - "name": "account/", - "href": "/dashboard/panel/account/", - "type": "dir", - "lastModified": "2025-09-26T01:53:35Z" - }, - { - "name": "agent/", - "href": "/dashboard/panel/agent/", - "type": "dir", - "lastModified": "2025-09-26T01:53:35Z" - }, - { - "name": "api/", - "href": "/dashboard/panel/api/", - "type": "dir", - "lastModified": "2025-09-26T01:53:35Z" - }, - { - "name": "index.html", - "href": "/dashboard/panel/index.html", - "type": "file", - "size": 16113, - "lastModified": "2025-09-26T01:53:34Z" - }, - { - "name": "index.txt", - "href": "/dashboard/panel/index.txt", - "type": "file", - "size": 4173, - "lastModified": "2025-09-26T01:53:35Z" - }, - { - "name": "ldp/", - "href": "/dashboard/panel/ldp/", - "type": "dir", - "lastModified": "2025-09-26T01:53:35Z" - }, - { - "name": "subscription/", - "href": "/dashboard/panel/subscription/", - "type": "dir", - "lastModified": "2025-09-26T01:53:35Z" - }, - { - "name": "xray/", - "href": "/dashboard/panel/xray/", - "type": "dir", - "lastModified": "2025-09-26T01:53:35Z" - } - ] - }, - { - "path": "dashboard/panel/account/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/panel/account/index.html", - "type": "file", - "size": 14801, - "lastModified": "2025-09-26T01:53:35Z" - }, - { - "name": "index.txt", - "href": "/dashboard/panel/account/index.txt", - "type": "file", - "size": 3639, - "lastModified": "2025-09-26T01:53:35Z" - } - ] - }, - { - "path": "dashboard/panel/agent/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/panel/agent/index.html", - "type": "file", - "size": 14757, - "lastModified": "2025-09-26T01:53:35Z" - }, - { - "name": "index.txt", - "href": "/dashboard/panel/agent/index.txt", - "type": "file", - "size": 3615, - "lastModified": "2025-09-26T01:53:35Z" - } - ] - }, - { - "path": "dashboard/panel/api/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/panel/api/index.html", - "type": "file", - "size": 14713, - "lastModified": "2025-09-26T01:53:35Z" - }, - { - "name": "index.txt", - "href": "/dashboard/panel/api/index.txt", - "type": "file", - "size": 3591, - "lastModified": "2025-09-26T01:53:35Z" - } - ] - }, - { - "path": "dashboard/panel/ldp/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/panel/ldp/index.html", - "type": "file", - "size": 19018, - "lastModified": "2025-09-26T01:53:35Z" - }, - { - "name": "index.txt", - "href": "/dashboard/panel/ldp/index.txt", - "type": "file", - "size": 5911, - "lastModified": "2025-09-26T01:53:35Z" - } - ] - }, - { - "path": "dashboard/panel/subscription/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/panel/subscription/index.html", - "type": "file", - "size": 14743, - "lastModified": "2025-09-26T01:53:35Z" - }, - { - "name": "index.txt", - "href": "/dashboard/panel/subscription/index.txt", - "type": "file", - "size": 3615, - "lastModified": "2025-09-26T01:53:35Z" - } - ] - }, - { - "path": "dashboard/panel/xray/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/panel/xray/index.html", - "type": "file", - "size": 14719, - "lastModified": "2025-09-26T01:53:35Z" - }, - { - "name": "index.txt", - "href": "/dashboard/panel/xray/index.txt", - "type": "file", - "size": 3595, - "lastModified": "2025-09-26T01:53:35Z" - } - ] - }, - { - "path": "dashboard/register/", - "entries": [ - { - "name": "index.html", - "href": "/dashboard/register/index.html", - "type": "file", - "size": 4472, - "lastModified": "2025-09-26T01:53:35Z" - }, - { - "name": "index.txt", - "href": "/dashboard/register/index.txt", - "type": "file", - "size": 2662, - "lastModified": "2025-09-26T01:53:35Z" - } - ] - }, - { - "path": "deb/", - "entries": [ - { - "name": "example.deb", - "href": "/deb/example.deb", - "type": "file", - "size": 0, - "lastModified": "2025-09-19T02:01:25Z" - } - ] - }, - { - "path": "docs/", - "entries": [ - { - "name": "Keycloak/", - "href": "/docs/Keycloak/", - "type": "dir", - "lastModified": "2025-09-25T12:34:02Z" - }, - { - "name": "LandingZone/", - "href": "/docs/LandingZone/", - "type": "dir", - "lastModified": "2025-09-25T12:34:02Z" - }, - { - "name": "Linux-K8S-OPS/", - "href": "/docs/Linux-K8S-OPS/", - "type": "dir", - "lastModified": "2025-09-25T12:35:19Z" - }, - { - "name": "Observability/", - "href": "/docs/Observability/", - "type": "dir", - "lastModified": "2025-09-25T11:07:40Z" - }, - { - "name": "Personal/", - "href": "/docs/Personal/", - "type": "dir", - "lastModified": "2025-09-25T11:55:22Z" - }, - { - "name": "TechExploration/", - "href": "/docs/TechExploration/", - "type": "dir", - "lastModified": "2025-09-25T12:23:45Z" - }, - { - "name": "The-IndieDeveloper-Fullstack-Roadmap/", - "href": "/docs/The-IndieDeveloper-Fullstack-Roadmap/", - "type": "dir", - "lastModified": "2025-09-25T12:29:13Z" - }, - { - "name": "interview-qa/", - "href": "/docs/interview-qa/", - "type": "dir", - "lastModified": "2025-09-19T01:59:55Z" - } - ] - }, - { - "path": "docs/Keycloak/", - "entries": [ - { - "name": "EN-v33-17996525102/", - "href": "/docs/Keycloak/EN-v33-17996525102/", - "type": "dir", - "lastModified": "2025-09-25T12:34:01Z" - }, - { - "name": "EN-v34-18001960544/", - "href": "/docs/Keycloak/EN-v34-18001960544/", - "type": "dir", - "lastModified": "2025-09-25T12:34:01Z" - }, - { - "name": "EN-v35-18002040798/", - "href": "/docs/Keycloak/EN-v35-18002040798/", - "type": "dir", - "lastModified": "2025-09-25T12:34:01Z" - }, - { - "name": "EN-v36-18002294267/", - "href": "/docs/Keycloak/EN-v36-18002294267/", - "type": "dir", - "lastModified": "2025-09-25T12:34:01Z" - }, - { - "name": "EN-v39-18004672680/", - "href": "/docs/Keycloak/EN-v39-18004672680/", - "type": "dir", - "lastModified": "2025-09-25T12:34:01Z" - }, - { - "name": "EN-v40-18004678416/", - "href": "/docs/Keycloak/EN-v40-18004678416/", - "type": "dir", - "lastModified": "2025-09-25T12:34:02Z" - }, - { - "name": "EN-v41-18005142964/", - "href": "/docs/Keycloak/EN-v41-18005142964/", - "type": "dir", - "lastModified": "2025-09-25T12:34:02Z" - }, - { - "name": "EN-v42-18006148753/", - "href": "/docs/Keycloak/EN-v42-18006148753/", - "type": "dir", - "lastModified": "2025-09-25T12:34:02Z" - } - ] - }, - { - "path": "docs/Keycloak/EN-v33-17996525102/", - "entries": [ - { - "name": "Keycloak-SSO-Design-and-Implementation.html", - "href": "/docs/Keycloak/EN-v33-17996525102/Keycloak-SSO-Design-and-Implementation.html", - "type": "file", - "size": 32769, - "lastModified": "2025-09-25T12:34:01Z" - } - ] - }, - { - "path": "docs/Keycloak/EN-v34-18001960544/", - "entries": [ - { - "name": "Keycloak-SSO-Design-and-Implementation.html", - "href": "/docs/Keycloak/EN-v34-18001960544/Keycloak-SSO-Design-and-Implementation.html", - "type": "file", - "size": 32769, - "lastModified": "2025-09-25T12:34:01Z" - } - ] - }, - { - "path": "docs/Keycloak/EN-v35-18002040798/", - "entries": [ - { - "name": "Keycloak-SSO-Design-and-Implementation.html", - "href": "/docs/Keycloak/EN-v35-18002040798/Keycloak-SSO-Design-and-Implementation.html", - "type": "file", - "size": 32769, - "lastModified": "2025-09-25T12:34:01Z" - } - ] - }, - { - "path": "docs/Keycloak/EN-v36-18002294267/", - "entries": [ - { - "name": "Keycloak-SSO-Design-and-Implementation.html", - "href": "/docs/Keycloak/EN-v36-18002294267/Keycloak-SSO-Design-and-Implementation.html", - "type": "file", - "size": 32769, - "lastModified": "2025-09-25T12:34:01Z" - } - ] - }, - { - "path": "docs/Keycloak/EN-v39-18004672680/", - "entries": [ - { - "name": "Keycloak-SSO-Design-and-Implementation.html", - "href": "/docs/Keycloak/EN-v39-18004672680/Keycloak-SSO-Design-and-Implementation.html", - "type": "file", - "size": 32769, - "lastModified": "2025-09-25T12:34:01Z" - } - ] - }, - { - "path": "docs/Keycloak/EN-v40-18004678416/", - "entries": [ - { - "name": "Keycloak-SSO-Design-and-Implementation.html", - "href": "/docs/Keycloak/EN-v40-18004678416/Keycloak-SSO-Design-and-Implementation.html", - "type": "file", - "size": 32769, - "lastModified": "2025-09-25T12:34:02Z" - } - ] - }, - { - "path": "docs/Keycloak/EN-v41-18005142964/", - "entries": [ - { - "name": "Keycloak-SSO-Design-and-Implementation.html", - "href": "/docs/Keycloak/EN-v41-18005142964/Keycloak-SSO-Design-and-Implementation.html", - "type": "file", - "size": 32769, - "lastModified": "2025-09-25T12:34:02Z" - } - ] - }, - { - "path": "docs/Keycloak/EN-v42-18006148753/", - "entries": [ - { - "name": "Keycloak-SSO-Design-and-Implementation.html", - "href": "/docs/Keycloak/EN-v42-18006148753/Keycloak-SSO-Design-and-Implementation.html", - "type": "file", - "size": 32769, - "lastModified": "2025-09-25T12:34:02Z" - } - ] - }, - { - "path": "docs/LandingZone/", - "entries": [ - { - "name": "EN-v33-17996525102/", - "href": "/docs/LandingZone/EN-v33-17996525102/", - "type": "dir", - "lastModified": "2025-09-25T12:34:02Z" - }, - { - "name": "EN-v34-18001960544/", - "href": "/docs/LandingZone/EN-v34-18001960544/", - "type": "dir", - "lastModified": "2025-09-25T12:34:02Z" - }, - { - "name": "EN-v35-18002040798/", - "href": "/docs/LandingZone/EN-v35-18002040798/", - "type": "dir", - "lastModified": "2025-09-25T12:34:02Z" - }, - { - "name": "EN-v36-18002294267/", - "href": "/docs/LandingZone/EN-v36-18002294267/", - "type": "dir", - "lastModified": "2025-09-25T12:34:02Z" - }, - { - "name": "EN-v37-18002553627/", - "href": "/docs/LandingZone/EN-v37-18002553627/", - "type": "dir", - "lastModified": "2025-09-25T12:34:02Z" - }, - { - "name": "EN-v38-18003957466/", - "href": "/docs/LandingZone/EN-v38-18003957466/", - "type": "dir", - "lastModified": "2025-09-25T12:34:02Z" - }, - { - "name": "EN-v39-18004672680/", - "href": "/docs/LandingZone/EN-v39-18004672680/", - "type": "dir", - "lastModified": "2025-09-25T12:34:02Z" - }, - { - "name": "EN-v40-18004678416/", - "href": "/docs/LandingZone/EN-v40-18004678416/", - "type": "dir", - "lastModified": "2025-09-25T12:34:02Z" - }, - { - "name": "EN-v41-18005142964/", - "href": "/docs/LandingZone/EN-v41-18005142964/", - "type": "dir", - "lastModified": "2025-09-25T12:34:02Z" - }, - { - "name": "EN-v42-18006148753/", - "href": "/docs/LandingZone/EN-v42-18006148753/", - "type": "dir", - "lastModified": "2025-09-25T12:34:02Z" - } - ] - }, - { - "path": "docs/LandingZone/EN-v33-17996525102/", - "entries": [ - { - "name": "Landing-Zone-Design-and-Implementation.pdf", - "href": "/docs/LandingZone/EN-v33-17996525102/Landing-Zone-Design-and-Implementation.pdf", - "type": "file", - "size": 77101, - "lastModified": "2025-09-25T12:34:02Z" - } - ] - }, - { - "path": "docs/LandingZone/EN-v34-18001960544/", - "entries": [ - { - "name": "Landing-Zone-Design-and-Implementation.pdf", - "href": "/docs/LandingZone/EN-v34-18001960544/Landing-Zone-Design-and-Implementation.pdf", - "type": "file", - "size": 77103, - "lastModified": "2025-09-25T12:34:02Z" - } - ] - }, - { - "path": "docs/LandingZone/EN-v35-18002040798/", - "entries": [ - { - "name": "Landing-Zone-Design-and-Implementation.pdf", - "href": "/docs/LandingZone/EN-v35-18002040798/Landing-Zone-Design-and-Implementation.pdf", - "type": "file", - "size": 77103, - "lastModified": "2025-09-25T12:34:02Z" - } - ] - }, - { - "path": "docs/LandingZone/EN-v36-18002294267/", - "entries": [ - { - "name": "Landing-Zone-Design-and-Implementation.pdf", - "href": "/docs/LandingZone/EN-v36-18002294267/Landing-Zone-Design-and-Implementation.pdf", - "type": "file", - "size": 77102, - "lastModified": "2025-09-25T12:34:02Z" - } - ] - }, - { - "path": "docs/LandingZone/EN-v37-18002553627/", - "entries": [ - { - "name": "Landing-Zone-Design-and-Implementation.pdf", - "href": "/docs/LandingZone/EN-v37-18002553627/Landing-Zone-Design-and-Implementation.pdf", - "type": "file", - "size": 77101, - "lastModified": "2025-09-25T12:34:02Z" - } - ] - }, - { - "path": "docs/LandingZone/EN-v38-18003957466/", - "entries": [ - { - "name": "Landing-Zone-Design-and-Implementation.pdf", - "href": "/docs/LandingZone/EN-v38-18003957466/Landing-Zone-Design-and-Implementation.pdf", - "type": "file", - "size": 77102, - "lastModified": "2025-09-25T12:34:02Z" - } - ] - }, - { - "path": "docs/LandingZone/EN-v39-18004672680/", - "entries": [ - { - "name": "Landing-Zone-Design-and-Implementation.pdf", - "href": "/docs/LandingZone/EN-v39-18004672680/Landing-Zone-Design-and-Implementation.pdf", - "type": "file", - "size": 77104, - "lastModified": "2025-09-25T12:34:02Z" - } - ] - }, - { - "path": "docs/LandingZone/EN-v40-18004678416/", - "entries": [ - { - "name": "Landing-Zone-Design-and-Implementation.pdf", - "href": "/docs/LandingZone/EN-v40-18004678416/Landing-Zone-Design-and-Implementation.pdf", - "type": "file", - "size": 77108, - "lastModified": "2025-09-25T12:34:02Z" - } - ] - }, - { - "path": "docs/LandingZone/EN-v41-18005142964/", - "entries": [ - { - "name": "Landing-Zone-Design-and-Implementation.pdf", - "href": "/docs/LandingZone/EN-v41-18005142964/Landing-Zone-Design-and-Implementation.pdf", - "type": "file", - "size": 77098, - "lastModified": "2025-09-25T12:34:02Z" - } - ] - }, - { - "path": "docs/LandingZone/EN-v42-18006148753/", - "entries": [ - { - "name": "Landing-Zone-Design-and-Implementation.pdf", - "href": "/docs/LandingZone/EN-v42-18006148753/Landing-Zone-Design-and-Implementation.pdf", - "type": "file", - "size": 77104, - "lastModified": "2025-09-25T12:34:02Z" - } - ] - }, - { - "path": "docs/Linux-K8S-OPS/", - "entries": [ - { - "name": "CN-v33-17996525102/", - "href": "/docs/Linux-K8S-OPS/CN-v33-17996525102/", - "type": "dir", - "lastModified": "2025-09-25T12:34:02Z" - }, - { - "name": "CN-v39-18004672680/", - "href": "/docs/Linux-K8S-OPS/CN-v39-18004672680/", - "type": "dir", - "lastModified": "2025-09-25T12:34:03Z" - }, - { - "name": "CN-v40-18004678416/", - "href": "/docs/Linux-K8S-OPS/CN-v40-18004678416/", - "type": "dir", - "lastModified": "2025-09-25T12:34:03Z" - }, - { - "name": "CN-v41-18005142964/", - "href": "/docs/Linux-K8S-OPS/CN-v41-18005142964/", - "type": "dir", - "lastModified": "2025-09-25T12:35:19Z" - }, - { - "name": "CN-v42-18006148753/", - "href": "/docs/Linux-K8S-OPS/CN-v42-18006148753/", - "type": "dir", - "lastModified": "2025-09-25T12:33:21Z" - } - ] - }, - { - "path": "docs/Linux-K8S-OPS/CN-v33-17996525102/", - "entries": [ - { - "name": "Linux-K8S-OPS-Guide.html", - "href": "/docs/Linux-K8S-OPS/CN-v33-17996525102/Linux-K8S-OPS-Guide.html", - "type": "file", - "size": 20768, - "lastModified": "2025-09-25T12:34:02Z" - }, - { - "name": "Linux-K8S-OPS-Guide.pdf", - "href": "/docs/Linux-K8S-OPS/CN-v33-17996525102/Linux-K8S-OPS-Guide.pdf", - "type": "file", - "size": 154725, - "lastModified": "2025-09-25T12:34:02Z" - } - ] - }, - { - "path": "docs/Linux-K8S-OPS/CN-v39-18004672680/", - "entries": [ - { - "name": "Linux-K8S-OPS-Guide.html", - "href": "/docs/Linux-K8S-OPS/CN-v39-18004672680/Linux-K8S-OPS-Guide.html", - "type": "file", - "size": 228068, - "lastModified": "2025-09-25T12:34:02Z" - }, - { - "name": "Linux-K8S-OPS-Guide.pdf", - "href": "/docs/Linux-K8S-OPS/CN-v39-18004672680/Linux-K8S-OPS-Guide.pdf", - "type": "file", - "size": 390075, - "lastModified": "2025-09-25T12:34:03Z" - } - ] - }, - { - "path": "docs/Linux-K8S-OPS/CN-v40-18004678416/", - "entries": [ - { - "name": "Linux-K8S-OPS-Guide.html", - "href": "/docs/Linux-K8S-OPS/CN-v40-18004678416/Linux-K8S-OPS-Guide.html", - "type": "file", - "size": 228068, - "lastModified": "2025-09-25T12:34:03Z" - }, - { - "name": "Linux-K8S-OPS-Guide.pdf", - "href": "/docs/Linux-K8S-OPS/CN-v40-18004678416/Linux-K8S-OPS-Guide.pdf", - "type": "file", - "size": 390082, - "lastModified": "2025-09-25T12:34:03Z" - } - ] - }, - { - "path": "docs/Linux-K8S-OPS/CN-v41-18005142964/", - "entries": [ - { - "name": "Linux-K8S-OPS-Guide.html", - "href": "/docs/Linux-K8S-OPS/CN-v41-18005142964/Linux-K8S-OPS-Guide.html", - "type": "file", - "size": 228068, - "lastModified": "2025-09-25T12:34:27Z" - }, - { - "name": "Linux-K8S-OPS-Guide.pdf", - "href": "/docs/Linux-K8S-OPS/CN-v41-18005142964/Linux-K8S-OPS-Guide.pdf", - "type": "file", - "size": 390082, - "lastModified": "2025-09-25T12:35:19Z" - } - ] - }, - { - "path": "docs/Linux-K8S-OPS/CN-v42-18006148753/", - "entries": [] - }, - { - "path": "docs/Observability/", - "entries": [ - { - "name": "CN-v33-17996525102/", - "href": "/docs/Observability/CN-v33-17996525102/", - "type": "dir", - "lastModified": "2025-09-25T10:56:03Z" - }, - { - "name": "CN-v36-18002294267/", - "href": "/docs/Observability/CN-v36-18002294267/", - "type": "dir", - "lastModified": "2025-09-25T10:58:38Z" - }, - { - "name": "CN-v37-18002553627/", - "href": "/docs/Observability/CN-v37-18002553627/", - "type": "dir", - "lastModified": "2025-09-25T11:02:40Z" - }, - { - "name": "CN-v39-18004672680/", - "href": "/docs/Observability/CN-v39-18004672680/", - "type": "dir", - "lastModified": "2025-09-25T11:04:44Z" - }, - { - "name": "CN-v40-18004678416/", - "href": "/docs/Observability/CN-v40-18004678416/", - "type": "dir", - "lastModified": "2025-09-25T11:07:40Z" - }, - { - "name": "CN-v41-18005142964/", - "href": "/docs/Observability/CN-v41-18005142964/", - "type": "dir", - "lastModified": "2025-09-25T12:33:21Z" - }, - { - "name": "CN-v42-18006148753/", - "href": "/docs/Observability/CN-v42-18006148753/", - "type": "dir", - "lastModified": "2025-09-25T12:33:21Z" - } - ] - }, - { - "path": "docs/Observability/CN-v33-17996525102/", - "entries": [ - { - "name": "Observability-Design-and-Implementation.html", - "href": "/docs/Observability/CN-v33-17996525102/Observability-Design-and-Implementation.html", - "type": "file", - "size": 301718, - "lastModified": "2025-09-25T10:56:00Z" - }, - { - "name": "Observability-Design-and-Implementation.pdf", - "href": "/docs/Observability/CN-v33-17996525102/Observability-Design-and-Implementation.pdf", - "type": "file", - "size": 731774, - "lastModified": "2025-09-25T10:56:03Z" - } - ] - }, - { - "path": "docs/Observability/CN-v36-18002294267/", - "entries": [ - { - "name": "Observability-Design-and-Implementation.html", - "href": "/docs/Observability/CN-v36-18002294267/Observability-Design-and-Implementation.html", - "type": "file", - "size": 301718, - "lastModified": "2025-09-25T10:56:49Z" - }, - { - "name": "Observability-Design-and-Implementation.pdf", - "href": "/docs/Observability/CN-v36-18002294267/Observability-Design-and-Implementation.pdf", - "type": "file", - "size": 731781, - "lastModified": "2025-09-25T10:58:38Z" - } - ] - }, - { - "path": "docs/Observability/CN-v37-18002553627/", - "entries": [ - { - "name": "Observability-Design-and-Implementation.html", - "href": "/docs/Observability/CN-v37-18002553627/Observability-Design-and-Implementation.html", - "type": "file", - "size": 301718, - "lastModified": "2025-09-25T11:00:00Z" - }, - { - "name": "Observability-Design-and-Implementation.pdf", - "href": "/docs/Observability/CN-v37-18002553627/Observability-Design-and-Implementation.pdf", - "type": "file", - "size": 731773, - "lastModified": "2025-09-25T11:02:40Z" - } - ] - }, - { - "path": "docs/Observability/CN-v39-18004672680/", - "entries": [ - { - "name": "Observability-Design-and-Implementation.html", - "href": "/docs/Observability/CN-v39-18004672680/Observability-Design-and-Implementation.html", - "type": "file", - "size": 301718, - "lastModified": "2025-09-25T11:03:19Z" - }, - { - "name": "Observability-Design-and-Implementation.pdf", - "href": "/docs/Observability/CN-v39-18004672680/Observability-Design-and-Implementation.pdf", - "type": "file", - "size": 731779, - "lastModified": "2025-09-25T11:04:44Z" - } - ] - }, - { - "path": "docs/Observability/CN-v40-18004678416/", - "entries": [ - { - "name": "Observability-Design-and-Implementation.html", - "href": "/docs/Observability/CN-v40-18004678416/Observability-Design-and-Implementation.html", - "type": "file", - "size": 301718, - "lastModified": "2025-09-25T11:05:42Z" - }, - { - "name": "Observability-Design-and-Implementation.pdf", - "href": "/docs/Observability/CN-v40-18004678416/Observability-Design-and-Implementation.pdf", - "type": "file", - "size": 731777, - "lastModified": "2025-09-25T11:07:40Z" - } - ] - }, - { - "path": "docs/Observability/CN-v41-18005142964/", - "entries": [] - }, - { - "path": "docs/Observability/CN-v42-18006148753/", - "entries": [] - }, - { - "path": "docs/Personal/", - "entries": [ - { - "name": "EN-v33-17996525102/", - "href": "/docs/Personal/EN-v33-17996525102/", - "type": "dir", - "lastModified": "2025-09-25T11:07:42Z" - }, - { - "name": "EN-v34-18001960544/", - "href": "/docs/Personal/EN-v34-18001960544/", - "type": "dir", - "lastModified": "2025-09-25T11:13:14Z" - }, - { - "name": "EN-v36-18002294267/", - "href": "/docs/Personal/EN-v36-18002294267/", - "type": "dir", - "lastModified": "2025-09-25T11:21:22Z" - }, - { - "name": "EN-v37-18002553627/", - "href": "/docs/Personal/EN-v37-18002553627/", - "type": "dir", - "lastModified": "2025-09-25T11:33:42Z" - }, - { - "name": "EN-v39-18004672680/", - "href": "/docs/Personal/EN-v39-18004672680/", - "type": "dir", - "lastModified": "2025-09-25T11:43:41Z" - }, - { - "name": "EN-v40-18004678416/", - "href": "/docs/Personal/EN-v40-18004678416/", - "type": "dir", - "lastModified": "2025-09-25T11:55:22Z" - }, - { - "name": "EN-v41-18005142964/", - "href": "/docs/Personal/EN-v41-18005142964/", - "type": "dir", - "lastModified": "2025-09-25T12:33:22Z" - }, - { - "name": "EN-v42-18006148753/", - "href": "/docs/Personal/EN-v42-18006148753/", - "type": "dir", - "lastModified": "2025-09-25T12:33:22Z" - } - ] - }, - { - "path": "docs/Personal/EN-v33-17996525102/", - "entries": [ - { - "name": "ActiveBalance-Plan.html", - "href": "/docs/Personal/EN-v33-17996525102/ActiveBalance-Plan.html", - "type": "file", - "size": 5461, - "lastModified": "2025-09-25T11:07:40Z" - }, - { - "name": "ActiveBalance-Plan.pdf", - "href": "/docs/Personal/EN-v33-17996525102/ActiveBalance-Plan.pdf", - "type": "file", - "size": 76344, - "lastModified": "2025-09-25T11:07:40Z" - }, - { - "name": "CV-AI-Dev-EN.html", - "href": "/docs/Personal/EN-v33-17996525102/CV-AI-Dev-EN.html", - "type": "file", - "size": 10218, - "lastModified": "2025-09-25T11:07:40Z" - }, - { - "name": "CV-AI-Dev-EN.pdf", - "href": "/docs/Personal/EN-v33-17996525102/CV-AI-Dev-EN.pdf", - "type": "file", - "size": 51820, - "lastModified": "2025-09-25T11:07:40Z" - }, - { - "name": "CV-AI-Dev-ZH.html", - "href": "/docs/Personal/EN-v33-17996525102/CV-AI-Dev-ZH.html", - "type": "file", - "size": 20180, - "lastModified": "2025-09-25T11:07:40Z" - }, - { - "name": "CV-AI-Dev-ZH.pdf", - "href": "/docs/Personal/EN-v33-17996525102/CV-AI-Dev-ZH.pdf", - "type": "file", - "size": 199122, - "lastModified": "2025-09-25T11:07:41Z" - }, - { - "name": "CV-EN.html", - "href": "/docs/Personal/EN-v33-17996525102/CV-EN.html", - "type": "file", - "size": 23062, - "lastModified": "2025-09-25T11:07:41Z" - }, - { - "name": "CV-EN.pdf", - "href": "/docs/Personal/EN-v33-17996525102/CV-EN.pdf", - "type": "file", - "size": 63733, - "lastModified": "2025-09-25T11:07:41Z" - }, - { - "name": "CV-ZH.html", - "href": "/docs/Personal/EN-v33-17996525102/CV-ZH.html", - "type": "file", - "size": 20238, - "lastModified": "2025-09-25T11:07:41Z" - }, - { - "name": "CV-ZH.pdf", - "href": "/docs/Personal/EN-v33-17996525102/CV-ZH.pdf", - "type": "file", - "size": 170872, - "lastModified": "2025-09-25T11:07:41Z" - }, - { - "name": "README.html", - "href": "/docs/Personal/EN-v33-17996525102/README.html", - "type": "file", - "size": 3295, - "lastModified": "2025-09-25T11:07:41Z" - }, - { - "name": "README.pdf", - "href": "/docs/Personal/EN-v33-17996525102/README.pdf", - "type": "file", - "size": 52031, - "lastModified": "2025-09-25T11:07:41Z" - }, - { - "name": "Resume-DevOPS-ZH.html", - "href": "/docs/Personal/EN-v33-17996525102/Resume-DevOPS-ZH.html", - "type": "file", - "size": 8949, - "lastModified": "2025-09-25T11:07:41Z" - }, - { - "name": "Resume-DevOPS-ZH.pdf", - "href": "/docs/Personal/EN-v33-17996525102/Resume-DevOPS-ZH.pdf", - "type": "file", - "size": 138280, - "lastModified": "2025-09-25T11:07:41Z" - }, - { - "name": "Resume-DevOps-EN.html", - "href": "/docs/Personal/EN-v33-17996525102/Resume-DevOps-EN.html", - "type": "file", - "size": 9670, - "lastModified": "2025-09-25T11:07:41Z" - }, - { - "name": "Resume-DevOps-EN.pdf", - "href": "/docs/Personal/EN-v33-17996525102/Resume-DevOps-EN.pdf", - "type": "file", - "size": 50985, - "lastModified": "2025-09-25T11:07:41Z" - }, - { - "name": "Resume-EN.html", - "href": "/docs/Personal/EN-v33-17996525102/Resume-EN.html", - "type": "file", - "size": 10706, - "lastModified": "2025-09-25T11:07:41Z" - }, - { - "name": "Resume-EN.pdf", - "href": "/docs/Personal/EN-v33-17996525102/Resume-EN.pdf", - "type": "file", - "size": 57375, - "lastModified": "2025-09-25T11:07:41Z" - }, - { - "name": "Resume-ZH.html", - "href": "/docs/Personal/EN-v33-17996525102/Resume-ZH.html", - "type": "file", - "size": 17297, - "lastModified": "2025-09-25T11:07:41Z" - }, - { - "name": "Resume-ZH.pdf", - "href": "/docs/Personal/EN-v33-17996525102/Resume-ZH.pdf", - "type": "file", - "size": 179975, - "lastModified": "2025-09-25T11:07:41Z" - }, - { - "name": "cet-6.html", - "href": "/docs/Personal/EN-v33-17996525102/cet-6.html", - "type": "file", - "size": 448346, - "lastModified": "2025-09-25T11:07:41Z" - }, - { - "name": "cet-6.pdf", - "href": "/docs/Personal/EN-v33-17996525102/cet-6.pdf", - "type": "file", - "size": 1192645, - "lastModified": "2025-09-25T11:07:42Z" - }, - { - "name": "fullstack-language-core.html", - "href": "/docs/Personal/EN-v33-17996525102/fullstack-language-core.html", - "type": "file", - "size": 11943, - "lastModified": "2025-09-25T11:07:42Z" - }, - { - "name": "fullstack-language-core.pdf", - "href": "/docs/Personal/EN-v33-17996525102/fullstack-language-core.pdf", - "type": "file", - "size": 70432, - "lastModified": "2025-09-25T11:07:42Z" - } - ] - }, - { - "path": "docs/Personal/EN-v34-18001960544/", - "entries": [ - { - "name": "ActiveBalance-Plan.html", - "href": "/docs/Personal/EN-v34-18001960544/ActiveBalance-Plan.html", - "type": "file", - "size": 5461, - "lastModified": "2025-09-25T11:07:42Z" - }, - { - "name": "ActiveBalance-Plan.pdf", - "href": "/docs/Personal/EN-v34-18001960544/ActiveBalance-Plan.pdf", - "type": "file", - "size": 76343, - "lastModified": "2025-09-25T11:07:48Z" - }, - { - "name": "CV-AI-Dev-EN.html", - "href": "/docs/Personal/EN-v34-18001960544/CV-AI-Dev-EN.html", - "type": "file", - "size": 10218, - "lastModified": "2025-09-25T11:07:48Z" - }, - { - "name": "CV-AI-Dev-EN.pdf", - "href": "/docs/Personal/EN-v34-18001960544/CV-AI-Dev-EN.pdf", - "type": "file", - "size": 51820, - "lastModified": "2025-09-25T11:07:53Z" - }, - { - "name": "CV-AI-Dev-ZH.html", - "href": "/docs/Personal/EN-v34-18001960544/CV-AI-Dev-ZH.html", - "type": "file", - "size": 20180, - "lastModified": "2025-09-25T11:07:53Z" - }, - { - "name": "CV-AI-Dev-ZH.pdf", - "href": "/docs/Personal/EN-v34-18001960544/CV-AI-Dev-ZH.pdf", - "type": "file", - "size": 199126, - "lastModified": "2025-09-25T11:08:07Z" - }, - { - "name": "CV-EN.html", - "href": "/docs/Personal/EN-v34-18001960544/CV-EN.html", - "type": "file", - "size": 23062, - "lastModified": "2025-09-25T11:08:08Z" - }, - { - "name": "CV-EN.pdf", - "href": "/docs/Personal/EN-v34-18001960544/CV-EN.pdf", - "type": "file", - "size": 63735, - "lastModified": "2025-09-25T11:08:12Z" - }, - { - "name": "CV-ZH.html", - "href": "/docs/Personal/EN-v34-18001960544/CV-ZH.html", - "type": "file", - "size": 20238, - "lastModified": "2025-09-25T11:08:14Z" - }, - { - "name": "CV-ZH.pdf", - "href": "/docs/Personal/EN-v34-18001960544/CV-ZH.pdf", - "type": "file", - "size": 170866, - "lastModified": "2025-09-25T11:08:24Z" - }, - { - "name": "README.html", - "href": "/docs/Personal/EN-v34-18001960544/README.html", - "type": "file", - "size": 3295, - "lastModified": "2025-09-25T11:08:24Z" - }, - { - "name": "README.pdf", - "href": "/docs/Personal/EN-v34-18001960544/README.pdf", - "type": "file", - "size": 52031, - "lastModified": "2025-09-25T11:08:26Z" - }, - { - "name": "Resume-DevOPS-ZH.html", - "href": "/docs/Personal/EN-v34-18001960544/Resume-DevOPS-ZH.html", - "type": "file", - "size": 8949, - "lastModified": "2025-09-25T11:08:29Z" - }, - { - "name": "Resume-DevOPS-ZH.pdf", - "href": "/docs/Personal/EN-v34-18001960544/Resume-DevOPS-ZH.pdf", - "type": "file", - "size": 138283, - "lastModified": "2025-09-25T11:08:38Z" - }, - { - "name": "Resume-DevOps-EN.html", - "href": "/docs/Personal/EN-v34-18001960544/Resume-DevOps-EN.html", - "type": "file", - "size": 9670, - "lastModified": "2025-09-25T11:08:38Z" - }, - { - "name": "Resume-DevOps-EN.pdf", - "href": "/docs/Personal/EN-v34-18001960544/Resume-DevOps-EN.pdf", - "type": "file", - "size": 50980, - "lastModified": "2025-09-25T11:08:42Z" - }, - { - "name": "Resume-EN.html", - "href": "/docs/Personal/EN-v34-18001960544/Resume-EN.html", - "type": "file", - "size": 10706, - "lastModified": "2025-09-25T11:08:42Z" - }, - { - "name": "Resume-EN.pdf", - "href": "/docs/Personal/EN-v34-18001960544/Resume-EN.pdf", - "type": "file", - "size": 57376, - "lastModified": "2025-09-25T11:08:50Z" - }, - { - "name": "Resume-ZH.html", - "href": "/docs/Personal/EN-v34-18001960544/Resume-ZH.html", - "type": "file", - "size": 17297, - "lastModified": "2025-09-25T11:08:50Z" - }, - { - "name": "Resume-ZH.pdf", - "href": "/docs/Personal/EN-v34-18001960544/Resume-ZH.pdf", - "type": "file", - "size": 179974, - "lastModified": "2025-09-25T11:09:05Z" - }, - { - "name": "cet-6.html", - "href": "/docs/Personal/EN-v34-18001960544/cet-6.html", - "type": "file", - "size": 448346, - "lastModified": "2025-09-25T11:10:09Z" - }, - { - "name": "cet-6.pdf", - "href": "/docs/Personal/EN-v34-18001960544/cet-6.pdf", - "type": "file", - "size": 1192647, - "lastModified": "2025-09-25T11:13:01Z" - }, - { - "name": "fullstack-language-core.html", - "href": "/docs/Personal/EN-v34-18001960544/fullstack-language-core.html", - "type": "file", - "size": 11943, - "lastModified": "2025-09-25T11:13:01Z" - }, - { - "name": "fullstack-language-core.pdf", - "href": "/docs/Personal/EN-v34-18001960544/fullstack-language-core.pdf", - "type": "file", - "size": 70428, - "lastModified": "2025-09-25T11:13:14Z" - } - ] - }, - { - "path": "docs/Personal/EN-v36-18002294267/", - "entries": [ - { - "name": "ActiveBalance-Plan.html", - "href": "/docs/Personal/EN-v36-18002294267/ActiveBalance-Plan.html", - "type": "file", - "size": 5461, - "lastModified": "2025-09-25T11:13:20Z" - }, - { - "name": "ActiveBalance-Plan.pdf", - "href": "/docs/Personal/EN-v36-18002294267/ActiveBalance-Plan.pdf", - "type": "file", - "size": 76346, - "lastModified": "2025-09-25T11:13:44Z" - }, - { - "name": "CV-AI-Dev-EN.html", - "href": "/docs/Personal/EN-v36-18002294267/CV-AI-Dev-EN.html", - "type": "file", - "size": 10218, - "lastModified": "2025-09-25T11:13:44Z" - }, - { - "name": "CV-AI-Dev-EN.pdf", - "href": "/docs/Personal/EN-v36-18002294267/CV-AI-Dev-EN.pdf", - "type": "file", - "size": 51820, - "lastModified": "2025-09-25T11:14:01Z" - }, - { - "name": "CV-AI-Dev-ZH.html", - "href": "/docs/Personal/EN-v36-18002294267/CV-AI-Dev-ZH.html", - "type": "file", - "size": 20180, - "lastModified": "2025-09-25T11:14:13Z" - }, - { - "name": "CV-AI-Dev-ZH.pdf", - "href": "/docs/Personal/EN-v36-18002294267/CV-AI-Dev-ZH.pdf", - "type": "file", - "size": 199123, - "lastModified": "2025-09-25T11:14:44Z" - }, - { - "name": "CV-EN.html", - "href": "/docs/Personal/EN-v36-18002294267/CV-EN.html", - "type": "file", - "size": 23062, - "lastModified": "2025-09-25T11:14:44Z" - }, - { - "name": "CV-EN.pdf", - "href": "/docs/Personal/EN-v36-18002294267/CV-EN.pdf", - "type": "file", - "size": 63735, - "lastModified": "2025-09-25T11:14:52Z" - }, - { - "name": "CV-ZH.html", - "href": "/docs/Personal/EN-v36-18002294267/CV-ZH.html", - "type": "file", - "size": 20238, - "lastModified": "2025-09-25T11:14:56Z" - }, - { - "name": "CV-ZH.pdf", - "href": "/docs/Personal/EN-v36-18002294267/CV-ZH.pdf", - "type": "file", - "size": 170870, - "lastModified": "2025-09-25T11:15:19Z" - }, - { - "name": "README.html", - "href": "/docs/Personal/EN-v36-18002294267/README.html", - "type": "file", - "size": 3295, - "lastModified": "2025-09-25T11:15:19Z" - }, - { - "name": "README.pdf", - "href": "/docs/Personal/EN-v36-18002294267/README.pdf", - "type": "file", - "size": 52033, - "lastModified": "2025-09-25T11:15:26Z" - }, - { - "name": "Resume-DevOPS-ZH.html", - "href": "/docs/Personal/EN-v36-18002294267/Resume-DevOPS-ZH.html", - "type": "file", - "size": 8949, - "lastModified": "2025-09-25T11:15:26Z" - }, - { - "name": "Resume-DevOPS-ZH.pdf", - "href": "/docs/Personal/EN-v36-18002294267/Resume-DevOPS-ZH.pdf", - "type": "file", - "size": 138289, - "lastModified": "2025-09-25T11:15:40Z" - }, - { - "name": "Resume-DevOps-EN.html", - "href": "/docs/Personal/EN-v36-18002294267/Resume-DevOps-EN.html", - "type": "file", - "size": 9670, - "lastModified": "2025-09-25T11:15:45Z" - }, - { - "name": "Resume-DevOps-EN.pdf", - "href": "/docs/Personal/EN-v36-18002294267/Resume-DevOps-EN.pdf", - "type": "file", - "size": 50988, - "lastModified": "2025-09-25T11:15:50Z" - }, - { - "name": "Resume-EN.html", - "href": "/docs/Personal/EN-v36-18002294267/Resume-EN.html", - "type": "file", - "size": 10706, - "lastModified": "2025-09-25T11:15:50Z" - }, - { - "name": "Resume-EN.pdf", - "href": "/docs/Personal/EN-v36-18002294267/Resume-EN.pdf", - "type": "file", - "size": 57376, - "lastModified": "2025-09-25T11:16:00Z" - }, - { - "name": "Resume-ZH.html", - "href": "/docs/Personal/EN-v36-18002294267/Resume-ZH.html", - "type": "file", - "size": 17297, - "lastModified": "2025-09-25T11:16:07Z" - }, - { - "name": "Resume-ZH.pdf", - "href": "/docs/Personal/EN-v36-18002294267/Resume-ZH.pdf", - "type": "file", - "size": 179975, - "lastModified": "2025-09-25T11:16:29Z" - }, - { - "name": "cet-6.html", - "href": "/docs/Personal/EN-v36-18002294267/cet-6.html", - "type": "file", - "size": 448346, - "lastModified": "2025-09-25T11:17:29Z" - }, - { - "name": "cet-6.pdf", - "href": "/docs/Personal/EN-v36-18002294267/cet-6.pdf", - "type": "file", - "size": 1192642, - "lastModified": "2025-09-25T11:20:56Z" - }, - { - "name": "fullstack-language-core.html", - "href": "/docs/Personal/EN-v36-18002294267/fullstack-language-core.html", - "type": "file", - "size": 11943, - "lastModified": "2025-09-25T11:21:05Z" - }, - { - "name": "fullstack-language-core.pdf", - "href": "/docs/Personal/EN-v36-18002294267/fullstack-language-core.pdf", - "type": "file", - "size": 70429, - "lastModified": "2025-09-25T11:21:22Z" - } - ] - }, - { - "path": "docs/Personal/EN-v37-18002553627/", - "entries": [ - { - "name": "ActiveBalance-Plan.html", - "href": "/docs/Personal/EN-v37-18002553627/ActiveBalance-Plan.html", - "type": "file", - "size": 5461, - "lastModified": "2025-09-25T11:21:22Z" - }, - { - "name": "ActiveBalance-Plan.pdf", - "href": "/docs/Personal/EN-v37-18002553627/ActiveBalance-Plan.pdf", - "type": "file", - "size": 76341, - "lastModified": "2025-09-25T11:21:35Z" - }, - { - "name": "CV-AI-Dev-EN.html", - "href": "/docs/Personal/EN-v37-18002553627/CV-AI-Dev-EN.html", - "type": "file", - "size": 10218, - "lastModified": "2025-09-25T11:21:51Z" - }, - { - "name": "CV-AI-Dev-EN.pdf", - "href": "/docs/Personal/EN-v37-18002553627/CV-AI-Dev-EN.pdf", - "type": "file", - "size": 51821, - "lastModified": "2025-09-25T11:22:01Z" - }, - { - "name": "CV-AI-Dev-ZH.html", - "href": "/docs/Personal/EN-v37-18002553627/CV-AI-Dev-ZH.html", - "type": "file", - "size": 20180, - "lastModified": "2025-09-25T11:22:10Z" - }, - { - "name": "CV-AI-Dev-ZH.pdf", - "href": "/docs/Personal/EN-v37-18002553627/CV-AI-Dev-ZH.pdf", - "type": "file", - "size": 199119, - "lastModified": "2025-09-25T11:22:49Z" - }, - { - "name": "CV-EN.html", - "href": "/docs/Personal/EN-v37-18002553627/CV-EN.html", - "type": "file", - "size": 23062, - "lastModified": "2025-09-25T11:22:55Z" - }, - { - "name": "CV-EN.pdf", - "href": "/docs/Personal/EN-v37-18002553627/CV-EN.pdf", - "type": "file", - "size": 63734, - "lastModified": "2025-09-25T11:23:07Z" - }, - { - "name": "CV-ZH.html", - "href": "/docs/Personal/EN-v37-18002553627/CV-ZH.html", - "type": "file", - "size": 20238, - "lastModified": "2025-09-25T11:23:07Z" - }, - { - "name": "CV-ZH.pdf", - "href": "/docs/Personal/EN-v37-18002553627/CV-ZH.pdf", - "type": "file", - "size": 170875, - "lastModified": "2025-09-25T11:23:46Z" - }, - { - "name": "README.html", - "href": "/docs/Personal/EN-v37-18002553627/README.html", - "type": "file", - "size": 3295, - "lastModified": "2025-09-25T11:23:55Z" - }, - { - "name": "README.pdf", - "href": "/docs/Personal/EN-v37-18002553627/README.pdf", - "type": "file", - "size": 52027, - "lastModified": "2025-09-25T11:24:01Z" - }, - { - "name": "Resume-DevOPS-ZH.html", - "href": "/docs/Personal/EN-v37-18002553627/Resume-DevOPS-ZH.html", - "type": "file", - "size": 8949, - "lastModified": "2025-09-25T11:24:01Z" - }, - { - "name": "Resume-DevOPS-ZH.pdf", - "href": "/docs/Personal/EN-v37-18002553627/Resume-DevOPS-ZH.pdf", - "type": "file", - "size": 138282, - "lastModified": "2025-09-25T11:24:31Z" - }, - { - "name": "Resume-DevOps-EN.html", - "href": "/docs/Personal/EN-v37-18002553627/Resume-DevOps-EN.html", - "type": "file", - "size": 9670, - "lastModified": "2025-09-25T11:24:31Z" - }, - { - "name": "Resume-DevOps-EN.pdf", - "href": "/docs/Personal/EN-v37-18002553627/Resume-DevOps-EN.pdf", - "type": "file", - "size": 50982, - "lastModified": "2025-09-25T11:24:37Z" - }, - { - "name": "Resume-EN.html", - "href": "/docs/Personal/EN-v37-18002553627/Resume-EN.html", - "type": "file", - "size": 10706, - "lastModified": "2025-09-25T11:24:44Z" - }, - { - "name": "Resume-EN.pdf", - "href": "/docs/Personal/EN-v37-18002553627/Resume-EN.pdf", - "type": "file", - "size": 57379, - "lastModified": "2025-09-25T11:25:02Z" - }, - { - "name": "Resume-ZH.html", - "href": "/docs/Personal/EN-v37-18002553627/Resume-ZH.html", - "type": "file", - "size": 17297, - "lastModified": "2025-09-25T11:25:02Z" - }, - { - "name": "Resume-ZH.pdf", - "href": "/docs/Personal/EN-v37-18002553627/Resume-ZH.pdf", - "type": "file", - "size": 179971, - "lastModified": "2025-09-25T11:25:58Z" - }, - { - "name": "cet-6.html", - "href": "/docs/Personal/EN-v37-18002553627/cet-6.html", - "type": "file", - "size": 448346, - "lastModified": "2025-09-25T11:28:26Z" - }, - { - "name": "cet-6.pdf", - "href": "/docs/Personal/EN-v37-18002553627/cet-6.pdf", - "type": "file", - "size": 1192643, - "lastModified": "2025-09-25T11:33:34Z" - }, - { - "name": "fullstack-language-core.html", - "href": "/docs/Personal/EN-v37-18002553627/fullstack-language-core.html", - "type": "file", - "size": 11943, - "lastModified": "2025-09-25T11:33:34Z" - }, - { - "name": "fullstack-language-core.pdf", - "href": "/docs/Personal/EN-v37-18002553627/fullstack-language-core.pdf", - "type": "file", - "size": 70426, - "lastModified": "2025-09-25T11:33:42Z" - } - ] - }, - { - "path": "docs/Personal/EN-v39-18004672680/", - "entries": [ - { - "name": "ActiveBalance-Plan.html", - "href": "/docs/Personal/EN-v39-18004672680/ActiveBalance-Plan.html", - "type": "file", - "size": 5461, - "lastModified": "2025-09-25T11:33:42Z" - }, - { - "name": "ActiveBalance-Plan.pdf", - "href": "/docs/Personal/EN-v39-18004672680/ActiveBalance-Plan.pdf", - "type": "file", - "size": 76346, - "lastModified": "2025-09-25T11:34:00Z" - }, - { - "name": "CV-AI-Dev-EN.html", - "href": "/docs/Personal/EN-v39-18004672680/CV-AI-Dev-EN.html", - "type": "file", - "size": 10218, - "lastModified": "2025-09-25T11:34:00Z" - }, - { - "name": "CV-AI-Dev-EN.pdf", - "href": "/docs/Personal/EN-v39-18004672680/CV-AI-Dev-EN.pdf", - "type": "file", - "size": 51824, - "lastModified": "2025-09-25T11:34:15Z" - }, - { - "name": "CV-AI-Dev-ZH.html", - "href": "/docs/Personal/EN-v39-18004672680/CV-AI-Dev-ZH.html", - "type": "file", - "size": 20180, - "lastModified": "2025-09-25T11:34:15Z" - }, - { - "name": "CV-AI-Dev-ZH.pdf", - "href": "/docs/Personal/EN-v39-18004672680/CV-AI-Dev-ZH.pdf", - "type": "file", - "size": 199123, - "lastModified": "2025-09-25T11:35:24Z" - }, - { - "name": "CV-EN.html", - "href": "/docs/Personal/EN-v39-18004672680/CV-EN.html", - "type": "file", - "size": 23062, - "lastModified": "2025-09-25T11:35:36Z" - }, - { - "name": "CV-EN.pdf", - "href": "/docs/Personal/EN-v39-18004672680/CV-EN.pdf", - "type": "file", - "size": 63734, - "lastModified": "2025-09-25T11:36:08Z" - }, - { - "name": "CV-ZH.html", - "href": "/docs/Personal/EN-v39-18004672680/CV-ZH.html", - "type": "file", - "size": 20238, - "lastModified": "2025-09-25T11:36:25Z" - }, - { - "name": "CV-ZH.pdf", - "href": "/docs/Personal/EN-v39-18004672680/CV-ZH.pdf", - "type": "file", - "size": 170870, - "lastModified": "2025-09-25T11:37:12Z" - }, - { - "name": "README.html", - "href": "/docs/Personal/EN-v39-18004672680/README.html", - "type": "file", - "size": 3295, - "lastModified": "2025-09-25T11:37:12Z" - }, - { - "name": "README.pdf", - "href": "/docs/Personal/EN-v39-18004672680/README.pdf", - "type": "file", - "size": 52031, - "lastModified": "2025-09-25T11:37:18Z" - }, - { - "name": "Resume-DevOPS-ZH.html", - "href": "/docs/Personal/EN-v39-18004672680/Resume-DevOPS-ZH.html", - "type": "file", - "size": 8949, - "lastModified": "2025-09-25T11:37:26Z" - }, - { - "name": "Resume-DevOPS-ZH.pdf", - "href": "/docs/Personal/EN-v39-18004672680/Resume-DevOPS-ZH.pdf", - "type": "file", - "size": 138286, - "lastModified": "2025-09-25T11:37:50Z" - }, - { - "name": "Resume-DevOps-EN.html", - "href": "/docs/Personal/EN-v39-18004672680/Resume-DevOps-EN.html", - "type": "file", - "size": 9670, - "lastModified": "2025-09-25T11:37:50Z" - }, - { - "name": "Resume-DevOps-EN.pdf", - "href": "/docs/Personal/EN-v39-18004672680/Resume-DevOps-EN.pdf", - "type": "file", - "size": 50984, - "lastModified": "2025-09-25T11:38:03Z" - }, - { - "name": "Resume-EN.html", - "href": "/docs/Personal/EN-v39-18004672680/Resume-EN.html", - "type": "file", - "size": 10706, - "lastModified": "2025-09-25T11:38:03Z" - }, - { - "name": "Resume-EN.pdf", - "href": "/docs/Personal/EN-v39-18004672680/Resume-EN.pdf", - "type": "file", - "size": 57384, - "lastModified": "2025-09-25T11:38:19Z" - }, - { - "name": "Resume-ZH.html", - "href": "/docs/Personal/EN-v39-18004672680/Resume-ZH.html", - "type": "file", - "size": 17297, - "lastModified": "2025-09-25T11:38:19Z" - }, - { - "name": "Resume-ZH.pdf", - "href": "/docs/Personal/EN-v39-18004672680/Resume-ZH.pdf", - "type": "file", - "size": 179971, - "lastModified": "2025-09-25T11:38:38Z" - }, - { - "name": "cet-6.html", - "href": "/docs/Personal/EN-v39-18004672680/cet-6.html", - "type": "file", - "size": 448346, - "lastModified": "2025-09-25T11:40:00Z" - }, - { - "name": "cet-6.pdf", - "href": "/docs/Personal/EN-v39-18004672680/cet-6.pdf", - "type": "file", - "size": 1192646, - "lastModified": "2025-09-25T11:43:13Z" - }, - { - "name": "fullstack-language-core.html", - "href": "/docs/Personal/EN-v39-18004672680/fullstack-language-core.html", - "type": "file", - "size": 11943, - "lastModified": "2025-09-25T11:43:13Z" - }, - { - "name": "fullstack-language-core.pdf", - "href": "/docs/Personal/EN-v39-18004672680/fullstack-language-core.pdf", - "type": "file", - "size": 70432, - "lastModified": "2025-09-25T11:43:41Z" - } - ] - }, - { - "path": "docs/Personal/EN-v40-18004678416/", - "entries": [ - { - "name": "ActiveBalance-Plan.html", - "href": "/docs/Personal/EN-v40-18004678416/ActiveBalance-Plan.html", - "type": "file", - "size": 5461, - "lastModified": "2025-09-25T11:43:41Z" - }, - { - "name": "ActiveBalance-Plan.pdf", - "href": "/docs/Personal/EN-v40-18004678416/ActiveBalance-Plan.pdf", - "type": "file", - "size": 76347, - "lastModified": "2025-09-25T11:44:02Z" - }, - { - "name": "CV-AI-Dev-EN.html", - "href": "/docs/Personal/EN-v40-18004678416/CV-AI-Dev-EN.html", - "type": "file", - "size": 10218, - "lastModified": "2025-09-25T11:44:02Z" - }, - { - "name": "CV-AI-Dev-EN.pdf", - "href": "/docs/Personal/EN-v40-18004678416/CV-AI-Dev-EN.pdf", - "type": "file", - "size": 51819, - "lastModified": "2025-09-25T11:44:21Z" - }, - { - "name": "CV-AI-Dev-ZH.html", - "href": "/docs/Personal/EN-v40-18004678416/CV-AI-Dev-ZH.html", - "type": "file", - "size": 20180, - "lastModified": "2025-09-25T11:44:31Z" - }, - { - "name": "CV-AI-Dev-ZH.pdf", - "href": "/docs/Personal/EN-v40-18004678416/CV-AI-Dev-ZH.pdf", - "type": "file", - "size": 199120, - "lastModified": "2025-09-25T11:45:09Z" - }, - { - "name": "CV-EN.html", - "href": "/docs/Personal/EN-v40-18004678416/CV-EN.html", - "type": "file", - "size": 23062, - "lastModified": "2025-09-25T11:45:09Z" - }, - { - "name": "CV-EN.pdf", - "href": "/docs/Personal/EN-v40-18004678416/CV-EN.pdf", - "type": "file", - "size": 63735, - "lastModified": "2025-09-25T11:45:23Z" - }, - { - "name": "CV-ZH.html", - "href": "/docs/Personal/EN-v40-18004678416/CV-ZH.html", - "type": "file", - "size": 20238, - "lastModified": "2025-09-25T11:45:28Z" - }, - { - "name": "CV-ZH.pdf", - "href": "/docs/Personal/EN-v40-18004678416/CV-ZH.pdf", - "type": "file", - "size": 170869, - "lastModified": "2025-09-25T11:46:12Z" - }, - { - "name": "README.html", - "href": "/docs/Personal/EN-v40-18004678416/README.html", - "type": "file", - "size": 3295, - "lastModified": "2025-09-25T11:46:12Z" - }, - { - "name": "README.pdf", - "href": "/docs/Personal/EN-v40-18004678416/README.pdf", - "type": "file", - "size": 52031, - "lastModified": "2025-09-25T11:46:35Z" - }, - { - "name": "Resume-DevOPS-ZH.html", - "href": "/docs/Personal/EN-v40-18004678416/Resume-DevOPS-ZH.html", - "type": "file", - "size": 8949, - "lastModified": "2025-09-25T11:46:35Z" - }, - { - "name": "Resume-DevOPS-ZH.pdf", - "href": "/docs/Personal/EN-v40-18004678416/Resume-DevOPS-ZH.pdf", - "type": "file", - "size": 138284, - "lastModified": "2025-09-25T11:46:55Z" - }, - { - "name": "Resume-DevOps-EN.html", - "href": "/docs/Personal/EN-v40-18004678416/Resume-DevOps-EN.html", - "type": "file", - "size": 9670, - "lastModified": "2025-09-25T11:47:01Z" - }, - { - "name": "Resume-DevOps-EN.pdf", - "href": "/docs/Personal/EN-v40-18004678416/Resume-DevOps-EN.pdf", - "type": "file", - "size": 50989, - "lastModified": "2025-09-25T11:47:06Z" - }, - { - "name": "Resume-EN.html", - "href": "/docs/Personal/EN-v40-18004678416/Resume-EN.html", - "type": "file", - "size": 10706, - "lastModified": "2025-09-25T11:47:06Z" - }, - { - "name": "Resume-EN.pdf", - "href": "/docs/Personal/EN-v40-18004678416/Resume-EN.pdf", - "type": "file", - "size": 57384, - "lastModified": "2025-09-25T11:47:19Z" - }, - { - "name": "Resume-ZH.html", - "href": "/docs/Personal/EN-v40-18004678416/Resume-ZH.html", - "type": "file", - "size": 17297, - "lastModified": "2025-09-25T11:47:29Z" - }, - { - "name": "Resume-ZH.pdf", - "href": "/docs/Personal/EN-v40-18004678416/Resume-ZH.pdf", - "type": "file", - "size": 179976, - "lastModified": "2025-09-25T11:48:16Z" - }, - { - "name": "cet-6.html", - "href": "/docs/Personal/EN-v40-18004678416/cet-6.html", - "type": "file", - "size": 448346, - "lastModified": "2025-09-25T11:50:40Z" - }, - { - "name": "cet-6.pdf", - "href": "/docs/Personal/EN-v40-18004678416/cet-6.pdf", - "type": "file", - "size": 1192645, - "lastModified": "2025-09-25T11:55:04Z" - }, - { - "name": "fullstack-language-core.html", - "href": "/docs/Personal/EN-v40-18004678416/fullstack-language-core.html", - "type": "file", - "size": 11943, - "lastModified": "2025-09-25T11:55:10Z" - }, - { - "name": "fullstack-language-core.pdf", - "href": "/docs/Personal/EN-v40-18004678416/fullstack-language-core.pdf", - "type": "file", - "size": 70429, - "lastModified": "2025-09-25T11:55:22Z" - } - ] - }, - { - "path": "docs/Personal/EN-v41-18005142964/", - "entries": [] - }, - { - "path": "docs/Personal/EN-v42-18006148753/", - "entries": [] - }, - { - "path": "docs/TechExploration/", - "entries": [ - { - "name": "EN-v33-17996525102/", - "href": "/docs/TechExploration/EN-v33-17996525102/", - "type": "dir", - "lastModified": "2025-09-25T11:55:22Z" - }, - { - "name": "EN-v34-18001960544/", - "href": "/docs/TechExploration/EN-v34-18001960544/", - "type": "dir", - "lastModified": "2025-09-25T11:59:06Z" - }, - { - "name": "EN-v36-18002294267/", - "href": "/docs/TechExploration/EN-v36-18002294267/", - "type": "dir", - "lastModified": "2025-09-25T12:04:23Z" - }, - { - "name": "EN-v37-18002553627/", - "href": "/docs/TechExploration/EN-v37-18002553627/", - "type": "dir", - "lastModified": "2025-09-25T12:11:38Z" - }, - { - "name": "EN-v39-18004672680/", - "href": "/docs/TechExploration/EN-v39-18004672680/", - "type": "dir", - "lastModified": "2025-09-25T12:17:16Z" - }, - { - "name": "EN-v40-18004678416/", - "href": "/docs/TechExploration/EN-v40-18004678416/", - "type": "dir", - "lastModified": "2025-09-25T12:23:45Z" - }, - { - "name": "EN-v41-18005142964/", - "href": "/docs/TechExploration/EN-v41-18005142964/", - "type": "dir", - "lastModified": "2025-09-25T12:33:25Z" - }, - { - "name": "EN-v42-18006148753/", - "href": "/docs/TechExploration/EN-v42-18006148753/", - "type": "dir", - "lastModified": "2025-09-25T12:33:25Z" - } - ] - }, - { - "path": "docs/TechExploration/EN-v33-17996525102/", - "entries": [ - { - "name": "Tech-Exploration.html", - "href": "/docs/TechExploration/EN-v33-17996525102/Tech-Exploration.html", - "type": "file", - "size": 555161, - "lastModified": "2025-09-25T11:55:22Z" - }, - { - "name": "Tech-Exploration.pdf", - "href": "/docs/TechExploration/EN-v33-17996525102/Tech-Exploration.pdf", - "type": "file", - "size": 899470, - "lastModified": "2025-09-25T11:55:22Z" - } - ] - }, - { - "path": "docs/TechExploration/EN-v34-18001960544/", - "entries": [ - { - "name": "Tech-Exploration.html", - "href": "/docs/TechExploration/EN-v34-18001960544/Tech-Exploration.html", - "type": "file", - "size": 555161, - "lastModified": "2025-09-25T11:57:06Z" - }, - { - "name": "Tech-Exploration.pdf", - "href": "/docs/TechExploration/EN-v34-18001960544/Tech-Exploration.pdf", - "type": "file", - "size": 899473, - "lastModified": "2025-09-25T11:59:06Z" - } - ] - }, - { - "path": "docs/TechExploration/EN-v36-18002294267/", - "entries": [ - { - "name": "Tech-Exploration.html", - "href": "/docs/TechExploration/EN-v36-18002294267/Tech-Exploration.html", - "type": "file", - "size": 555161, - "lastModified": "2025-09-25T12:01:22Z" - }, - { - "name": "Tech-Exploration.pdf", - "href": "/docs/TechExploration/EN-v36-18002294267/Tech-Exploration.pdf", - "type": "file", - "size": 899478, - "lastModified": "2025-09-25T12:04:23Z" - } - ] - }, - { - "path": "docs/TechExploration/EN-v37-18002553627/", - "entries": [ - { - "name": "Tech-Exploration.html", - "href": "/docs/TechExploration/EN-v37-18002553627/Tech-Exploration.html", - "type": "file", - "size": 555161, - "lastModified": "2025-09-25T12:06:52Z" - }, - { - "name": "Tech-Exploration.pdf", - "href": "/docs/TechExploration/EN-v37-18002553627/Tech-Exploration.pdf", - "type": "file", - "size": 899481, - "lastModified": "2025-09-25T12:11:38Z" - } - ] - }, - { - "path": "docs/TechExploration/EN-v39-18004672680/", - "entries": [ - { - "name": "Tech-Exploration.html", - "href": "/docs/TechExploration/EN-v39-18004672680/Tech-Exploration.html", - "type": "file", - "size": 555161, - "lastModified": "2025-09-25T12:14:26Z" - }, - { - "name": "Tech-Exploration.pdf", - "href": "/docs/TechExploration/EN-v39-18004672680/Tech-Exploration.pdf", - "type": "file", - "size": 899478, - "lastModified": "2025-09-25T12:17:16Z" - } - ] - }, - { - "path": "docs/TechExploration/EN-v40-18004678416/", - "entries": [ - { - "name": "Tech-Exploration.html", - "href": "/docs/TechExploration/EN-v40-18004678416/Tech-Exploration.html", - "type": "file", - "size": 555161, - "lastModified": "2025-09-25T12:19:13Z" - }, - { - "name": "Tech-Exploration.pdf", - "href": "/docs/TechExploration/EN-v40-18004678416/Tech-Exploration.pdf", - "type": "file", - "size": 899475, - "lastModified": "2025-09-25T12:23:45Z" - } - ] - }, - { - "path": "docs/TechExploration/EN-v41-18005142964/", - "entries": [] - }, - { - "path": "docs/TechExploration/EN-v42-18006148753/", - "entries": [] - }, - { - "path": "docs/The-IndieDeveloper-Fullstack-Roadmap/", - "entries": [ - { - "name": "CN-v33-17996525102/", - "href": "/docs/The-IndieDeveloper-Fullstack-Roadmap/CN-v33-17996525102/", - "type": "dir", - "lastModified": "2025-09-25T12:23:45Z" - }, - { - "name": "CN-v34-18001960544/", - "href": "/docs/The-IndieDeveloper-Fullstack-Roadmap/CN-v34-18001960544/", - "type": "dir", - "lastModified": "2025-09-25T12:24:55Z" - }, - { - "name": "CN-v36-18002294267/", - "href": "/docs/The-IndieDeveloper-Fullstack-Roadmap/CN-v36-18002294267/", - "type": "dir", - "lastModified": "2025-09-25T12:25:51Z" - }, - { - "name": "CN-v38-18003957466/", - "href": "/docs/The-IndieDeveloper-Fullstack-Roadmap/CN-v38-18003957466/", - "type": "dir", - "lastModified": "2025-09-25T12:27:11Z" - }, - { - "name": "CN-v39-18004672680/", - "href": "/docs/The-IndieDeveloper-Fullstack-Roadmap/CN-v39-18004672680/", - "type": "dir", - "lastModified": "2025-09-25T12:27:51Z" - }, - { - "name": "CN-v40-18004678416/", - "href": "/docs/The-IndieDeveloper-Fullstack-Roadmap/CN-v40-18004678416/", - "type": "dir", - "lastModified": "2025-09-25T12:28:49Z" - }, - { - "name": "CN-v41-18005142964/", - "href": "/docs/The-IndieDeveloper-Fullstack-Roadmap/CN-v41-18005142964/", - "type": "dir", - "lastModified": "2025-09-25T12:33:26Z" - }, - { - "name": "EN-v33-17996525102/", - "href": "/docs/The-IndieDeveloper-Fullstack-Roadmap/EN-v33-17996525102/", - "type": "dir", - "lastModified": "2025-09-25T12:28:49Z" - }, - { - "name": "EN-v34-18001960544/", - "href": "/docs/The-IndieDeveloper-Fullstack-Roadmap/EN-v34-18001960544/", - "type": "dir", - "lastModified": "2025-09-25T12:28:54Z" - }, - { - "name": "EN-v36-18002294267/", - "href": "/docs/The-IndieDeveloper-Fullstack-Roadmap/EN-v36-18002294267/", - "type": "dir", - "lastModified": "2025-09-25T12:29:01Z" - }, - { - "name": "EN-v37-18002553627/", - "href": "/docs/The-IndieDeveloper-Fullstack-Roadmap/EN-v37-18002553627/", - "type": "dir", - "lastModified": "2025-09-25T12:29:03Z" - }, - { - "name": "EN-v38-18003957466/", - "href": "/docs/The-IndieDeveloper-Fullstack-Roadmap/EN-v38-18003957466/", - "type": "dir", - "lastModified": "2025-09-25T12:29:06Z" - }, - { - "name": "EN-v39-18004672680/", - "href": "/docs/The-IndieDeveloper-Fullstack-Roadmap/EN-v39-18004672680/", - "type": "dir", - "lastModified": "2025-09-25T12:29:09Z" - }, - { - "name": "EN-v40-18004678416/", - "href": "/docs/The-IndieDeveloper-Fullstack-Roadmap/EN-v40-18004678416/", - "type": "dir", - "lastModified": "2025-09-25T12:29:13Z" - }, - { - "name": "EN-v41-18005142964/", - "href": "/docs/The-IndieDeveloper-Fullstack-Roadmap/EN-v41-18005142964/", - "type": "dir", - "lastModified": "2025-09-25T12:33:26Z" - }, - { - "name": "EN-v42-18006148753/", - "href": "/docs/The-IndieDeveloper-Fullstack-Roadmap/EN-v42-18006148753/", - "type": "dir", - "lastModified": "2025-09-25T12:33:26Z" - } - ] - }, - { - "path": "docs/The-IndieDeveloper-Fullstack-Roadmap/CN-v33-17996525102/", - "entries": [ - { - "name": "fullstack-roadmap-cn.html", - "href": "/docs/The-IndieDeveloper-Fullstack-Roadmap/CN-v33-17996525102/fullstack-roadmap-cn.html", - "type": "file", - "size": 34789, - "lastModified": "2025-09-25T12:23:45Z" - }, - { - "name": "fullstack-roadmap-cn.pdf", - "href": "/docs/The-IndieDeveloper-Fullstack-Roadmap/CN-v33-17996525102/fullstack-roadmap-cn.pdf", - "type": "file", - "size": 255526, - "lastModified": "2025-09-25T12:23:45Z" - } - ] - }, - { - "path": "docs/The-IndieDeveloper-Fullstack-Roadmap/CN-v34-18001960544/", - "entries": [ - { - "name": "fullstack-roadmap-cn.html", - "href": "/docs/The-IndieDeveloper-Fullstack-Roadmap/CN-v34-18001960544/fullstack-roadmap-cn.html", - "type": "file", - "size": 36128, - "lastModified": "2025-09-25T12:23:54Z" - }, - { - "name": "fullstack-roadmap-cn.pdf", - "href": "/docs/The-IndieDeveloper-Fullstack-Roadmap/CN-v34-18001960544/fullstack-roadmap-cn.pdf", - "type": "file", - "size": 259524, - "lastModified": "2025-09-25T12:24:55Z" - } - ] - }, - { - "path": "docs/The-IndieDeveloper-Fullstack-Roadmap/CN-v36-18002294267/", - "entries": [ - { - "name": "fullstack-roadmap-cn.html", - "href": "/docs/The-IndieDeveloper-Fullstack-Roadmap/CN-v36-18002294267/fullstack-roadmap-cn.html", - "type": "file", - "size": 36128, - "lastModified": "2025-09-25T12:25:02Z" - }, - { - "name": "fullstack-roadmap-cn.pdf", - "href": "/docs/The-IndieDeveloper-Fullstack-Roadmap/CN-v36-18002294267/fullstack-roadmap-cn.pdf", - "type": "file", - "size": 259532, - "lastModified": "2025-09-25T12:25:51Z" - } - ] - }, - { - "path": "docs/The-IndieDeveloper-Fullstack-Roadmap/CN-v38-18003957466/", - "entries": [ - { - "name": "fullstack-roadmap-cn.html", - "href": "/docs/The-IndieDeveloper-Fullstack-Roadmap/CN-v38-18003957466/fullstack-roadmap-cn.html", - "type": "file", - "size": 36128, - "lastModified": "2025-09-25T12:25:59Z" - }, - { - "name": "fullstack-roadmap-cn.pdf", - "href": "/docs/The-IndieDeveloper-Fullstack-Roadmap/CN-v38-18003957466/fullstack-roadmap-cn.pdf", - "type": "file", - "size": 259539, - "lastModified": "2025-09-25T12:27:11Z" - } - ] - }, - { - "path": "docs/The-IndieDeveloper-Fullstack-Roadmap/CN-v39-18004672680/", - "entries": [ - { - "name": "fullstack-roadmap-cn.html", - "href": "/docs/The-IndieDeveloper-Fullstack-Roadmap/CN-v39-18004672680/fullstack-roadmap-cn.html", - "type": "file", - "size": 36128, - "lastModified": "2025-09-25T12:27:14Z" - }, - { - "name": "fullstack-roadmap-cn.pdf", - "href": "/docs/The-IndieDeveloper-Fullstack-Roadmap/CN-v39-18004672680/fullstack-roadmap-cn.pdf", - "type": "file", - "size": 259538, - "lastModified": "2025-09-25T12:27:51Z" - } - ] - }, - { - "path": "docs/The-IndieDeveloper-Fullstack-Roadmap/CN-v40-18004678416/", - "entries": [ - { - "name": "fullstack-roadmap-cn.html", - "href": "/docs/The-IndieDeveloper-Fullstack-Roadmap/CN-v40-18004678416/fullstack-roadmap-cn.html", - "type": "file", - "size": 36128, - "lastModified": "2025-09-25T12:27:55Z" - }, - { - "name": "fullstack-roadmap-cn.pdf", - "href": "/docs/The-IndieDeveloper-Fullstack-Roadmap/CN-v40-18004678416/fullstack-roadmap-cn.pdf", - "type": "file", - "size": 259534, - "lastModified": "2025-09-25T12:28:49Z" - } - ] - }, - { - "path": "docs/The-IndieDeveloper-Fullstack-Roadmap/CN-v41-18005142964/", - "entries": [] - }, - { - "path": "docs/The-IndieDeveloper-Fullstack-Roadmap/EN-v33-17996525102/", - "entries": [ - { - "name": "fullstack-roadmap-en.html", - "href": "/docs/The-IndieDeveloper-Fullstack-Roadmap/EN-v33-17996525102/fullstack-roadmap-en.html", - "type": "file", - "size": 2257, - "lastModified": "2025-09-25T12:28:49Z" - }, - { - "name": "fullstack-roadmap-en.pdf", - "href": "/docs/The-IndieDeveloper-Fullstack-Roadmap/EN-v33-17996525102/fullstack-roadmap-en.pdf", - "type": "file", - "size": 33858, - "lastModified": "2025-09-25T12:28:49Z" - } - ] - }, - { - "path": "docs/The-IndieDeveloper-Fullstack-Roadmap/EN-v34-18001960544/", - "entries": [ - { - "name": "fullstack-roadmap-en.html", - "href": "/docs/The-IndieDeveloper-Fullstack-Roadmap/EN-v34-18001960544/fullstack-roadmap-en.html", - "type": "file", - "size": 2257, - "lastModified": "2025-09-25T12:28:49Z" - }, - { - "name": "fullstack-roadmap-en.pdf", - "href": "/docs/The-IndieDeveloper-Fullstack-Roadmap/EN-v34-18001960544/fullstack-roadmap-en.pdf", - "type": "file", - "size": 33857, - "lastModified": "2025-09-25T12:28:54Z" - } - ] - }, - { - "path": "docs/The-IndieDeveloper-Fullstack-Roadmap/EN-v36-18002294267/", - "entries": [ - { - "name": "fullstack-roadmap-en.html", - "href": "/docs/The-IndieDeveloper-Fullstack-Roadmap/EN-v36-18002294267/fullstack-roadmap-en.html", - "type": "file", - "size": 2257, - "lastModified": "2025-09-25T12:28:54Z" - }, - { - "name": "fullstack-roadmap-en.pdf", - "href": "/docs/The-IndieDeveloper-Fullstack-Roadmap/EN-v36-18002294267/fullstack-roadmap-en.pdf", - "type": "file", - "size": 33857, - "lastModified": "2025-09-25T12:29:01Z" - } - ] - }, - { - "path": "docs/The-IndieDeveloper-Fullstack-Roadmap/EN-v37-18002553627/", - "entries": [ - { - "name": "fullstack-roadmap-en.html", - "href": "/docs/The-IndieDeveloper-Fullstack-Roadmap/EN-v37-18002553627/fullstack-roadmap-en.html", - "type": "file", - "size": 2257, - "lastModified": "2025-09-25T12:29:01Z" - }, - { - "name": "fullstack-roadmap-en.pdf", - "href": "/docs/The-IndieDeveloper-Fullstack-Roadmap/EN-v37-18002553627/fullstack-roadmap-en.pdf", - "type": "file", - "size": 33857, - "lastModified": "2025-09-25T12:29:03Z" - } - ] - }, - { - "path": "docs/The-IndieDeveloper-Fullstack-Roadmap/EN-v38-18003957466/", - "entries": [ - { - "name": "fullstack-roadmap-en.html", - "href": "/docs/The-IndieDeveloper-Fullstack-Roadmap/EN-v38-18003957466/fullstack-roadmap-en.html", - "type": "file", - "size": 2257, - "lastModified": "2025-09-25T12:29:03Z" - }, - { - "name": "fullstack-roadmap-en.pdf", - "href": "/docs/The-IndieDeveloper-Fullstack-Roadmap/EN-v38-18003957466/fullstack-roadmap-en.pdf", - "type": "file", - "size": 33856, - "lastModified": "2025-09-25T12:29:06Z" - } - ] - }, - { - "path": "docs/The-IndieDeveloper-Fullstack-Roadmap/EN-v39-18004672680/", - "entries": [ - { - "name": "fullstack-roadmap-en.html", - "href": "/docs/The-IndieDeveloper-Fullstack-Roadmap/EN-v39-18004672680/fullstack-roadmap-en.html", - "type": "file", - "size": 2257, - "lastModified": "2025-09-25T12:29:06Z" - }, - { - "name": "fullstack-roadmap-en.pdf", - "href": "/docs/The-IndieDeveloper-Fullstack-Roadmap/EN-v39-18004672680/fullstack-roadmap-en.pdf", - "type": "file", - "size": 33857, - "lastModified": "2025-09-25T12:29:09Z" - } - ] - }, - { - "path": "docs/The-IndieDeveloper-Fullstack-Roadmap/EN-v40-18004678416/", - "entries": [ - { - "name": "fullstack-roadmap-en.html", - "href": "/docs/The-IndieDeveloper-Fullstack-Roadmap/EN-v40-18004678416/fullstack-roadmap-en.html", - "type": "file", - "size": 2257, - "lastModified": "2025-09-25T12:29:09Z" - }, - { - "name": "fullstack-roadmap-en.pdf", - "href": "/docs/The-IndieDeveloper-Fullstack-Roadmap/EN-v40-18004678416/fullstack-roadmap-en.pdf", - "type": "file", - "size": 33857, - "lastModified": "2025-09-25T12:29:13Z" - } - ] - }, - { - "path": "docs/The-IndieDeveloper-Fullstack-Roadmap/EN-v41-18005142964/", - "entries": [] - }, - { - "path": "docs/The-IndieDeveloper-Fullstack-Roadmap/EN-v42-18006148753/", - "entries": [] - }, - { - "path": "docs/interview-qa/", - "entries": [ - { - "name": "EN-v42-18006148753/", - "href": "/docs/interview-qa/EN-v42-18006148753/", - "type": "dir", - "lastModified": "2025-09-25T12:33:26Z" - } - ] - }, - { - "path": "docs/interview-qa/EN-v42-18006148753/", - "entries": [] - }, - { - "path": "offline-package/", - "entries": [ - { - "name": "apisix-gateway/", - "href": "/offline-package/apisix-gateway/", - "type": "dir", - "lastModified": "2025-09-25T12:30:41Z" - }, - { - "name": "k3s/", - "href": "/offline-package/k3s/", - "type": "dir", - "lastModified": "2025-09-25T05:28:31Z" - }, - { - "name": "kong-gateway/", - "href": "/offline-package/kong-gateway/", - "type": "dir", - "lastModified": "2025-09-25T05:29:11Z" - }, - { - "name": "nginx-ingress/", - "href": "/offline-package/nginx-ingress/", - "type": "dir", - "lastModified": "2025-09-25T05:29:45Z" - }, - { - "name": "sealos/", - "href": "/offline-package/sealos/", - "type": "dir", - "lastModified": "2025-09-25T05:30:56Z" - } - ] - }, - { - "path": "offline-package/apisix-gateway/", - "entries": [ - { - "name": "SHA256SUMS", - "href": "/offline-package/apisix-gateway/SHA256SUMS", - "type": "file", - "size": 216, - "lastModified": "2025-09-25T12:30:32Z", - "sha256": "/offline-package/apisix-gateway/SHA256SUMS" - }, - { - "name": "offline-setup-apisix-gateway-amd64.tar.gz", - "href": "/offline-package/apisix-gateway/offline-setup-apisix-gateway-amd64.tar.gz", - "type": "file", - "size": 194146012, - "lastModified": "2025-09-25T12:30:41Z", - "sha256": "/offline-package/apisix-gateway/SHA256SUMS" - }, - { - "name": "offline-setup-apisix-gateway-arm64.tar.gz", - "href": "/offline-package/apisix-gateway/offline-setup-apisix-gateway-arm64.tar.gz", - "type": "file", - "size": 194144032, - "lastModified": "2025-09-25T05:28:06Z", - "sha256": "/offline-package/apisix-gateway/SHA256SUMS" - } - ] - }, - { - "path": "offline-package/k3s/", - "entries": [ - { - "name": "offline-package-k3s-installer-amd64.tar.gz", - "href": "/offline-package/k3s/offline-package-k3s-installer-amd64.tar.gz", - "type": "file", - "size": 223183297, - "lastModified": "2025-09-25T05:28:18Z", - "sha256": "/offline-package/k3s/offline-package-k3s-installer-amd64.tar.gz.sha256sum" - }, - { - "name": "offline-package-k3s-installer-amd64.tar.gz.sha256sum", - "href": "/offline-package/k3s/offline-package-k3s-installer-amd64.tar.gz.sha256sum", - "type": "file", - "size": 109, - "lastModified": "2025-09-25T05:28:18Z" - }, - { - "name": "offline-package-k3s-installer-arm64.tar.gz", - "href": "/offline-package/k3s/offline-package-k3s-installer-arm64.tar.gz", - "type": "file", - "size": 204874562, - "lastModified": "2025-09-25T05:28:30Z", - "sha256": "/offline-package/k3s/offline-package-k3s-installer-arm64.tar.gz.sha256sum" - }, - { - "name": "offline-package-k3s-installer-arm64.tar.gz.sha256sum", - "href": "/offline-package/k3s/offline-package-k3s-installer-arm64.tar.gz.sha256sum", - "type": "file", - "size": 109, - "lastModified": "2025-09-25T05:28:31Z" - } - ] - }, - { - "path": "offline-package/kong-gateway/", - "entries": [ - { - "name": "SHA256SUMS", - "href": "/offline-package/kong-gateway/SHA256SUMS", - "type": "file", - "size": 212, - "lastModified": "2025-09-25T05:28:31Z", - "sha256": "/offline-package/kong-gateway/SHA256SUMS" - }, - { - "name": "offline-setup-kong-gateway-amd64.tar.gz", - "href": "/offline-package/kong-gateway/offline-setup-kong-gateway-amd64.tar.gz", - "type": "file", - "size": 260781308, - "lastModified": "2025-09-25T05:28:53Z", - "sha256": "/offline-package/kong-gateway/SHA256SUMS" - }, - { - "name": "offline-setup-kong-gateway-arm64.tar.gz", - "href": "/offline-package/kong-gateway/offline-setup-kong-gateway-arm64.tar.gz", - "type": "file", - "size": 259941381, - "lastModified": "2025-09-25T05:29:11Z", - "sha256": "/offline-package/kong-gateway/SHA256SUMS" - } - ] - }, - { - "path": "offline-package/nginx-ingress/", - "entries": [ - { - "name": "SHA256SUMS", - "href": "/offline-package/nginx-ingress/SHA256SUMS", - "type": "file", - "size": 214, - "lastModified": "2025-09-25T05:29:11Z", - "sha256": "/offline-package/nginx-ingress/SHA256SUMS" - }, - { - "name": "offline-setup-nginx-ingress-amd64.tar.gz", - "href": "/offline-package/nginx-ingress/offline-setup-nginx-ingress-amd64.tar.gz", - "type": "file", - "size": 156094656, - "lastModified": "2025-09-25T05:29:17Z", - "sha256": "/offline-package/nginx-ingress/SHA256SUMS" - }, - { - "name": "offline-setup-nginx-ingress-arm64.tar.gz", - "href": "/offline-package/nginx-ingress/offline-setup-nginx-ingress-arm64.tar.gz", - "type": "file", - "size": 155252914, - "lastModified": "2025-09-25T05:29:45Z", - "sha256": "/offline-package/nginx-ingress/SHA256SUMS" - } - ] - }, - { - "path": "offline-package/sealos/", - "entries": [ - { - "name": "SHA256SUMS", - "href": "/offline-package/sealos/SHA256SUMS", - "type": "file", - "size": 204, - "lastModified": "2025-09-25T05:29:45Z", - "sha256": "/offline-package/sealos/SHA256SUMS" - }, - { - "name": "sealos-offline-package-amd64.tar.gz", - "href": "/offline-package/sealos/sealos-offline-package-amd64.tar.gz", - "type": "file", - "size": 890301186, - "lastModified": "2025-09-25T05:30:21Z", - "sha256": "/offline-package/sealos/SHA256SUMS" - }, - { - "name": "sealos-offline-package-arm64.tar.gz", - "href": "/offline-package/sealos/sealos-offline-package-arm64.tar.gz", - "type": "file", - "size": 834350941, - "lastModified": "2025-09-25T05:30:56Z", - "sha256": "/offline-package/sealos/SHA256SUMS" - } - ] - }, - { - "path": "otel/", - "entries": [ - { - "name": "OpenTelemetry/", - "href": "/otel/OpenTelemetry/", - "type": "dir", - "lastModified": "2025-09-25T05:31:14Z" - } - ] - }, - { - "path": "otel/OpenTelemetry/", - "entries": [ - { - "name": "v0.133.0/", - "href": "/otel/OpenTelemetry/v0.133.0/", - "type": "dir", - "lastModified": "2025-09-25T05:31:14Z" - } - ] - }, - { - "path": "otel/OpenTelemetry/v0.133.0/", - "entries": [ - { - "name": "opampsupervisor_0.133.0_linux_amd64", - "href": "/otel/OpenTelemetry/v0.133.0/opampsupervisor_0.133.0_linux_amd64", - "type": "file", - "size": 22896824, - "lastModified": "2025-09-25T05:31:02Z" - }, - { - "name": "opampsupervisor_0.133.0_linux_arm64", - "href": "/otel/OpenTelemetry/v0.133.0/opampsupervisor_0.133.0_linux_arm64", - "type": "file", - "size": 21758136, - "lastModified": "2025-09-25T05:31:03Z" - }, - { - "name": "otelcol-contrib_0.133.0_linux_amd64.tar.gz", - "href": "/otel/OpenTelemetry/v0.133.0/otelcol-contrib_0.133.0_linux_amd64.tar.gz", - "type": "file", - "size": 90264630, - "lastModified": "2025-09-25T05:31:09Z" - }, - { - "name": "otelcol-contrib_0.133.0_linux_arm64.tar.gz", - "href": "/otel/OpenTelemetry/v0.133.0/otelcol-contrib_0.133.0_linux_arm64.tar.gz", - "type": "file", - "size": 82333025, - "lastModified": "2025-09-25T05:31:14Z" - } - ] - }, - { - "path": "prometheus/", - "entries": [ - { - "name": "blackbox_exporter/", - "href": "/prometheus/blackbox_exporter/", - "type": "dir", - "lastModified": "2025-09-29T04:26:43Z" - } - ] - }, - { - "path": "prometheus/blackbox_exporter/", - "entries": [ - { - "name": "0.27.0/", - "href": "/prometheus/blackbox_exporter/0.27.0/", - "type": "dir", - "lastModified": "2025-09-29T04:26:43Z" - } - ] - }, - { - "path": "prometheus/blackbox_exporter/0.27.0/", - "entries": [ - { - "name": "blackbox_exporter-0.27.0.darwin-amd64.tar.gz", - "href": "/prometheus/blackbox_exporter/0.27.0/blackbox_exporter-0.27.0.darwin-amd64.tar.gz", - "type": "file", - "size": 15190658, - "lastModified": "2025-09-29T04:26:05Z" - }, - { - "name": "blackbox_exporter-0.27.0.darwin-arm64.tar.gz", - "href": "/prometheus/blackbox_exporter/0.27.0/blackbox_exporter-0.27.0.darwin-arm64.tar.gz", - "type": "file", - "size": 14442730, - "lastModified": "2025-09-29T04:26:05Z" - }, - { - "name": "blackbox_exporter-0.27.0.linux-amd64.tar.gz", - "href": "/prometheus/blackbox_exporter/0.27.0/blackbox_exporter-0.27.0.linux-amd64.tar.gz", - "type": "file", - "size": 15353351, - "lastModified": "2025-09-29T04:26:43Z" - }, - { - "name": "blackbox_exporter-0.27.0.linux-arm64.tar.gz", - "href": "/prometheus/blackbox_exporter/0.27.0/blackbox_exporter-0.27.0.linux-arm64.tar.gz", - "type": "file", - "size": 14338005, - "lastModified": "2025-09-29T04:26:15Z" - } - ] - }, - { - "path": "rpm/", - "entries": [] - }, - { - "path": "sealos/", - "entries": [ - { - "name": "offline-sealos-5/", - "href": "/sealos/offline-sealos-5/", - "type": "dir", - "lastModified": "2025-09-19T05:21:20Z" - }, - { - "name": "offline-sealos-6/", - "href": "/sealos/offline-sealos-6/", - "type": "dir", - "lastModified": "2025-09-19T05:21:20Z" - }, - { - "name": "offline-sealos-8/", - "href": "/sealos/offline-sealos-8/", - "type": "dir", - "lastModified": "2025-09-19T05:21:20Z" - } - ] - }, - { - "path": "sealos/offline-sealos-5/", - "entries": [] - }, - { - "path": "sealos/offline-sealos-6/", - "entries": [] - }, - { - "path": "sealos/offline-sealos-8/", - "entries": [] - }, - { - "path": "xray-core/", - "entries": [ - { - "name": "v25.8.29/", - "href": "/xray-core/v25.8.29/", - "type": "dir", - "lastModified": "2025-09-25T05:31:24Z" - }, - { - "name": "v25.8.3/", - "href": "/xray-core/v25.8.3/", - "type": "dir", - "lastModified": "2025-09-25T05:31:40Z" - }, - { - "name": "v25.8.31/", - "href": "/xray-core/v25.8.31/", - "type": "dir", - "lastModified": "2025-09-25T05:31:48Z" - }, - { - "name": "v25.9.10/", - "href": "/xray-core/v25.9.10/", - "type": "dir", - "lastModified": "2025-09-19T03:19:13Z" - }, - { - "name": "v25.9.11/", - "href": "/xray-core/v25.9.11/", - "type": "dir", - "lastModified": "2025-09-19T02:28:57Z" - }, - { - "name": "v25.9.5/", - "href": "/xray-core/v25.9.5/", - "type": "dir", - "lastModified": "2025-09-19T03:19:13Z" - } - ] - }, - { - "path": "xray-core/v25.8.29/", - "entries": [ - { - "name": "Xray-linux-64.zip", - "href": "/xray-core/v25.8.29/Xray-linux-64.zip", - "type": "file", - "size": 20188542, - "lastModified": "2025-09-25T05:31:20Z" - }, - { - "name": "Xray-macos-64.zip", - "href": "/xray-core/v25.8.29/Xray-macos-64.zip", - "type": "file", - "size": 19866304, - "lastModified": "2025-09-25T05:31:20Z" - }, - { - "name": "Xray-windows-64.zip", - "href": "/xray-core/v25.8.29/Xray-windows-64.zip", - "type": "file", - "size": 19762272, - "lastModified": "2025-09-25T05:31:24Z" - } - ] - }, - { - "path": "xray-core/v25.8.3/", - "entries": [ - { - "name": "Xray-linux-64.zip", - "href": "/xray-core/v25.8.3/Xray-linux-64.zip", - "type": "file", - "size": 18431780, - "lastModified": "2025-09-25T05:31:33Z" - }, - { - "name": "Xray-macos-64.zip", - "href": "/xray-core/v25.8.3/Xray-macos-64.zip", - "type": "file", - "size": 18191431, - "lastModified": "2025-09-25T05:31:33Z" - }, - { - "name": "Xray-windows-64.zip", - "href": "/xray-core/v25.8.3/Xray-windows-64.zip", - "type": "file", - "size": 18071359, - "lastModified": "2025-09-25T05:31:40Z" - } - ] - }, - { - "path": "xray-core/v25.8.31/", - "entries": [ - { - "name": "Xray-linux-64.zip", - "href": "/xray-core/v25.8.31/Xray-linux-64.zip", - "type": "file", - "size": 20200865, - "lastModified": "2025-09-25T05:31:41Z" - }, - { - "name": "Xray-macos-64.zip", - "href": "/xray-core/v25.8.31/Xray-macos-64.zip", - "type": "file", - "size": 19875652, - "lastModified": "2025-09-25T05:31:47Z" - }, - { - "name": "Xray-windows-64.zip", - "href": "/xray-core/v25.8.31/Xray-windows-64.zip", - "type": "file", - "size": 19776769, - "lastModified": "2025-09-25T05:31:48Z" - } - ] - }, - { - "path": "xray-core/v25.9.10/", - "entries": [] - }, - { - "path": "xray-core/v25.9.11/", - "entries": [] - }, - { - "path": "xray-core/v25.9.5/", - "entries": [] - }, - { - "path": "xstream/", - "entries": [ - { - "name": "android/", - "href": "/xstream/android/", - "type": "dir", - "lastModified": "2025-09-20T07:06:45Z" - }, - { - "name": "ios/", - "href": "/xstream/ios/", - "type": "dir", - "lastModified": "2025-09-20T07:06:46Z" - }, - { - "name": "linux/", - "href": "/xstream/linux/", - "type": "dir", - "lastModified": "2025-09-20T07:06:47Z" - }, - { - "name": "macos/", - "href": "/xstream/macos/", - "type": "dir", - "lastModified": "2025-09-20T07:06:46Z" - }, - { - "name": "windows/", - "href": "/xstream/windows/", - "type": "dir", - "lastModified": "2025-09-20T07:04:54Z" - } - ] - }, - { - "path": "xstream/android/", - "entries": [ - { - "name": "latest/", - "href": "/xstream/android/latest/", - "type": "dir", - "lastModified": "2025-09-20T07:06:45Z" - } - ] - }, - { - "path": "xstream/android/latest/", - "entries": [ - { - "name": "xstream-android-latest.apk", - "href": "/xstream/android/latest/xstream-android-latest.apk", - "type": "file", - "size": 23386143, - "lastModified": "2025-09-20T07:06:45Z" - } - ] - }, - { - "path": "xstream/ios/", - "entries": [ - { - "name": "latest/", - "href": "/xstream/ios/latest/", - "type": "dir", - "lastModified": "2025-09-20T07:06:46Z" - } - ] - }, - { - "path": "xstream/ios/latest/", - "entries": [ - { - "name": "xstream-ios-latest.ipa", - "href": "/xstream/ios/latest/xstream-ios-latest.ipa", - "type": "file", - "size": 10965049, - "lastModified": "2025-09-20T07:06:46Z" - } - ] - }, - { - "path": "xstream/linux/", - "entries": [ - { - "name": "latest/", - "href": "/xstream/linux/latest/", - "type": "dir", - "lastModified": "2025-09-20T07:06:47Z" - }, - { - "name": "stable/", - "href": "/xstream/linux/stable/", - "type": "dir", - "lastModified": "2025-09-19T05:27:47Z" - } - ] - }, - { - "path": "xstream/linux/latest/", - "entries": [ - { - "name": "xstream-linux-latest.zip", - "href": "/xstream/linux/latest/xstream-linux-latest.zip", - "type": "file", - "size": 14249450, - "lastModified": "2025-09-20T07:06:47Z" - } - ] - }, - { - "path": "xstream/linux/stable/", - "entries": [ - { - "name": "xstream-linux-latest.zip", - "href": "/xstream/linux/stable/xstream-linux-latest.zip", - "type": "file", - "size": 14058826, - "lastModified": "2025-09-19T05:27:47Z" - } - ] - }, - { - "path": "xstream/macos/", - "entries": [ - { - "name": "docs/", - "href": "/xstream/macos/docs/", - "type": "dir", - "lastModified": "2025-09-19T02:01:49Z" - }, - { - "name": "latest/", - "href": "/xstream/macos/latest/", - "type": "dir", - "lastModified": "2025-09-20T07:06:46Z" - }, - { - "name": "stable/", - "href": "/xstream/macos/stable/", - "type": "dir", - "lastModified": "2025-09-19T05:27:48Z" - } - ] - }, - { - "path": "xstream/macos/docs/", - "entries": [] - }, - { - "path": "xstream/macos/latest/", - "entries": [ - { - "name": "xstream-macos-latest.dmg", - "href": "/xstream/macos/latest/xstream-macos-latest.dmg", - "type": "file", - "size": 39555743, - "lastModified": "2025-09-20T07:06:46Z" - } - ] - }, - { - "path": "xstream/macos/stable/", - "entries": [ - { - "name": "xstream-macos-latest.dmg", - "href": "/xstream/macos/stable/xstream-macos-latest.dmg", - "type": "file", - "size": 42458674, - "lastModified": "2025-09-19T05:27:48Z" - }, - { - "name": "xstream-release-v0.2.0.dmg", - "href": "/xstream/macos/stable/xstream-release-v0.2.0.dmg", - "type": "file", - "size": 43614833, - "lastModified": "2025-09-19T05:27:48Z" - } - ] - }, - { - "path": "xstream/windows/", - "entries": [ - { - "name": "latest/", - "href": "/xstream/windows/latest/", - "type": "dir", - "lastModified": "2025-09-20T07:04:54Z" - }, - { - "name": "stable/", - "href": "/xstream/windows/stable/", - "type": "dir", - "lastModified": "2025-09-19T05:27:49Z" - }, - { - "name": "win10/", - "href": "/xstream/windows/win10/", - "type": "dir", - "lastModified": "2025-09-19T02:01:51Z" - }, - { - "name": "win11/", - "href": "/xstream/windows/win11/", - "type": "dir", - "lastModified": "2025-09-19T02:01:51Z" - } - ] - }, - { - "path": "xstream/windows/latest/", - "entries": [ - { - "name": "xstream-windows-latest.zip", - "href": "/xstream/windows/latest/xstream-windows-latest.zip", - "type": "file", - "size": 18511874, - "lastModified": "2025-09-20T07:04:54Z" - } - ] - }, - { - "path": "xstream/windows/stable/", - "entries": [ - { - "name": "xstream-windows-latest.zip", - "href": "/xstream/windows/stable/xstream-windows-latest.zip", - "type": "file", - "size": 18312976, - "lastModified": "2025-09-19T05:27:49Z" - } - ] - }, - { - "path": "xstream/windows/win10/", - "entries": [] - }, - { - "path": "xstream/windows/win11/", - "entries": [] - } -] diff --git a/dashboard/public/dl-index/docs-manifest.json b/dashboard/public/dl-index/docs-manifest.json deleted file mode 100644 index dd62ea7..0000000 --- a/dashboard/public/dl-index/docs-manifest.json +++ /dev/null @@ -1,2934 +0,0 @@ -[ - { - "slug": "linux-k8s-ops-cn-v41-18005142964-linux-k8s-ops-guide", - "title": "Linux K8 S OPS Guide", - "description": "Linux K8 S OPS Guide — Linux K8 S OPS (edition CN v41, release CN-v41-18005142964, available as PDF and HTML).", - "category": "Linux K8 S OPS", - "version": "CN v41", - "updatedAt": "2025-09-25T12:35:19Z", - "collection": "Linux-K8S-OPS", - "collectionSlug": "linux-k8s-ops", - "collectionLabel": "Linux K8 S OPS", - "pdfUrl": "/docs/Linux-K8S-OPS/CN-v41-18005142964/Linux-K8S-OPS-Guide.pdf", - "htmlUrl": "/docs/Linux-K8S-OPS/CN-v41-18005142964/Linux-K8S-OPS-Guide.html", - "language": "CN", - "variant": "CN-v41-18005142964", - "versionSlug": "cn-v41-18005142964", - "tags": [ - "CN", - "CN v41", - "Linux K8 S OPS" - ], - "pathSegments": [ - "Linux-K8S-OPS", - "CN-v41-18005142964" - ] - }, - { - "slug": "linux-k8s-ops-cn-v39-18004672680-linux-k8s-ops-guide", - "title": "Linux K8 S OPS Guide", - "description": "Linux K8 S OPS Guide — Linux K8 S OPS (edition CN v39, release CN-v39-18004672680, available as PDF and HTML).", - "category": "Linux K8 S OPS", - "version": "CN v39", - "updatedAt": "2025-09-25T12:34:03Z", - "collection": "Linux-K8S-OPS", - "collectionSlug": "linux-k8s-ops", - "collectionLabel": "Linux K8 S OPS", - "pdfUrl": "/docs/Linux-K8S-OPS/CN-v39-18004672680/Linux-K8S-OPS-Guide.pdf", - "htmlUrl": "/docs/Linux-K8S-OPS/CN-v39-18004672680/Linux-K8S-OPS-Guide.html", - "language": "CN", - "variant": "CN-v39-18004672680", - "versionSlug": "cn-v39-18004672680", - "tags": [ - "CN", - "CN v39", - "Linux K8 S OPS" - ], - "pathSegments": [ - "Linux-K8S-OPS", - "CN-v39-18004672680" - ] - }, - { - "slug": "linux-k8s-ops-cn-v40-18004678416-linux-k8s-ops-guide", - "title": "Linux K8 S OPS Guide", - "description": "Linux K8 S OPS Guide — Linux K8 S OPS (edition CN v40, release CN-v40-18004678416, available as PDF and HTML).", - "category": "Linux K8 S OPS", - "version": "CN v40", - "updatedAt": "2025-09-25T12:34:03Z", - "collection": "Linux-K8S-OPS", - "collectionSlug": "linux-k8s-ops", - "collectionLabel": "Linux K8 S OPS", - "pdfUrl": "/docs/Linux-K8S-OPS/CN-v40-18004678416/Linux-K8S-OPS-Guide.pdf", - "htmlUrl": "/docs/Linux-K8S-OPS/CN-v40-18004678416/Linux-K8S-OPS-Guide.html", - "language": "CN", - "variant": "CN-v40-18004678416", - "versionSlug": "cn-v40-18004678416", - "tags": [ - "CN", - "CN v40", - "Linux K8 S OPS" - ], - "pathSegments": [ - "Linux-K8S-OPS", - "CN-v40-18004678416" - ] - }, - { - "slug": "keycloak-en-v40-18004678416-keycloak-sso-design-and-implementation", - "title": "Keycloak SSO Design and Implementation", - "description": "Keycloak SSO Design and Implementation — Keycloak (edition EN v40, release EN-v40-18004678416, available as HTML).", - "category": "Keycloak", - "version": "EN v40", - "updatedAt": "2025-09-25T12:34:02Z", - "collection": "Keycloak", - "collectionSlug": "keycloak", - "collectionLabel": "Keycloak", - "htmlUrl": "/docs/Keycloak/EN-v40-18004678416/Keycloak-SSO-Design-and-Implementation.html", - "language": "EN", - "variant": "EN-v40-18004678416", - "versionSlug": "en-v40-18004678416", - "tags": [ - "EN", - "EN v40", - "Keycloak" - ], - "pathSegments": [ - "Keycloak", - "EN-v40-18004678416" - ] - }, - { - "slug": "keycloak-en-v41-18005142964-keycloak-sso-design-and-implementation", - "title": "Keycloak SSO Design and Implementation", - "description": "Keycloak SSO Design and Implementation — Keycloak (edition EN v41, release EN-v41-18005142964, available as HTML).", - "category": "Keycloak", - "version": "EN v41", - "updatedAt": "2025-09-25T12:34:02Z", - "collection": "Keycloak", - "collectionSlug": "keycloak", - "collectionLabel": "Keycloak", - "htmlUrl": "/docs/Keycloak/EN-v41-18005142964/Keycloak-SSO-Design-and-Implementation.html", - "language": "EN", - "variant": "EN-v41-18005142964", - "versionSlug": "en-v41-18005142964", - "tags": [ - "EN", - "EN v41", - "Keycloak" - ], - "pathSegments": [ - "Keycloak", - "EN-v41-18005142964" - ] - }, - { - "slug": "keycloak-en-v42-18006148753-keycloak-sso-design-and-implementation", - "title": "Keycloak SSO Design and Implementation", - "description": "Keycloak SSO Design and Implementation — Keycloak (edition EN v42, release EN-v42-18006148753, available as HTML).", - "category": "Keycloak", - "version": "EN v42", - "updatedAt": "2025-09-25T12:34:02Z", - "collection": "Keycloak", - "collectionSlug": "keycloak", - "collectionLabel": "Keycloak", - "htmlUrl": "/docs/Keycloak/EN-v42-18006148753/Keycloak-SSO-Design-and-Implementation.html", - "language": "EN", - "variant": "EN-v42-18006148753", - "versionSlug": "en-v42-18006148753", - "tags": [ - "EN", - "EN v42", - "Keycloak" - ], - "pathSegments": [ - "Keycloak", - "EN-v42-18006148753" - ] - }, - { - "slug": "landingzone-en-v33-17996525102-landing-zone-design-and-implementation", - "title": "Landing Zone Design and Implementation", - "description": "Landing Zone Design and Implementation — Landing Zone (edition EN v33, release EN-v33-17996525102, available as PDF).", - "category": "Landing Zone", - "version": "EN v33", - "updatedAt": "2025-09-25T12:34:02Z", - "collection": "LandingZone", - "collectionSlug": "landingzone", - "collectionLabel": "Landing Zone", - "pdfUrl": "/docs/LandingZone/EN-v33-17996525102/Landing-Zone-Design-and-Implementation.pdf", - "language": "EN", - "variant": "EN-v33-17996525102", - "versionSlug": "en-v33-17996525102", - "tags": [ - "EN", - "EN v33", - "Landing Zone" - ], - "pathSegments": [ - "LandingZone", - "EN-v33-17996525102" - ] - }, - { - "slug": "landingzone-en-v34-18001960544-landing-zone-design-and-implementation", - "title": "Landing Zone Design and Implementation", - "description": "Landing Zone Design and Implementation — Landing Zone (edition EN v34, release EN-v34-18001960544, available as PDF).", - "category": "Landing Zone", - "version": "EN v34", - "updatedAt": "2025-09-25T12:34:02Z", - "collection": "LandingZone", - "collectionSlug": "landingzone", - "collectionLabel": "Landing Zone", - "pdfUrl": "/docs/LandingZone/EN-v34-18001960544/Landing-Zone-Design-and-Implementation.pdf", - "language": "EN", - "variant": "EN-v34-18001960544", - "versionSlug": "en-v34-18001960544", - "tags": [ - "EN", - "EN v34", - "Landing Zone" - ], - "pathSegments": [ - "LandingZone", - "EN-v34-18001960544" - ] - }, - { - "slug": "landingzone-en-v35-18002040798-landing-zone-design-and-implementation", - "title": "Landing Zone Design and Implementation", - "description": "Landing Zone Design and Implementation — Landing Zone (edition EN v35, release EN-v35-18002040798, available as PDF).", - "category": "Landing Zone", - "version": "EN v35", - "updatedAt": "2025-09-25T12:34:02Z", - "collection": "LandingZone", - "collectionSlug": "landingzone", - "collectionLabel": "Landing Zone", - "pdfUrl": "/docs/LandingZone/EN-v35-18002040798/Landing-Zone-Design-and-Implementation.pdf", - "language": "EN", - "variant": "EN-v35-18002040798", - "versionSlug": "en-v35-18002040798", - "tags": [ - "EN", - "EN v35", - "Landing Zone" - ], - "pathSegments": [ - "LandingZone", - "EN-v35-18002040798" - ] - }, - { - "slug": "landingzone-en-v36-18002294267-landing-zone-design-and-implementation", - "title": "Landing Zone Design and Implementation", - "description": "Landing Zone Design and Implementation — Landing Zone (edition EN v36, release EN-v36-18002294267, available as PDF).", - "category": "Landing Zone", - "version": "EN v36", - "updatedAt": "2025-09-25T12:34:02Z", - "collection": "LandingZone", - "collectionSlug": "landingzone", - "collectionLabel": "Landing Zone", - "pdfUrl": "/docs/LandingZone/EN-v36-18002294267/Landing-Zone-Design-and-Implementation.pdf", - "language": "EN", - "variant": "EN-v36-18002294267", - "versionSlug": "en-v36-18002294267", - "tags": [ - "EN", - "EN v36", - "Landing Zone" - ], - "pathSegments": [ - "LandingZone", - "EN-v36-18002294267" - ] - }, - { - "slug": "landingzone-en-v37-18002553627-landing-zone-design-and-implementation", - "title": "Landing Zone Design and Implementation", - "description": "Landing Zone Design and Implementation — Landing Zone (edition EN v37, release EN-v37-18002553627, available as PDF).", - "category": "Landing Zone", - "version": "EN v37", - "updatedAt": "2025-09-25T12:34:02Z", - "collection": "LandingZone", - "collectionSlug": "landingzone", - "collectionLabel": "Landing Zone", - "pdfUrl": "/docs/LandingZone/EN-v37-18002553627/Landing-Zone-Design-and-Implementation.pdf", - "language": "EN", - "variant": "EN-v37-18002553627", - "versionSlug": "en-v37-18002553627", - "tags": [ - "EN", - "EN v37", - "Landing Zone" - ], - "pathSegments": [ - "LandingZone", - "EN-v37-18002553627" - ] - }, - { - "slug": "landingzone-en-v38-18003957466-landing-zone-design-and-implementation", - "title": "Landing Zone Design and Implementation", - "description": "Landing Zone Design and Implementation — Landing Zone (edition EN v38, release EN-v38-18003957466, available as PDF).", - "category": "Landing Zone", - "version": "EN v38", - "updatedAt": "2025-09-25T12:34:02Z", - "collection": "LandingZone", - "collectionSlug": "landingzone", - "collectionLabel": "Landing Zone", - "pdfUrl": "/docs/LandingZone/EN-v38-18003957466/Landing-Zone-Design-and-Implementation.pdf", - "language": "EN", - "variant": "EN-v38-18003957466", - "versionSlug": "en-v38-18003957466", - "tags": [ - "EN", - "EN v38", - "Landing Zone" - ], - "pathSegments": [ - "LandingZone", - "EN-v38-18003957466" - ] - }, - { - "slug": "landingzone-en-v39-18004672680-landing-zone-design-and-implementation", - "title": "Landing Zone Design and Implementation", - "description": "Landing Zone Design and Implementation — Landing Zone (edition EN v39, release EN-v39-18004672680, available as PDF).", - "category": "Landing Zone", - "version": "EN v39", - "updatedAt": "2025-09-25T12:34:02Z", - "collection": "LandingZone", - "collectionSlug": "landingzone", - "collectionLabel": "Landing Zone", - "pdfUrl": "/docs/LandingZone/EN-v39-18004672680/Landing-Zone-Design-and-Implementation.pdf", - "language": "EN", - "variant": "EN-v39-18004672680", - "versionSlug": "en-v39-18004672680", - "tags": [ - "EN", - "EN v39", - "Landing Zone" - ], - "pathSegments": [ - "LandingZone", - "EN-v39-18004672680" - ] - }, - { - "slug": "landingzone-en-v40-18004678416-landing-zone-design-and-implementation", - "title": "Landing Zone Design and Implementation", - "description": "Landing Zone Design and Implementation — Landing Zone (edition EN v40, release EN-v40-18004678416, available as PDF).", - "category": "Landing Zone", - "version": "EN v40", - "updatedAt": "2025-09-25T12:34:02Z", - "collection": "LandingZone", - "collectionSlug": "landingzone", - "collectionLabel": "Landing Zone", - "pdfUrl": "/docs/LandingZone/EN-v40-18004678416/Landing-Zone-Design-and-Implementation.pdf", - "language": "EN", - "variant": "EN-v40-18004678416", - "versionSlug": "en-v40-18004678416", - "tags": [ - "EN", - "EN v40", - "Landing Zone" - ], - "pathSegments": [ - "LandingZone", - "EN-v40-18004678416" - ] - }, - { - "slug": "landingzone-en-v41-18005142964-landing-zone-design-and-implementation", - "title": "Landing Zone Design and Implementation", - "description": "Landing Zone Design and Implementation — Landing Zone (edition EN v41, release EN-v41-18005142964, available as PDF).", - "category": "Landing Zone", - "version": "EN v41", - "updatedAt": "2025-09-25T12:34:02Z", - "collection": "LandingZone", - "collectionSlug": "landingzone", - "collectionLabel": "Landing Zone", - "pdfUrl": "/docs/LandingZone/EN-v41-18005142964/Landing-Zone-Design-and-Implementation.pdf", - "language": "EN", - "variant": "EN-v41-18005142964", - "versionSlug": "en-v41-18005142964", - "tags": [ - "EN", - "EN v41", - "Landing Zone" - ], - "pathSegments": [ - "LandingZone", - "EN-v41-18005142964" - ] - }, - { - "slug": "landingzone-en-v42-18006148753-landing-zone-design-and-implementation", - "title": "Landing Zone Design and Implementation", - "description": "Landing Zone Design and Implementation — Landing Zone (edition EN v42, release EN-v42-18006148753, available as PDF).", - "category": "Landing Zone", - "version": "EN v42", - "updatedAt": "2025-09-25T12:34:02Z", - "collection": "LandingZone", - "collectionSlug": "landingzone", - "collectionLabel": "Landing Zone", - "pdfUrl": "/docs/LandingZone/EN-v42-18006148753/Landing-Zone-Design-and-Implementation.pdf", - "language": "EN", - "variant": "EN-v42-18006148753", - "versionSlug": "en-v42-18006148753", - "tags": [ - "EN", - "EN v42", - "Landing Zone" - ], - "pathSegments": [ - "LandingZone", - "EN-v42-18006148753" - ] - }, - { - "slug": "linux-k8s-ops-cn-v33-17996525102-linux-k8s-ops-guide", - "title": "Linux K8 S OPS Guide", - "description": "Linux K8 S OPS Guide — Linux K8 S OPS (edition CN v33, release CN-v33-17996525102, available as PDF and HTML).", - "category": "Linux K8 S OPS", - "version": "CN v33", - "updatedAt": "2025-09-25T12:34:02Z", - "collection": "Linux-K8S-OPS", - "collectionSlug": "linux-k8s-ops", - "collectionLabel": "Linux K8 S OPS", - "pdfUrl": "/docs/Linux-K8S-OPS/CN-v33-17996525102/Linux-K8S-OPS-Guide.pdf", - "htmlUrl": "/docs/Linux-K8S-OPS/CN-v33-17996525102/Linux-K8S-OPS-Guide.html", - "language": "CN", - "variant": "CN-v33-17996525102", - "versionSlug": "cn-v33-17996525102", - "tags": [ - "CN", - "CN v33", - "Linux K8 S OPS" - ], - "pathSegments": [ - "Linux-K8S-OPS", - "CN-v33-17996525102" - ] - }, - { - "slug": "keycloak-en-v33-17996525102-keycloak-sso-design-and-implementation", - "title": "Keycloak SSO Design and Implementation", - "description": "Keycloak SSO Design and Implementation — Keycloak (edition EN v33, release EN-v33-17996525102, available as HTML).", - "category": "Keycloak", - "version": "EN v33", - "updatedAt": "2025-09-25T12:34:01Z", - "collection": "Keycloak", - "collectionSlug": "keycloak", - "collectionLabel": "Keycloak", - "htmlUrl": "/docs/Keycloak/EN-v33-17996525102/Keycloak-SSO-Design-and-Implementation.html", - "language": "EN", - "variant": "EN-v33-17996525102", - "versionSlug": "en-v33-17996525102", - "tags": [ - "EN", - "EN v33", - "Keycloak" - ], - "pathSegments": [ - "Keycloak", - "EN-v33-17996525102" - ] - }, - { - "slug": "keycloak-en-v34-18001960544-keycloak-sso-design-and-implementation", - "title": "Keycloak SSO Design and Implementation", - "description": "Keycloak SSO Design and Implementation — Keycloak (edition EN v34, release EN-v34-18001960544, available as HTML).", - "category": "Keycloak", - "version": "EN v34", - "updatedAt": "2025-09-25T12:34:01Z", - "collection": "Keycloak", - "collectionSlug": "keycloak", - "collectionLabel": "Keycloak", - "htmlUrl": "/docs/Keycloak/EN-v34-18001960544/Keycloak-SSO-Design-and-Implementation.html", - "language": "EN", - "variant": "EN-v34-18001960544", - "versionSlug": "en-v34-18001960544", - "tags": [ - "EN", - "EN v34", - "Keycloak" - ], - "pathSegments": [ - "Keycloak", - "EN-v34-18001960544" - ] - }, - { - "slug": "keycloak-en-v35-18002040798-keycloak-sso-design-and-implementation", - "title": "Keycloak SSO Design and Implementation", - "description": "Keycloak SSO Design and Implementation — Keycloak (edition EN v35, release EN-v35-18002040798, available as HTML).", - "category": "Keycloak", - "version": "EN v35", - "updatedAt": "2025-09-25T12:34:01Z", - "collection": "Keycloak", - "collectionSlug": "keycloak", - "collectionLabel": "Keycloak", - "htmlUrl": "/docs/Keycloak/EN-v35-18002040798/Keycloak-SSO-Design-and-Implementation.html", - "language": "EN", - "variant": "EN-v35-18002040798", - "versionSlug": "en-v35-18002040798", - "tags": [ - "EN", - "EN v35", - "Keycloak" - ], - "pathSegments": [ - "Keycloak", - "EN-v35-18002040798" - ] - }, - { - "slug": "keycloak-en-v36-18002294267-keycloak-sso-design-and-implementation", - "title": "Keycloak SSO Design and Implementation", - "description": "Keycloak SSO Design and Implementation — Keycloak (edition EN v36, release EN-v36-18002294267, available as HTML).", - "category": "Keycloak", - "version": "EN v36", - "updatedAt": "2025-09-25T12:34:01Z", - "collection": "Keycloak", - "collectionSlug": "keycloak", - "collectionLabel": "Keycloak", - "htmlUrl": "/docs/Keycloak/EN-v36-18002294267/Keycloak-SSO-Design-and-Implementation.html", - "language": "EN", - "variant": "EN-v36-18002294267", - "versionSlug": "en-v36-18002294267", - "tags": [ - "EN", - "EN v36", - "Keycloak" - ], - "pathSegments": [ - "Keycloak", - "EN-v36-18002294267" - ] - }, - { - "slug": "keycloak-en-v39-18004672680-keycloak-sso-design-and-implementation", - "title": "Keycloak SSO Design and Implementation", - "description": "Keycloak SSO Design and Implementation — Keycloak (edition EN v39, release EN-v39-18004672680, available as HTML).", - "category": "Keycloak", - "version": "EN v39", - "updatedAt": "2025-09-25T12:34:01Z", - "collection": "Keycloak", - "collectionSlug": "keycloak", - "collectionLabel": "Keycloak", - "htmlUrl": "/docs/Keycloak/EN-v39-18004672680/Keycloak-SSO-Design-and-Implementation.html", - "language": "EN", - "variant": "EN-v39-18004672680", - "versionSlug": "en-v39-18004672680", - "tags": [ - "EN", - "EN v39", - "Keycloak" - ], - "pathSegments": [ - "Keycloak", - "EN-v39-18004672680" - ] - }, - { - "slug": "the-indiedeveloper-fullstack-roadmap-en-v40-18004678416-fullstack-roadmap-en", - "title": "fullstack roadmap en", - "description": "fullstack roadmap en — The Indie Developer Fullstack Roadmap (edition EN v40, release EN-v40-18004678416, available as PDF and HTML).", - "category": "The Indie Developer Fullstack Roadmap", - "version": "EN v40", - "updatedAt": "2025-09-25T12:29:13Z", - "collection": "The-IndieDeveloper-Fullstack-Roadmap", - "collectionSlug": "the-indiedeveloper-fullstack-roadmap", - "collectionLabel": "The Indie Developer Fullstack Roadmap", - "pdfUrl": "/docs/The-IndieDeveloper-Fullstack-Roadmap/EN-v40-18004678416/fullstack-roadmap-en.pdf", - "htmlUrl": "/docs/The-IndieDeveloper-Fullstack-Roadmap/EN-v40-18004678416/fullstack-roadmap-en.html", - "language": "EN", - "variant": "EN-v40-18004678416", - "versionSlug": "en-v40-18004678416", - "tags": [ - "EN", - "EN v40", - "The Indie Developer Fullstack Roadmap" - ], - "pathSegments": [ - "The-IndieDeveloper-Fullstack-Roadmap", - "EN-v40-18004678416" - ] - }, - { - "slug": "the-indiedeveloper-fullstack-roadmap-en-v39-18004672680-fullstack-roadmap-en", - "title": "fullstack roadmap en", - "description": "fullstack roadmap en — The Indie Developer Fullstack Roadmap (edition EN v39, release EN-v39-18004672680, available as PDF and HTML).", - "category": "The Indie Developer Fullstack Roadmap", - "version": "EN v39", - "updatedAt": "2025-09-25T12:29:09Z", - "collection": "The-IndieDeveloper-Fullstack-Roadmap", - "collectionSlug": "the-indiedeveloper-fullstack-roadmap", - "collectionLabel": "The Indie Developer Fullstack Roadmap", - "pdfUrl": "/docs/The-IndieDeveloper-Fullstack-Roadmap/EN-v39-18004672680/fullstack-roadmap-en.pdf", - "htmlUrl": "/docs/The-IndieDeveloper-Fullstack-Roadmap/EN-v39-18004672680/fullstack-roadmap-en.html", - "language": "EN", - "variant": "EN-v39-18004672680", - "versionSlug": "en-v39-18004672680", - "tags": [ - "EN", - "EN v39", - "The Indie Developer Fullstack Roadmap" - ], - "pathSegments": [ - "The-IndieDeveloper-Fullstack-Roadmap", - "EN-v39-18004672680" - ] - }, - { - "slug": "the-indiedeveloper-fullstack-roadmap-en-v38-18003957466-fullstack-roadmap-en", - "title": "fullstack roadmap en", - "description": "fullstack roadmap en — The Indie Developer Fullstack Roadmap (edition EN v38, release EN-v38-18003957466, available as PDF and HTML).", - "category": "The Indie Developer Fullstack Roadmap", - "version": "EN v38", - "updatedAt": "2025-09-25T12:29:06Z", - "collection": "The-IndieDeveloper-Fullstack-Roadmap", - "collectionSlug": "the-indiedeveloper-fullstack-roadmap", - "collectionLabel": "The Indie Developer Fullstack Roadmap", - "pdfUrl": "/docs/The-IndieDeveloper-Fullstack-Roadmap/EN-v38-18003957466/fullstack-roadmap-en.pdf", - "htmlUrl": "/docs/The-IndieDeveloper-Fullstack-Roadmap/EN-v38-18003957466/fullstack-roadmap-en.html", - "language": "EN", - "variant": "EN-v38-18003957466", - "versionSlug": "en-v38-18003957466", - "tags": [ - "EN", - "EN v38", - "The Indie Developer Fullstack Roadmap" - ], - "pathSegments": [ - "The-IndieDeveloper-Fullstack-Roadmap", - "EN-v38-18003957466" - ] - }, - { - "slug": "the-indiedeveloper-fullstack-roadmap-en-v37-18002553627-fullstack-roadmap-en", - "title": "fullstack roadmap en", - "description": "fullstack roadmap en — The Indie Developer Fullstack Roadmap (edition EN v37, release EN-v37-18002553627, available as PDF and HTML).", - "category": "The Indie Developer Fullstack Roadmap", - "version": "EN v37", - "updatedAt": "2025-09-25T12:29:03Z", - "collection": "The-IndieDeveloper-Fullstack-Roadmap", - "collectionSlug": "the-indiedeveloper-fullstack-roadmap", - "collectionLabel": "The Indie Developer Fullstack Roadmap", - "pdfUrl": "/docs/The-IndieDeveloper-Fullstack-Roadmap/EN-v37-18002553627/fullstack-roadmap-en.pdf", - "htmlUrl": "/docs/The-IndieDeveloper-Fullstack-Roadmap/EN-v37-18002553627/fullstack-roadmap-en.html", - "language": "EN", - "variant": "EN-v37-18002553627", - "versionSlug": "en-v37-18002553627", - "tags": [ - "EN", - "EN v37", - "The Indie Developer Fullstack Roadmap" - ], - "pathSegments": [ - "The-IndieDeveloper-Fullstack-Roadmap", - "EN-v37-18002553627" - ] - }, - { - "slug": "the-indiedeveloper-fullstack-roadmap-en-v36-18002294267-fullstack-roadmap-en", - "title": "fullstack roadmap en", - "description": "fullstack roadmap en — The Indie Developer Fullstack Roadmap (edition EN v36, release EN-v36-18002294267, available as PDF and HTML).", - "category": "The Indie Developer Fullstack Roadmap", - "version": "EN v36", - "updatedAt": "2025-09-25T12:29:01Z", - "collection": "The-IndieDeveloper-Fullstack-Roadmap", - "collectionSlug": "the-indiedeveloper-fullstack-roadmap", - "collectionLabel": "The Indie Developer Fullstack Roadmap", - "pdfUrl": "/docs/The-IndieDeveloper-Fullstack-Roadmap/EN-v36-18002294267/fullstack-roadmap-en.pdf", - "htmlUrl": "/docs/The-IndieDeveloper-Fullstack-Roadmap/EN-v36-18002294267/fullstack-roadmap-en.html", - "language": "EN", - "variant": "EN-v36-18002294267", - "versionSlug": "en-v36-18002294267", - "tags": [ - "EN", - "EN v36", - "The Indie Developer Fullstack Roadmap" - ], - "pathSegments": [ - "The-IndieDeveloper-Fullstack-Roadmap", - "EN-v36-18002294267" - ] - }, - { - "slug": "the-indiedeveloper-fullstack-roadmap-en-v34-18001960544-fullstack-roadmap-en", - "title": "fullstack roadmap en", - "description": "fullstack roadmap en — The Indie Developer Fullstack Roadmap (edition EN v34, release EN-v34-18001960544, available as PDF and HTML).", - "category": "The Indie Developer Fullstack Roadmap", - "version": "EN v34", - "updatedAt": "2025-09-25T12:28:54Z", - "collection": "The-IndieDeveloper-Fullstack-Roadmap", - "collectionSlug": "the-indiedeveloper-fullstack-roadmap", - "collectionLabel": "The Indie Developer Fullstack Roadmap", - "pdfUrl": "/docs/The-IndieDeveloper-Fullstack-Roadmap/EN-v34-18001960544/fullstack-roadmap-en.pdf", - "htmlUrl": "/docs/The-IndieDeveloper-Fullstack-Roadmap/EN-v34-18001960544/fullstack-roadmap-en.html", - "language": "EN", - "variant": "EN-v34-18001960544", - "versionSlug": "en-v34-18001960544", - "tags": [ - "EN", - "EN v34", - "The Indie Developer Fullstack Roadmap" - ], - "pathSegments": [ - "The-IndieDeveloper-Fullstack-Roadmap", - "EN-v34-18001960544" - ] - }, - { - "slug": "the-indiedeveloper-fullstack-roadmap-cn-v40-18004678416-fullstack-roadmap-cn", - "title": "fullstack roadmap cn", - "description": "fullstack roadmap cn — The Indie Developer Fullstack Roadmap (edition CN v40, release CN-v40-18004678416, available as PDF and HTML).", - "category": "The Indie Developer Fullstack Roadmap", - "version": "CN v40", - "updatedAt": "2025-09-25T12:28:49Z", - "collection": "The-IndieDeveloper-Fullstack-Roadmap", - "collectionSlug": "the-indiedeveloper-fullstack-roadmap", - "collectionLabel": "The Indie Developer Fullstack Roadmap", - "pdfUrl": "/docs/The-IndieDeveloper-Fullstack-Roadmap/CN-v40-18004678416/fullstack-roadmap-cn.pdf", - "htmlUrl": "/docs/The-IndieDeveloper-Fullstack-Roadmap/CN-v40-18004678416/fullstack-roadmap-cn.html", - "language": "CN", - "variant": "CN-v40-18004678416", - "versionSlug": "cn-v40-18004678416", - "tags": [ - "CN", - "CN v40", - "The Indie Developer Fullstack Roadmap" - ], - "pathSegments": [ - "The-IndieDeveloper-Fullstack-Roadmap", - "CN-v40-18004678416" - ] - }, - { - "slug": "the-indiedeveloper-fullstack-roadmap-en-v33-17996525102-fullstack-roadmap-en", - "title": "fullstack roadmap en", - "description": "fullstack roadmap en — The Indie Developer Fullstack Roadmap (edition EN v33, release EN-v33-17996525102, available as PDF and HTML).", - "category": "The Indie Developer Fullstack Roadmap", - "version": "EN v33", - "updatedAt": "2025-09-25T12:28:49Z", - "collection": "The-IndieDeveloper-Fullstack-Roadmap", - "collectionSlug": "the-indiedeveloper-fullstack-roadmap", - "collectionLabel": "The Indie Developer Fullstack Roadmap", - "pdfUrl": "/docs/The-IndieDeveloper-Fullstack-Roadmap/EN-v33-17996525102/fullstack-roadmap-en.pdf", - "htmlUrl": "/docs/The-IndieDeveloper-Fullstack-Roadmap/EN-v33-17996525102/fullstack-roadmap-en.html", - "language": "EN", - "variant": "EN-v33-17996525102", - "versionSlug": "en-v33-17996525102", - "tags": [ - "EN", - "EN v33", - "The Indie Developer Fullstack Roadmap" - ], - "pathSegments": [ - "The-IndieDeveloper-Fullstack-Roadmap", - "EN-v33-17996525102" - ] - }, - { - "slug": "the-indiedeveloper-fullstack-roadmap-cn-v39-18004672680-fullstack-roadmap-cn", - "title": "fullstack roadmap cn", - "description": "fullstack roadmap cn — The Indie Developer Fullstack Roadmap (edition CN v39, release CN-v39-18004672680, available as PDF and HTML).", - "category": "The Indie Developer Fullstack Roadmap", - "version": "CN v39", - "updatedAt": "2025-09-25T12:27:51Z", - "collection": "The-IndieDeveloper-Fullstack-Roadmap", - "collectionSlug": "the-indiedeveloper-fullstack-roadmap", - "collectionLabel": "The Indie Developer Fullstack Roadmap", - "pdfUrl": "/docs/The-IndieDeveloper-Fullstack-Roadmap/CN-v39-18004672680/fullstack-roadmap-cn.pdf", - "htmlUrl": "/docs/The-IndieDeveloper-Fullstack-Roadmap/CN-v39-18004672680/fullstack-roadmap-cn.html", - "language": "CN", - "variant": "CN-v39-18004672680", - "versionSlug": "cn-v39-18004672680", - "tags": [ - "CN", - "CN v39", - "The Indie Developer Fullstack Roadmap" - ], - "pathSegments": [ - "The-IndieDeveloper-Fullstack-Roadmap", - "CN-v39-18004672680" - ] - }, - { - "slug": "the-indiedeveloper-fullstack-roadmap-cn-v38-18003957466-fullstack-roadmap-cn", - "title": "fullstack roadmap cn", - "description": "fullstack roadmap cn — The Indie Developer Fullstack Roadmap (edition CN v38, release CN-v38-18003957466, available as PDF and HTML).", - "category": "The Indie Developer Fullstack Roadmap", - "version": "CN v38", - "updatedAt": "2025-09-25T12:27:11Z", - "collection": "The-IndieDeveloper-Fullstack-Roadmap", - "collectionSlug": "the-indiedeveloper-fullstack-roadmap", - "collectionLabel": "The Indie Developer Fullstack Roadmap", - "pdfUrl": "/docs/The-IndieDeveloper-Fullstack-Roadmap/CN-v38-18003957466/fullstack-roadmap-cn.pdf", - "htmlUrl": "/docs/The-IndieDeveloper-Fullstack-Roadmap/CN-v38-18003957466/fullstack-roadmap-cn.html", - "language": "CN", - "variant": "CN-v38-18003957466", - "versionSlug": "cn-v38-18003957466", - "tags": [ - "CN", - "CN v38", - "The Indie Developer Fullstack Roadmap" - ], - "pathSegments": [ - "The-IndieDeveloper-Fullstack-Roadmap", - "CN-v38-18003957466" - ] - }, - { - "slug": "the-indiedeveloper-fullstack-roadmap-cn-v36-18002294267-fullstack-roadmap-cn", - "title": "fullstack roadmap cn", - "description": "fullstack roadmap cn — The Indie Developer Fullstack Roadmap (edition CN v36, release CN-v36-18002294267, available as PDF and HTML).", - "category": "The Indie Developer Fullstack Roadmap", - "version": "CN v36", - "updatedAt": "2025-09-25T12:25:51Z", - "collection": "The-IndieDeveloper-Fullstack-Roadmap", - "collectionSlug": "the-indiedeveloper-fullstack-roadmap", - "collectionLabel": "The Indie Developer Fullstack Roadmap", - "pdfUrl": "/docs/The-IndieDeveloper-Fullstack-Roadmap/CN-v36-18002294267/fullstack-roadmap-cn.pdf", - "htmlUrl": "/docs/The-IndieDeveloper-Fullstack-Roadmap/CN-v36-18002294267/fullstack-roadmap-cn.html", - "language": "CN", - "variant": "CN-v36-18002294267", - "versionSlug": "cn-v36-18002294267", - "tags": [ - "CN", - "CN v36", - "The Indie Developer Fullstack Roadmap" - ], - "pathSegments": [ - "The-IndieDeveloper-Fullstack-Roadmap", - "CN-v36-18002294267" - ] - }, - { - "slug": "the-indiedeveloper-fullstack-roadmap-cn-v34-18001960544-fullstack-roadmap-cn", - "title": "fullstack roadmap cn", - "description": "fullstack roadmap cn — The Indie Developer Fullstack Roadmap (edition CN v34, release CN-v34-18001960544, available as PDF and HTML).", - "category": "The Indie Developer Fullstack Roadmap", - "version": "CN v34", - "updatedAt": "2025-09-25T12:24:55Z", - "collection": "The-IndieDeveloper-Fullstack-Roadmap", - "collectionSlug": "the-indiedeveloper-fullstack-roadmap", - "collectionLabel": "The Indie Developer Fullstack Roadmap", - "pdfUrl": "/docs/The-IndieDeveloper-Fullstack-Roadmap/CN-v34-18001960544/fullstack-roadmap-cn.pdf", - "htmlUrl": "/docs/The-IndieDeveloper-Fullstack-Roadmap/CN-v34-18001960544/fullstack-roadmap-cn.html", - "language": "CN", - "variant": "CN-v34-18001960544", - "versionSlug": "cn-v34-18001960544", - "tags": [ - "CN", - "CN v34", - "The Indie Developer Fullstack Roadmap" - ], - "pathSegments": [ - "The-IndieDeveloper-Fullstack-Roadmap", - "CN-v34-18001960544" - ] - }, - { - "slug": "techexploration-en-v40-18004678416-tech-exploration", - "title": "Tech Exploration", - "description": "Tech Exploration — Tech Exploration (edition EN v40, release EN-v40-18004678416, available as PDF and HTML).", - "category": "Tech Exploration", - "version": "EN v40", - "updatedAt": "2025-09-25T12:23:45Z", - "collection": "TechExploration", - "collectionSlug": "techexploration", - "collectionLabel": "Tech Exploration", - "pdfUrl": "/docs/TechExploration/EN-v40-18004678416/Tech-Exploration.pdf", - "htmlUrl": "/docs/TechExploration/EN-v40-18004678416/Tech-Exploration.html", - "language": "EN", - "variant": "EN-v40-18004678416", - "versionSlug": "en-v40-18004678416", - "tags": [ - "EN", - "EN v40", - "Tech Exploration" - ], - "pathSegments": [ - "TechExploration", - "EN-v40-18004678416" - ] - }, - { - "slug": "the-indiedeveloper-fullstack-roadmap-cn-v33-17996525102-fullstack-roadmap-cn", - "title": "fullstack roadmap cn", - "description": "fullstack roadmap cn — The Indie Developer Fullstack Roadmap (edition CN v33, release CN-v33-17996525102, available as PDF and HTML).", - "category": "The Indie Developer Fullstack Roadmap", - "version": "CN v33", - "updatedAt": "2025-09-25T12:23:45Z", - "collection": "The-IndieDeveloper-Fullstack-Roadmap", - "collectionSlug": "the-indiedeveloper-fullstack-roadmap", - "collectionLabel": "The Indie Developer Fullstack Roadmap", - "pdfUrl": "/docs/The-IndieDeveloper-Fullstack-Roadmap/CN-v33-17996525102/fullstack-roadmap-cn.pdf", - "htmlUrl": "/docs/The-IndieDeveloper-Fullstack-Roadmap/CN-v33-17996525102/fullstack-roadmap-cn.html", - "language": "CN", - "variant": "CN-v33-17996525102", - "versionSlug": "cn-v33-17996525102", - "tags": [ - "CN", - "CN v33", - "The Indie Developer Fullstack Roadmap" - ], - "pathSegments": [ - "The-IndieDeveloper-Fullstack-Roadmap", - "CN-v33-17996525102" - ] - }, - { - "slug": "techexploration-en-v39-18004672680-tech-exploration", - "title": "Tech Exploration", - "description": "Tech Exploration — Tech Exploration (edition EN v39, release EN-v39-18004672680, available as PDF and HTML).", - "category": "Tech Exploration", - "version": "EN v39", - "updatedAt": "2025-09-25T12:17:16Z", - "collection": "TechExploration", - "collectionSlug": "techexploration", - "collectionLabel": "Tech Exploration", - "pdfUrl": "/docs/TechExploration/EN-v39-18004672680/Tech-Exploration.pdf", - "htmlUrl": "/docs/TechExploration/EN-v39-18004672680/Tech-Exploration.html", - "language": "EN", - "variant": "EN-v39-18004672680", - "versionSlug": "en-v39-18004672680", - "tags": [ - "EN", - "EN v39", - "Tech Exploration" - ], - "pathSegments": [ - "TechExploration", - "EN-v39-18004672680" - ] - }, - { - "slug": "techexploration-en-v37-18002553627-tech-exploration", - "title": "Tech Exploration", - "description": "Tech Exploration — Tech Exploration (edition EN v37, release EN-v37-18002553627, available as PDF and HTML).", - "category": "Tech Exploration", - "version": "EN v37", - "updatedAt": "2025-09-25T12:11:38Z", - "collection": "TechExploration", - "collectionSlug": "techexploration", - "collectionLabel": "Tech Exploration", - "pdfUrl": "/docs/TechExploration/EN-v37-18002553627/Tech-Exploration.pdf", - "htmlUrl": "/docs/TechExploration/EN-v37-18002553627/Tech-Exploration.html", - "language": "EN", - "variant": "EN-v37-18002553627", - "versionSlug": "en-v37-18002553627", - "tags": [ - "EN", - "EN v37", - "Tech Exploration" - ], - "pathSegments": [ - "TechExploration", - "EN-v37-18002553627" - ] - }, - { - "slug": "techexploration-en-v36-18002294267-tech-exploration", - "title": "Tech Exploration", - "description": "Tech Exploration — Tech Exploration (edition EN v36, release EN-v36-18002294267, available as PDF and HTML).", - "category": "Tech Exploration", - "version": "EN v36", - "updatedAt": "2025-09-25T12:04:23Z", - "collection": "TechExploration", - "collectionSlug": "techexploration", - "collectionLabel": "Tech Exploration", - "pdfUrl": "/docs/TechExploration/EN-v36-18002294267/Tech-Exploration.pdf", - "htmlUrl": "/docs/TechExploration/EN-v36-18002294267/Tech-Exploration.html", - "language": "EN", - "variant": "EN-v36-18002294267", - "versionSlug": "en-v36-18002294267", - "tags": [ - "EN", - "EN v36", - "Tech Exploration" - ], - "pathSegments": [ - "TechExploration", - "EN-v36-18002294267" - ] - }, - { - "slug": "techexploration-en-v34-18001960544-tech-exploration", - "title": "Tech Exploration", - "description": "Tech Exploration — Tech Exploration (edition EN v34, release EN-v34-18001960544, available as PDF and HTML).", - "category": "Tech Exploration", - "version": "EN v34", - "updatedAt": "2025-09-25T11:59:06Z", - "collection": "TechExploration", - "collectionSlug": "techexploration", - "collectionLabel": "Tech Exploration", - "pdfUrl": "/docs/TechExploration/EN-v34-18001960544/Tech-Exploration.pdf", - "htmlUrl": "/docs/TechExploration/EN-v34-18001960544/Tech-Exploration.html", - "language": "EN", - "variant": "EN-v34-18001960544", - "versionSlug": "en-v34-18001960544", - "tags": [ - "EN", - "EN v34", - "Tech Exploration" - ], - "pathSegments": [ - "TechExploration", - "EN-v34-18001960544" - ] - }, - { - "slug": "personal-en-v40-18004678416-fullstack-language-core", - "title": "fullstack language core", - "description": "fullstack language core — Personal (edition EN v40, release EN-v40-18004678416, available as PDF and HTML).", - "category": "Personal", - "version": "EN v40", - "updatedAt": "2025-09-25T11:55:22Z", - "collection": "Personal", - "collectionSlug": "personal", - "collectionLabel": "Personal", - "pdfUrl": "/docs/Personal/EN-v40-18004678416/fullstack-language-core.pdf", - "htmlUrl": "/docs/Personal/EN-v40-18004678416/fullstack-language-core.html", - "language": "EN", - "variant": "EN-v40-18004678416", - "versionSlug": "en-v40-18004678416", - "tags": [ - "EN", - "EN v40", - "Personal" - ], - "pathSegments": [ - "Personal", - "EN-v40-18004678416" - ] - }, - { - "slug": "techexploration-en-v33-17996525102-tech-exploration", - "title": "Tech Exploration", - "description": "Tech Exploration — Tech Exploration (edition EN v33, release EN-v33-17996525102, available as PDF and HTML).", - "category": "Tech Exploration", - "version": "EN v33", - "updatedAt": "2025-09-25T11:55:22Z", - "collection": "TechExploration", - "collectionSlug": "techexploration", - "collectionLabel": "Tech Exploration", - "pdfUrl": "/docs/TechExploration/EN-v33-17996525102/Tech-Exploration.pdf", - "htmlUrl": "/docs/TechExploration/EN-v33-17996525102/Tech-Exploration.html", - "language": "EN", - "variant": "EN-v33-17996525102", - "versionSlug": "en-v33-17996525102", - "tags": [ - "EN", - "EN v33", - "Tech Exploration" - ], - "pathSegments": [ - "TechExploration", - "EN-v33-17996525102" - ] - }, - { - "slug": "personal-en-v40-18004678416-cet-6", - "title": "cet 6", - "description": "cet 6 — Personal (edition EN v40, release EN-v40-18004678416, available as PDF and HTML).", - "category": "Personal", - "version": "EN v40", - "updatedAt": "2025-09-25T11:55:04Z", - "collection": "Personal", - "collectionSlug": "personal", - "collectionLabel": "Personal", - "pdfUrl": "/docs/Personal/EN-v40-18004678416/cet-6.pdf", - "htmlUrl": "/docs/Personal/EN-v40-18004678416/cet-6.html", - "language": "EN", - "variant": "EN-v40-18004678416", - "versionSlug": "en-v40-18004678416", - "tags": [ - "EN", - "EN v40", - "Personal" - ], - "pathSegments": [ - "Personal", - "EN-v40-18004678416" - ] - }, - { - "slug": "personal-en-v40-18004678416-resume-zh", - "title": "Resume ZH", - "description": "Resume ZH — Personal (edition EN v40, release EN-v40-18004678416, available as PDF and HTML).", - "category": "Personal", - "version": "EN v40", - "updatedAt": "2025-09-25T11:48:16Z", - "collection": "Personal", - "collectionSlug": "personal", - "collectionLabel": "Personal", - "pdfUrl": "/docs/Personal/EN-v40-18004678416/Resume-ZH.pdf", - "htmlUrl": "/docs/Personal/EN-v40-18004678416/Resume-ZH.html", - "language": "EN", - "variant": "EN-v40-18004678416", - "versionSlug": "en-v40-18004678416", - "tags": [ - "EN", - "EN v40", - "Personal" - ], - "pathSegments": [ - "Personal", - "EN-v40-18004678416" - ] - }, - { - "slug": "personal-en-v40-18004678416-resume-en", - "title": "Resume EN", - "description": "Resume EN — Personal (edition EN v40, release EN-v40-18004678416, available as PDF and HTML).", - "category": "Personal", - "version": "EN v40", - "updatedAt": "2025-09-25T11:47:19Z", - "collection": "Personal", - "collectionSlug": "personal", - "collectionLabel": "Personal", - "pdfUrl": "/docs/Personal/EN-v40-18004678416/Resume-EN.pdf", - "htmlUrl": "/docs/Personal/EN-v40-18004678416/Resume-EN.html", - "language": "EN", - "variant": "EN-v40-18004678416", - "versionSlug": "en-v40-18004678416", - "tags": [ - "EN", - "EN v40", - "Personal" - ], - "pathSegments": [ - "Personal", - "EN-v40-18004678416" - ] - }, - { - "slug": "personal-en-v40-18004678416-resume-devops-en", - "title": "Resume Dev Ops EN", - "description": "Resume Dev Ops EN — Personal (edition EN v40, release EN-v40-18004678416, available as PDF and HTML).", - "category": "Personal", - "version": "EN v40", - "updatedAt": "2025-09-25T11:47:06Z", - "collection": "Personal", - "collectionSlug": "personal", - "collectionLabel": "Personal", - "pdfUrl": "/docs/Personal/EN-v40-18004678416/Resume-DevOps-EN.pdf", - "htmlUrl": "/docs/Personal/EN-v40-18004678416/Resume-DevOps-EN.html", - "language": "EN", - "variant": "EN-v40-18004678416", - "versionSlug": "en-v40-18004678416", - "tags": [ - "EN", - "EN v40", - "Personal" - ], - "pathSegments": [ - "Personal", - "EN-v40-18004678416" - ] - }, - { - "slug": "personal-en-v40-18004678416-resume-devops-zh", - "title": "Resume Dev OPS ZH", - "description": "Resume Dev OPS ZH — Personal (edition EN v40, release EN-v40-18004678416, available as PDF and HTML).", - "category": "Personal", - "version": "EN v40", - "updatedAt": "2025-09-25T11:46:55Z", - "collection": "Personal", - "collectionSlug": "personal", - "collectionLabel": "Personal", - "pdfUrl": "/docs/Personal/EN-v40-18004678416/Resume-DevOPS-ZH.pdf", - "htmlUrl": "/docs/Personal/EN-v40-18004678416/Resume-DevOPS-ZH.html", - "language": "EN", - "variant": "EN-v40-18004678416", - "versionSlug": "en-v40-18004678416", - "tags": [ - "EN", - "EN v40", - "Personal" - ], - "pathSegments": [ - "Personal", - "EN-v40-18004678416" - ] - }, - { - "slug": "personal-en-v40-18004678416-readme", - "title": "README", - "description": "README — Personal (edition EN v40, release EN-v40-18004678416, available as PDF and HTML).", - "category": "Personal", - "version": "EN v40", - "updatedAt": "2025-09-25T11:46:35Z", - "collection": "Personal", - "collectionSlug": "personal", - "collectionLabel": "Personal", - "pdfUrl": "/docs/Personal/EN-v40-18004678416/README.pdf", - "htmlUrl": "/docs/Personal/EN-v40-18004678416/README.html", - "language": "EN", - "variant": "EN-v40-18004678416", - "versionSlug": "en-v40-18004678416", - "tags": [ - "EN", - "EN v40", - "Personal" - ], - "pathSegments": [ - "Personal", - "EN-v40-18004678416" - ] - }, - { - "slug": "personal-en-v40-18004678416-cv-zh", - "title": "CV ZH", - "description": "CV ZH — Personal (edition EN v40, release EN-v40-18004678416, available as PDF and HTML).", - "category": "Personal", - "version": "EN v40", - "updatedAt": "2025-09-25T11:46:12Z", - "collection": "Personal", - "collectionSlug": "personal", - "collectionLabel": "Personal", - "pdfUrl": "/docs/Personal/EN-v40-18004678416/CV-ZH.pdf", - "htmlUrl": "/docs/Personal/EN-v40-18004678416/CV-ZH.html", - "language": "EN", - "variant": "EN-v40-18004678416", - "versionSlug": "en-v40-18004678416", - "tags": [ - "EN", - "EN v40", - "Personal" - ], - "pathSegments": [ - "Personal", - "EN-v40-18004678416" - ] - }, - { - "slug": "personal-en-v40-18004678416-cv-en", - "title": "CV EN", - "description": "CV EN — Personal (edition EN v40, release EN-v40-18004678416, available as PDF and HTML).", - "category": "Personal", - "version": "EN v40", - "updatedAt": "2025-09-25T11:45:23Z", - "collection": "Personal", - "collectionSlug": "personal", - "collectionLabel": "Personal", - "pdfUrl": "/docs/Personal/EN-v40-18004678416/CV-EN.pdf", - "htmlUrl": "/docs/Personal/EN-v40-18004678416/CV-EN.html", - "language": "EN", - "variant": "EN-v40-18004678416", - "versionSlug": "en-v40-18004678416", - "tags": [ - "EN", - "EN v40", - "Personal" - ], - "pathSegments": [ - "Personal", - "EN-v40-18004678416" - ] - }, - { - "slug": "personal-en-v40-18004678416-cv-ai-dev-zh", - "title": "CV AI Dev ZH", - "description": "CV AI Dev ZH — Personal (edition EN v40, release EN-v40-18004678416, available as PDF and HTML).", - "category": "Personal", - "version": "EN v40", - "updatedAt": "2025-09-25T11:45:09Z", - "collection": "Personal", - "collectionSlug": "personal", - "collectionLabel": "Personal", - "pdfUrl": "/docs/Personal/EN-v40-18004678416/CV-AI-Dev-ZH.pdf", - "htmlUrl": "/docs/Personal/EN-v40-18004678416/CV-AI-Dev-ZH.html", - "language": "EN", - "variant": "EN-v40-18004678416", - "versionSlug": "en-v40-18004678416", - "tags": [ - "EN", - "EN v40", - "Personal" - ], - "pathSegments": [ - "Personal", - "EN-v40-18004678416" - ] - }, - { - "slug": "personal-en-v40-18004678416-cv-ai-dev-en", - "title": "CV AI Dev EN", - "description": "CV AI Dev EN — Personal (edition EN v40, release EN-v40-18004678416, available as PDF and HTML).", - "category": "Personal", - "version": "EN v40", - "updatedAt": "2025-09-25T11:44:21Z", - "collection": "Personal", - "collectionSlug": "personal", - "collectionLabel": "Personal", - "pdfUrl": "/docs/Personal/EN-v40-18004678416/CV-AI-Dev-EN.pdf", - "htmlUrl": "/docs/Personal/EN-v40-18004678416/CV-AI-Dev-EN.html", - "language": "EN", - "variant": "EN-v40-18004678416", - "versionSlug": "en-v40-18004678416", - "tags": [ - "EN", - "EN v40", - "Personal" - ], - "pathSegments": [ - "Personal", - "EN-v40-18004678416" - ] - }, - { - "slug": "personal-en-v40-18004678416-activebalance-plan", - "title": "Active Balance Plan", - "description": "Active Balance Plan — Personal (edition EN v40, release EN-v40-18004678416, available as PDF and HTML).", - "category": "Personal", - "version": "EN v40", - "updatedAt": "2025-09-25T11:44:02Z", - "collection": "Personal", - "collectionSlug": "personal", - "collectionLabel": "Personal", - "pdfUrl": "/docs/Personal/EN-v40-18004678416/ActiveBalance-Plan.pdf", - "htmlUrl": "/docs/Personal/EN-v40-18004678416/ActiveBalance-Plan.html", - "language": "EN", - "variant": "EN-v40-18004678416", - "versionSlug": "en-v40-18004678416", - "tags": [ - "EN", - "EN v40", - "Personal" - ], - "pathSegments": [ - "Personal", - "EN-v40-18004678416" - ] - }, - { - "slug": "personal-en-v39-18004672680-fullstack-language-core", - "title": "fullstack language core", - "description": "fullstack language core — Personal (edition EN v39, release EN-v39-18004672680, available as PDF and HTML).", - "category": "Personal", - "version": "EN v39", - "updatedAt": "2025-09-25T11:43:41Z", - "collection": "Personal", - "collectionSlug": "personal", - "collectionLabel": "Personal", - "pdfUrl": "/docs/Personal/EN-v39-18004672680/fullstack-language-core.pdf", - "htmlUrl": "/docs/Personal/EN-v39-18004672680/fullstack-language-core.html", - "language": "EN", - "variant": "EN-v39-18004672680", - "versionSlug": "en-v39-18004672680", - "tags": [ - "EN", - "EN v39", - "Personal" - ], - "pathSegments": [ - "Personal", - "EN-v39-18004672680" - ] - }, - { - "slug": "personal-en-v39-18004672680-cet-6", - "title": "cet 6", - "description": "cet 6 — Personal (edition EN v39, release EN-v39-18004672680, available as PDF and HTML).", - "category": "Personal", - "version": "EN v39", - "updatedAt": "2025-09-25T11:43:13Z", - "collection": "Personal", - "collectionSlug": "personal", - "collectionLabel": "Personal", - "pdfUrl": "/docs/Personal/EN-v39-18004672680/cet-6.pdf", - "htmlUrl": "/docs/Personal/EN-v39-18004672680/cet-6.html", - "language": "EN", - "variant": "EN-v39-18004672680", - "versionSlug": "en-v39-18004672680", - "tags": [ - "EN", - "EN v39", - "Personal" - ], - "pathSegments": [ - "Personal", - "EN-v39-18004672680" - ] - }, - { - "slug": "personal-en-v39-18004672680-resume-zh", - "title": "Resume ZH", - "description": "Resume ZH — Personal (edition EN v39, release EN-v39-18004672680, available as PDF and HTML).", - "category": "Personal", - "version": "EN v39", - "updatedAt": "2025-09-25T11:38:38Z", - "collection": "Personal", - "collectionSlug": "personal", - "collectionLabel": "Personal", - "pdfUrl": "/docs/Personal/EN-v39-18004672680/Resume-ZH.pdf", - "htmlUrl": "/docs/Personal/EN-v39-18004672680/Resume-ZH.html", - "language": "EN", - "variant": "EN-v39-18004672680", - "versionSlug": "en-v39-18004672680", - "tags": [ - "EN", - "EN v39", - "Personal" - ], - "pathSegments": [ - "Personal", - "EN-v39-18004672680" - ] - }, - { - "slug": "personal-en-v39-18004672680-resume-en", - "title": "Resume EN", - "description": "Resume EN — Personal (edition EN v39, release EN-v39-18004672680, available as PDF and HTML).", - "category": "Personal", - "version": "EN v39", - "updatedAt": "2025-09-25T11:38:19Z", - "collection": "Personal", - "collectionSlug": "personal", - "collectionLabel": "Personal", - "pdfUrl": "/docs/Personal/EN-v39-18004672680/Resume-EN.pdf", - "htmlUrl": "/docs/Personal/EN-v39-18004672680/Resume-EN.html", - "language": "EN", - "variant": "EN-v39-18004672680", - "versionSlug": "en-v39-18004672680", - "tags": [ - "EN", - "EN v39", - "Personal" - ], - "pathSegments": [ - "Personal", - "EN-v39-18004672680" - ] - }, - { - "slug": "personal-en-v39-18004672680-resume-devops-en", - "title": "Resume Dev Ops EN", - "description": "Resume Dev Ops EN — Personal (edition EN v39, release EN-v39-18004672680, available as PDF and HTML).", - "category": "Personal", - "version": "EN v39", - "updatedAt": "2025-09-25T11:38:03Z", - "collection": "Personal", - "collectionSlug": "personal", - "collectionLabel": "Personal", - "pdfUrl": "/docs/Personal/EN-v39-18004672680/Resume-DevOps-EN.pdf", - "htmlUrl": "/docs/Personal/EN-v39-18004672680/Resume-DevOps-EN.html", - "language": "EN", - "variant": "EN-v39-18004672680", - "versionSlug": "en-v39-18004672680", - "tags": [ - "EN", - "EN v39", - "Personal" - ], - "pathSegments": [ - "Personal", - "EN-v39-18004672680" - ] - }, - { - "slug": "personal-en-v39-18004672680-resume-devops-zh", - "title": "Resume Dev OPS ZH", - "description": "Resume Dev OPS ZH — Personal (edition EN v39, release EN-v39-18004672680, available as PDF and HTML).", - "category": "Personal", - "version": "EN v39", - "updatedAt": "2025-09-25T11:37:50Z", - "collection": "Personal", - "collectionSlug": "personal", - "collectionLabel": "Personal", - "pdfUrl": "/docs/Personal/EN-v39-18004672680/Resume-DevOPS-ZH.pdf", - "htmlUrl": "/docs/Personal/EN-v39-18004672680/Resume-DevOPS-ZH.html", - "language": "EN", - "variant": "EN-v39-18004672680", - "versionSlug": "en-v39-18004672680", - "tags": [ - "EN", - "EN v39", - "Personal" - ], - "pathSegments": [ - "Personal", - "EN-v39-18004672680" - ] - }, - { - "slug": "personal-en-v39-18004672680-readme", - "title": "README", - "description": "README — Personal (edition EN v39, release EN-v39-18004672680, available as PDF and HTML).", - "category": "Personal", - "version": "EN v39", - "updatedAt": "2025-09-25T11:37:18Z", - "collection": "Personal", - "collectionSlug": "personal", - "collectionLabel": "Personal", - "pdfUrl": "/docs/Personal/EN-v39-18004672680/README.pdf", - "htmlUrl": "/docs/Personal/EN-v39-18004672680/README.html", - "language": "EN", - "variant": "EN-v39-18004672680", - "versionSlug": "en-v39-18004672680", - "tags": [ - "EN", - "EN v39", - "Personal" - ], - "pathSegments": [ - "Personal", - "EN-v39-18004672680" - ] - }, - { - "slug": "personal-en-v39-18004672680-cv-zh", - "title": "CV ZH", - "description": "CV ZH — Personal (edition EN v39, release EN-v39-18004672680, available as PDF and HTML).", - "category": "Personal", - "version": "EN v39", - "updatedAt": "2025-09-25T11:37:12Z", - "collection": "Personal", - "collectionSlug": "personal", - "collectionLabel": "Personal", - "pdfUrl": "/docs/Personal/EN-v39-18004672680/CV-ZH.pdf", - "htmlUrl": "/docs/Personal/EN-v39-18004672680/CV-ZH.html", - "language": "EN", - "variant": "EN-v39-18004672680", - "versionSlug": "en-v39-18004672680", - "tags": [ - "EN", - "EN v39", - "Personal" - ], - "pathSegments": [ - "Personal", - "EN-v39-18004672680" - ] - }, - { - "slug": "personal-en-v39-18004672680-cv-en", - "title": "CV EN", - "description": "CV EN — Personal (edition EN v39, release EN-v39-18004672680, available as PDF and HTML).", - "category": "Personal", - "version": "EN v39", - "updatedAt": "2025-09-25T11:36:08Z", - "collection": "Personal", - "collectionSlug": "personal", - "collectionLabel": "Personal", - "pdfUrl": "/docs/Personal/EN-v39-18004672680/CV-EN.pdf", - "htmlUrl": "/docs/Personal/EN-v39-18004672680/CV-EN.html", - "language": "EN", - "variant": "EN-v39-18004672680", - "versionSlug": "en-v39-18004672680", - "tags": [ - "EN", - "EN v39", - "Personal" - ], - "pathSegments": [ - "Personal", - "EN-v39-18004672680" - ] - }, - { - "slug": "personal-en-v39-18004672680-cv-ai-dev-zh", - "title": "CV AI Dev ZH", - "description": "CV AI Dev ZH — Personal (edition EN v39, release EN-v39-18004672680, available as PDF and HTML).", - "category": "Personal", - "version": "EN v39", - "updatedAt": "2025-09-25T11:35:24Z", - "collection": "Personal", - "collectionSlug": "personal", - "collectionLabel": "Personal", - "pdfUrl": "/docs/Personal/EN-v39-18004672680/CV-AI-Dev-ZH.pdf", - "htmlUrl": "/docs/Personal/EN-v39-18004672680/CV-AI-Dev-ZH.html", - "language": "EN", - "variant": "EN-v39-18004672680", - "versionSlug": "en-v39-18004672680", - "tags": [ - "EN", - "EN v39", - "Personal" - ], - "pathSegments": [ - "Personal", - "EN-v39-18004672680" - ] - }, - { - "slug": "personal-en-v39-18004672680-cv-ai-dev-en", - "title": "CV AI Dev EN", - "description": "CV AI Dev EN — Personal (edition EN v39, release EN-v39-18004672680, available as PDF and HTML).", - "category": "Personal", - "version": "EN v39", - "updatedAt": "2025-09-25T11:34:15Z", - "collection": "Personal", - "collectionSlug": "personal", - "collectionLabel": "Personal", - "pdfUrl": "/docs/Personal/EN-v39-18004672680/CV-AI-Dev-EN.pdf", - "htmlUrl": "/docs/Personal/EN-v39-18004672680/CV-AI-Dev-EN.html", - "language": "EN", - "variant": "EN-v39-18004672680", - "versionSlug": "en-v39-18004672680", - "tags": [ - "EN", - "EN v39", - "Personal" - ], - "pathSegments": [ - "Personal", - "EN-v39-18004672680" - ] - }, - { - "slug": "personal-en-v39-18004672680-activebalance-plan", - "title": "Active Balance Plan", - "description": "Active Balance Plan — Personal (edition EN v39, release EN-v39-18004672680, available as PDF and HTML).", - "category": "Personal", - "version": "EN v39", - "updatedAt": "2025-09-25T11:34:00Z", - "collection": "Personal", - "collectionSlug": "personal", - "collectionLabel": "Personal", - "pdfUrl": "/docs/Personal/EN-v39-18004672680/ActiveBalance-Plan.pdf", - "htmlUrl": "/docs/Personal/EN-v39-18004672680/ActiveBalance-Plan.html", - "language": "EN", - "variant": "EN-v39-18004672680", - "versionSlug": "en-v39-18004672680", - "tags": [ - "EN", - "EN v39", - "Personal" - ], - "pathSegments": [ - "Personal", - "EN-v39-18004672680" - ] - }, - { - "slug": "personal-en-v37-18002553627-fullstack-language-core", - "title": "fullstack language core", - "description": "fullstack language core — Personal (edition EN v37, release EN-v37-18002553627, available as PDF and HTML).", - "category": "Personal", - "version": "EN v37", - "updatedAt": "2025-09-25T11:33:42Z", - "collection": "Personal", - "collectionSlug": "personal", - "collectionLabel": "Personal", - "pdfUrl": "/docs/Personal/EN-v37-18002553627/fullstack-language-core.pdf", - "htmlUrl": "/docs/Personal/EN-v37-18002553627/fullstack-language-core.html", - "language": "EN", - "variant": "EN-v37-18002553627", - "versionSlug": "en-v37-18002553627", - "tags": [ - "EN", - "EN v37", - "Personal" - ], - "pathSegments": [ - "Personal", - "EN-v37-18002553627" - ] - }, - { - "slug": "personal-en-v37-18002553627-cet-6", - "title": "cet 6", - "description": "cet 6 — Personal (edition EN v37, release EN-v37-18002553627, available as PDF and HTML).", - "category": "Personal", - "version": "EN v37", - "updatedAt": "2025-09-25T11:33:34Z", - "collection": "Personal", - "collectionSlug": "personal", - "collectionLabel": "Personal", - "pdfUrl": "/docs/Personal/EN-v37-18002553627/cet-6.pdf", - "htmlUrl": "/docs/Personal/EN-v37-18002553627/cet-6.html", - "language": "EN", - "variant": "EN-v37-18002553627", - "versionSlug": "en-v37-18002553627", - "tags": [ - "EN", - "EN v37", - "Personal" - ], - "pathSegments": [ - "Personal", - "EN-v37-18002553627" - ] - }, - { - "slug": "personal-en-v37-18002553627-resume-zh", - "title": "Resume ZH", - "description": "Resume ZH — Personal (edition EN v37, release EN-v37-18002553627, available as PDF and HTML).", - "category": "Personal", - "version": "EN v37", - "updatedAt": "2025-09-25T11:25:58Z", - "collection": "Personal", - "collectionSlug": "personal", - "collectionLabel": "Personal", - "pdfUrl": "/docs/Personal/EN-v37-18002553627/Resume-ZH.pdf", - "htmlUrl": "/docs/Personal/EN-v37-18002553627/Resume-ZH.html", - "language": "EN", - "variant": "EN-v37-18002553627", - "versionSlug": "en-v37-18002553627", - "tags": [ - "EN", - "EN v37", - "Personal" - ], - "pathSegments": [ - "Personal", - "EN-v37-18002553627" - ] - }, - { - "slug": "personal-en-v37-18002553627-resume-en", - "title": "Resume EN", - "description": "Resume EN — Personal (edition EN v37, release EN-v37-18002553627, available as PDF and HTML).", - "category": "Personal", - "version": "EN v37", - "updatedAt": "2025-09-25T11:25:02Z", - "collection": "Personal", - "collectionSlug": "personal", - "collectionLabel": "Personal", - "pdfUrl": "/docs/Personal/EN-v37-18002553627/Resume-EN.pdf", - "htmlUrl": "/docs/Personal/EN-v37-18002553627/Resume-EN.html", - "language": "EN", - "variant": "EN-v37-18002553627", - "versionSlug": "en-v37-18002553627", - "tags": [ - "EN", - "EN v37", - "Personal" - ], - "pathSegments": [ - "Personal", - "EN-v37-18002553627" - ] - }, - { - "slug": "personal-en-v37-18002553627-resume-devops-en", - "title": "Resume Dev Ops EN", - "description": "Resume Dev Ops EN — Personal (edition EN v37, release EN-v37-18002553627, available as PDF and HTML).", - "category": "Personal", - "version": "EN v37", - "updatedAt": "2025-09-25T11:24:37Z", - "collection": "Personal", - "collectionSlug": "personal", - "collectionLabel": "Personal", - "pdfUrl": "/docs/Personal/EN-v37-18002553627/Resume-DevOps-EN.pdf", - "htmlUrl": "/docs/Personal/EN-v37-18002553627/Resume-DevOps-EN.html", - "language": "EN", - "variant": "EN-v37-18002553627", - "versionSlug": "en-v37-18002553627", - "tags": [ - "EN", - "EN v37", - "Personal" - ], - "pathSegments": [ - "Personal", - "EN-v37-18002553627" - ] - }, - { - "slug": "personal-en-v37-18002553627-resume-devops-zh", - "title": "Resume Dev OPS ZH", - "description": "Resume Dev OPS ZH — Personal (edition EN v37, release EN-v37-18002553627, available as PDF and HTML).", - "category": "Personal", - "version": "EN v37", - "updatedAt": "2025-09-25T11:24:31Z", - "collection": "Personal", - "collectionSlug": "personal", - "collectionLabel": "Personal", - "pdfUrl": "/docs/Personal/EN-v37-18002553627/Resume-DevOPS-ZH.pdf", - "htmlUrl": "/docs/Personal/EN-v37-18002553627/Resume-DevOPS-ZH.html", - "language": "EN", - "variant": "EN-v37-18002553627", - "versionSlug": "en-v37-18002553627", - "tags": [ - "EN", - "EN v37", - "Personal" - ], - "pathSegments": [ - "Personal", - "EN-v37-18002553627" - ] - }, - { - "slug": "personal-en-v37-18002553627-readme", - "title": "README", - "description": "README — Personal (edition EN v37, release EN-v37-18002553627, available as PDF and HTML).", - "category": "Personal", - "version": "EN v37", - "updatedAt": "2025-09-25T11:24:01Z", - "collection": "Personal", - "collectionSlug": "personal", - "collectionLabel": "Personal", - "pdfUrl": "/docs/Personal/EN-v37-18002553627/README.pdf", - "htmlUrl": "/docs/Personal/EN-v37-18002553627/README.html", - "language": "EN", - "variant": "EN-v37-18002553627", - "versionSlug": "en-v37-18002553627", - "tags": [ - "EN", - "EN v37", - "Personal" - ], - "pathSegments": [ - "Personal", - "EN-v37-18002553627" - ] - }, - { - "slug": "personal-en-v37-18002553627-cv-zh", - "title": "CV ZH", - "description": "CV ZH — Personal (edition EN v37, release EN-v37-18002553627, available as PDF and HTML).", - "category": "Personal", - "version": "EN v37", - "updatedAt": "2025-09-25T11:23:46Z", - "collection": "Personal", - "collectionSlug": "personal", - "collectionLabel": "Personal", - "pdfUrl": "/docs/Personal/EN-v37-18002553627/CV-ZH.pdf", - "htmlUrl": "/docs/Personal/EN-v37-18002553627/CV-ZH.html", - "language": "EN", - "variant": "EN-v37-18002553627", - "versionSlug": "en-v37-18002553627", - "tags": [ - "EN", - "EN v37", - "Personal" - ], - "pathSegments": [ - "Personal", - "EN-v37-18002553627" - ] - }, - { - "slug": "personal-en-v37-18002553627-cv-en", - "title": "CV EN", - "description": "CV EN — Personal (edition EN v37, release EN-v37-18002553627, available as PDF and HTML).", - "category": "Personal", - "version": "EN v37", - "updatedAt": "2025-09-25T11:23:07Z", - "collection": "Personal", - "collectionSlug": "personal", - "collectionLabel": "Personal", - "pdfUrl": "/docs/Personal/EN-v37-18002553627/CV-EN.pdf", - "htmlUrl": "/docs/Personal/EN-v37-18002553627/CV-EN.html", - "language": "EN", - "variant": "EN-v37-18002553627", - "versionSlug": "en-v37-18002553627", - "tags": [ - "EN", - "EN v37", - "Personal" - ], - "pathSegments": [ - "Personal", - "EN-v37-18002553627" - ] - }, - { - "slug": "personal-en-v37-18002553627-cv-ai-dev-zh", - "title": "CV AI Dev ZH", - "description": "CV AI Dev ZH — Personal (edition EN v37, release EN-v37-18002553627, available as PDF and HTML).", - "category": "Personal", - "version": "EN v37", - "updatedAt": "2025-09-25T11:22:49Z", - "collection": "Personal", - "collectionSlug": "personal", - "collectionLabel": "Personal", - "pdfUrl": "/docs/Personal/EN-v37-18002553627/CV-AI-Dev-ZH.pdf", - "htmlUrl": "/docs/Personal/EN-v37-18002553627/CV-AI-Dev-ZH.html", - "language": "EN", - "variant": "EN-v37-18002553627", - "versionSlug": "en-v37-18002553627", - "tags": [ - "EN", - "EN v37", - "Personal" - ], - "pathSegments": [ - "Personal", - "EN-v37-18002553627" - ] - }, - { - "slug": "personal-en-v37-18002553627-cv-ai-dev-en", - "title": "CV AI Dev EN", - "description": "CV AI Dev EN — Personal (edition EN v37, release EN-v37-18002553627, available as PDF and HTML).", - "category": "Personal", - "version": "EN v37", - "updatedAt": "2025-09-25T11:22:01Z", - "collection": "Personal", - "collectionSlug": "personal", - "collectionLabel": "Personal", - "pdfUrl": "/docs/Personal/EN-v37-18002553627/CV-AI-Dev-EN.pdf", - "htmlUrl": "/docs/Personal/EN-v37-18002553627/CV-AI-Dev-EN.html", - "language": "EN", - "variant": "EN-v37-18002553627", - "versionSlug": "en-v37-18002553627", - "tags": [ - "EN", - "EN v37", - "Personal" - ], - "pathSegments": [ - "Personal", - "EN-v37-18002553627" - ] - }, - { - "slug": "personal-en-v37-18002553627-activebalance-plan", - "title": "Active Balance Plan", - "description": "Active Balance Plan — Personal (edition EN v37, release EN-v37-18002553627, available as PDF and HTML).", - "category": "Personal", - "version": "EN v37", - "updatedAt": "2025-09-25T11:21:35Z", - "collection": "Personal", - "collectionSlug": "personal", - "collectionLabel": "Personal", - "pdfUrl": "/docs/Personal/EN-v37-18002553627/ActiveBalance-Plan.pdf", - "htmlUrl": "/docs/Personal/EN-v37-18002553627/ActiveBalance-Plan.html", - "language": "EN", - "variant": "EN-v37-18002553627", - "versionSlug": "en-v37-18002553627", - "tags": [ - "EN", - "EN v37", - "Personal" - ], - "pathSegments": [ - "Personal", - "EN-v37-18002553627" - ] - }, - { - "slug": "personal-en-v36-18002294267-fullstack-language-core", - "title": "fullstack language core", - "description": "fullstack language core — Personal (edition EN v36, release EN-v36-18002294267, available as PDF and HTML).", - "category": "Personal", - "version": "EN v36", - "updatedAt": "2025-09-25T11:21:22Z", - "collection": "Personal", - "collectionSlug": "personal", - "collectionLabel": "Personal", - "pdfUrl": "/docs/Personal/EN-v36-18002294267/fullstack-language-core.pdf", - "htmlUrl": "/docs/Personal/EN-v36-18002294267/fullstack-language-core.html", - "language": "EN", - "variant": "EN-v36-18002294267", - "versionSlug": "en-v36-18002294267", - "tags": [ - "EN", - "EN v36", - "Personal" - ], - "pathSegments": [ - "Personal", - "EN-v36-18002294267" - ] - }, - { - "slug": "personal-en-v36-18002294267-cet-6", - "title": "cet 6", - "description": "cet 6 — Personal (edition EN v36, release EN-v36-18002294267, available as PDF and HTML).", - "category": "Personal", - "version": "EN v36", - "updatedAt": "2025-09-25T11:20:56Z", - "collection": "Personal", - "collectionSlug": "personal", - "collectionLabel": "Personal", - "pdfUrl": "/docs/Personal/EN-v36-18002294267/cet-6.pdf", - "htmlUrl": "/docs/Personal/EN-v36-18002294267/cet-6.html", - "language": "EN", - "variant": "EN-v36-18002294267", - "versionSlug": "en-v36-18002294267", - "tags": [ - "EN", - "EN v36", - "Personal" - ], - "pathSegments": [ - "Personal", - "EN-v36-18002294267" - ] - }, - { - "slug": "personal-en-v36-18002294267-resume-zh", - "title": "Resume ZH", - "description": "Resume ZH — Personal (edition EN v36, release EN-v36-18002294267, available as PDF and HTML).", - "category": "Personal", - "version": "EN v36", - "updatedAt": "2025-09-25T11:16:29Z", - "collection": "Personal", - "collectionSlug": "personal", - "collectionLabel": "Personal", - "pdfUrl": "/docs/Personal/EN-v36-18002294267/Resume-ZH.pdf", - "htmlUrl": "/docs/Personal/EN-v36-18002294267/Resume-ZH.html", - "language": "EN", - "variant": "EN-v36-18002294267", - "versionSlug": "en-v36-18002294267", - "tags": [ - "EN", - "EN v36", - "Personal" - ], - "pathSegments": [ - "Personal", - "EN-v36-18002294267" - ] - }, - { - "slug": "personal-en-v36-18002294267-resume-en", - "title": "Resume EN", - "description": "Resume EN — Personal (edition EN v36, release EN-v36-18002294267, available as PDF and HTML).", - "category": "Personal", - "version": "EN v36", - "updatedAt": "2025-09-25T11:16:00Z", - "collection": "Personal", - "collectionSlug": "personal", - "collectionLabel": "Personal", - "pdfUrl": "/docs/Personal/EN-v36-18002294267/Resume-EN.pdf", - "htmlUrl": "/docs/Personal/EN-v36-18002294267/Resume-EN.html", - "language": "EN", - "variant": "EN-v36-18002294267", - "versionSlug": "en-v36-18002294267", - "tags": [ - "EN", - "EN v36", - "Personal" - ], - "pathSegments": [ - "Personal", - "EN-v36-18002294267" - ] - }, - { - "slug": "personal-en-v36-18002294267-resume-devops-en", - "title": "Resume Dev Ops EN", - "description": "Resume Dev Ops EN — Personal (edition EN v36, release EN-v36-18002294267, available as PDF and HTML).", - "category": "Personal", - "version": "EN v36", - "updatedAt": "2025-09-25T11:15:50Z", - "collection": "Personal", - "collectionSlug": "personal", - "collectionLabel": "Personal", - "pdfUrl": "/docs/Personal/EN-v36-18002294267/Resume-DevOps-EN.pdf", - "htmlUrl": "/docs/Personal/EN-v36-18002294267/Resume-DevOps-EN.html", - "language": "EN", - "variant": "EN-v36-18002294267", - "versionSlug": "en-v36-18002294267", - "tags": [ - "EN", - "EN v36", - "Personal" - ], - "pathSegments": [ - "Personal", - "EN-v36-18002294267" - ] - }, - { - "slug": "personal-en-v36-18002294267-resume-devops-zh", - "title": "Resume Dev OPS ZH", - "description": "Resume Dev OPS ZH — Personal (edition EN v36, release EN-v36-18002294267, available as PDF and HTML).", - "category": "Personal", - "version": "EN v36", - "updatedAt": "2025-09-25T11:15:40Z", - "collection": "Personal", - "collectionSlug": "personal", - "collectionLabel": "Personal", - "pdfUrl": "/docs/Personal/EN-v36-18002294267/Resume-DevOPS-ZH.pdf", - "htmlUrl": "/docs/Personal/EN-v36-18002294267/Resume-DevOPS-ZH.html", - "language": "EN", - "variant": "EN-v36-18002294267", - "versionSlug": "en-v36-18002294267", - "tags": [ - "EN", - "EN v36", - "Personal" - ], - "pathSegments": [ - "Personal", - "EN-v36-18002294267" - ] - }, - { - "slug": "personal-en-v36-18002294267-readme", - "title": "README", - "description": "README — Personal (edition EN v36, release EN-v36-18002294267, available as PDF and HTML).", - "category": "Personal", - "version": "EN v36", - "updatedAt": "2025-09-25T11:15:26Z", - "collection": "Personal", - "collectionSlug": "personal", - "collectionLabel": "Personal", - "pdfUrl": "/docs/Personal/EN-v36-18002294267/README.pdf", - "htmlUrl": "/docs/Personal/EN-v36-18002294267/README.html", - "language": "EN", - "variant": "EN-v36-18002294267", - "versionSlug": "en-v36-18002294267", - "tags": [ - "EN", - "EN v36", - "Personal" - ], - "pathSegments": [ - "Personal", - "EN-v36-18002294267" - ] - }, - { - "slug": "personal-en-v36-18002294267-cv-zh", - "title": "CV ZH", - "description": "CV ZH — Personal (edition EN v36, release EN-v36-18002294267, available as PDF and HTML).", - "category": "Personal", - "version": "EN v36", - "updatedAt": "2025-09-25T11:15:19Z", - "collection": "Personal", - "collectionSlug": "personal", - "collectionLabel": "Personal", - "pdfUrl": "/docs/Personal/EN-v36-18002294267/CV-ZH.pdf", - "htmlUrl": "/docs/Personal/EN-v36-18002294267/CV-ZH.html", - "language": "EN", - "variant": "EN-v36-18002294267", - "versionSlug": "en-v36-18002294267", - "tags": [ - "EN", - "EN v36", - "Personal" - ], - "pathSegments": [ - "Personal", - "EN-v36-18002294267" - ] - }, - { - "slug": "personal-en-v36-18002294267-cv-en", - "title": "CV EN", - "description": "CV EN — Personal (edition EN v36, release EN-v36-18002294267, available as PDF and HTML).", - "category": "Personal", - "version": "EN v36", - "updatedAt": "2025-09-25T11:14:52Z", - "collection": "Personal", - "collectionSlug": "personal", - "collectionLabel": "Personal", - "pdfUrl": "/docs/Personal/EN-v36-18002294267/CV-EN.pdf", - "htmlUrl": "/docs/Personal/EN-v36-18002294267/CV-EN.html", - "language": "EN", - "variant": "EN-v36-18002294267", - "versionSlug": "en-v36-18002294267", - "tags": [ - "EN", - "EN v36", - "Personal" - ], - "pathSegments": [ - "Personal", - "EN-v36-18002294267" - ] - }, - { - "slug": "personal-en-v36-18002294267-cv-ai-dev-zh", - "title": "CV AI Dev ZH", - "description": "CV AI Dev ZH — Personal (edition EN v36, release EN-v36-18002294267, available as PDF and HTML).", - "category": "Personal", - "version": "EN v36", - "updatedAt": "2025-09-25T11:14:44Z", - "collection": "Personal", - "collectionSlug": "personal", - "collectionLabel": "Personal", - "pdfUrl": "/docs/Personal/EN-v36-18002294267/CV-AI-Dev-ZH.pdf", - "htmlUrl": "/docs/Personal/EN-v36-18002294267/CV-AI-Dev-ZH.html", - "language": "EN", - "variant": "EN-v36-18002294267", - "versionSlug": "en-v36-18002294267", - "tags": [ - "EN", - "EN v36", - "Personal" - ], - "pathSegments": [ - "Personal", - "EN-v36-18002294267" - ] - }, - { - "slug": "personal-en-v36-18002294267-cv-ai-dev-en", - "title": "CV AI Dev EN", - "description": "CV AI Dev EN — Personal (edition EN v36, release EN-v36-18002294267, available as PDF and HTML).", - "category": "Personal", - "version": "EN v36", - "updatedAt": "2025-09-25T11:14:01Z", - "collection": "Personal", - "collectionSlug": "personal", - "collectionLabel": "Personal", - "pdfUrl": "/docs/Personal/EN-v36-18002294267/CV-AI-Dev-EN.pdf", - "htmlUrl": "/docs/Personal/EN-v36-18002294267/CV-AI-Dev-EN.html", - "language": "EN", - "variant": "EN-v36-18002294267", - "versionSlug": "en-v36-18002294267", - "tags": [ - "EN", - "EN v36", - "Personal" - ], - "pathSegments": [ - "Personal", - "EN-v36-18002294267" - ] - }, - { - "slug": "personal-en-v36-18002294267-activebalance-plan", - "title": "Active Balance Plan", - "description": "Active Balance Plan — Personal (edition EN v36, release EN-v36-18002294267, available as PDF and HTML).", - "category": "Personal", - "version": "EN v36", - "updatedAt": "2025-09-25T11:13:44Z", - "collection": "Personal", - "collectionSlug": "personal", - "collectionLabel": "Personal", - "pdfUrl": "/docs/Personal/EN-v36-18002294267/ActiveBalance-Plan.pdf", - "htmlUrl": "/docs/Personal/EN-v36-18002294267/ActiveBalance-Plan.html", - "language": "EN", - "variant": "EN-v36-18002294267", - "versionSlug": "en-v36-18002294267", - "tags": [ - "EN", - "EN v36", - "Personal" - ], - "pathSegments": [ - "Personal", - "EN-v36-18002294267" - ] - }, - { - "slug": "personal-en-v34-18001960544-fullstack-language-core", - "title": "fullstack language core", - "description": "fullstack language core — Personal (edition EN v34, release EN-v34-18001960544, available as PDF and HTML).", - "category": "Personal", - "version": "EN v34", - "updatedAt": "2025-09-25T11:13:14Z", - "collection": "Personal", - "collectionSlug": "personal", - "collectionLabel": "Personal", - "pdfUrl": "/docs/Personal/EN-v34-18001960544/fullstack-language-core.pdf", - "htmlUrl": "/docs/Personal/EN-v34-18001960544/fullstack-language-core.html", - "language": "EN", - "variant": "EN-v34-18001960544", - "versionSlug": "en-v34-18001960544", - "tags": [ - "EN", - "EN v34", - "Personal" - ], - "pathSegments": [ - "Personal", - "EN-v34-18001960544" - ] - }, - { - "slug": "personal-en-v34-18001960544-cet-6", - "title": "cet 6", - "description": "cet 6 — Personal (edition EN v34, release EN-v34-18001960544, available as PDF and HTML).", - "category": "Personal", - "version": "EN v34", - "updatedAt": "2025-09-25T11:13:01Z", - "collection": "Personal", - "collectionSlug": "personal", - "collectionLabel": "Personal", - "pdfUrl": "/docs/Personal/EN-v34-18001960544/cet-6.pdf", - "htmlUrl": "/docs/Personal/EN-v34-18001960544/cet-6.html", - "language": "EN", - "variant": "EN-v34-18001960544", - "versionSlug": "en-v34-18001960544", - "tags": [ - "EN", - "EN v34", - "Personal" - ], - "pathSegments": [ - "Personal", - "EN-v34-18001960544" - ] - }, - { - "slug": "personal-en-v34-18001960544-resume-zh", - "title": "Resume ZH", - "description": "Resume ZH — Personal (edition EN v34, release EN-v34-18001960544, available as PDF and HTML).", - "category": "Personal", - "version": "EN v34", - "updatedAt": "2025-09-25T11:09:05Z", - "collection": "Personal", - "collectionSlug": "personal", - "collectionLabel": "Personal", - "pdfUrl": "/docs/Personal/EN-v34-18001960544/Resume-ZH.pdf", - "htmlUrl": "/docs/Personal/EN-v34-18001960544/Resume-ZH.html", - "language": "EN", - "variant": "EN-v34-18001960544", - "versionSlug": "en-v34-18001960544", - "tags": [ - "EN", - "EN v34", - "Personal" - ], - "pathSegments": [ - "Personal", - "EN-v34-18001960544" - ] - }, - { - "slug": "personal-en-v34-18001960544-resume-en", - "title": "Resume EN", - "description": "Resume EN — Personal (edition EN v34, release EN-v34-18001960544, available as PDF and HTML).", - "category": "Personal", - "version": "EN v34", - "updatedAt": "2025-09-25T11:08:50Z", - "collection": "Personal", - "collectionSlug": "personal", - "collectionLabel": "Personal", - "pdfUrl": "/docs/Personal/EN-v34-18001960544/Resume-EN.pdf", - "htmlUrl": "/docs/Personal/EN-v34-18001960544/Resume-EN.html", - "language": "EN", - "variant": "EN-v34-18001960544", - "versionSlug": "en-v34-18001960544", - "tags": [ - "EN", - "EN v34", - "Personal" - ], - "pathSegments": [ - "Personal", - "EN-v34-18001960544" - ] - }, - { - "slug": "personal-en-v34-18001960544-resume-devops-en", - "title": "Resume Dev Ops EN", - "description": "Resume Dev Ops EN — Personal (edition EN v34, release EN-v34-18001960544, available as PDF and HTML).", - "category": "Personal", - "version": "EN v34", - "updatedAt": "2025-09-25T11:08:42Z", - "collection": "Personal", - "collectionSlug": "personal", - "collectionLabel": "Personal", - "pdfUrl": "/docs/Personal/EN-v34-18001960544/Resume-DevOps-EN.pdf", - "htmlUrl": "/docs/Personal/EN-v34-18001960544/Resume-DevOps-EN.html", - "language": "EN", - "variant": "EN-v34-18001960544", - "versionSlug": "en-v34-18001960544", - "tags": [ - "EN", - "EN v34", - "Personal" - ], - "pathSegments": [ - "Personal", - "EN-v34-18001960544" - ] - }, - { - "slug": "personal-en-v34-18001960544-resume-devops-zh", - "title": "Resume Dev OPS ZH", - "description": "Resume Dev OPS ZH — Personal (edition EN v34, release EN-v34-18001960544, available as PDF and HTML).", - "category": "Personal", - "version": "EN v34", - "updatedAt": "2025-09-25T11:08:38Z", - "collection": "Personal", - "collectionSlug": "personal", - "collectionLabel": "Personal", - "pdfUrl": "/docs/Personal/EN-v34-18001960544/Resume-DevOPS-ZH.pdf", - "htmlUrl": "/docs/Personal/EN-v34-18001960544/Resume-DevOPS-ZH.html", - "language": "EN", - "variant": "EN-v34-18001960544", - "versionSlug": "en-v34-18001960544", - "tags": [ - "EN", - "EN v34", - "Personal" - ], - "pathSegments": [ - "Personal", - "EN-v34-18001960544" - ] - }, - { - "slug": "personal-en-v34-18001960544-readme", - "title": "README", - "description": "README — Personal (edition EN v34, release EN-v34-18001960544, available as PDF and HTML).", - "category": "Personal", - "version": "EN v34", - "updatedAt": "2025-09-25T11:08:26Z", - "collection": "Personal", - "collectionSlug": "personal", - "collectionLabel": "Personal", - "pdfUrl": "/docs/Personal/EN-v34-18001960544/README.pdf", - "htmlUrl": "/docs/Personal/EN-v34-18001960544/README.html", - "language": "EN", - "variant": "EN-v34-18001960544", - "versionSlug": "en-v34-18001960544", - "tags": [ - "EN", - "EN v34", - "Personal" - ], - "pathSegments": [ - "Personal", - "EN-v34-18001960544" - ] - }, - { - "slug": "personal-en-v34-18001960544-cv-zh", - "title": "CV ZH", - "description": "CV ZH — Personal (edition EN v34, release EN-v34-18001960544, available as PDF and HTML).", - "category": "Personal", - "version": "EN v34", - "updatedAt": "2025-09-25T11:08:24Z", - "collection": "Personal", - "collectionSlug": "personal", - "collectionLabel": "Personal", - "pdfUrl": "/docs/Personal/EN-v34-18001960544/CV-ZH.pdf", - "htmlUrl": "/docs/Personal/EN-v34-18001960544/CV-ZH.html", - "language": "EN", - "variant": "EN-v34-18001960544", - "versionSlug": "en-v34-18001960544", - "tags": [ - "EN", - "EN v34", - "Personal" - ], - "pathSegments": [ - "Personal", - "EN-v34-18001960544" - ] - }, - { - "slug": "personal-en-v34-18001960544-cv-en", - "title": "CV EN", - "description": "CV EN — Personal (edition EN v34, release EN-v34-18001960544, available as PDF and HTML).", - "category": "Personal", - "version": "EN v34", - "updatedAt": "2025-09-25T11:08:12Z", - "collection": "Personal", - "collectionSlug": "personal", - "collectionLabel": "Personal", - "pdfUrl": "/docs/Personal/EN-v34-18001960544/CV-EN.pdf", - "htmlUrl": "/docs/Personal/EN-v34-18001960544/CV-EN.html", - "language": "EN", - "variant": "EN-v34-18001960544", - "versionSlug": "en-v34-18001960544", - "tags": [ - "EN", - "EN v34", - "Personal" - ], - "pathSegments": [ - "Personal", - "EN-v34-18001960544" - ] - }, - { - "slug": "personal-en-v34-18001960544-cv-ai-dev-zh", - "title": "CV AI Dev ZH", - "description": "CV AI Dev ZH — Personal (edition EN v34, release EN-v34-18001960544, available as PDF and HTML).", - "category": "Personal", - "version": "EN v34", - "updatedAt": "2025-09-25T11:08:07Z", - "collection": "Personal", - "collectionSlug": "personal", - "collectionLabel": "Personal", - "pdfUrl": "/docs/Personal/EN-v34-18001960544/CV-AI-Dev-ZH.pdf", - "htmlUrl": "/docs/Personal/EN-v34-18001960544/CV-AI-Dev-ZH.html", - "language": "EN", - "variant": "EN-v34-18001960544", - "versionSlug": "en-v34-18001960544", - "tags": [ - "EN", - "EN v34", - "Personal" - ], - "pathSegments": [ - "Personal", - "EN-v34-18001960544" - ] - }, - { - "slug": "personal-en-v34-18001960544-cv-ai-dev-en", - "title": "CV AI Dev EN", - "description": "CV AI Dev EN — Personal (edition EN v34, release EN-v34-18001960544, available as PDF and HTML).", - "category": "Personal", - "version": "EN v34", - "updatedAt": "2025-09-25T11:07:53Z", - "collection": "Personal", - "collectionSlug": "personal", - "collectionLabel": "Personal", - "pdfUrl": "/docs/Personal/EN-v34-18001960544/CV-AI-Dev-EN.pdf", - "htmlUrl": "/docs/Personal/EN-v34-18001960544/CV-AI-Dev-EN.html", - "language": "EN", - "variant": "EN-v34-18001960544", - "versionSlug": "en-v34-18001960544", - "tags": [ - "EN", - "EN v34", - "Personal" - ], - "pathSegments": [ - "Personal", - "EN-v34-18001960544" - ] - }, - { - "slug": "personal-en-v34-18001960544-activebalance-plan", - "title": "Active Balance Plan", - "description": "Active Balance Plan — Personal (edition EN v34, release EN-v34-18001960544, available as PDF and HTML).", - "category": "Personal", - "version": "EN v34", - "updatedAt": "2025-09-25T11:07:48Z", - "collection": "Personal", - "collectionSlug": "personal", - "collectionLabel": "Personal", - "pdfUrl": "/docs/Personal/EN-v34-18001960544/ActiveBalance-Plan.pdf", - "htmlUrl": "/docs/Personal/EN-v34-18001960544/ActiveBalance-Plan.html", - "language": "EN", - "variant": "EN-v34-18001960544", - "versionSlug": "en-v34-18001960544", - "tags": [ - "EN", - "EN v34", - "Personal" - ], - "pathSegments": [ - "Personal", - "EN-v34-18001960544" - ] - }, - { - "slug": "personal-en-v33-17996525102-cet-6", - "title": "cet 6", - "description": "cet 6 — Personal (edition EN v33, release EN-v33-17996525102, available as PDF and HTML).", - "category": "Personal", - "version": "EN v33", - "updatedAt": "2025-09-25T11:07:42Z", - "collection": "Personal", - "collectionSlug": "personal", - "collectionLabel": "Personal", - "pdfUrl": "/docs/Personal/EN-v33-17996525102/cet-6.pdf", - "htmlUrl": "/docs/Personal/EN-v33-17996525102/cet-6.html", - "language": "EN", - "variant": "EN-v33-17996525102", - "versionSlug": "en-v33-17996525102", - "tags": [ - "EN", - "EN v33", - "Personal" - ], - "pathSegments": [ - "Personal", - "EN-v33-17996525102" - ] - }, - { - "slug": "personal-en-v33-17996525102-fullstack-language-core", - "title": "fullstack language core", - "description": "fullstack language core — Personal (edition EN v33, release EN-v33-17996525102, available as PDF and HTML).", - "category": "Personal", - "version": "EN v33", - "updatedAt": "2025-09-25T11:07:42Z", - "collection": "Personal", - "collectionSlug": "personal", - "collectionLabel": "Personal", - "pdfUrl": "/docs/Personal/EN-v33-17996525102/fullstack-language-core.pdf", - "htmlUrl": "/docs/Personal/EN-v33-17996525102/fullstack-language-core.html", - "language": "EN", - "variant": "EN-v33-17996525102", - "versionSlug": "en-v33-17996525102", - "tags": [ - "EN", - "EN v33", - "Personal" - ], - "pathSegments": [ - "Personal", - "EN-v33-17996525102" - ] - }, - { - "slug": "personal-en-v33-17996525102-cv-ai-dev-zh", - "title": "CV AI Dev ZH", - "description": "CV AI Dev ZH — Personal (edition EN v33, release EN-v33-17996525102, available as PDF and HTML).", - "category": "Personal", - "version": "EN v33", - "updatedAt": "2025-09-25T11:07:41Z", - "collection": "Personal", - "collectionSlug": "personal", - "collectionLabel": "Personal", - "pdfUrl": "/docs/Personal/EN-v33-17996525102/CV-AI-Dev-ZH.pdf", - "htmlUrl": "/docs/Personal/EN-v33-17996525102/CV-AI-Dev-ZH.html", - "language": "EN", - "variant": "EN-v33-17996525102", - "versionSlug": "en-v33-17996525102", - "tags": [ - "EN", - "EN v33", - "Personal" - ], - "pathSegments": [ - "Personal", - "EN-v33-17996525102" - ] - }, - { - "slug": "personal-en-v33-17996525102-cv-en", - "title": "CV EN", - "description": "CV EN — Personal (edition EN v33, release EN-v33-17996525102, available as PDF and HTML).", - "category": "Personal", - "version": "EN v33", - "updatedAt": "2025-09-25T11:07:41Z", - "collection": "Personal", - "collectionSlug": "personal", - "collectionLabel": "Personal", - "pdfUrl": "/docs/Personal/EN-v33-17996525102/CV-EN.pdf", - "htmlUrl": "/docs/Personal/EN-v33-17996525102/CV-EN.html", - "language": "EN", - "variant": "EN-v33-17996525102", - "versionSlug": "en-v33-17996525102", - "tags": [ - "EN", - "EN v33", - "Personal" - ], - "pathSegments": [ - "Personal", - "EN-v33-17996525102" - ] - }, - { - "slug": "personal-en-v33-17996525102-cv-zh", - "title": "CV ZH", - "description": "CV ZH — Personal (edition EN v33, release EN-v33-17996525102, available as PDF and HTML).", - "category": "Personal", - "version": "EN v33", - "updatedAt": "2025-09-25T11:07:41Z", - "collection": "Personal", - "collectionSlug": "personal", - "collectionLabel": "Personal", - "pdfUrl": "/docs/Personal/EN-v33-17996525102/CV-ZH.pdf", - "htmlUrl": "/docs/Personal/EN-v33-17996525102/CV-ZH.html", - "language": "EN", - "variant": "EN-v33-17996525102", - "versionSlug": "en-v33-17996525102", - "tags": [ - "EN", - "EN v33", - "Personal" - ], - "pathSegments": [ - "Personal", - "EN-v33-17996525102" - ] - }, - { - "slug": "personal-en-v33-17996525102-readme", - "title": "README", - "description": "README — Personal (edition EN v33, release EN-v33-17996525102, available as PDF and HTML).", - "category": "Personal", - "version": "EN v33", - "updatedAt": "2025-09-25T11:07:41Z", - "collection": "Personal", - "collectionSlug": "personal", - "collectionLabel": "Personal", - "pdfUrl": "/docs/Personal/EN-v33-17996525102/README.pdf", - "htmlUrl": "/docs/Personal/EN-v33-17996525102/README.html", - "language": "EN", - "variant": "EN-v33-17996525102", - "versionSlug": "en-v33-17996525102", - "tags": [ - "EN", - "EN v33", - "Personal" - ], - "pathSegments": [ - "Personal", - "EN-v33-17996525102" - ] - }, - { - "slug": "personal-en-v33-17996525102-resume-devops-en", - "title": "Resume Dev Ops EN", - "description": "Resume Dev Ops EN — Personal (edition EN v33, release EN-v33-17996525102, available as PDF and HTML).", - "category": "Personal", - "version": "EN v33", - "updatedAt": "2025-09-25T11:07:41Z", - "collection": "Personal", - "collectionSlug": "personal", - "collectionLabel": "Personal", - "pdfUrl": "/docs/Personal/EN-v33-17996525102/Resume-DevOps-EN.pdf", - "htmlUrl": "/docs/Personal/EN-v33-17996525102/Resume-DevOps-EN.html", - "language": "EN", - "variant": "EN-v33-17996525102", - "versionSlug": "en-v33-17996525102", - "tags": [ - "EN", - "EN v33", - "Personal" - ], - "pathSegments": [ - "Personal", - "EN-v33-17996525102" - ] - }, - { - "slug": "personal-en-v33-17996525102-resume-devops-zh", - "title": "Resume Dev OPS ZH", - "description": "Resume Dev OPS ZH — Personal (edition EN v33, release EN-v33-17996525102, available as PDF and HTML).", - "category": "Personal", - "version": "EN v33", - "updatedAt": "2025-09-25T11:07:41Z", - "collection": "Personal", - "collectionSlug": "personal", - "collectionLabel": "Personal", - "pdfUrl": "/docs/Personal/EN-v33-17996525102/Resume-DevOPS-ZH.pdf", - "htmlUrl": "/docs/Personal/EN-v33-17996525102/Resume-DevOPS-ZH.html", - "language": "EN", - "variant": "EN-v33-17996525102", - "versionSlug": "en-v33-17996525102", - "tags": [ - "EN", - "EN v33", - "Personal" - ], - "pathSegments": [ - "Personal", - "EN-v33-17996525102" - ] - }, - { - "slug": "personal-en-v33-17996525102-resume-en", - "title": "Resume EN", - "description": "Resume EN — Personal (edition EN v33, release EN-v33-17996525102, available as PDF and HTML).", - "category": "Personal", - "version": "EN v33", - "updatedAt": "2025-09-25T11:07:41Z", - "collection": "Personal", - "collectionSlug": "personal", - "collectionLabel": "Personal", - "pdfUrl": "/docs/Personal/EN-v33-17996525102/Resume-EN.pdf", - "htmlUrl": "/docs/Personal/EN-v33-17996525102/Resume-EN.html", - "language": "EN", - "variant": "EN-v33-17996525102", - "versionSlug": "en-v33-17996525102", - "tags": [ - "EN", - "EN v33", - "Personal" - ], - "pathSegments": [ - "Personal", - "EN-v33-17996525102" - ] - }, - { - "slug": "personal-en-v33-17996525102-resume-zh", - "title": "Resume ZH", - "description": "Resume ZH — Personal (edition EN v33, release EN-v33-17996525102, available as PDF and HTML).", - "category": "Personal", - "version": "EN v33", - "updatedAt": "2025-09-25T11:07:41Z", - "collection": "Personal", - "collectionSlug": "personal", - "collectionLabel": "Personal", - "pdfUrl": "/docs/Personal/EN-v33-17996525102/Resume-ZH.pdf", - "htmlUrl": "/docs/Personal/EN-v33-17996525102/Resume-ZH.html", - "language": "EN", - "variant": "EN-v33-17996525102", - "versionSlug": "en-v33-17996525102", - "tags": [ - "EN", - "EN v33", - "Personal" - ], - "pathSegments": [ - "Personal", - "EN-v33-17996525102" - ] - }, - { - "slug": "observability-cn-v40-18004678416-observability-design-and-implementation", - "title": "Observability Design and Implementation", - "description": "Observability Design and Implementation — Observability (edition CN v40, release CN-v40-18004678416, available as PDF and HTML).", - "category": "Observability", - "version": "CN v40", - "updatedAt": "2025-09-25T11:07:40Z", - "collection": "Observability", - "collectionSlug": "observability", - "collectionLabel": "Observability", - "pdfUrl": "/docs/Observability/CN-v40-18004678416/Observability-Design-and-Implementation.pdf", - "htmlUrl": "/docs/Observability/CN-v40-18004678416/Observability-Design-and-Implementation.html", - "language": "CN", - "variant": "CN-v40-18004678416", - "versionSlug": "cn-v40-18004678416", - "tags": [ - "CN", - "CN v40", - "Observability" - ], - "pathSegments": [ - "Observability", - "CN-v40-18004678416" - ] - }, - { - "slug": "personal-en-v33-17996525102-activebalance-plan", - "title": "Active Balance Plan", - "description": "Active Balance Plan — Personal (edition EN v33, release EN-v33-17996525102, available as PDF and HTML).", - "category": "Personal", - "version": "EN v33", - "updatedAt": "2025-09-25T11:07:40Z", - "collection": "Personal", - "collectionSlug": "personal", - "collectionLabel": "Personal", - "pdfUrl": "/docs/Personal/EN-v33-17996525102/ActiveBalance-Plan.pdf", - "htmlUrl": "/docs/Personal/EN-v33-17996525102/ActiveBalance-Plan.html", - "language": "EN", - "variant": "EN-v33-17996525102", - "versionSlug": "en-v33-17996525102", - "tags": [ - "EN", - "EN v33", - "Personal" - ], - "pathSegments": [ - "Personal", - "EN-v33-17996525102" - ] - }, - { - "slug": "personal-en-v33-17996525102-cv-ai-dev-en", - "title": "CV AI Dev EN", - "description": "CV AI Dev EN — Personal (edition EN v33, release EN-v33-17996525102, available as PDF and HTML).", - "category": "Personal", - "version": "EN v33", - "updatedAt": "2025-09-25T11:07:40Z", - "collection": "Personal", - "collectionSlug": "personal", - "collectionLabel": "Personal", - "pdfUrl": "/docs/Personal/EN-v33-17996525102/CV-AI-Dev-EN.pdf", - "htmlUrl": "/docs/Personal/EN-v33-17996525102/CV-AI-Dev-EN.html", - "language": "EN", - "variant": "EN-v33-17996525102", - "versionSlug": "en-v33-17996525102", - "tags": [ - "EN", - "EN v33", - "Personal" - ], - "pathSegments": [ - "Personal", - "EN-v33-17996525102" - ] - }, - { - "slug": "observability-cn-v39-18004672680-observability-design-and-implementation", - "title": "Observability Design and Implementation", - "description": "Observability Design and Implementation — Observability (edition CN v39, release CN-v39-18004672680, available as PDF and HTML).", - "category": "Observability", - "version": "CN v39", - "updatedAt": "2025-09-25T11:04:44Z", - "collection": "Observability", - "collectionSlug": "observability", - "collectionLabel": "Observability", - "pdfUrl": "/docs/Observability/CN-v39-18004672680/Observability-Design-and-Implementation.pdf", - "htmlUrl": "/docs/Observability/CN-v39-18004672680/Observability-Design-and-Implementation.html", - "language": "CN", - "variant": "CN-v39-18004672680", - "versionSlug": "cn-v39-18004672680", - "tags": [ - "CN", - "CN v39", - "Observability" - ], - "pathSegments": [ - "Observability", - "CN-v39-18004672680" - ] - }, - { - "slug": "observability-cn-v37-18002553627-observability-design-and-implementation", - "title": "Observability Design and Implementation", - "description": "Observability Design and Implementation — Observability (edition CN v37, release CN-v37-18002553627, available as PDF and HTML).", - "category": "Observability", - "version": "CN v37", - "updatedAt": "2025-09-25T11:02:40Z", - "collection": "Observability", - "collectionSlug": "observability", - "collectionLabel": "Observability", - "pdfUrl": "/docs/Observability/CN-v37-18002553627/Observability-Design-and-Implementation.pdf", - "htmlUrl": "/docs/Observability/CN-v37-18002553627/Observability-Design-and-Implementation.html", - "language": "CN", - "variant": "CN-v37-18002553627", - "versionSlug": "cn-v37-18002553627", - "tags": [ - "CN", - "CN v37", - "Observability" - ], - "pathSegments": [ - "Observability", - "CN-v37-18002553627" - ] - }, - { - "slug": "observability-cn-v36-18002294267-observability-design-and-implementation", - "title": "Observability Design and Implementation", - "description": "Observability Design and Implementation — Observability (edition CN v36, release CN-v36-18002294267, available as PDF and HTML).", - "category": "Observability", - "version": "CN v36", - "updatedAt": "2025-09-25T10:58:38Z", - "collection": "Observability", - "collectionSlug": "observability", - "collectionLabel": "Observability", - "pdfUrl": "/docs/Observability/CN-v36-18002294267/Observability-Design-and-Implementation.pdf", - "htmlUrl": "/docs/Observability/CN-v36-18002294267/Observability-Design-and-Implementation.html", - "language": "CN", - "variant": "CN-v36-18002294267", - "versionSlug": "cn-v36-18002294267", - "tags": [ - "CN", - "CN v36", - "Observability" - ], - "pathSegments": [ - "Observability", - "CN-v36-18002294267" - ] - }, - { - "slug": "observability-cn-v33-17996525102-observability-design-and-implementation", - "title": "Observability Design and Implementation", - "description": "Observability Design and Implementation — Observability (edition CN v33, release CN-v33-17996525102, available as PDF and HTML).", - "category": "Observability", - "version": "CN v33", - "updatedAt": "2025-09-25T10:56:03Z", - "collection": "Observability", - "collectionSlug": "observability", - "collectionLabel": "Observability", - "pdfUrl": "/docs/Observability/CN-v33-17996525102/Observability-Design-and-Implementation.pdf", - "htmlUrl": "/docs/Observability/CN-v33-17996525102/Observability-Design-and-Implementation.html", - "language": "CN", - "variant": "CN-v33-17996525102", - "versionSlug": "cn-v33-17996525102", - "tags": [ - "CN", - "CN v33", - "Observability" - ], - "pathSegments": [ - "Observability", - "CN-v33-17996525102" - ] - } -] diff --git a/dashboard/public/favicon.ico b/dashboard/public/favicon.ico deleted file mode 100644 index 008452b20acfc68a874269e00afa827d220a20d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32038 zcmeI5d306Py~p<%?vQ~bga`o)NgzlQ<`|O+C%SlM;B7}H>v)B5v z=e>Ww@80KdxWE0|2%!jFj2$b8Geq{yLfj^Va5!4?FAW!>oU)9JwtSKh{bvc0L@e9S z(uMfLav`$m!w_N>kmaE;wl#|OKeta^B*J*1Y>udywlIXAkbB*|Wx|M_81r(C5!O2t z-@iaqOkEs7cjq+fF4I>^FzPPT+ompz;F&4&#n$gjl#8F;S042$?VPbl7;&)z8+Dgy zsedcV#a78h8|1i~@0-^S9p~COX^se^W8LM-8+DiIOAXIWT_C~;>n>v%I_m#Z^fe-^ zyNtUVc9lLTjOgw-z0uF8yG-{)FzPPT7ZdiBEfq#wOy8@atxO19{;!uW7e-tRYhm5P@x}CwmbOOS zW!elT1119|111B}%fPQn7YZYySJKNPnNfF{HiOB4$-spSRP^^y*dmVSr|2gO``X^j z8mt^jOB4H&GnJnwWvZ_X%oNRjt2maMqMa=0YyCBKucfDnMz>8I$)PMS$-2MqU}bMy zntEX15b@HGEO9cwuk}Q3lC~{2O*xRlIE;0m-!S#H8?wZ{#7wcno}ujTldkUUlO^8D zPF1QLiT0zpeYG92naaL?gOx^~T^z~lr=KWDw)~=hwz5AVQ{CNfm}nU)#E$rEWqbTk zMTp_zP(zfso2P5t zw!CVmWmuz6djagOcG_-XoDDTjebC!Ei5B{&GqhCAN;M4X8 zyp~&A)(CN|FtH1b&lexhj~8>re<{qr{LCoj(*~cqw!y0|Y4Rzx#4pr)EECT7lt4|9 zHWqzOfoI?bS(V11Tbn|^)o1)lkg|DaeCnS_zgO$Bj6dU7n;U)V5jEkvuT8GoN{)17Qt@6tf>Z8=HVlVup(qT&jU1)v2 z82#9XRxfM+54ig_do5J?dvAtl@@nX$-;PeT=wHhGLDp*IZ-(~Qk@x55y{*x!?ricZ zn?Ais2xOm0+dmWkfVQWqi>&=mf(g0QrplSH}4sv8ZW^N>s~x(BKF4YI25Y((9sj4Z4pJ5M^|?3G0^U1)v2xXNJ{rwU@?>Hiz>2G3U3=^|S{IDU-$o9vINt@?{0 zwN6Wa_V!Hn$Wq=t{#VocsdX;vjkNK8_h9^mh5_;z6g|}Ln>T|{X>SGSG0@N!HmJ8d6bZQz{8rp3xc2u zxjtf@O6$Fr+mN^Fbb&IYDqrnll+KHf6s1zp!ZW09=NWji(WlQspZ`U+*&i3HJa@JN z%By*%9H8AGpWKK{E`2HzqQ+?*z#QWn ze0m9MPTG_Ig&G%Ql$(QGD8Ai+{h! z&T|$UPq|O#K|7W9COgHi24suF!w0B5>!QYOOAhcZVr>)UJKGE<1119|1119|1119| z1KnZZ*Rz)jBf2xjmE6auyG)zGWWZ#=WT3YgI5c;;Frv5Sjh1 z@%l**^ostHhpvKAcbWdW!-jjxL>OPUEMLd`Vclii)1hJ-{<>}0!JdqU@YFpsgc0lS zoh8EPDfxCxStuevZ>f7!>3{EZ@zmWj#kz^55#1#RJryFlxAD+ZIoz&Uw=(}hp4Rcc?3*ew zl5Saf4)QXD7<0Cj#PqXcZPx*xAbe*)IF=H2yf2{Vr8Y-2888{R8W@OHU*@ZU z+l$e`=szmcW-u8r888{Rk{K}l)UM>!i+JLr_e zJH$Bg0lo$J0A=Ej@C2v;yEvP_K>8x!BT`O!K7JM3D1Q!rn2D6nCI2Gl?stJT#6DWIxGx!y>c?cb;(|!h4z}0x_ULt;g@t?#WC7W~mGh`VYW!3w% z$?&)l`JV`Qt)tIzX(v8M7wAyqvWedgyH3R?r5wM4o%9*Wcw>V2`QRI}s?n=R|B-#9 zZ({73$oo9?yD6Ivq#g$VK49v-#JAxaB7KQgOMe2!z&AmC8(#(dOw`o?A1n1~>Nld# zLefvwy7dD57xvV9)LR*MGkzV1(PI|l?Iynwf0@Tvi;|h`ARUAB52|+BV~~A4 zeU{;erq2)~#A$~$9>0$AMvtftct6ZAa3D|aBzcc|Nk98$+J@+HW&AK6!u z-$|cMl&vHGe9)y�Q3QZ6|dbSl1s>z6F0De@K3>x`_5qv%Ye@x1+}%`~o(!4wBO) z__67o`32PCD{wR?K|`*kU<>LaJ{v~qZm!t$_AD)SEpvg?8yw?Gx;@6-YITdAIe7HYi0$Z z=0SIis4jvBr_IW{D@O9m9#4ep@Ni~qGGH=bGGH=bGGH=bGGH=rjWS@K>%2x6{xYZ? zJ`Wj=J5CX8X8}9PceUliXYs=E)u!L&)Q2-e1a7Y|#OK=bUvwz%*seG8q4Ql_bM%=c zgZM)kbCpE9*iipj;#r%mH|78QLLNi>eAz{L8{hJrRt6XgBImUDKYy;ZAkP~a(cAim z&kBX(-k#r_&t$-4z+}K=plb%O>4-mLC&8{D?;M+i9mC6Aa{1UWa>-91p9_50Gwz|R zh%#xbxeJ?!4`fm|6x>Mpx5$sfUND0E?bs;%*fs}Zdnx8ly%g+~-@x8iTFK z_+c;(VE+lt|2Xq+rcT;OpTJJH3R~Aw>YkB#fPG0_0)B-4^1i_*!B%W2Ymwo4$|Cb4 zo3u|QG1kLUZm^vGE4a7LjagVZX?5+!OPMelF<7AAb}=GvdQ@_LbcjrbYfvA%B+00FmD*F7dBR3nPU t;rrN9@3)DDQRwZz#0`1r^k4HMwEiY6e@||YRSN%Sc^e)h?pPnr|37`rY=i&+ diff --git a/dashboard/public/icons/cloudnative_32.png b/dashboard/public/icons/cloudnative_32.png deleted file mode 100644 index 9bc7db32daec38df4a7793e1cf510d8e3ee3f283..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1486 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvVtU&J%W50 z7^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+08154(w7@Gy)texH&n|)3c+dWkycU zikecMv7$6}S$^!C+?ZLFS!*k@x0GdW5>ws9Xnu#;@G7(EEe5Bz?1q3!uYv`adQgd=jKLF&5fQ0bO4k2Ehe*DKvyvtU1c%3 z!D4!o+4Lrx3DBK4*!3@R7+hj8yAE_VRHgZCMzDHDlN&%?K$RdZCO4RY+RcFG+-5Sr z1M)JM4U`2jOm70kfu3annrRI3KC{^kAmY?N1JYuCo8907v+-3%v)hcOAeTVRF}(#8 z0cvD40~&Z2%m!HpRL=yKVg#}w$P8#c2!X;A$N(yUSPC-%VJ66VAQyrV$YhY=AUA_8 zWi$iYcoRs1O#{Uao5>ZJfj5~=fC%ViphrOA1B_5G7vx$NQy_u~0>i}YCW|RFOn@qZ zz6Oby-Q+O7`2YX^GB<}Wz(jVYB*-rqNK+XInn{VV^Gi!|h%&QEaq%=&*4OJ>$;t{z zYv*+=x6RSe^GlDi=2y^DXVmIuk!aBN~*w8s?X?OX&&en?7oc`HUBt<8N6?9EY z?VDV)u(oD$TL04i((;#MPorbk#%E&BAnD0!)<@tlYg+EW~XEoNSmM?Ok*T z=o!W&Z+Dk7Qr9P626EU-Jbhi+U$RRuOIfWey|)V}-Q(%v7-DfcIUyk-g^4*WElo^J zOikp#sZ+-eoZ|~TaPZ*CqlXTiJ=?pcp}oDmu~VGGfy=`3$B!KoMLvAy=HTM&b`b68 z>gxLV@uTAFXV1l_3ovRjFfU*VT+yN;ps+GI!HK;^#DkGhIFoBhV*{tTf)gX7123!5 zCdY${3lobJ=G9cVq=al~O7h8x*(2oBSmcxxROFQvRppizR_2!%SLc`*Sm>D8y4pQGyxiMAKmLD9=VUeinO45MD;#Qn^~~Iyc7CRH{=cTy zZZZAHT{%Cy?oC}Cwmx!q-ru%fDF@bBQM1kRZ|=(d-8Xl4+54Nj^Zz$CxAVzc)_l3~ zQCQu7?zLrCW?NZViD)@QEaYZ!(Y$ck+`z;sG=YbOW8J)coN=tn92!o~PIF-J+3@UH zz&=)i1g#A$OeL&gVPOf3*$NCnEBrQX+~^pZke!{*ANt_IgBMTUyh&=73fSgw;K-9# z#~!_V`0^=h$b+}dl9TrBtNW+G%GlWGV`pc_a5^LJ&XesMHUXnbwZt`|BqgyV)hf9t z6-Y4{85o)B8kp-E8HE^FTA3JGnHp*v7+4t?G|yy?LeY?$pOTqYiCe>`BfFmgH86O( L`njxgN@xNA< 1 && pathname.endsWith('/') - - if (!shouldStrip) { - return NextResponse.next() - } - - const url = request.nextUrl.clone() - url.pathname = stripTrailingSlashes(pathname) - - return NextResponse.rewrite(url) -} - -export const config = { - matcher: ['/api/:path*'], -} diff --git a/dashboard/scripts/gen-runtime-config.sh b/dashboard/scripts/gen-runtime-config.sh deleted file mode 100755 index 03efefc..0000000 --- a/dashboard/scripts/gen-runtime-config.sh +++ /dev/null @@ -1,227 +0,0 @@ -#!/usr/bin/env bash -set -euo pipefail - -ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" -CONFIG_DIR="${ROOT_DIR}/src/config" -BASE_FILE="${CONFIG_DIR}/runtime-service-config.base.yaml" -SIT_FILE="${CONFIG_DIR}/runtime-service-config.sit.yaml" -PROD_FILE="${CONFIG_DIR}/runtime-service-config.prod.yaml" -OUTPUT_FILE="${CONFIG_DIR}/runtime-service-config.yaml" - -HOSTNAME_OVERRIDE="" -ENV_OVERRIDE="" - -usage() { - cat <<'USAGE' -Usage: scripts/gen-runtime-config.sh [--hostname ] [--env ] [--output ] - -Options: - --hostname Override the hostname used for environment detection. - --env Explicitly set the environment (prod|sit). Overrides hostname detection. - --output Output path for the merged runtime configuration. Defaults to src/config/runtime-service-config.yaml. - -h, --help Show this help message. -USAGE -} - -while [[ $# -gt 0 ]]; do - case "$1" in - --hostname) - HOSTNAME_OVERRIDE="$2" - shift 2 - ;; - --env) - ENV_OVERRIDE="$2" - shift 2 - ;; - --output) - OUTPUT_FILE="$2" - shift 2 - ;; - -h|--help) - usage - exit 0 - ;; - *) - HOSTNAME_OVERRIDE="$1" - shift 1 - ;; - esac -done - -if [[ ! -f "${BASE_FILE}" ]]; then - echo "error: base configuration file not found at ${BASE_FILE}" >&2 - exit 1 -fi - -if ! command -v yq >/dev/null 2>&1; then - echo 'error: yq is required to merge runtime configuration files' >&2 - exit 1 -fi - -sanitize_hostname() { - local value="$1" - value="${value%%/*}" - value="${value##*://}" - value="${value%%:*}" - value="${value,,}" - value="${value%.}" - echo "$value" -} - -detect_hostname() { - if [[ -n "${HOSTNAME_OVERRIDE}" ]]; then - sanitize_hostname "${HOSTNAME_OVERRIDE}" - return - fi - - if [[ -n "${RUNTIME_HOSTNAME:-}" ]]; then - sanitize_hostname "${RUNTIME_HOSTNAME}" - return - fi - - if [[ -n "${NEXT_RUNTIME_HOSTNAME:-}" ]]; then - sanitize_hostname "${NEXT_RUNTIME_HOSTNAME}" - return - fi - - if [[ -n "${DEPLOYMENT_HOSTNAME:-}" ]]; then - sanitize_hostname "${DEPLOYMENT_HOSTNAME}" - return - fi - - if [[ -n "${VERCEL_URL:-}" ]]; then - sanitize_hostname "${VERCEL_URL}" - return - fi - - if [[ -n "${NEXT_PUBLIC_VERCEL_URL:-}" ]]; then - sanitize_hostname "${NEXT_PUBLIC_VERCEL_URL}" - return - fi - - if [[ -n "${URL:-}" ]]; then - sanitize_hostname "${URL}" - return - fi - - if [[ -n "${HOSTNAME:-}" ]]; then - sanitize_hostname "${HOSTNAME}" - return - fi - - echo "" -} - -normalize_env_key() { - local value="$1" - value="${value//[^A-Za-z0-9]/_}" - value="${value##_}" - value="${value%%_}" - echo "${value,,}" -} - -detect_environment_from_hostname() { - local hostname="$1" - if [[ -z "${hostname}" ]]; then - echo "prod" - return - fi - - if [[ "${hostname}" == dev.* || "${hostname}" == dev-* || "${hostname}" == *.dev.* ]]; then - echo "sit" - return - fi - - echo "prod" -} - -resolve_environment() { - if [[ -n "${ENV_OVERRIDE}" ]]; then - normalize_env_key "${ENV_OVERRIDE}" - return - fi - - local env_candidates=( - "${RUNTIME_ENV:-}" - "${NEXT_RUNTIME_ENV:-}" - "${APP_ENV:-}" - "${NODE_ENV:-}" - ) - - for candidate in "${env_candidates[@]}"; do - if [[ -n "${candidate}" ]]; then - local normalized - normalized="$(normalize_env_key "${candidate}")" - case "${normalized}" in - prod|production|release|main) - echo "prod" - return - ;; - sit|staging|test) - echo "sit" - return - ;; - esac - fi - done - - local detected_hostname - detected_hostname="$(detect_hostname)" - detect_environment_from_hostname "${detected_hostname}" -} - -detect_region() { - local hostname="$1" - if [[ "${hostname}" == cn-* ]]; then - echo "CN" - return - fi - - if [[ "${hostname}" == global-* ]]; then - echo "Global" - return - fi - - echo "Default" -} - -ENVIRONMENT="$(resolve_environment)" -HOSTNAME_VALUE="$(detect_hostname)" -REGION_LABEL="$(detect_region "${HOSTNAME_VALUE}")" - -case "${ENVIRONMENT}" in - sit) - ENV_FILE="${SIT_FILE}" - ;; - prod|production) - ENV_FILE="${PROD_FILE}" - ENVIRONMENT="prod" - ;; - *) - echo "warning: unknown environment '${ENVIRONMENT}', defaulting to production" >&2 - ENV_FILE="${PROD_FILE}" - ENVIRONMENT="prod" - ;; -endcase - -if [[ ! -f "${ENV_FILE}" ]]; then - echo "warning: environment configuration file '${ENV_FILE}' not found, using base configuration only" >&2 - ENV_FILE="" -fi - -OUTPUT_PATH="${OUTPUT_FILE}" -if [[ "${OUTPUT_PATH}" != /* ]]; then - OUTPUT_PATH="${ROOT_DIR}/${OUTPUT_PATH}" -fi - -tmp_file="${OUTPUT_PATH}.tmp" - -if [[ -n "${ENV_FILE}" ]]; then - yq eval-all 'select(fileIndex == 0) * select(fileIndex == 1)' "${BASE_FILE}" "${ENV_FILE}" >"${tmp_file}" -else - cp "${BASE_FILE}" "${tmp_file}" -fi - -mv "${tmp_file}" "${OUTPUT_PATH}" - -echo "Generated runtime-service-config.yaml (${ENVIRONMENT^^}${REGION_LABEL:+ / ${REGION_LABEL}}) from hostname '${HOSTNAME_VALUE:-unknown}'" >&2 diff --git a/dashboard/scripts/generate-content.ts b/dashboard/scripts/generate-content.ts deleted file mode 100644 index c2cee42..0000000 --- a/dashboard/scripts/generate-content.ts +++ /dev/null @@ -1,106 +0,0 @@ -import { promises as fs } from 'fs' -import path from 'path' -import yaml from 'js-yaml' - -type Language = 'zh' | 'en' - -type HeroContent = { - eyebrow: string - title: string - tagline?: string - description: string - focusAreas?: string[] - ctaLabel?: string - products?: Array<{ - label: string - headline: string - description: string - href: string - }> -} - -const CONTENT_ROOT = path.join(process.cwd(), 'src', 'content') -const OUTPUT_ROOT = path.join(process.cwd(), 'src', 'data', 'content') - -function parseFrontMatter(raw: string): { metadata: Record } { - const frontMatterMatch = raw.match(/^---\s*\n([\s\S]*?)\n---\s*\n?([\s\S]*)$/) - if (!frontMatterMatch) { - return { metadata: {} } - } - - const [, frontMatter] = frontMatterMatch - try { - const metadata = yaml.load(frontMatter) as Record - return { metadata: metadata || {} } - } catch (error) { - console.error('Failed to parse YAML frontmatter:', error) - return { metadata: {} } - } -} - -async function generateHomepageContent() { - const languages: Language[] = ['zh', 'en'] - const content: Record = {} as any - - for (const lang of languages) { - try { - const filePath = path.join(CONTENT_ROOT, 'homepage', lang, 'hero.md') - const raw = await fs.readFile(filePath, 'utf-8') - const { metadata } = parseFrontMatter(raw) - content[lang] = metadata as HeroContent - } catch (error) { - console.error(`Failed to read homepage content for ${lang}:`, error) - } - } - - return content -} - -async function generateProductContent(product: 'xstream' | 'xcloudflow' | 'xscopehub') { - const languages: Language[] = ['zh', 'en'] - const content: Record = {} as any - - for (const lang of languages) { - try { - const heroPath = path.join(CONTENT_ROOT, 'product', product, lang, 'hero.md') - const raw = await fs.readFile(heroPath, 'utf-8') - const { metadata } = parseFrontMatter(raw) - content[lang] = metadata - } catch (error) { - console.error(`Failed to read ${product} content for ${lang}:`, error) - } - } - - return content -} - -async function main() { - // Create output directory - await fs.mkdir(OUTPUT_ROOT, { recursive: true }) - - // Generate homepage content - console.log('Generating homepage content...') - const homepageContent = await generateHomepageContent() - await fs.writeFile( - path.join(OUTPUT_ROOT, 'homepage.json'), - JSON.stringify(homepageContent, null, 2) - ) - - // Generate product content - const products = ['xstream', 'xcloudflow', 'xscopehub'] as const - for (const product of products) { - console.log(`Generating ${product} content...`) - const productContent = await generateProductContent(product) - await fs.writeFile( - path.join(OUTPUT_ROOT, `${product}.json`), - JSON.stringify(productContent, null, 2) - ) - } - - console.log('Content generation complete!') -} - -main().catch((error) => { - console.error('Content generation failed:', error) - process.exit(1) -}) diff --git a/dashboard/scripts/setup_node.sh b/dashboard/scripts/setup_node.sh deleted file mode 100644 index 865257b..0000000 --- a/dashboard/scripts/setup_node.sh +++ /dev/null @@ -1,113 +0,0 @@ -#!/bin/bash - -# Logger Function -log() { - local message="$1" - local type="$2" - local timestamp=$(date '+%Y-%m-%d %H:%M:%S') - local color - local endcolor="\033[0m" - - case "$type" in - "info") color="\033[38;5;79m" ;; - "success") color="\033[1;32m" ;; - "error") color="\033[1;31m" ;; - *) color="\033[1;34m" ;; - esac - - echo -e "${color}${timestamp} - ${message}${endcolor}" -} - -# Error handler function -handle_error() { - local exit_code=$1 - local error_message="$2" - log "Error: $error_message (Exit Code: $exit_code)" "error" - exit $exit_code -} - -# Function to check for command availability -command_exists() { - command -v "$1" &> /dev/null -} - -check_os() { - if ! [ -f "/etc/debian_version" ]; then - echo "Error: This script is only supported on Debian-based systems." - exit 1 - fi -} - -# Function to Install the script pre-requisites -install_pre_reqs() { - log "Installing pre-requisites" "info" - - # Run 'apt-get update' - if ! apt-get update -y; then - handle_error "$?" "Failed to run 'apt-get update'" - fi - - # Run 'apt-get install' - if ! apt-get install -y apt-transport-https ca-certificates curl gnupg; then - handle_error "$?" "Failed to install packages" - fi - - if ! mkdir -p /usr/share/keyrings; then - handle_error "$?" "Makes sure the path /usr/share/keyrings exist or run ' mkdir -p /usr/share/keyrings' with sudo" - fi - - rm -f /usr/share/keyrings/nodesource.gpg || true - rm -f /etc/apt/sources.list.d/nodesource.list || true - - # Run 'curl' and 'gpg' to download and import the NodeSource signing key - if ! curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /usr/share/keyrings/nodesource.gpg; then - handle_error "$?" "Failed to download and import the NodeSource signing key" - fi - - # Explicitly set the permissions to ensure the file is readable by all - if ! chmod 644 /usr/share/keyrings/nodesource.gpg; then - handle_error "$?" "Failed to set correct permissions on /usr/share/keyrings/nodesource.gpg" - fi -} - -# Function to configure the Repo -configure_repo() { - local node_version=$1 - - arch=$(dpkg --print-architecture) - if [ "$arch" != "amd64" ] && [ "$arch" != "arm64" ] && [ "$arch" != "armhf" ]; then - handle_error "1" "Unsupported architecture: $arch. Only amd64, arm64, and armhf are supported." - fi - - echo "deb [arch=$arch signed-by=/usr/share/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$node_version nodistro main" | tee /etc/apt/sources.list.d/nodesource.list > /dev/null - - # N|solid Config - echo "Package: nsolid" | tee /etc/apt/preferences.d/nsolid > /dev/null - echo "Pin: origin deb.nodesource.com" | tee -a /etc/apt/preferences.d/nsolid > /dev/null - echo "Pin-Priority: 600" | tee -a /etc/apt/preferences.d/nsolid > /dev/null - - # Nodejs Config - echo "Package: nodejs" | tee /etc/apt/preferences.d/nodejs > /dev/null - echo "Pin: origin deb.nodesource.com" | tee -a /etc/apt/preferences.d/nodejs > /dev/null - echo "Pin-Priority: 600" | tee -a /etc/apt/preferences.d/nodejs > /dev/null - - # Run 'apt-get update' - if ! apt-get update -y; then - handle_error "$?" "Failed to run 'apt-get update'" - else - log "Repository configured successfully." - log "To install Node.js, run: apt-get install nodejs -y" "info" - log "You can use N|solid Runtime as a node.js alternative" "info" - log "To install N|solid Runtime, run: apt-get install nsolid -y \n" "success" - fi -} - -# Define Node.js version -NODE_VERSION="20.x" - -# Check OS -check_os - -# Main execution -install_pre_reqs || handle_error $? "Failed installing pre-requisites" -configure_repo "$NODE_VERSION" || handle_error $? "Failed configuring repository" diff --git a/dashboard/scripts/start.js b/dashboard/scripts/start.js deleted file mode 100644 index 99f521b..0000000 --- a/dashboard/scripts/start.js +++ /dev/null @@ -1,23 +0,0 @@ -#!/usr/bin/env node - -const { spawn } = require('node:child_process') - -const args = process.argv.slice(2) - -const child = spawn('next', ['start', ...args], { - stdio: 'inherit', - shell: process.platform === 'win32', -}) - -child.on('error', (error) => { - console.error('Failed to launch Next.js:', error) - process.exit(1) -}) - -child.on('close', (code, signal) => { - if (signal) { - process.kill(process.pid, signal) - } else { - process.exit(code ?? 0) - } -}) diff --git a/dashboard/scripts/sync-content.sh b/dashboard/scripts/sync-content.sh deleted file mode 100755 index 5a5591d..0000000 --- a/dashboard/scripts/sync-content.sh +++ /dev/null @@ -1,88 +0,0 @@ -#!/usr/bin/env bash -set -euo pipefail - -SCRIPT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) -REPO_ROOT=$(cd "${SCRIPT_DIR}/.." && pwd) -CONTENT_DIR="${REPO_ROOT}/src/content" -REMOTE_REPO="${CONTENT_REMOTE_REPO:-}" -REMOTE_BRANCH="${CONTENT_REMOTE_BRANCH:-main}" -REMOTE_SUBDIR="${CONTENT_REMOTE_SUBDIR:-content}" - -usage() { - cat < - -Environment variables: - CONTENT_REMOTE_REPO Git URL or local path of the external content repository (required) - CONTENT_REMOTE_BRANCH Branch to sync (default: main) - CONTENT_REMOTE_SUBDIR Subdirectory inside the external repo to mirror content/ (default: content) - GIT_AUTHOR_NAME Author name used for commits when pushing (default: Content Sync Bot) - GIT_AUTHOR_EMAIL Author email used for commits when pushing (default: content-sync@example.com) -USAGE -} - -if [[ $# -ne 1 ]]; then - usage - exit 1 -fi - -MODE="$1" - -if [[ -z "${REMOTE_REPO}" ]]; then - echo "CONTENT_REMOTE_REPO is required" >&2 - exit 1 -fi - -if [[ ! -d "${CONTENT_DIR}" ]]; then - echo "Content directory not found: ${CONTENT_DIR}" >&2 - exit 1 -fi - -TMP_DIR=$(mktemp -d) -trap 'rm -rf "${TMP_DIR}"' EXIT - -clone_repo() { - git clone --depth=1 --branch "${REMOTE_BRANCH}" "${REMOTE_REPO}" "${TMP_DIR}/repo" >/dev/null 2>&1 || \ - git clone --depth=1 "${REMOTE_REPO}" "${TMP_DIR}/repo" - (cd "${TMP_DIR}/repo" && git checkout "${REMOTE_BRANCH}" >/dev/null 2>&1 || git checkout -b "${REMOTE_BRANCH}") -} - -sync_push() { - clone_repo - mkdir -p "${TMP_DIR}/repo/${REMOTE_SUBDIR}" - rsync -a --delete "${CONTENT_DIR}/" "${TMP_DIR}/repo/${REMOTE_SUBDIR}/" - ( - cd "${TMP_DIR}/repo" - if [[ -n "$(git status --porcelain)" ]]; then - git config user.name "${GIT_AUTHOR_NAME:-Content Sync Bot}" - git config user.email "${GIT_AUTHOR_EMAIL:-content-sync@example.com}" - git add "${REMOTE_SUBDIR}" - git commit -m "chore(content): sync from dashboard" - git push origin "${REMOTE_BRANCH}" - else - echo "No changes to push" - fi - ) -} - -sync_pull() { - clone_repo - if [[ ! -d "${TMP_DIR}/repo/${REMOTE_SUBDIR}" ]]; then - echo "Remote repository does not contain ${REMOTE_SUBDIR}" >&2 - exit 1 - fi - rsync -a --delete "${TMP_DIR}/repo/${REMOTE_SUBDIR}/" "${CONTENT_DIR}/" -} - -case "${MODE}" in - push) - sync_push - ;; - pull) - sync_pull - ;; - *) - usage - exit 1 - ;; -esac diff --git a/dashboard/src/app/(auth)/email-verification/EmailVerificationContent.tsx b/dashboard/src/app/(auth)/email-verification/EmailVerificationContent.tsx deleted file mode 100644 index ec027f1..0000000 --- a/dashboard/src/app/(auth)/email-verification/EmailVerificationContent.tsx +++ /dev/null @@ -1,323 +0,0 @@ -'use client' - -import { - ChangeEvent, - FormEvent, - useCallback, - useEffect, - useMemo, - useRef, - useState, -} from 'react' -import { useRouter, useSearchParams } from 'next/navigation' - -import { AuthLayout } from '@components/auth/AuthLayout' -import { useLanguage } from '@i18n/LanguageProvider' -import { translations } from '@i18n/translations' - -const VERIFICATION_CODE_LENGTH = 6 -const RESEND_COOLDOWN_SECONDS = 60 - -const EMAIL_QUERY_KEYS = ['email', 'address', 'identifier', 'account'] as const - -type AlertState = { type: 'error' | 'success' | 'info'; message: string } - -export default function EmailVerificationContent() { - const { language } = useLanguage() - const t = translations[language].auth.emailVerification - const router = useRouter() - const searchParams = useSearchParams() - const redirectTimeoutRef = useRef(null) - - const email = useMemo(() => { - for (const key of EMAIL_QUERY_KEYS) { - const value = searchParams.get(key) - if (typeof value === 'string' && value.trim().length > 0) { - return value.trim().toLowerCase() - } - } - return '' - }, [searchParams]) - - const statusParam = searchParams.get('status') - const errorParam = searchParams.get('error') - - const descriptionEmail = email || t.emailFallback || '' - const description = useMemo(() => { - if (!t.description.includes('{{email}}')) { - return t.description - } - return t.description.replace('{{email}}', descriptionEmail) - }, [descriptionEmail, t.description]) - - const initialAlert = useMemo(() => { - if (statusParam === 'sent') { - return { type: 'info', message: t.alerts.verificationSent } - } - if (statusParam === 'resent') { - return { - type: 'success', - message: t.alerts.verificationResent ?? t.alerts.verificationSent, - } - } - if (errorParam) { - const normalized = errorParam - .trim() - .toLowerCase() - .replace(/[^a-z0-9]+/g, '_') - .replace(/^_+|_+$/g, '') - const errorMap: Record = { - missing_verification: t.alerts.codeRequired, - verification_failed: t.alerts.verificationFailed, - invalid_code: t.alerts.verificationFailed, - invalid_email: t.alerts.missingEmail, - code_required: t.alerts.codeRequired, - } - const message = errorMap[normalized] ?? t.alerts.genericError - return { type: normalized === 'already_verified' ? 'success' : 'error', message } - } - if (!email) { - return { type: 'info', message: t.alerts.missingEmail } - } - return null - }, [email, errorParam, statusParam, t.alerts]) - - const [alert, setAlert] = useState(initialAlert) - const [code, setCode] = useState('') - const [isSubmitting, setIsSubmitting] = useState(false) - const [isResending, setIsResending] = useState(false) - const [resendCooldown, setResendCooldown] = useState(0) - - useEffect(() => { - setAlert(initialAlert) - }, [initialAlert]) - - useEffect(() => { - if (resendCooldown <= 0) { - return undefined - } - - const timeoutId = window.setTimeout(() => { - setResendCooldown(previous => Math.max(previous - 1, 0)) - }, 1000) - - return () => { - window.clearTimeout(timeoutId) - } - }, [resendCooldown]) - - useEffect(() => { - return () => { - if (redirectTimeoutRef.current !== null) { - window.clearTimeout(redirectTimeoutRef.current) - } - } - }, []) - - const handleCodeChange = useCallback((event: ChangeEvent) => { - const digitsOnly = event.target.value.replace(/\D/g, '').slice(0, VERIFICATION_CODE_LENGTH) - setCode(digitsOnly) - }, []) - - const hasEmail = email.length > 0 - const isSubmitDisabled = - isSubmitting || !hasEmail || code.length !== VERIFICATION_CODE_LENGTH - const isResendDisabled = isResending || resendCooldown > 0 || !hasEmail - - const handleSubmit = useCallback( - async (event: FormEvent) => { - event.preventDefault() - if (isSubmitting) { - return - } - if (!hasEmail) { - setAlert({ type: 'error', message: t.alerts.missingEmail }) - return - } - if (code.length !== VERIFICATION_CODE_LENGTH) { - setAlert({ type: 'error', message: t.alerts.codeRequired }) - return - } - - setIsSubmitting(true) - setAlert(null) - - try { - const response = await fetch('/api/auth/verify-email', { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - }, - body: JSON.stringify({ email, code }), - }) - - const payload = (await response.json().catch(() => ({}))) as { - success?: boolean - error?: string | null - } - - if (!response.ok || payload?.success !== true) { - const errorCode = typeof payload?.error === 'string' ? payload.error : 'verification_failed' - const normalized = errorCode - .trim() - .toLowerCase() - .replace(/[^a-z0-9]+/g, '_') - .replace(/^_+|_+$/g, '') - - if (normalized === 'already_verified') { - const message = t.alerts.verificationReady ?? t.alerts.verificationSent - setAlert({ type: 'success', message }) - redirectTimeoutRef.current = window.setTimeout(() => { - router.push('/login?registered=1') - }, 1200) - return - } - - const errorMap: Record = { - missing_verification: t.alerts.codeRequired, - invalid_code: t.alerts.verificationFailed, - verification_failed: t.alerts.verificationFailed, - invalid_email: t.alerts.missingEmail, - code_expired: t.alerts.verificationFailed, - } - const message = errorMap[normalized] ?? t.alerts.genericError - setAlert({ type: 'error', message }) - return - } - - const successMessage = t.alerts.verificationReady ?? t.alerts.verificationSent - setAlert({ type: 'success', message: successMessage }) - setCode('') - redirectTimeoutRef.current = window.setTimeout(() => { - router.push('/login?registered=1') - }, 1200) - } catch (error) { - console.error('Email verification request failed', error) - setAlert({ type: 'error', message: t.alerts.genericError }) - } finally { - setIsSubmitting(false) - } - }, [code, email, hasEmail, isSubmitting, router, t.alerts]) - - const handleResend = useCallback(async () => { - if (isResending || !hasEmail) { - if (!hasEmail) { - setAlert({ type: 'error', message: t.alerts.missingEmail }) - } - return - } - - setIsResending(true) - - try { - const response = await fetch('/api/auth/verify-email/send', { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - }, - body: JSON.stringify({ email }), - }) - - const payload = (await response.json().catch(() => ({}))) as { - success?: boolean - error?: string | null - } - - if (!response.ok || payload?.success !== true) { - const errorCode = typeof payload?.error === 'string' ? payload.error : 'verification_failed' - const normalized = errorCode - .trim() - .toLowerCase() - .replace(/[^a-z0-9]+/g, '_') - .replace(/^_+|_+$/g, '') - - if (normalized === 'already_verified') { - const message = t.alerts.verificationReady ?? t.alerts.verificationSent - setAlert({ type: 'success', message }) - redirectTimeoutRef.current = window.setTimeout(() => { - router.push('/login?registered=1') - }, 1200) - return - } - - const errorMap: Record = { - invalid_email: t.alerts.missingEmail, - verification_failed: t.alerts.verificationFailed, - rate_limited: t.alerts.genericError, - } - const message = errorMap[normalized] ?? t.alerts.genericError - setAlert({ type: 'error', message }) - return - } - - const successMessage = t.alerts.verificationResent ?? t.alerts.verificationSent - setAlert({ type: 'success', message: successMessage }) - setResendCooldown(RESEND_COOLDOWN_SECONDS) - } catch (error) { - console.error('Email verification resend failed', error) - setAlert({ type: 'error', message: t.alerts.genericError }) - } finally { - setIsResending(false) - } - }, [email, hasEmail, isResending, router, t.alerts]) - - const resendLabel = isResending - ? t.resend.resending ?? t.resend.label - : resendCooldown > 0 - ? `${t.resend.label} (${resendCooldown}s)` - : t.resend.label - - return ( - -
-
- - - {t.form.helper ? ( -

- {t.form.helper} -

- ) : null} -
- -
- -
- ) -} diff --git a/dashboard/src/app/(auth)/email-verification/page.tsx b/dashboard/src/app/(auth)/email-verification/page.tsx deleted file mode 100644 index 3801132..0000000 --- a/dashboard/src/app/(auth)/email-verification/page.tsx +++ /dev/null @@ -1,24 +0,0 @@ -export const dynamic = 'force-dynamic' - -import { Suspense } from 'react' -import { notFound } from 'next/navigation' - -import { isFeatureEnabled } from '@lib/featureToggles' - -import EmailVerificationContent from './EmailVerificationContent' - -function EmailVerificationPageFallback() { - return
-} - -export default function EmailVerificationPage() { - if (!isFeatureEnabled('globalNavigation', '/email-verification')) { - notFound() - } - - return ( - }> - - - ) -} diff --git a/dashboard/src/app/(auth)/layout.tsx b/dashboard/src/app/(auth)/layout.tsx deleted file mode 100644 index 1b02a89..0000000 --- a/dashboard/src/app/(auth)/layout.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import type { ReactNode } from 'react' - -import { AppShellBypass } from '@lib/appShellBypass' - -export default function AuthPagesLayout({ children }: { children: ReactNode }) { - return ( - -
- {children} -
-
- ) -} diff --git a/dashboard/src/app/(auth)/login/LoginContent.tsx b/dashboard/src/app/(auth)/login/LoginContent.tsx deleted file mode 100644 index f87dfb6..0000000 --- a/dashboard/src/app/(auth)/login/LoginContent.tsx +++ /dev/null @@ -1,347 +0,0 @@ -'use client' - -import { FormEvent, ReactNode, useCallback, useEffect, useMemo, useRef, useState } from 'react' -import Link from 'next/link' -import { useRouter, useSearchParams } from 'next/navigation' -import { Github } from 'lucide-react' - -import { AuthLayout, AuthLayoutSocialButton } from '@components/auth/AuthLayout' -import { useLanguage } from '@i18n/LanguageProvider' -import { translations } from '@i18n/translations' - -import { WeChatIcon } from '../../components/icons/WeChatIcon' - -type LoginContentProps = { - accountServiceBaseUrl: string - children?: ReactNode -} - -export default function LoginContent({ accountServiceBaseUrl, children }: LoginContentProps) { - const { language } = useLanguage() - const t = translations[language].auth.login - const alerts = t.alerts - const searchParams = useSearchParams() - const router = useRouter() - - useEffect(() => { - const sensitiveKeys = ['username', 'password', 'email'] - const hasSensitiveParams = sensitiveKeys.some((key) => searchParams.has(key)) - - if (!hasSensitiveParams) { - return - } - - const sanitized = new URLSearchParams(searchParams.toString()) - sensitiveKeys.forEach((key) => sanitized.delete(key)) - - const queryString = sanitized.toString() - router.replace(queryString ? `/login?${queryString}` : '/login', { scroll: false }) - }, [router, searchParams]) - - const errorParam = searchParams.get('error') - const registeredParam = searchParams.get('registered') - const setupMfaParam = searchParams.get('setupMfa') - - const normalize = useCallback( - (value: string) => - value - .trim() - .toLowerCase() - .replace(/[^a-z0-9]+/g, '_') - .replace(/^_+|_+$/g, ''), - [], - ) - - const githubAuthUrl = process.env.NEXT_PUBLIC_GITHUB_AUTH_URL || '/api/auth/github' - const wechatAuthUrl = process.env.NEXT_PUBLIC_WECHAT_AUTH_URL || '/api/auth/wechat' - const loginUrl = process.env.NEXT_PUBLIC_LOGIN_URL || `${accountServiceBaseUrl}/api/auth/login` - - const loginUrlRef = useRef(loginUrl) - - const deriveSameOriginLoginFallback = useCallback((url: string): string | undefined => { - if (typeof window === 'undefined') { - return undefined - } - - try { - const currentOrigin = window.location.origin - const parsed = new URL(url, currentOrigin) - - if (parsed.origin === currentOrigin) { - const relative = `${parsed.pathname}${parsed.search}${parsed.hash}` || '/api/auth/login' - return relative - } - - const localHostnames = new Set(['localhost', '127.0.0.1', '[::1]']) - const parsedHostname = parsed.hostname.toLowerCase() - const browserHostname = window.location.hostname.toLowerCase() - - const parsedIsLocal = localHostnames.has(parsedHostname) - const browserIsLocal = localHostnames.has(browserHostname) - - if (!browserIsLocal && parsedIsLocal) { - const relative = `${parsed.pathname}${parsed.search}${parsed.hash}` || '/api/auth/login' - return relative - } - - if ( - window.location.protocol === 'https:' && - parsed.protocol === 'http:' && - parsedHostname === browserHostname - ) { - parsed.protocol = 'https:' - return parsed.toString() - } - } catch (error) { - console.warn('Failed to derive same-origin login fallback', error) - } - - return undefined - }, []) - - useEffect(() => { - loginUrlRef.current = loginUrl - }, [loginUrl]) - - const socialButtonsDisabled = true - - const initialAlert = useMemo(() => { - const successMessages: string[] = [] - if (registeredParam === '1') { - successMessages.push(alerts.registered) - } - if (setupMfaParam === '1') { - const setupRequiredMessage = alerts.mfa?.setupRequired ?? alerts.genericError - if (setupRequiredMessage) { - successMessages.push(setupRequiredMessage) - } - } - - if (successMessages.length > 0) { - return { type: 'success', message: successMessages.join(' ') } as const - } - - if (!errorParam) { - return null - } - - const normalizedError = normalize(errorParam) - const errorMap: Record = { - missing_credentials: alerts.missingCredentials, - email_and_password_are_required: alerts.missingCredentials, - invalid_credentials: alerts.invalidCredentials, - user_not_found: alerts.userNotFound ?? alerts.genericError, - credentials_in_query: alerts.genericError, - invalid_request: alerts.genericError, - - } - const message = errorMap[normalizedError] ?? alerts.genericError - return { type: 'error', message } as const - }, [alerts, errorParam, normalize, registeredParam, setupMfaParam]) - - const [alert, setAlert] = useState(initialAlert) - const [isSubmitting, setIsSubmitting] = useState(false) - - useEffect(() => { - setAlert(initialAlert) - }, [initialAlert]) - - const handleSubmit = useCallback( - async (event: FormEvent) => { - event.preventDefault() - if (isSubmitting) { - return - } - - const formData = new FormData(event.currentTarget) - const username = String(formData.get('username') ?? '').trim() - const password = String(formData.get('password') ?? '') - const remember = formData.get('remember') === 'on' - - if (!username || !password) { - setAlert({ type: 'error', message: alerts.missingCredentials }) - return - } - - setIsSubmitting(true) - setAlert(null) - - try { - const requestPayload = { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - Accept: 'application/json', - }, - body: JSON.stringify({ - username, - password, - remember, - }), - } as const - - let response: Response - let usedUrl = loginUrlRef.current - - try { - response = await fetch(usedUrl, requestPayload) - } catch (primaryError) { - const sameOriginFallback = deriveSameOriginLoginFallback(usedUrl) - if (sameOriginFallback && sameOriginFallback !== usedUrl) { - try { - response = await fetch(sameOriginFallback, requestPayload) - loginUrlRef.current = sameOriginFallback - usedUrl = sameOriginFallback - } catch (fallbackError) { - console.error('Primary login request failed, same-origin fallback also failed', fallbackError) - throw fallbackError - } - } else { - const httpsPattern = /^https:/i - if (httpsPattern.test(usedUrl)) { - const insecureUrl = usedUrl.replace(httpsPattern, 'http:') - - try { - response = await fetch(insecureUrl, requestPayload) - loginUrlRef.current = insecureUrl - usedUrl = insecureUrl - } catch (fallbackError) { - console.error('Primary login request failed, insecure fallback also failed', fallbackError) - throw fallbackError - } - } else { - throw primaryError - } - } - } - - if (!response.ok) { - let errorCode = 'invalid_credentials' - try { - const data = await response.json() - if (typeof data?.error === 'string') { - errorCode = data.error - } - } catch (error) { - console.error('Failed to parse login response', error) - } - - const errorMap: Record = { - invalid_credentials: alerts.invalidCredentials, - missing_credentials: alerts.missingCredentials, - user_not_found: alerts.userNotFound ?? alerts.genericError, - invalid_request: alerts.genericError, - credentials_in_query: alerts.genericError, - } - - setAlert({ type: 'error', message: errorMap[normalize(errorCode)] ?? alerts.genericError }) - return - } - - const data: { redirectTo?: string } = await response - .json() - .catch(() => ({})) - router.push(data?.redirectTo || '/') - router.refresh() - } catch (error) { - console.error('Failed to submit login request', error) - setAlert({ type: 'error', message: alerts.genericError }) - } finally { - setIsSubmitting(false) - } - }, - [alerts, deriveSameOriginLoginFallback, isSubmitting, normalize, router], - ) - - const socialButtons = useMemo(() => { - return [ - { - label: t.social.github, - href: githubAuthUrl, - icon: , - disabled: socialButtonsDisabled, - }, - { - label: t.social.wechat, - href: wechatAuthUrl, - icon: , - disabled: socialButtonsDisabled, - }, - ] - }, [githubAuthUrl, socialButtonsDisabled, t.social.github, t.social.wechat, wechatAuthUrl]) - - const formContent = useMemo(() => { - if (children) { - return children - } - - return ( -
-
- - -
-
-
- - - {t.forgotPassword} - -
- -
- - -
- ) - }, [children, handleSubmit, isSubmitting, t]) - return ( - - {formContent} - - ) -} diff --git a/dashboard/src/app/(auth)/login/LoginForm.tsx b/dashboard/src/app/(auth)/login/LoginForm.tsx deleted file mode 100644 index 5f5aa23..0000000 --- a/dashboard/src/app/(auth)/login/LoginForm.tsx +++ /dev/null @@ -1,364 +0,0 @@ -'use client' - -import { FormEvent, useEffect, useState } from 'react' -import Link from 'next/link' -import { useRouter } from 'next/navigation' - -import { useLanguage } from '@i18n/LanguageProvider' -import { translations } from '@i18n/translations' -import { useUserStore } from '@lib/userStore' - -export function LoginForm() { - const router = useRouter() - const { language } = useLanguage() - const pageCopy = translations[language].login - const authCopy = translations[language].auth.login - const navCopy = translations[language].nav.account - const user = useUserStore((state) => state.user) - const login = useUserStore((state) => state.login) - const userEmail = user?.email ?? '' - const [identifier, setIdentifier] = useState(() => userEmail) - const [password, setPassword] = useState('') - const [totpCode, setTotpCode] = useState('') - const [remember, setRemember] = useState(false) - const [error, setError] = useState(null) - const [isSubmitting, setIsSubmitting] = useState(false) - const [mfaRequirement, setMfaRequirement] = useState<'optional' | 'required'>(() => - user?.mfaEnabled ? 'required' : 'optional', - ) - - useEffect(() => { - if (userEmail && identifier.trim().length === 0) { - setIdentifier(userEmail) - } - }, [identifier, userEmail]) - - useEffect(() => { - setTotpCode('') - }, [identifier]) - - useEffect(() => { - if (mfaRequirement !== 'required' && totpCode !== '') { - setTotpCode('') - } - }, [mfaRequirement, totpCode]) - - useEffect(() => { - let isActive = true - const trimmedIdentifier = identifier.trim() - - if (!trimmedIdentifier) { - if (isActive) { - setMfaRequirement('optional') - } - return () => { - isActive = false - } - } - - const normalizedIdentifier = trimmedIdentifier.toLowerCase() - - const controller = new AbortController() - const signal = controller.signal - - const timeoutId = window.setTimeout(async () => { - try { - const response = await fetch( - `/api/auth/mfa/status?identifier=${encodeURIComponent(normalizedIdentifier)}`, - { - method: 'GET', - cache: 'no-store', - signal, - }, - ) - - if (!isActive || signal.aborted) { - return - } - - if (!response.ok) { - setMfaRequirement('optional') - return - } - - const payload = (await response.json().catch(() => ({}))) as { - mfa?: { totpEnabled?: boolean } - } - - const requiresMfa = Boolean(payload?.mfa?.totpEnabled) - setMfaRequirement(requiresMfa ? 'required' : 'optional') - } catch (lookupError) { - if ((lookupError as Error)?.name === 'AbortError' || signal.aborted) { - return - } - setMfaRequirement('optional') - } - }, 300) - - return () => { - isActive = false - controller.abort() - window.clearTimeout(timeoutId) - } - }, [identifier]) - - useEffect(() => { - if (user?.mfaEnabled) { - setMfaRequirement('required') - } - }, [user?.mfaEnabled]) - - const handleSubmit = async (event: FormEvent) => { - event.preventDefault() - - const trimmedIdentifier = identifier.trim() - if (!trimmedIdentifier) { - setError(pageCopy.missingUsername) - return - } - if (!password) { - setError(pageCopy.missingPassword) - return - } - const requiresTotp = mfaRequirement === 'required' - const sanitizedTotp = totpCode.replace(/\D/g, '') - - if (requiresTotp) { - if (!sanitizedTotp) { - setError(pageCopy.missingTotp ?? authCopy.alerts.mfa?.missing ?? authCopy.alerts.missingCredentials) - return - } - - if (sanitizedTotp.length !== 6) { - setError( - authCopy.alerts.mfa?.invalidFormat ?? - authCopy.alerts.mfa?.invalid ?? - pageCopy.missingTotp ?? - authCopy.alerts.missingCredentials, - ) - return - } - } else if (sanitizedTotp && sanitizedTotp.length !== 6) { - setError( - authCopy.alerts.mfa?.invalidFormat ?? - authCopy.alerts.mfa?.invalid ?? - pageCopy.missingTotp ?? - authCopy.alerts.missingCredentials, - ) - return - } - - setError(null) - setIsSubmitting(true) - try { - const response = await fetch('/api/auth/login', { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - Accept: 'application/json', - }, - body: JSON.stringify({ - email: trimmedIdentifier, - password, - totp: sanitizedTotp.length === 6 ? sanitizedTotp : undefined, - remember, - }), - credentials: 'include', - }) - - const payload = (await response.json().catch(() => ({}))) as { - success?: boolean - error?: string | null - needMfa?: boolean - } - - if (payload.needMfa) { - setMfaRequirement('required') - router.replace('/panel/account?setupMfa=1') - router.refresh() - return - } - - const isSuccessful = response.ok && (payload.success ?? true) - - if (!isSuccessful) { - const messageKey = payload.error ?? 'generic_error' - if ( - messageKey === 'mfa_code_required' || - messageKey === 'invalid_mfa_code' || - messageKey === 'mfa_required' || - messageKey === 'mfa_setup_required' || - messageKey === 'mfa_challenge_failed' - ) { - setMfaRequirement('required') - } - switch (messageKey) { - case 'missing_credentials': - setError(authCopy.alerts.missingCredentials) - break - case 'invalid_credentials': - setError(pageCopy.invalidCredentials) - break - case 'user_not_found': - setError(pageCopy.userNotFound) - break - case 'mfa_code_required': - setError(authCopy.alerts.mfa?.missing ?? pageCopy.missingTotp ?? authCopy.alerts.missingCredentials) - break - case 'invalid_mfa_code': - setError(authCopy.alerts.mfa?.invalid ?? pageCopy.genericError) - break - case 'mfa_challenge_failed': - setError(authCopy.alerts.mfa?.challengeFailed ?? pageCopy.genericError) - break - case 'account_service_unreachable': - setError(pageCopy.serviceUnavailable ?? pageCopy.genericError) - break - default: - setError(pageCopy.genericError) - break - } - return - } - - await login() - router.replace('/') - router.refresh() - } catch (submitError) { - console.warn('Login failed', submitError) - setError(pageCopy.genericError) - } finally { - setIsSubmitting(false) - } - } - - const handleGoHome = () => { - router.replace('/') - router.refresh() - } - - const handleLogout = () => { - router.push('/logout') - } - - const requiresTotpInput = mfaRequirement === 'required' - const mfaModeLabel = requiresTotpInput - ? authCopy.form.mfa.passwordAndTotp - : authCopy.form.mfa.passwordOnly - - return ( - <> - {user ? ( -
-

- {pageCopy.success.replace('{username}', user.username)} -

-
- - -
-
- ) : null} - - {!user ? ( -
-
- - setIdentifier(event.target.value)} - placeholder={authCopy.form.emailPlaceholder} - className="w-full rounded-2xl border border-slate-200 bg-white/90 px-4 py-2.5 text-slate-900 shadow-sm transition focus:border-sky-500 focus:outline-none focus:ring-2 focus:ring-sky-200" - /> -
-
-

{authCopy.form.mfa.mode}

-
- {mfaModeLabel} -
-
-
-
- - - {authCopy.forgotPassword} - -
- setPassword(event.target.value)} - placeholder={authCopy.form.passwordPlaceholder} - className="w-full rounded-2xl border border-slate-200 bg-white/90 px-4 py-2.5 text-slate-900 shadow-sm transition focus:border-sky-500 focus:outline-none focus:ring-2 focus:ring-sky-200" - /> -
- {requiresTotpInput ? ( -
- - { - const digits = event.target.value.replace(/\D/g, '').slice(0, 6) - setTotpCode(digits) - }} - placeholder={authCopy.form.mfa.codePlaceholder} - className="w-full rounded-2xl border border-slate-200 bg-white/90 px-4 py-2.5 text-slate-900 shadow-sm transition focus:border-sky-500 focus:outline-none focus:ring-2 focus:ring-sky-200" - /> -
- ) : null} - - - {error ?

{error}

: null} - - -

* {pageCopy.disclaimer}

-
- ) : null} - - ) -} diff --git a/dashboard/src/app/(auth)/login/page.tsx b/dashboard/src/app/(auth)/login/page.tsx deleted file mode 100644 index 200abae..0000000 --- a/dashboard/src/app/(auth)/login/page.tsx +++ /dev/null @@ -1,27 +0,0 @@ -export const dynamic = 'error' - -import { Suspense } from 'react' -import { notFound } from 'next/navigation' -import { isFeatureEnabled } from '@lib/featureToggles' -import { getAccountServiceBaseUrl } from '@server/serviceConfig' -import { LoginForm } from './LoginForm' -import LoginContent from './LoginContent' - -function LoginPageFallback() { - return
-} - -export default function LoginPage() { - if (!isFeatureEnabled('globalNavigation', '/login')) { - notFound() - } - const accountServiceBaseUrl = getAccountServiceBaseUrl() - // 统一返回:容器包裹表单,兼容两边改动 - return ( - }> - - - - - ) -} diff --git a/dashboard/src/app/(auth)/register/RegisterContent.tsx b/dashboard/src/app/(auth)/register/RegisterContent.tsx deleted file mode 100644 index a77e2d6..0000000 --- a/dashboard/src/app/(auth)/register/RegisterContent.tsx +++ /dev/null @@ -1,931 +0,0 @@ -'use client' - -import Link from 'next/link' -import { Github } from 'lucide-react' -import { - ChangeEvent, - ClipboardEvent, - FormEvent, - KeyboardEvent, - useCallback, - useEffect, - useMemo, - useRef, - useState, - useId, -} from 'react' -import { useRouter, useSearchParams } from 'next/navigation' - -import { AuthLayout, AuthLayoutSocialButton } from '@components/auth/AuthLayout' -import { useLanguage } from '@i18n/LanguageProvider' -import { translations } from '@i18n/translations' - -import { WeChatIcon } from '../../components/icons/WeChatIcon' - -type AlertState = { type: 'error' | 'success' | 'info'; message: string } - -const VERIFICATION_CODE_LENGTH = 6 -const RESEND_COOLDOWN_SECONDS = 60 -const EMAIL_PATTERN = /^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$/ -const PASSWORD_STRENGTH_PATTERN = /^(?=.*[A-Za-z])(?=.*\d).{8,}$/ - -export default function RegisterContent() { - const { language } = useLanguage() - const t = translations[language].auth.register - const alerts = t.alerts - const searchParams = useSearchParams() - const router = useRouter() - - const githubAuthUrl = process.env.NEXT_PUBLIC_GITHUB_AUTH_URL || '/api/auth/github' - const wechatAuthUrl = process.env.NEXT_PUBLIC_WECHAT_AUTH_URL || '/api/auth/wechat' - const isSocialAuthVisible = false - - const socialButtons = useMemo(() => { - if (!isSocialAuthVisible) { - return [] - } - - return [ - { - label: t.social.github, - href: githubAuthUrl, - icon: , - }, - { - label: t.social.wechat, - href: wechatAuthUrl, - icon: , - }, - ] - }, [githubAuthUrl, isSocialAuthVisible, t.social.github, t.social.wechat, wechatAuthUrl]) - - useEffect(() => { - const sensitiveKeys = ['username', 'password', 'confirmPassword', 'email'] - const hasSensitiveParams = sensitiveKeys.some((key) => searchParams.has(key)) - - if (!hasSensitiveParams) { - return - } - - const sanitized = new URLSearchParams(searchParams.toString()) - sensitiveKeys.forEach((key) => sanitized.delete(key)) - - const queryString = sanitized.toString() - router.replace(queryString ? `/register?${queryString}` : '/register', { scroll: false }) - }, [router, searchParams]) - - const normalize = useCallback( - (value: string) => - value - .trim() - .toLowerCase() - .replace(/[^a-z0-9]+/g, '_') - .replace(/^_+|_+$/g, ''), - [], - ) - - const initialAlert = useMemo(() => { - const errorParam = searchParams.get('error') - const successParam = searchParams.get('success') - - if (successParam === '1') { - return { type: 'success', message: alerts.success } - } - - if (!errorParam) { - return null - } - - const normalizedError = normalize(errorParam) - const errorMap: Record = { - missing_fields: alerts.missingFields, - email_and_password_are_required: alerts.missingFields, - password_mismatch: alerts.passwordMismatch, - user_already_exists: alerts.userExists, - email_must_be_a_valid_address: alerts.invalidEmail, - password_must_be_at_least_8_characters: alerts.weakPassword, - email_already_exists: alerts.userExists, - name_already_exists: alerts.usernameExists ?? alerts.userExists, - invalid_email: alerts.invalidEmail, - password_too_short: alerts.weakPassword, - invalid_name: alerts.invalidName ?? alerts.genericError, - name_required: alerts.invalidName ?? alerts.genericError, - credentials_in_query: alerts.genericError, - } - const message = errorMap[normalizedError] ?? alerts.genericError - return { type: 'error', message } - }, [alerts, normalize, searchParams]) - - const [alert, setAlert] = useState(initialAlert) - const [isSubmitting, setIsSubmitting] = useState(false) - const [codeDigits, setCodeDigits] = useState(() => Array(VERIFICATION_CODE_LENGTH).fill('')) - const [hasRequestedCode, setHasRequestedCode] = useState(false) - const [pendingEmail, setPendingEmail] = useState('') - const [pendingPassword, setPendingPassword] = useState('') - const [isResending, setIsResending] = useState(false) - const [resendCooldown, setResendCooldown] = useState(0) - const [isVerified, setIsVerified] = useState(false) - const [formValues, setFormValues] = useState({ - email: '', - password: '', - confirmPassword: '', - agreement: false, - }) - const [isFormReady, setIsFormReady] = useState(false) - const formRef = useRef(null) - const codeInputRefs = useRef<(HTMLInputElement | null)[]>([]) - - useEffect(() => { - setAlert(initialAlert) - }, [initialAlert]) - - useEffect(() => { - setIsFormReady(true) - }, []) - - useEffect(() => { - if (resendCooldown <= 0) { - return - } - - const timer = window.setInterval(() => { - setResendCooldown((current) => (current > 0 ? current - 1 : 0)) - }, 1000) - - return () => window.clearInterval(timer) - }, [resendCooldown]) - - const focusCodeInput = useCallback((index: number) => { - const input = codeInputRefs.current[index] - if (input) { - input.focus() - input.select() - } - }, []) - - const resetCodeDigits = useCallback(() => { - setCodeDigits(Array(VERIFICATION_CODE_LENGTH).fill('')) - }, []) - - const handleInputChange = useCallback( - (field: 'email' | 'password' | 'confirmPassword') => - (event: ChangeEvent) => { - const { value } = event.target - setFormValues((previous) => ({ ...previous, [field]: value })) - }, - [], - ) - - const handleAgreementChange = useCallback((event: ChangeEvent) => { - setFormValues((previous) => ({ ...previous, agreement: event.target.checked })) - }, []) - - const handleCodeChange = useCallback( - (index: number, value: string) => { - const sanitized = value.replace(/\D/g, '') - setCodeDigits((previous) => { - const next = [...previous] - next[index] = sanitized ? sanitized[sanitized.length - 1] ?? '' : '' - return next - }) - - if (sanitized && index < VERIFICATION_CODE_LENGTH - 1) { - focusCodeInput(index + 1) - } - }, - [focusCodeInput], - ) - - const handleCodeKeyDown = useCallback( - (index: number, event: KeyboardEvent) => { - if (event.key === 'Backspace' && !codeDigits[index] && index > 0) { - event.preventDefault() - setCodeDigits((previous) => { - const next = [...previous] - next[index - 1] = '' - return next - }) - focusCodeInput(index - 1) - return - } - - if (event.key === 'ArrowLeft' && index > 0) { - event.preventDefault() - focusCodeInput(index - 1) - return - } - - if (event.key === 'ArrowRight' && index < VERIFICATION_CODE_LENGTH - 1) { - event.preventDefault() - focusCodeInput(index + 1) - } - }, - [codeDigits, focusCodeInput], - ) - - const handleCodePaste = useCallback( - (index: number, event: ClipboardEvent) => { - event.preventDefault() - const clipboardValue = event.clipboardData.getData('text').replace(/\D/g, '') - if (!clipboardValue) { - return - } - - const digits = clipboardValue.slice(0, VERIFICATION_CODE_LENGTH - index).split('') - setCodeDigits((previous) => { - const next = [...previous] - digits.forEach((digit, offset) => { - const targetIndex = index + offset - if (targetIndex < VERIFICATION_CODE_LENGTH) { - next[targetIndex] = digit - } - }) - return next - }) - - const lastFilledIndex = Math.min(index + digits.length - 1, VERIFICATION_CODE_LENGTH - 1) - focusCodeInput(lastFilledIndex) - }, - [focusCodeInput], - ) - - const handleSubmit = useCallback( - async (event: FormEvent) => { - event.preventDefault() - - if (isSubmitting) { - return - } - - formRef.current = event.currentTarget - - const formData = new FormData(event.currentTarget) - const emailInput = String(formData.get('email') ?? '').trim() - const normalizedEmail = emailInput.toLowerCase() - const password = String(formData.get('password') ?? '') - const confirmPassword = String(formData.get('confirmPassword') ?? '') - const agreementAccepted = formData.get('agreement') === 'on' - const verificationCode = codeDigits.join('') - - setFormValues((previous) => ({ - ...previous, - email: emailInput, - password, - confirmPassword, - agreement: agreementAccepted, - })) - - const showError = (message: string) => { - setAlert({ type: 'error', message }) - } - - const showStatus = (message: string) => { - setAlert({ type: 'info', message }) - } - - if (!hasRequestedCode) { - if (!emailInput || !EMAIL_PATTERN.test(emailInput)) { - showError(alerts.invalidEmail) - return - } - - if (!password || !confirmPassword) { - showError(alerts.missingFields) - return - } - - if (!PASSWORD_STRENGTH_PATTERN.test(password)) { - showError(alerts.weakPassword ?? alerts.genericError) - return - } - - if (password !== confirmPassword) { - showError(alerts.passwordMismatch) - return - } - - if (!agreementAccepted) { - showError(alerts.agreementRequired ?? alerts.missingFields) - return - } - - setIsSubmitting(true) - showStatus( - t.form.validation?.submitting ?? - t.form.submitting ?? - 'Submitting registration request…', - ) - - try { - const response = await fetch('/api/auth/register/send', { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - }, - body: JSON.stringify({ email: emailInput }), - }) - - if (!response.ok) { - let errorCode = 'generic_error' - try { - const data = await response.json() - if (typeof data?.error === 'string') { - errorCode = data.error - } - } catch (error) { - console.error('Failed to parse verification send response', error) - } - - const errorMap: Record = { - invalid_request: alerts.genericError, - invalid_email: alerts.invalidEmail, - verification_failed: alerts.verificationFailed ?? alerts.genericError, - email_already_exists: alerts.userExists, - account_service_unreachable: alerts.genericError, - } - - showError(errorMap[normalize(errorCode)] ?? alerts.genericError) - setIsSubmitting(false) - return - } - - setPendingEmail(normalizedEmail) - setPendingPassword(password) - setHasRequestedCode(true) - setIsVerified(false) - resetCodeDigits() - focusCodeInput(0) - setResendCooldown(RESEND_COOLDOWN_SECONDS) - - const successMessage = alerts.verificationSent ?? alerts.genericError - setAlert({ type: 'success', message: successMessage }) - } catch (error) { - console.error('Failed to request verification code', error) - showError(alerts.genericError) - } finally { - setIsSubmitting(false) - } - return - } - - const emailForVerification = pendingEmail || normalizedEmail - if (!emailForVerification) { - showError(alerts.invalidEmail) - return - } - - if (!isVerified) { - if (verificationCode.length !== VERIFICATION_CODE_LENGTH) { - showError(alerts.codeRequired ?? alerts.invalidCode ?? alerts.missingFields) - return - } - - setIsSubmitting(true) - showStatus( - t.form.validation?.verifying ?? - t.form.verifying ?? - t.form.verifySubmit ?? - t.form.submit, - ) - - try { - const response = await fetch('/api/auth/register/verify', { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - }, - body: JSON.stringify({ email: emailForVerification, code: verificationCode }), - }) - - if (!response.ok) { - let errorCode = 'generic_error' - try { - const data = await response.json() - if (typeof data?.error === 'string') { - errorCode = data.error - } - } catch (error) { - console.error('Failed to parse verification response', error) - } - - const errorMap: Record = { - invalid_request: alerts.genericError, - missing_verification: alerts.codeRequired ?? alerts.missingFields, - invalid_code: - alerts.verificationFailed ?? alerts.invalidCode ?? alerts.genericError, - verification_failed: alerts.verificationFailed ?? alerts.genericError, - account_service_unreachable: alerts.genericError, - } - - showError(errorMap[normalize(errorCode)] ?? alerts.genericError) - setIsSubmitting(false) - return - } - - setIsVerified(true) - const successMessage = alerts.verificationReady ?? alerts.success - setAlert({ type: 'success', message: successMessage }) - } catch (error) { - console.error('Failed to verify email', error) - showError(alerts.genericError) - } finally { - setIsSubmitting(false) - } - return - } - - if (!pendingPassword) { - showError(alerts.genericError) - return - } - - if (verificationCode.length !== VERIFICATION_CODE_LENGTH) { - showError(alerts.codeRequired ?? alerts.invalidCode ?? alerts.genericError) - return - } - - setIsSubmitting(true) - showStatus( - t.form.validation?.completing ?? - t.form.completing ?? - t.form.completeSubmit ?? - t.form.submit, - ) - - try { - const registerResponse = await fetch('/api/auth/register', { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - }, - body: JSON.stringify({ - email: emailForVerification, - password: pendingPassword, - confirmPassword: pendingPassword, - code: verificationCode, - }), - }) - - let registerData: { success?: boolean; error?: string } | null = null - try { - registerData = await registerResponse.json() - } catch (error) { - registerData = null - } - - if (!registerResponse.ok || registerData?.success === false) { - const errorCode = - typeof registerData?.error === 'string' ? registerData.error : 'registration_failed' - const errorMap: Record = { - invalid_request: alerts.genericError, - missing_credentials: alerts.missingFields, - invalid_email: alerts.invalidEmail, - password_too_short: alerts.weakPassword, - email_already_exists: alerts.userExists, - name_already_exists: alerts.usernameExists ?? alerts.userExists, - invalid_name: alerts.invalidName ?? alerts.genericError, - name_required: alerts.invalidName ?? alerts.genericError, - hash_failure: alerts.genericError, - user_creation_failed: alerts.genericError, - credentials_in_query: alerts.genericError, - verification_required: alerts.codeRequired ?? alerts.genericError, - invalid_code: - alerts.verificationFailed ?? alerts.invalidCode ?? alerts.genericError, - account_service_unreachable: alerts.genericError, - } - - showError(errorMap[normalize(errorCode)] ?? alerts.genericError) - setIsSubmitting(false) - return - } - - const loginResponse = await fetch('/api/auth/login', { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - }, - body: JSON.stringify({ - email: emailForVerification, - password: pendingPassword, - }), - }) - - let loginData: - | { success?: boolean; needMfa?: boolean; error?: string; redirectTo?: string } - | null = null - try { - loginData = await loginResponse.json() - } catch (error) { - loginData = null - } - - if (!loginResponse.ok || !loginData?.success) { - const errorCode = typeof loginData?.error === 'string' ? loginData.error : 'generic_error' - const errorMap: Record = { - invalid_credentials: alerts.genericError, - missing_credentials: alerts.missingFields, - account_service_unreachable: alerts.genericError, - authentication_failed: alerts.genericError, - } - - if (loginData?.needMfa) { - router.push('/login?needMfa=1') - router.refresh() - setIsSubmitting(false) - return - } - - showError(errorMap[normalize(errorCode)] ?? alerts.genericError) - setIsSubmitting(false) - return - } - - const successMessage = alerts.registrationComplete ?? alerts.success - setAlert({ type: 'success', message: successMessage }) - - router.push(loginData?.redirectTo || '/') - router.refresh() - } catch (error) { - console.error('Failed to complete registration', error) - showError(alerts.genericError) - } finally { - setIsSubmitting(false) - } - }, - [ - alerts, - codeDigits, - focusCodeInput, - hasRequestedCode, - isSubmitting, - isVerified, - normalize, - pendingEmail, - pendingPassword, - resetCodeDigits, - router, - t.form, - ], - ) - - const handleResend = useCallback(async () => { - if (isResending || resendCooldown > 0 || isVerified) { - return - } - - const emailFromFormRaw = - pendingEmail || - (formRef.current ? String(new FormData(formRef.current).get('email') ?? '').trim() : '') - - if (!emailFromFormRaw) { - setAlert({ type: 'error', message: alerts.invalidEmail }) - return - } - - const emailFromForm = emailFromFormRaw.trim() - - setIsResending(true) - const resendStatusMessage = - t.form.verificationCodeResending ?? - (t.form.verificationCodeResend ? `${t.form.verificationCodeResend}…` : 'Resending verification code…') - setAlert({ type: 'info', message: resendStatusMessage }) - - try { - const response = await fetch('/api/auth/register/send', { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - }, - body: JSON.stringify({ email: emailFromForm }), - }) - - if (!response.ok) { - let errorCode = 'generic_error' - try { - const data = await response.json() - if (typeof data?.error === 'string') { - errorCode = data.error - } - } catch (error) { - console.error('Failed to parse resend response', error) - } - - const errorMap: Record = { - invalid_request: alerts.genericError, - invalid_email: alerts.invalidEmail, - verification_failed: alerts.verificationFailed ?? alerts.genericError, - already_verified: alerts.verificationFailed ?? alerts.genericError, - account_service_unreachable: alerts.genericError, - email_already_exists: alerts.userExists, - } - - setAlert({ type: 'error', message: errorMap[normalize(errorCode)] ?? alerts.genericError }) - setIsResending(false) - return - } - - setPendingEmail(emailFromForm.toLowerCase()) - setHasRequestedCode(true) - setIsVerified(false) - resetCodeDigits() - focusCodeInput(0) - setResendCooldown(RESEND_COOLDOWN_SECONDS) - const message = alerts.verificationResent ?? alerts.verificationSent ?? 'Verification code resent.' - setAlert({ type: 'success', message }) - setIsResending(false) - } catch (error) { - console.error('Failed to resend verification code', error) - setAlert({ type: 'error', message: alerts.genericError }) - setIsResending(false) - } - }, [ - alerts, - focusCodeInput, - isResending, - isVerified, - normalize, - pendingEmail, - resetCodeDigits, - resendCooldown, - t.form.verificationCodeResend, - t.form.verificationCodeResending, - ]) - - const aboveForm = t.uuidNote ? ( -
- {t.uuidNote} -
- ) : null - - const isVerificationStep = hasRequestedCode && !isVerified - const submitLabel = isVerified - ? isSubmitting - ? t.form.completing ?? t.form.completeSubmit ?? t.form.submit - : t.form.completeSubmit ?? t.form.submit - : isVerificationStep - ? isSubmitting - ? t.form.verifying ?? t.form.verifySubmit ?? t.form.submit - : t.form.verifySubmit ?? t.form.submit - : isSubmitting - ? t.form.submitting ?? t.form.submit - : t.form.submit - const resendLabel = isResending - ? t.form.verificationCodeResending ?? t.form.verificationCodeResend - : resendCooldown > 0 - ? `${t.form.verificationCodeResend} (${resendCooldown}s)` - : t.form.verificationCodeResend - const verificationDescriptionId = useId() - const validationHints = t.form.validation - const validationState = useMemo(() => { - const messages: string[] = [] - - if (!isFormReady && validationHints?.initializing) { - return { disabled: true, messages: [validationHints.initializing] } - } - - if (isSubmitting) { - if (isVerified) { - messages.push( - validationHints?.completing ?? - t.form.completing ?? - t.form.completeSubmit ?? - t.form.submit, - ) - } else if (isVerificationStep) { - messages.push( - validationHints?.verifying ?? - t.form.verifying ?? - t.form.verifySubmit ?? - t.form.submit, - ) - } else { - messages.push(validationHints?.submitting ?? t.form.submitting ?? t.form.submit) - } - - return { disabled: true, messages } - } - - if (!hasRequestedCode) { - const emailValue = formValues.email.trim() - - if (!emailValue) { - messages.push(validationHints?.emailMissing ?? alerts.invalidEmail) - } else if (!EMAIL_PATTERN.test(emailValue)) { - messages.push(validationHints?.emailInvalid ?? alerts.invalidEmail) - } - - if (!formValues.password) { - messages.push(validationHints?.passwordMissing ?? alerts.missingFields) - } - - if (!formValues.confirmPassword) { - messages.push(validationHints?.confirmPasswordMissing ?? alerts.missingFields) - } - - if (formValues.password && !PASSWORD_STRENGTH_PATTERN.test(formValues.password)) { - messages.push(validationHints?.passwordWeak ?? alerts.weakPassword ?? alerts.genericError) - } - - if ( - formValues.password && - formValues.confirmPassword && - formValues.password !== formValues.confirmPassword - ) { - messages.push(validationHints?.passwordMismatch ?? alerts.passwordMismatch) - } - - if (!formValues.agreement) { - messages.push( - validationHints?.agreementRequired ?? alerts.agreementRequired ?? alerts.missingFields, - ) - } - - const uniqueMessages = Array.from(new Set(messages.filter(Boolean))) - return { disabled: uniqueMessages.length > 0, messages: uniqueMessages } - } - - if (!isVerified) { - if (codeDigits.some((digit) => !digit)) { - messages.push( - validationHints?.codeIncomplete ?? - alerts.codeRequired ?? - alerts.invalidCode ?? - alerts.missingFields, - ) - } - - const uniqueMessages = Array.from(new Set(messages.filter(Boolean))) - return { disabled: uniqueMessages.length > 0, messages: uniqueMessages } - } - - if (codeDigits.some((digit) => !digit)) { - messages.push( - validationHints?.codeIncomplete ?? - alerts.codeRequired ?? - alerts.invalidCode ?? - alerts.missingFields, - ) - } - - if (!pendingPassword) { - messages.push(validationHints?.passwordUnavailable ?? alerts.genericError) - } - - const uniqueMessages = Array.from(new Set(messages.filter(Boolean))) - return { disabled: uniqueMessages.length > 0, messages: uniqueMessages } - }, [ - alerts, - codeDigits, - formValues, - hasRequestedCode, - isFormReady, - isSubmitting, - isVerificationStep, - isVerified, - pendingPassword, - t.form.completeSubmit, - t.form.completing, - t.form.submit, - t.form.submitting, - t.form.verifySubmit, - t.form.verifying, - validationHints, - ]) - const isSubmitDisabled = validationState.disabled - const validationMessages = validationState.messages - - return ( - -
-
- - -
-
-
- - -
-
- - -
-
-
- - {t.form.verificationCodeDescription ? ( -

- {t.form.verificationCodeDescription} -

- ) : null} - {hasRequestedCode && !isVerified ? ( -
- 我们已向你的邮箱发送一封验证邮件,点击邮件中的链接即可完成注册。 - 验证链接有效期 10 分钟。 -
- 若未收到邮件,请检查垃圾箱或稍后重试。 -
- ) : null} -
- - {validationMessages.length > 0 ? ( -
-
    - {validationMessages.map((message) => ( -
  • {message}
  • - ))} -
-
- ) : null} - -
-
- ) -} diff --git a/dashboard/src/app/(auth)/register/page.tsx b/dashboard/src/app/(auth)/register/page.tsx deleted file mode 100644 index 7ffc5f9..0000000 --- a/dashboard/src/app/(auth)/register/page.tsx +++ /dev/null @@ -1,26 +0,0 @@ -export const dynamic = 'force-dynamic' - -export const revalidate = 0 - -import { Suspense } from 'react' -import { notFound } from 'next/navigation' - -import { isFeatureEnabled } from '@lib/featureToggles' - -import RegisterContent from './RegisterContent' - -function RegisterPageFallback() { - return
-} - -export default function RegisterPage() { - if (!isFeatureEnabled('globalNavigation', '/register')) { - notFound() - } - - return ( - }> - - - ) -} diff --git a/dashboard/src/app/(tenant)/[slug]/mail/compose/page.tsx b/dashboard/src/app/(tenant)/[slug]/mail/compose/page.tsx deleted file mode 100644 index a72be98..0000000 --- a/dashboard/src/app/(tenant)/[slug]/mail/compose/page.tsx +++ /dev/null @@ -1,14 +0,0 @@ -export const dynamic = 'error' - -import ComposeForm from '../../../../components/mail/ComposeForm' - -type PageProps = { - params: Promise<{ - slug: string - }> -} - -export default async function ComposePage({ params }: PageProps) { - const { slug: tenantId } = await params - return -} diff --git a/dashboard/src/app/(tenant)/[slug]/mail/message/[id]/page.tsx b/dashboard/src/app/(tenant)/[slug]/mail/message/[id]/page.tsx deleted file mode 100644 index dd338bf..0000000 --- a/dashboard/src/app/(tenant)/[slug]/mail/message/[id]/page.tsx +++ /dev/null @@ -1,20 +0,0 @@ -'use client' - -import { useRouter } from 'next/navigation' - -import MessageView from '../../../../../components/mail/MessageView' - -export default function MessageDetailPage({ params }: { params: { slug: string; id: string } }) { - const router = useRouter() - const tenantId = params.slug - return ( -
- router.back()} - /> -
- ) -} diff --git a/dashboard/src/app/(tenant)/[slug]/mail/page.tsx b/dashboard/src/app/(tenant)/[slug]/mail/page.tsx deleted file mode 100644 index b081faf..0000000 --- a/dashboard/src/app/(tenant)/[slug]/mail/page.tsx +++ /dev/null @@ -1,14 +0,0 @@ -export const dynamic = 'error' - -import MailDashboard from '../../../components/mail/MailDashboard' - -type PageProps = { - params: Promise<{ - slug: string - }> -} - -export default async function TenantMailPage({ params }: PageProps) { - const { slug: tenantId } = await params - return -} diff --git a/dashboard/src/app/(tenant)/[slug]/mail/settings/page.tsx b/dashboard/src/app/(tenant)/[slug]/mail/settings/page.tsx deleted file mode 100644 index 6875cc5..0000000 --- a/dashboard/src/app/(tenant)/[slug]/mail/settings/page.tsx +++ /dev/null @@ -1,14 +0,0 @@ -export const dynamic = 'error' - -import MailSettings from '../../../../components/mail/MailSettings' - -type PageProps = { - params: Promise<{ - slug: string - }> -} - -export default async function MailSettingsPage({ params }: PageProps) { - const { slug: tenantId } = await params - return -} diff --git a/dashboard/src/app/404/page.tsx b/dashboard/src/app/404/page.tsx deleted file mode 100644 index fc488f7..0000000 --- a/dashboard/src/app/404/page.tsx +++ /dev/null @@ -1,22 +0,0 @@ -export const dynamic = 'error' - -import Link from 'next/link' - -export default function NotFoundPage() { - return ( -
-

404

-

Page not found

-

- The page you were looking for could not be generated during the static export. Please return to the homepage and try a - different link. -

- - Back to homepage - -
- ) -} diff --git a/dashboard/src/app/500/page.tsx b/dashboard/src/app/500/page.tsx deleted file mode 100644 index 63f8da0..0000000 --- a/dashboard/src/app/500/page.tsx +++ /dev/null @@ -1,19 +0,0 @@ -import Link from 'next/link' - -export default function ErrorPage() { - return ( -
-

500

-

Something went wrong

-

- An unexpected error occurred while preparing this static page. The incident has been logged and will be investigated. -

- - Back to homepage - -
- ) -} diff --git a/dashboard/src/app/AppProviders.tsx b/dashboard/src/app/AppProviders.tsx deleted file mode 100644 index b75642a..0000000 --- a/dashboard/src/app/AppProviders.tsx +++ /dev/null @@ -1,14 +0,0 @@ -'use client' - -import type { ReactNode } from 'react' - -import { ThemeProvider } from '@components/theme' -import { LanguageProvider } from '@i18n/LanguageProvider' - -export function AppProviders({ children }: { children: ReactNode }) { - return ( - - {children} - - ) -} diff --git a/dashboard/src/app/[slug]/Client.tsx b/dashboard/src/app/[slug]/Client.tsx deleted file mode 100644 index d16e205..0000000 --- a/dashboard/src/app/[slug]/Client.tsx +++ /dev/null @@ -1,205 +0,0 @@ -'use client' - -import { useCallback, useEffect, useMemo, useRef, useState } from 'react' -import Link from 'next/link' - -type Html2CanvasFn = typeof import('html2canvas')['default'] -let html2canvasLoader: Promise | null = null - -const loadHtml2Canvas = async (): Promise => { - if (typeof window === 'undefined') { - throw new Error('html2canvas can only be loaded in the browser') - } - - if (!html2canvasLoader) { - html2canvasLoader = import('html2canvas').then((module) => module.default) - } - - return html2canvasLoader -} -type QRCodeToCanvas = ( - canvas: HTMLCanvasElement, - text: string, - options?: Record -) => Promise - -import ProductCommunity from '@components/marketing/ProductCommunity' -import ProductDocs from '@components/marketing/ProductDocs' -import ProductDownload from '@components/marketing/ProductDownload' -import ProductEditions from '@components/marketing/ProductEditions' -import ProductFaq from '@components/marketing/ProductFaq' -import ProductFeatures from '@components/marketing/ProductFeatures' -import ProductHero from '@components/marketing/ProductHero' -import ProductScenarios from '@components/marketing/ProductScenarios' -import type { ProductConfig } from '@modules/products/registry' - -export type Lang = 'zh' | 'en' - -const drawQR = async ( - node: HTMLElement | null, - url: string, - size: number = 180 -) => { - if (!node) { - return - } - - node.innerHTML = '' - const canvas = document.createElement('canvas') - canvas.width = size - canvas.height = size - - try { - const { toCanvas } = (await import('qrcode')) as unknown as { - toCanvas: QRCodeToCanvas - } - - await toCanvas(canvas, url, { - width: size, - margin: 1, - errorCorrectionLevel: 'H', - }) - node.appendChild(canvas) - } catch (error) { - console.error('Failed to render QR code', error) - } -} - -const exportPoster = async (node: HTMLElement | null, slug: string) => { - if (!node || typeof window === 'undefined') { - return - } - - const html2canvas = await loadHtml2Canvas() - const canvas = await html2canvas(node, { - backgroundColor: '#ffffff', - scale: 2, - useCORS: true, - }) - - const link = document.createElement('a') - const date = new Date().toISOString().slice(0, 10) - link.download = `${slug}-poster-${date}.png` - link.href = canvas.toDataURL('image/png') - link.click() -} - -type ClientProps = { - config: ProductConfig -} - -export default function Client({ config }: ClientProps) { - const [lang, setLang] = useState('zh') - const defaultQrUrl = useMemo( - () => `https://www.svc.plus/${config.slug}/`, - [config.slug] - ) - const [qrUrl, setQrUrl] = useState(defaultQrUrl) - - const qrRef = useRef(null) - const posterRef = useRef(null) - const posterQrRef = useRef(null) - - useEffect(() => { - if (typeof navigator !== 'undefined') { - const preferred = navigator.language?.toLowerCase().startsWith('en') - ? 'en' - : 'zh' - setLang(preferred) - } - }, []) - - useEffect(() => { - setQrUrl(defaultQrUrl) - }, [defaultQrUrl]) - - useEffect(() => { - drawQR(qrRef.current, qrUrl, 180) - drawQR(posterQrRef.current, qrUrl, 220) - }, [qrUrl]) - - const handleToggleLanguage = useCallback(() => { - setLang((current) => (current === 'zh' ? 'en' : 'zh')) - }, []) - - const handleExportPoster = useCallback(() => { - return exportPoster(posterRef.current, config.slug) - }, [config.slug]) - - const handleQrUpdate = useCallback( - (value: string) => { - setQrUrl(value || defaultQrUrl) - }, - [defaultQrUrl] - ) - - return ( -
-
-
- - SVC.plus - / - {config.name} - - -
- - - {lang === 'zh' ? '立即下载' : 'Download'} - -
-
-
-
- - - - - - - - -
-
- ) -} diff --git a/dashboard/src/app/[slug]/page.tsx b/dashboard/src/app/[slug]/page.tsx deleted file mode 100644 index 901cc46..0000000 --- a/dashboard/src/app/[slug]/page.tsx +++ /dev/null @@ -1,58 +0,0 @@ -import type { Metadata } from 'next' -import { notFound } from 'next/navigation' - -import Client from './Client' -import { PRODUCT_MAP, getAllSlugs } from '@modules/products/registry' - -type PageProps = { - params: Promise<{ - slug: string - }> -} - -export async function generateStaticParams() { - return getAllSlugs().map((slug) => ({ slug })) -} - -export async function generateMetadata({ params }: PageProps): Promise { - const { slug } = await params - const config = PRODUCT_MAP.get(slug) - - if (!config) { - return {} - } - - const description = `${config.name} — ${config.tagline_en}` - const canonical = `https://www.svc.plus/${config.slug}` - - return { - title: config.title, - description, - alternates: { - canonical, - }, - openGraph: { - title: config.title_en, - description, - images: [config.ogImage], - url: canonical, - }, - twitter: { - card: 'summary_large_image', - title: config.title_en, - description, - images: [config.ogImage], - }, - } -} - -export default async function ProductPage({ params }: PageProps) { - const { slug } = await params - const config = PRODUCT_MAP.get(slug) - - if (!config) { - notFound() - } - - return -} diff --git a/dashboard/src/app/api/admin/settings/route.ts b/dashboard/src/app/api/admin/settings/route.ts deleted file mode 100644 index b0a3c6e..0000000 --- a/dashboard/src/app/api/admin/settings/route.ts +++ /dev/null @@ -1,75 +0,0 @@ -export const dynamic = 'force-dynamic' - -import { NextRequest, NextResponse } from 'next/server' - -import { getAccountServiceApiBaseUrl } from '@server/serviceConfig' -import { getAccountSession, userHasRole } from '@server/account/session' -import type { AccountUserRole } from '@server/account/session' - -const ACCOUNT_API_BASE = getAccountServiceApiBaseUrl() - -const READ_ROLES: AccountUserRole[] = ['admin', 'operator'] -const WRITE_ROLES: AccountUserRole[] = ['admin'] - -type ErrorPayload = { - error: string -} - -async function proxyAccountRequest(request: NextRequest, endpoint: string, method: string, token: string) { - const headers = new Headers({ - Authorization: `Bearer ${token}`, - Accept: 'application/json', - }) - - let body: string | undefined - if (method !== 'GET' && method !== 'HEAD') { - body = await request.text() - const contentType = request.headers.get('content-type') ?? 'application/json' - headers.set('Content-Type', contentType) - } - - const response = await fetch(endpoint, { - method, - headers, - body, - cache: 'no-store', - }) - - const payload = await response.json().catch(() => null) - if (payload === null) { - return NextResponse.json({ error: 'invalid_response' }, { status: 502 }) - } - - return NextResponse.json(payload, { status: response.status }) -} - -export async function GET(request: NextRequest) { - const session = await getAccountSession(request) - const user = session.user - - if (!user || !session.token) { - return NextResponse.json({ error: 'unauthenticated' }, { status: 401 }) - } - - if (!(await userHasRole(user, READ_ROLES))) { - return NextResponse.json({ error: 'forbidden' }, { status: 403 }) - } - - return proxyAccountRequest(request, `${ACCOUNT_API_BASE}/admin/settings`, 'GET', session.token) -} - -export async function POST(request: NextRequest) { - const session = await getAccountSession(request) - const user = session.user - - if (!user || !session.token) { - return NextResponse.json({ error: 'unauthenticated' }, { status: 401 }) - } - - if (!(await userHasRole(user, WRITE_ROLES))) { - return NextResponse.json({ error: 'forbidden' }, { status: 403 }) - } - - return proxyAccountRequest(request, `${ACCOUNT_API_BASE}/admin/settings`, 'POST', session.token) -} - diff --git a/dashboard/src/app/api/admin/users/[userId]/role/route.ts b/dashboard/src/app/api/admin/users/[userId]/role/route.ts deleted file mode 100644 index e9a79e3..0000000 --- a/dashboard/src/app/api/admin/users/[userId]/role/route.ts +++ /dev/null @@ -1,70 +0,0 @@ -export const dynamic = 'force-dynamic' - -import { NextRequest, NextResponse } from 'next/server' - -import { getAccountServiceApiBaseUrl } from '@server/serviceConfig' -import { getAccountSession, userHasRole } from '@server/account/session' -import type { AccountUserRole } from '@server/account/session' - -const ACCOUNT_API_BASE = getAccountServiceApiBaseUrl() -const REQUIRED_ROLES: AccountUserRole[] = ['admin'] - -type ErrorPayload = { - error: string -} - -type RouteParams = { - params: Promise<{ - userId: string - }> -} - -function resolveUserId(param?: string): string | null { - if (!param) { - return null - } - const trimmed = param.trim() - return trimmed.length > 0 ? trimmed : null -} - -export async function POST(request: NextRequest, { params }: RouteParams) { - const session = await getAccountSession(request) - const user = session.user - - if (!user || !session.token) { - return NextResponse.json({ error: 'unauthenticated' }, { status: 401 }) - } - - if (!(await userHasRole(user, REQUIRED_ROLES))) { - return NextResponse.json({ error: 'forbidden' }, { status: 403 }) - } - - const { userId: userIdParam } = await params - const userId = resolveUserId(userIdParam) - if (!userId) { - return NextResponse.json({ error: 'invalid_user' }, { status: 400 }) - } - - const body = await request.text() - const headers = new Headers({ - Authorization: `Bearer ${session.token}`, - Accept: 'application/json', - }) - const contentType = request.headers.get('content-type') ?? 'application/json' - headers.set('Content-Type', contentType) - - const response = await fetch(`${ACCOUNT_API_BASE}/admin/users/${encodeURIComponent(userId)}/role`, { - method: 'POST', - headers, - body, - cache: 'no-store', - }) - - const payload = await response.json().catch(() => null) - if (payload === null) { - return NextResponse.json({ error: 'invalid_response' }, { status: 502 }) - } - - return NextResponse.json(payload, { status: response.status }) -} - diff --git a/dashboard/src/app/api/admin/users/metrics/route.ts b/dashboard/src/app/api/admin/users/metrics/route.ts deleted file mode 100644 index ac68394..0000000 --- a/dashboard/src/app/api/admin/users/metrics/route.ts +++ /dev/null @@ -1,45 +0,0 @@ -export const dynamic = 'force-dynamic' - -import { NextRequest, NextResponse } from 'next/server' - -import { getAccountServiceApiBaseUrl } from '@server/serviceConfig' -import { getAccountSession, userHasRole } from '@server/account/session' -import type { AccountUserRole } from '@server/account/session' - -const ACCOUNT_API_BASE = getAccountServiceApiBaseUrl() - -const ALLOWED_ROLES: AccountUserRole[] = ['admin', 'operator'] - -type MetricsErrorPayload = { - error: string -} - -export async function GET(request: NextRequest) { - const session = await getAccountSession(request) - const user = session.user - - if (!user || !session.token) { - return NextResponse.json({ error: 'unauthenticated' }, { status: 401 }) - } - - if (!(await userHasRole(user, ALLOWED_ROLES))) { - return NextResponse.json({ error: 'forbidden' }, { status: 403 }) - } - - const response = await fetch(`${ACCOUNT_API_BASE}/admin/users/metrics`, { - method: 'GET', - headers: { - Authorization: `Bearer ${session.token}`, - Accept: 'application/json', - }, - cache: 'no-store', - }) - - const payload = await response.json().catch(() => null) - if (payload === null) { - return NextResponse.json({ error: 'invalid_response' }, { status: 502 }) - } - - return NextResponse.json(payload, { status: response.status }) -} - diff --git a/dashboard/src/app/api/agent/[...segments]/route.ts b/dashboard/src/app/api/agent/[...segments]/route.ts deleted file mode 100644 index 04dabb8..0000000 --- a/dashboard/src/app/api/agent/[...segments]/route.ts +++ /dev/null @@ -1,46 +0,0 @@ -export const dynamic = 'force-dynamic' - -import type { NextRequest } from 'next/server' - -import { createUpstreamProxyHandler } from '@lib/apiProxy' -import { getInternalServerServiceBaseUrl } from '@server/serviceConfig' - -const AGENT_PREFIX = '/api/agent' - -function createHandler() { - const upstreamBaseUrl = getInternalServerServiceBaseUrl() - return createUpstreamProxyHandler({ - upstreamBaseUrl, - upstreamPathPrefix: AGENT_PREFIX, - }) -} - -const handler = createHandler() - -export function GET(request: NextRequest) { - return handler(request) -} - -export function POST(request: NextRequest) { - return handler(request) -} - -export function PUT(request: NextRequest) { - return handler(request) -} - -export function PATCH(request: NextRequest) { - return handler(request) -} - -export function DELETE(request: NextRequest) { - return handler(request) -} - -export function HEAD(request: NextRequest) { - return handler(request) -} - -export function OPTIONS(request: NextRequest) { - return handler(request) -} diff --git a/dashboard/src/app/api/askai/route.ts b/dashboard/src/app/api/askai/route.ts deleted file mode 100644 index 0019dd5..0000000 --- a/dashboard/src/app/api/askai/route.ts +++ /dev/null @@ -1,42 +0,0 @@ -import { getInternalServerServiceBaseUrl } from '@server/serviceConfig' - -const FORWARDED_HEADERS = ['authorization', 'cookie', 'x-account-session'] as const - -function buildForwardHeaders(req: Request) { - const headers = new Headers({ 'Content-Type': 'application/json' }) - - for (const name of FORWARDED_HEADERS) { - const value = req.headers.get(name) - if (value) { - headers.set(name, value) - } - } - - return headers -} - -export async function POST(req: Request) { - try { - const { question, history } = await req.json() - const apiBase = getInternalServerServiceBaseUrl() - const response = await fetch(`${apiBase}/api/askai`, { - method: 'POST', - headers: buildForwardHeaders(req), - body: JSON.stringify({ question, history }), - credentials: 'include' - }) - - const data = await response.json().catch(() => null) - if (data === null) { - return Response.json({ error: 'Invalid response from server' }, { - status: response.status - }) - } - - return Response.json(data, { status: response.status }) - } catch (error) { - const message = error instanceof Error ? error.message : 'Unknown error' - return Response.json({ error: message }, { status: 500 }) - } -} - diff --git a/dashboard/src/app/api/auth/login/route.ts b/dashboard/src/app/api/auth/login/route.ts deleted file mode 100644 index 08021ba..0000000 --- a/dashboard/src/app/api/auth/login/route.ts +++ /dev/null @@ -1,123 +0,0 @@ -import { cookies } from 'next/headers' -import { NextRequest, NextResponse } from 'next/server' - -import { applyMfaCookie, applySessionCookie, clearMfaCookie, clearSessionCookie, deriveMaxAgeFromExpires, MFA_COOKIE_NAME } from '@lib/authGateway' -import { getAccountServiceApiBaseUrl } from '@server/serviceConfig' - -const ACCOUNT_API_BASE = getAccountServiceApiBaseUrl() - -type LoginPayload = { - email?: string - password?: string - remember?: boolean - totp?: string - code?: string - token?: string -} - -type AccountLoginResponse = { - token?: string - expiresAt?: string - error?: string - mfaToken?: string - needMfa?: boolean - mfaEnabled?: boolean -} - -function normalizeEmail(value: unknown) { - return typeof value === 'string' ? value.trim().toLowerCase() : '' -} - -function normalizeCode(value: unknown) { - return typeof value === 'string' ? value.replace(/\D/g, '').slice(0, 6) : '' -} - -export async function POST(request: NextRequest) { - let payload: LoginPayload - try { - payload = (await request.json()) as LoginPayload - } catch (error) { - console.error('Failed to decode login payload', error) - return NextResponse.json({ success: false, error: 'invalid_request', needMfa: false }, { status: 400 }) - } - - const email = normalizeEmail(payload?.email) - const password = typeof payload?.password === 'string' ? payload.password : '' - const totpCode = normalizeCode(payload?.totp ?? payload?.code) - const remember = Boolean(payload?.remember) - - if (!email || !password) { - return NextResponse.json({ success: false, error: 'missing_credentials', needMfa: false }, { status: 400 }) - } - - try { - const loginBody: Record = { email, password } - if (totpCode) { - loginBody.totpCode = totpCode - } - - const response = await fetch(`${ACCOUNT_API_BASE}/login`, { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - }, - body: JSON.stringify(loginBody), - cache: 'no-store', - }) - - const data = (await response.json().catch(() => ({}))) as AccountLoginResponse - - if (response.ok && typeof data?.token === 'string' && data.token.length > 0) { - const maxAgeFromBackend = deriveMaxAgeFromExpires(data?.expiresAt) - const effectiveMaxAge = remember ? Math.max(maxAgeFromBackend, 60 * 60 * 24 * 30) : maxAgeFromBackend - const result = NextResponse.json({ success: true, error: null, needMfa: false }) - applySessionCookie(result, data.token, effectiveMaxAge) - clearMfaCookie(result) - return result - } - - const errorCode = typeof data?.error === 'string' ? data.error : 'authentication_failed' - const needsMfa = Boolean(data?.needMfa || errorCode === 'mfa_required' || errorCode === 'mfa_setup_required') - - if ((response.status === 401 || response.status === 403 || needsMfa) && typeof data?.mfaToken === 'string') { - const result = NextResponse.json({ success: false, error: errorCode, needMfa: true }, { status: 401 }) - applyMfaCookie(result, data.mfaToken) - clearSessionCookie(result) - return result - } - - const statusCode = response.status || 401 - const result = NextResponse.json({ success: false, error: errorCode, needMfa: false }, { status: statusCode }) - clearSessionCookie(result) - clearMfaCookie(result) - return result - } catch (error) { - console.error('Account service login proxy failed', error) - const result = NextResponse.json({ success: false, error: 'account_service_unreachable', needMfa: false }, { status: 502 }) - clearSessionCookie(result) - clearMfaCookie(result) - return result - } -} - -export function GET() { - return NextResponse.json( - { success: false, error: 'method_not_allowed', needMfa: false }, - { - status: 405, - headers: { - Allow: 'POST', - }, - }, - ) -} - -export async function DELETE() { - const cookieStore = await cookies() - const response = NextResponse.json({ success: true, error: null, needMfa: false }) - if (cookieStore.has(MFA_COOKIE_NAME)) { - clearMfaCookie(response) - } - clearSessionCookie(response) - return response -} diff --git a/dashboard/src/app/api/auth/mfa/disable/route.ts b/dashboard/src/app/api/auth/mfa/disable/route.ts deleted file mode 100644 index 718bbad..0000000 --- a/dashboard/src/app/api/auth/mfa/disable/route.ts +++ /dev/null @@ -1,54 +0,0 @@ -import { cookies } from 'next/headers' -import { NextRequest, NextResponse } from 'next/server' - -import { SESSION_COOKIE_NAME, clearSessionCookie } from '@lib/authGateway' -import { getAccountServiceApiBaseUrl } from '@server/serviceConfig' - -const ACCOUNT_API_BASE = getAccountServiceApiBaseUrl() - -export async function POST(request: NextRequest) { - void request - const token = (await cookies()).get(SESSION_COOKIE_NAME)?.value?.trim() - - if (!token) { - return NextResponse.json({ success: false, error: 'session_required' }, { status: 401 }) - } - - try { - const response = await fetch(`${ACCOUNT_API_BASE}/mfa/disable`, { - method: 'POST', - headers: { - Authorization: `Bearer ${token}`, - }, - cache: 'no-store', - }) - - const data = await response.json().catch(() => ({})) - if (!response.ok) { - const errorCode = typeof (data as { error?: string })?.error === 'string' ? data.error : 'mfa_disable_failed' - if (response.status === 401) { - const result = NextResponse.json({ success: false, error: errorCode }) - clearSessionCookie(result) - return result - } - return NextResponse.json({ success: false, error: errorCode }, { status: response.status || 400 }) - } - - return NextResponse.json({ success: true, error: null, data }) - } catch (error) { - console.error('Account service MFA disable proxy failed', error) - return NextResponse.json({ success: false, error: 'account_service_unreachable' }, { status: 502 }) - } -} - -export function GET() { - return NextResponse.json( - { success: false, error: 'method_not_allowed' }, - { - status: 405, - headers: { - Allow: 'POST', - }, - }, - ) -} diff --git a/dashboard/src/app/api/auth/mfa/setup/route.ts b/dashboard/src/app/api/auth/mfa/setup/route.ts deleted file mode 100644 index 20cb4a4..0000000 --- a/dashboard/src/app/api/auth/mfa/setup/route.ts +++ /dev/null @@ -1,99 +0,0 @@ -import { cookies } from 'next/headers' -import { NextRequest, NextResponse } from 'next/server' - -import { applyMfaCookie, MFA_COOKIE_NAME, SESSION_COOKIE_NAME } from '@lib/authGateway' -import { getAccountServiceApiBaseUrl } from '@server/serviceConfig' - -const ACCOUNT_API_BASE = getAccountServiceApiBaseUrl() - -// This Next.js route proxies MFA provisioning requests to the account service. -// The UI calls /api/auth/mfa/setup, which in turn forwards to the Go backend -// at /api/auth/mfa/totp/provision, keeping browser credentials opaque to the -// external service and letting us manage cookies centrally. - -type SetupPayload = { - token?: string - issuer?: string - account?: string -} - -function normalizeString(value: unknown) { - return typeof value === 'string' ? value.trim() : '' -} - -export async function POST(request: NextRequest) { - const cookieStore = await cookies() - let payload: SetupPayload - try { - payload = (await request.json()) as SetupPayload - } catch (error) { - console.error('Failed to decode MFA setup payload', error) - return NextResponse.json({ success: false, error: 'invalid_request', needMfa: true }, { status: 400 }) - } - - const sessionToken = cookieStore.get(SESSION_COOKIE_NAME)?.value ?? '' - const cookieToken = cookieStore.get(MFA_COOKIE_NAME)?.value ?? '' - const token = normalizeString(payload?.token || cookieToken) - - if (!token && !sessionToken) { - return NextResponse.json({ success: false, error: 'mfa_token_required', needMfa: true }, { status: 400 }) - } - - const issuer = normalizeString(payload?.issuer) - const account = normalizeString(payload?.account) - - try { - const headers: Record = { - 'Content-Type': 'application/json', - } - if (sessionToken) { - headers.Authorization = `Bearer ${sessionToken}` - } - - const body: Record = {} - if (token) { - body.token = token - } - if (issuer) { - body.issuer = issuer - } - if (account) { - body.account = account - } - - const response = await fetch(`${ACCOUNT_API_BASE}/mfa/totp/provision`, { - method: 'POST', - headers, - body: JSON.stringify(body), - cache: 'no-store', - }) - - const data = await response.json().catch(() => ({})) - if (!response.ok) { - const errorCode = typeof (data as { error?: string })?.error === 'string' ? data.error : 'mfa_setup_failed' - return NextResponse.json({ success: false, error: errorCode, needMfa: true }, { status: response.status || 400 }) - } - - const result = NextResponse.json({ success: true, error: null, needMfa: true, data }) - const nextToken = normalizeString((data as { mfaToken?: string })?.mfaToken || token || cookieToken) - if (nextToken) { - applyMfaCookie(result, nextToken) - } - return result - } catch (error) { - console.error('Account service MFA setup proxy failed', error) - return NextResponse.json({ success: false, error: 'account_service_unreachable', needMfa: true }, { status: 502 }) - } -} - -export function GET() { - return NextResponse.json( - { success: false, error: 'method_not_allowed', needMfa: true }, - { - status: 405, - headers: { - Allow: 'POST', - }, - }, - ) -} diff --git a/dashboard/src/app/api/auth/mfa/status/route.ts b/dashboard/src/app/api/auth/mfa/status/route.ts deleted file mode 100644 index 79044bc..0000000 --- a/dashboard/src/app/api/auth/mfa/status/route.ts +++ /dev/null @@ -1,49 +0,0 @@ -import { cookies } from 'next/headers' -import { NextRequest, NextResponse } from 'next/server' - -import { MFA_COOKIE_NAME, SESSION_COOKIE_NAME } from '@lib/authGateway' -import { getAccountServiceApiBaseUrl } from '@server/serviceConfig' - -const ACCOUNT_API_BASE = getAccountServiceApiBaseUrl() - -export async function GET(request: NextRequest) { - const cookieStore = await cookies() - const sessionToken = cookieStore.get(SESSION_COOKIE_NAME)?.value ?? '' - const storedMfaToken = cookieStore.get(MFA_COOKIE_NAME)?.value ?? '' - - const url = new URL(request.url) - const queryToken = String(url.searchParams.get('token') ?? '').trim() - const token = queryToken || storedMfaToken - const identifier = String( - url.searchParams.get('identifier') ?? url.searchParams.get('email') ?? '', - ).trim() - - const headers: Record = { - Accept: 'application/json', - } - if (sessionToken) { - headers.Authorization = `Bearer ${sessionToken}` - } - - const params = new URLSearchParams() - if (token) { - params.set('token', token) - } - if (identifier) { - params.set('identifier', identifier.toLowerCase()) - } - - const endpointParams = params.toString() - const endpoint = endpointParams - ? `${ACCOUNT_API_BASE}/mfa/status?${endpointParams}` - : `${ACCOUNT_API_BASE}/mfa/status` - - const response = await fetch(endpoint, { - method: 'GET', - headers, - cache: 'no-store', - }) - - const payload = await response.json().catch(() => ({})) - return NextResponse.json(payload, { status: response.status }) -} diff --git a/dashboard/src/app/api/auth/mfa/verify/route.ts b/dashboard/src/app/api/auth/mfa/verify/route.ts deleted file mode 100644 index 1cd40d6..0000000 --- a/dashboard/src/app/api/auth/mfa/verify/route.ts +++ /dev/null @@ -1,114 +0,0 @@ -import { cookies } from 'next/headers' -import { NextRequest, NextResponse } from 'next/server' - -import { - applyMfaCookie, - applySessionCookie, - clearMfaCookie, - clearSessionCookie, - deriveMaxAgeFromExpires, - MFA_COOKIE_NAME, -} from '@lib/authGateway' -import { getAccountServiceApiBaseUrl } from '@server/serviceConfig' - -const ACCOUNT_API_BASE = getAccountServiceApiBaseUrl() - -type VerifyPayload = { - token?: string - code?: string - totp?: string -} - -type AccountVerifyResponse = { - token?: string - expiresAt?: string - mfaToken?: string - error?: string - retryAt?: string - user?: Record | null - mfa?: Record | null -} - -function normalizeString(value: unknown) { - return typeof value === 'string' ? value.trim() : '' -} - -function normalizeCode(value: unknown) { - return typeof value === 'string' ? value.replace(/\D/g, '').slice(0, 6) : '' -} - -export async function POST(request: NextRequest) { - const cookieStore = await cookies() - let payload: VerifyPayload - try { - payload = (await request.json()) as VerifyPayload - } catch (error) { - console.error('Failed to decode MFA verification payload', error) - return NextResponse.json({ success: false, error: 'invalid_request', needMfa: true }, { status: 400 }) - } - - const cookieToken = cookieStore.get(MFA_COOKIE_NAME)?.value ?? '' - const token = normalizeString(payload?.token || cookieToken) - const code = normalizeCode(payload?.code ?? payload?.totp) - - if (!token) { - return NextResponse.json({ success: false, error: 'mfa_token_required', needMfa: true }, { status: 400 }) - } - - if (!code) { - return NextResponse.json({ success: false, error: 'mfa_code_required', needMfa: true }, { status: 400 }) - } - - try { - const response = await fetch(`${ACCOUNT_API_BASE}/mfa/totp/verify`, { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - }, - body: JSON.stringify({ token, code }), - cache: 'no-store', - }) - - const data = (await response.json().catch(() => ({}))) as AccountVerifyResponse - - if (response.ok && typeof data?.token === 'string' && data.token.length > 0) { - const result = NextResponse.json({ success: true, error: null, needMfa: false, data }) - applySessionCookie(result, data.token, deriveMaxAgeFromExpires(data?.expiresAt)) - clearMfaCookie(result) - return result - } - - const errorCode = typeof data?.error === 'string' ? data.error : 'mfa_verification_failed' - const result = NextResponse.json( - { success: false, error: errorCode, needMfa: true, data }, - { status: response.status || 400 }, - ) - - if (typeof data?.mfaToken === 'string' && data.mfaToken.trim()) { - applyMfaCookie(result, data.mfaToken) - } else { - applyMfaCookie(result, token) - } - - clearSessionCookie(result) - return result - } catch (error) { - console.error('Account service MFA verification proxy failed', error) - const result = NextResponse.json({ success: false, error: 'account_service_unreachable', needMfa: true }, { status: 502 }) - applyMfaCookie(result, token) - clearSessionCookie(result) - return result - } -} - -export function GET() { - return NextResponse.json( - { success: false, error: 'method_not_allowed', needMfa: true }, - { - status: 405, - headers: { - Allow: 'POST', - }, - }, - ) -} diff --git a/dashboard/src/app/api/auth/register/route.ts b/dashboard/src/app/api/auth/register/route.ts deleted file mode 100644 index d9bf901..0000000 --- a/dashboard/src/app/api/auth/register/route.ts +++ /dev/null @@ -1,94 +0,0 @@ -import { NextRequest, NextResponse } from 'next/server' - -import { getAccountServiceApiBaseUrl } from '@server/serviceConfig' - -const ACCOUNT_API_BASE = getAccountServiceApiBaseUrl() - -type RegistrationPayload = { - name?: string - email?: string - password?: string - confirmPassword?: string - code?: string -} - -function normalizeEmail(value: unknown) { - return typeof value === 'string' ? value.trim().toLowerCase() : '' -} - -function normalizeString(value: unknown) { - return typeof value === 'string' ? value.trim() : '' -} - -export async function POST(request: NextRequest) { - let payload: RegistrationPayload - try { - payload = (await request.json()) as RegistrationPayload - } catch (error) { - console.error('Failed to decode registration payload', error) - return NextResponse.json({ success: false, error: 'invalid_request', needMfa: false }, { status: 400 }) - } - - const email = normalizeEmail(payload?.email) - const password = typeof payload?.password === 'string' ? payload.password : '' - const confirmPassword = - typeof payload?.confirmPassword === 'string' ? payload.confirmPassword : payload?.password ?? '' - const name = normalizeString(payload?.name) - const code = normalizeString(payload?.code) - - if (!email || !password) { - return NextResponse.json({ success: false, error: 'missing_credentials', needMfa: false }, { status: 400 }) - } - - if (password !== confirmPassword) { - return NextResponse.json({ success: false, error: 'password_mismatch', needMfa: false }, { status: 400 }) - } - - if (!code) { - return NextResponse.json({ success: false, error: 'verification_required', needMfa: false }, { status: 400 }) - } - - const body = { - email, - password, - code, - ...(name ? { name } : {}), - } - - try { - const response = await fetch(`${ACCOUNT_API_BASE}/register`, { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - }, - body: JSON.stringify(body), - cache: 'no-store', - }) - - const data = await response.json().catch(() => ({})) - if (!response.ok) { - const errorCode = typeof (data as { error?: string })?.error === 'string' ? data.error : 'registration_failed' - return NextResponse.json( - { success: false, error: errorCode, needMfa: false }, - { status: response.status || 400 }, - ) - } - - return NextResponse.json({ success: true, error: null, needMfa: false }) - } catch (error) { - console.error('Account service registration proxy failed', error) - return NextResponse.json({ success: false, error: 'account_service_unreachable', needMfa: false }, { status: 502 }) - } -} - -export function GET() { - return NextResponse.json( - { success: false, error: 'method_not_allowed', needMfa: false }, - { - status: 405, - headers: { - Allow: 'POST', - }, - }, - ) -} diff --git a/dashboard/src/app/api/auth/register/send/route.ts b/dashboard/src/app/api/auth/register/send/route.ts deleted file mode 100644 index 78f8830..0000000 --- a/dashboard/src/app/api/auth/register/send/route.ts +++ /dev/null @@ -1,65 +0,0 @@ -import { NextRequest, NextResponse } from 'next/server' - -import { getAccountServiceApiBaseUrl } from '@server/serviceConfig' - -const ACCOUNT_API_BASE = getAccountServiceApiBaseUrl() - -type SendPayload = { - email?: string -} - -function normalizeEmail(value: unknown) { - return typeof value === 'string' ? value.trim().toLowerCase() : '' -} - -export async function POST(request: NextRequest) { - let payload: SendPayload - try { - payload = (await request.json()) as SendPayload - } catch (error) { - console.error('Failed to decode registration send payload', error) - return NextResponse.json({ success: false, error: 'invalid_request', needMfa: false }, { status: 400 }) - } - - const email = normalizeEmail(payload?.email) - if (!email) { - return NextResponse.json({ success: false, error: 'invalid_email', needMfa: false }, { status: 400 }) - } - - try { - const response = await fetch(`${ACCOUNT_API_BASE}/register/send`, { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - }, - body: JSON.stringify({ email }), - cache: 'no-store', - }) - - const data = await response.json().catch(() => ({})) - if (!response.ok) { - const errorCode = typeof (data as { error?: string })?.error === 'string' ? data.error : 'verification_failed' - return NextResponse.json({ success: false, error: errorCode, needMfa: false }, { status: response.status || 400 }) - } - - return NextResponse.json({ success: true, error: null, needMfa: false }) - } catch (error) { - console.error('Account service registration send proxy failed', error) - return NextResponse.json( - { success: false, error: 'account_service_unreachable', needMfa: false }, - { status: 502 }, - ) - } -} - -export function GET() { - return NextResponse.json( - { success: false, error: 'method_not_allowed', needMfa: false }, - { - status: 405, - headers: { - Allow: 'POST', - }, - }, - ) -} diff --git a/dashboard/src/app/api/auth/register/verify/route.ts b/dashboard/src/app/api/auth/register/verify/route.ts deleted file mode 100644 index 0aa6689..0000000 --- a/dashboard/src/app/api/auth/register/verify/route.ts +++ /dev/null @@ -1 +0,0 @@ -export { POST, GET } from '../../verify-email/route' diff --git a/dashboard/src/app/api/auth/session/route.ts b/dashboard/src/app/api/auth/session/route.ts deleted file mode 100644 index 6c7e07f..0000000 --- a/dashboard/src/app/api/auth/session/route.ts +++ /dev/null @@ -1,184 +0,0 @@ -import { cookies } from 'next/headers' -import { NextRequest, NextResponse } from 'next/server' - -import { SESSION_COOKIE_NAME, clearSessionCookie } from '@lib/authGateway' -import { getAccountServiceApiBaseUrl } from '@server/serviceConfig' - -const ACCOUNT_API_BASE = getAccountServiceApiBaseUrl() - -type AccountUser = { - id?: string - uuid?: string - name?: string - username?: string - email: string - mfaEnabled?: boolean - mfaPending?: boolean - mfa?: { - totpEnabled?: boolean - totpPending?: boolean - totpSecretIssuedAt?: string - totpConfirmedAt?: string - totpLockedUntil?: string - } - role?: string - groups?: string[] - permissions?: string[] - tenantId?: string - tenants?: Array<{ - id?: string - name?: string - role?: string - }> -} - -type SessionResponse = { - user?: AccountUser | null - error?: string -} - -async function fetchSession(token: string) { - try { - const response = await fetch(`${ACCOUNT_API_BASE}/session`, { - headers: { - Authorization: `Bearer ${token}`, - }, - cache: 'no-store', - }) - - const data = (await response.json().catch(() => ({}))) as SessionResponse - return { response, data } - } catch (error) { - console.error('Session lookup proxy failed', error) - return { response: null, data: null } - } -} - -export async function GET(request: NextRequest) { - void request - const token = (await cookies()).get(SESSION_COOKIE_NAME)?.value - if (!token) { - return NextResponse.json({ user: null }) - } - - const { response, data } = await fetchSession(token) - if (!response || !response.ok || !data?.user) { - const res = NextResponse.json({ user: null }) - clearSessionCookie(res) - return res - } - - const rawUser = data.user as AccountUser - const identifier = - typeof rawUser.uuid === 'string' && rawUser.uuid.trim().length > 0 - ? rawUser.uuid.trim() - : typeof rawUser.id === 'string' - ? rawUser.id.trim() - : undefined - - const rawMfa = rawUser.mfa ?? {} - const derivedMfaEnabled = Boolean(rawUser.mfaEnabled ?? rawMfa.totpEnabled) - const derivedMfaPendingSource = - typeof rawUser.mfaPending === 'boolean' - ? rawUser.mfaPending - : typeof rawMfa.totpPending === 'boolean' - ? rawMfa.totpPending - : false - const derivedMfaPending = derivedMfaPendingSource && !derivedMfaEnabled - - const normalizedRole = - typeof rawUser.role === 'string' && rawUser.role.trim().length > 0 - ? rawUser.role.trim().toLowerCase() - : 'user' - const normalizedGroups = Array.isArray(rawUser.groups) - ? rawUser.groups - .filter((value): value is string => typeof value === 'string' && value.trim().length > 0) - .map((value) => value.trim()) - : [] - const normalizedPermissions = Array.isArray(rawUser.permissions) - ? rawUser.permissions - .filter((value): value is string => typeof value === 'string' && value.trim().length > 0) - .map((value) => value.trim()) - : [] - const normalizedTenantId = - typeof rawUser.tenantId === 'string' && rawUser.tenantId.trim().length > 0 - ? rawUser.tenantId.trim() - : undefined - const normalizedTenants = Array.isArray(rawUser.tenants) - ? rawUser.tenants - .map((tenant) => { - if (!tenant || typeof tenant !== 'object') { - return null - } - - const identifier = - typeof tenant.id === 'string' && tenant.id.trim().length > 0 - ? tenant.id.trim() - : undefined - if (!identifier) { - return null - } - - const normalizedTenant: { id: string; name?: string; role?: string } = { - id: identifier, - } - - if (typeof tenant.name === 'string' && tenant.name.trim().length > 0) { - normalizedTenant.name = tenant.name.trim() - } - - if (typeof tenant.role === 'string' && tenant.role.trim().length > 0) { - normalizedTenant.role = tenant.role.trim().toLowerCase() - } - - return normalizedTenant - }) - .filter((tenant): tenant is { id: string; name?: string; role?: string } => Boolean(tenant)) - : undefined - - const normalizedMfa = Object.keys(rawMfa).length - ? { - ...rawMfa, - totpEnabled: Boolean(rawMfa.totpEnabled ?? derivedMfaEnabled), - totpPending: Boolean(rawMfa.totpPending ?? derivedMfaPending), - } - : { - totpEnabled: derivedMfaEnabled, - totpPending: derivedMfaPending, - } - - const normalizedUser = identifier ? { ...rawUser, id: identifier, uuid: identifier } : rawUser - - return NextResponse.json({ - user: { - ...normalizedUser, - mfaEnabled: derivedMfaEnabled, - mfaPending: derivedMfaPending, - mfa: normalizedMfa, - role: normalizedRole, - groups: normalizedGroups, - permissions: normalizedPermissions, - tenantId: normalizedTenantId, - tenants: normalizedTenants, - }, - }) -} - -export async function DELETE(request: NextRequest) { - void request - const cookieStore = await cookies() - const token = cookieStore.get(SESSION_COOKIE_NAME)?.value - if (token) { - await fetch(`${ACCOUNT_API_BASE}/session`, { - method: 'DELETE', - headers: { - Authorization: `Bearer ${token}`, - }, - cache: 'no-store', - }).catch(() => null) - } - - const response = NextResponse.json({ success: true }) - clearSessionCookie(response) - return response -} diff --git a/dashboard/src/app/api/auth/subscriptions/cancel/route.ts b/dashboard/src/app/api/auth/subscriptions/cancel/route.ts deleted file mode 100644 index 0ce3966..0000000 --- a/dashboard/src/app/api/auth/subscriptions/cancel/route.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { cookies } from 'next/headers' -import { NextRequest, NextResponse } from 'next/server' - -import { SESSION_COOKIE_NAME } from '@lib/authGateway' -import { getAccountServiceApiBaseUrl } from '@server/serviceConfig' - -const ACCOUNT_API_BASE = getAccountServiceApiBaseUrl() - -export async function POST(request: NextRequest) { - const token = (await cookies()).get(SESSION_COOKIE_NAME)?.value - if (!token) { - return NextResponse.json({ error: 'unauthorized' }, { status: 401 }) - } - - const payload = await request.json().catch(() => ({})) - const response = await fetch(`${ACCOUNT_API_BASE}/subscriptions/cancel`, { - method: 'POST', - headers: { - Authorization: `Bearer ${token}`, - 'Content-Type': 'application/json', - Accept: 'application/json', - }, - body: JSON.stringify(payload), - cache: 'no-store', - }) - - const data = await response.json().catch(() => ({})) - return NextResponse.json(data, { status: response.status }) -} diff --git a/dashboard/src/app/api/auth/subscriptions/route.ts b/dashboard/src/app/api/auth/subscriptions/route.ts deleted file mode 100644 index 47c276c..0000000 --- a/dashboard/src/app/api/auth/subscriptions/route.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { cookies } from 'next/headers' -import { NextRequest, NextResponse } from 'next/server' - -import { SESSION_COOKIE_NAME } from '@lib/authGateway' -import { getAccountServiceApiBaseUrl } from '@server/serviceConfig' - -const ACCOUNT_API_BASE = getAccountServiceApiBaseUrl() - -async function proxyRequest(request: NextRequest, pathSuffix: string, body?: Record) { - const token = (await cookies()).get(SESSION_COOKIE_NAME)?.value - if (!token) { - return NextResponse.json({ error: 'unauthorized' }, { status: 401 }) - } - - const target = `${ACCOUNT_API_BASE}/subscriptions${pathSuffix}` - - const response = await fetch(target, { - method: request.method, - headers: { - Authorization: `Bearer ${token}`, - 'Content-Type': 'application/json', - Accept: 'application/json', - }, - body: body ? JSON.stringify(body) : undefined, - cache: 'no-store', - }) - - const data = await response.json().catch(() => ({})) - return NextResponse.json(data, { status: response.status }) -} - -export async function GET(request: NextRequest) { - return proxyRequest(request, '') -} - -export async function POST(request: NextRequest) { - const payload = await request.json().catch(() => ({})) - return proxyRequest(request, '', payload) -} diff --git a/dashboard/src/app/api/auth/verify-email/route.ts b/dashboard/src/app/api/auth/verify-email/route.ts deleted file mode 100644 index 5fe38da..0000000 --- a/dashboard/src/app/api/auth/verify-email/route.ts +++ /dev/null @@ -1,69 +0,0 @@ -import { NextRequest, NextResponse } from 'next/server' - -import { getAccountServiceApiBaseUrl } from '@server/serviceConfig' - -const ACCOUNT_API_BASE = getAccountServiceApiBaseUrl() - -type VerifyPayload = { - email?: string - code?: string -} - -function normalizeEmail(value: unknown) { - return typeof value === 'string' ? value.trim().toLowerCase() : '' -} - -function normalizeCode(value: unknown) { - return typeof value === 'string' ? value.trim() : '' -} - -export async function POST(request: NextRequest) { - let payload: VerifyPayload - try { - payload = (await request.json()) as VerifyPayload - } catch (error) { - console.error('Failed to decode verification payload', error) - return NextResponse.json({ success: false, error: 'invalid_request', needMfa: false }, { status: 400 }) - } - - const email = normalizeEmail(payload?.email) - const code = normalizeCode(payload?.code) - - if (!email || !code) { - return NextResponse.json({ success: false, error: 'missing_verification', needMfa: false }, { status: 400 }) - } - - try { - const response = await fetch(`${ACCOUNT_API_BASE}/register/verify`, { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - }, - body: JSON.stringify({ email, code }), - cache: 'no-store', - }) - - const data = await response.json().catch(() => ({})) - if (!response.ok) { - const errorCode = typeof (data as { error?: string })?.error === 'string' ? data.error : 'verification_failed' - return NextResponse.json({ success: false, error: errorCode, needMfa: false }, { status: response.status || 400 }) - } - - return NextResponse.json({ success: true, error: null, needMfa: false }) - } catch (error) { - console.error('Account service verification proxy failed', error) - return NextResponse.json({ success: false, error: 'account_service_unreachable', needMfa: false }, { status: 502 }) - } -} - -export function GET() { - return NextResponse.json( - { success: false, error: 'method_not_allowed', needMfa: false }, - { - status: 405, - headers: { - Allow: 'POST', - }, - }, - ) -} diff --git a/dashboard/src/app/api/auth/verify-email/send/route.ts b/dashboard/src/app/api/auth/verify-email/send/route.ts deleted file mode 100644 index cc8761a..0000000 --- a/dashboard/src/app/api/auth/verify-email/send/route.ts +++ /dev/null @@ -1,65 +0,0 @@ -import { NextRequest, NextResponse } from 'next/server' - -import { getAccountServiceApiBaseUrl } from '@server/serviceConfig' - -const ACCOUNT_API_BASE = getAccountServiceApiBaseUrl() - -type SendPayload = { - email?: string -} - -function normalizeEmail(value: unknown) { - return typeof value === 'string' ? value.trim().toLowerCase() : '' -} - -export async function POST(request: NextRequest) { - let payload: SendPayload - try { - payload = (await request.json()) as SendPayload - } catch (error) { - console.error('Failed to decode verification send payload', error) - return NextResponse.json({ success: false, error: 'invalid_request', needMfa: false }, { status: 400 }) - } - - const email = normalizeEmail(payload?.email) - if (!email) { - return NextResponse.json({ success: false, error: 'invalid_email', needMfa: false }, { status: 400 }) - } - - try { - const response = await fetch(`${ACCOUNT_API_BASE}/register/send`, { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - }, - body: JSON.stringify({ email }), - cache: 'no-store', - }) - - const data = await response.json().catch(() => ({})) - if (!response.ok) { - const errorCode = typeof (data as { error?: string })?.error === 'string' ? data.error : 'verification_failed' - return NextResponse.json({ success: false, error: errorCode, needMfa: false }, { status: response.status || 400 }) - } - - return NextResponse.json({ success: true, error: null, needMfa: false }) - } catch (error) { - console.error('Account service verification send proxy failed', error) - return NextResponse.json( - { success: false, error: 'account_service_unreachable', needMfa: false }, - { status: 502 }, - ) - } -} - -export function GET() { - return NextResponse.json( - { success: false, error: 'method_not_allowed', needMfa: false }, - { - status: 405, - headers: { - Allow: 'POST', - }, - }, - ) -} diff --git a/dashboard/src/app/api/content-meta/route.ts b/dashboard/src/app/api/content-meta/route.ts deleted file mode 100644 index 1762de5..0000000 --- a/dashboard/src/app/api/content-meta/route.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { NextRequest, NextResponse } from 'next/server' - -import { ContentNotFoundError, getContentCommitMeta } from '@server/content-meta' - -export const runtime = 'nodejs' - -export async function GET(request: NextRequest) { - const path = request.nextUrl.searchParams.get('path') - if (!path) { - return NextResponse.json({ error: 'Missing path parameter' }, { status: 400 }) - } - - try { - const result = await getContentCommitMeta(path) - return NextResponse.json(result, { status: 200 }) - } catch (error) { - if (error instanceof ContentNotFoundError) { - return NextResponse.json({ error: 'Content file not found' }, { status: 404 }) - } - console.error('Failed to load content metadata:', error) - return NextResponse.json({ error: 'Failed to load metadata' }, { status: 500 }) - } -} diff --git a/dashboard/src/app/api/dl-index/artifacts-manifest/route.ts b/dashboard/src/app/api/dl-index/artifacts-manifest/route.ts deleted file mode 100644 index bc5cc77..0000000 --- a/dashboard/src/app/api/dl-index/artifacts-manifest/route.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { NextResponse } from 'next/server' - -const ARTIFACTS_MANIFEST_URL = 'https://dl.svc.plus/dl-index/artifacts-manifest.json' - -export async function GET() { - try { - const response = await fetch(ARTIFACTS_MANIFEST_URL, { - cache: 'no-cache', - }) - - if (!response.ok) { - throw new Error(`Failed to fetch artifacts manifest: ${response.statusText}`) - } - - const data = await response.json() - return NextResponse.json(data) - } catch (error) { - console.error('Error fetching artifacts manifest:', error) - return NextResponse.json([], { status: 200 }) - } -} diff --git a/dashboard/src/app/api/dl-index/docs-manifest/route.ts b/dashboard/src/app/api/dl-index/docs-manifest/route.ts deleted file mode 100644 index 14bbd16..0000000 --- a/dashboard/src/app/api/dl-index/docs-manifest/route.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { NextResponse } from 'next/server' - -const DOCS_MANIFEST_URL = 'https://dl.svc.plus/dl-index/docs-manifest.json' - -export async function GET() { - try { - const response = await fetch(DOCS_MANIFEST_URL, { - cache: 'no-cache', - }) - - if (!response.ok) { - throw new Error(`Failed to fetch docs manifest: ${response.statusText}`) - } - - const data = await response.json() - return NextResponse.json(data) - } catch (error) { - console.error('Error fetching docs manifest:', error) - return NextResponse.json([], { status: 200 }) - } -} diff --git a/dashboard/src/app/api/mail/ai/classify/route.ts b/dashboard/src/app/api/mail/ai/classify/route.ts deleted file mode 100644 index 32042d0..0000000 --- a/dashboard/src/app/api/mail/ai/classify/route.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { NextRequest, NextResponse } from 'next/server' - -import { getMessage, resolveTenantId } from '../../mockData' - -export async function POST(request: NextRequest) { - const tenantId = resolveTenantId(request.headers.get('x-tenant-id')) - const body = (await request.json()) as { messageId: string } - const message = getMessage(tenantId, body.messageId) - if (!message) { - return NextResponse.json({ error: 'Not found' }, { status: 404 }) - } - - const labels = Array.from(new Set([...message.labels, 'AI-Reviewed'])) - return NextResponse.json({ labels }) -} diff --git a/dashboard/src/app/api/mail/ai/reply-suggest/route.ts b/dashboard/src/app/api/mail/ai/reply-suggest/route.ts deleted file mode 100644 index 491ce96..0000000 --- a/dashboard/src/app/api/mail/ai/reply-suggest/route.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { NextRequest, NextResponse } from 'next/server' - -import { getMessage, resolveTenantId } from '../../mockData' - -export async function POST(request: NextRequest) { - const tenantId = resolveTenantId(request.headers.get('x-tenant-id')) - const body = (await request.json()) as { messageId: string; style?: string; language?: string } - const message = body?.messageId ? getMessage(tenantId, body.messageId) : null - - const base = message?.aiInsights?.suggestions ?? [ - '收到,我们将安排同事跟进。', - '感谢提醒,我们将及时回复。', - '请告知是否需要更多信息。', - ] - - return NextResponse.json({ suggestions: base }) -} diff --git a/dashboard/src/app/api/mail/ai/summarize/route.ts b/dashboard/src/app/api/mail/ai/summarize/route.ts deleted file mode 100644 index 0834a4f..0000000 --- a/dashboard/src/app/api/mail/ai/summarize/route.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { NextRequest, NextResponse } from 'next/server' - -import { getMessage, resolveTenantId } from '../../mockData' - -export async function POST(request: NextRequest) { - const tenantId = resolveTenantId(request.headers.get('x-tenant-id')) - const body = (await request.json()) as { messageId?: string; raw?: string } - if (!body.messageId && !body.raw) { - return NextResponse.json({ error: 'messageId or raw is required' }, { status: 400 }) - } - - if (body.messageId) { - const message = getMessage(tenantId, body.messageId) - if (!message) { - return NextResponse.json({ error: 'Not found' }, { status: 404 }) - } - if (message.aiInsights) { - return NextResponse.json(message.aiInsights) - } - } - - return NextResponse.json({ - summary: '示例摘要:邮件内容将提炼为关键句子。', - bullets: ['示例要点一', '示例要点二'], - actions: ['示例行动一'], - tone: '信息', - }) -} diff --git a/dashboard/src/app/api/mail/inbox/route.ts b/dashboard/src/app/api/mail/inbox/route.ts deleted file mode 100644 index f33d34f..0000000 --- a/dashboard/src/app/api/mail/inbox/route.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { NextRequest, NextResponse } from 'next/server' - -import { getInbox, resolveTenantId } from '../mockData' - -export async function GET(request: NextRequest) { - const tenantHeader = request.headers.get('x-tenant-id') - const tenantQuery = request.nextUrl.searchParams.get('tenantId') - const tenantId = resolveTenantId(tenantHeader ?? tenantQuery) - - const inbox = getInbox(tenantId) - - const label = request.nextUrl.searchParams.get('label') - const query = request.nextUrl.searchParams.get('q')?.toLowerCase().trim() - - let filtered = inbox.messages - if (label === 'unread') { - filtered = filtered.filter((item) => item.unread) - } else if (label === 'starred') { - filtered = filtered.filter((item) => item.starred) - } else if (label && label !== 'important') { - filtered = filtered.filter((item) => item.labels.includes(label)) - } - if (query) { - filtered = filtered.filter((item) => - [item.subject, item.snippet, item.from.email, item.from.name] - .filter(Boolean) - .some((field) => field!.toLowerCase().includes(query)), - ) - } - - return NextResponse.json({ - ...inbox, - messages: filtered, - }) -} diff --git a/dashboard/src/app/api/mail/message/[id]/route.ts b/dashboard/src/app/api/mail/message/[id]/route.ts deleted file mode 100644 index ddc2426..0000000 --- a/dashboard/src/app/api/mail/message/[id]/route.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { NextRequest, NextResponse } from 'next/server' - -import { getMessage, resolveTenantId } from '../../mockData' - -export async function GET(request: NextRequest, { params }: { params: Promise<{ id: string }> }) { - const tenantId = resolveTenantId(request.headers.get('x-tenant-id')) - const { id } = await params - const message = getMessage(tenantId, id) - if (!message) { - return NextResponse.json({ error: 'Not found' }, { status: 404 }) - } - return NextResponse.json(message) -} - -export async function DELETE(request: NextRequest, { params }: { params: Promise<{ id: string }> }) { - const tenantId = resolveTenantId(request.headers.get('x-tenant-id')) - const { id } = await params - const message = getMessage(tenantId, id) - if (!message) { - return NextResponse.json({ error: 'Not found' }, { status: 404 }) - } - return NextResponse.json({ success: true }) -} diff --git a/dashboard/src/app/api/mail/mockData.ts b/dashboard/src/app/api/mail/mockData.ts deleted file mode 100644 index 27ec606..0000000 --- a/dashboard/src/app/api/mail/mockData.ts +++ /dev/null @@ -1,208 +0,0 @@ -import type { MailInboxResponse, MailListMessage, MailMessageDetail, NamespacePolicy } from '@lib/mail/types' - -type TenantMailData = { - inbox: MailListMessage[] - messages: Record - namespace: NamespacePolicy -} - -const now = Date.now() - -const baseMessages: MailListMessage[] = [ - { - id: 'msg-1001', - subject: '【故障通报】核心链路延迟恢复通知', - snippet: '生产集群延迟已恢复至正常指标,详见行动项。', - from: { name: 'SRE 值班', email: 'sre@svc.plus' }, - to: [{ name: 'Ops 团队', email: 'ops@tenant.io' }], - date: new Date(now - 5 * 60 * 1000).toISOString(), - unread: true, - starred: true, - labels: ['Incident', 'Priority'], - hasAttachments: true, - aiSummary: { - preview: '延迟恢复,需确认追踪指标。', - tone: '紧急', - }, - }, - { - id: 'msg-1002', - subject: '月度账单与消耗对账单', - snippet: '附件包含 5 月份资源使用与费用明细,请于本周内确认。', - from: { name: 'Finance Robot', email: 'billing@svc.plus' }, - to: [{ name: 'Finance', email: 'finance@tenant.io' }], - date: new Date(now - 2 * 60 * 60 * 1000).toISOString(), - unread: false, - labels: ['Billing'], - hasAttachments: true, - aiSummary: { - preview: '账单结算提醒,需核对折扣。', - tone: '正式', - }, - }, - { - id: 'msg-1003', - subject: 'AI 助手联调会议记录', - snippet: '会议纪要包含下一步联调行动项与 SLA 讨论。', - from: { name: '产品经理', email: 'pm@svc.plus' }, - to: [{ name: 'AI 团队', email: 'ai@tenant.io' }], - date: new Date(now - 5 * 60 * 60 * 1000).toISOString(), - unread: false, - labels: ['Product'], - aiSummary: { - preview: '提炼三条关键任务。', - tone: '合作', - }, - }, - { - id: 'msg-1004', - subject: '【提醒】IAM 权限矩阵变更审批', - snippet: '审批单待确认,涉及新的只读角色授权,请于 24 小时内处理。', - from: { name: 'Access Bot', email: 'iam@svc.plus' }, - to: [{ name: 'Security', email: 'sec@tenant.io' }], - date: new Date(now - 12 * 60 * 60 * 1000).toISOString(), - unread: true, - labels: ['Security'], - aiSummary: { - preview: '审批截止前需确认。', - tone: '提醒', - }, - }, -] - -const detailMap: Record = { - 'msg-1001': { - ...baseMessages[0], - text: '生产链路延迟恢复。请确认后续监控指标与复盘会议安排。', - html: '

生产链路延迟已恢复。

  • 核对 Prometheus 延迟指标
  • 更新状态页面
  • 准备 18:00 复盘会议
', - attachments: [ - { - id: 'att-1', - fileName: 'incident-report.pdf', - contentType: 'application/pdf', - size: 234567, - downloadUrl: '#', - }, - ], - aiInsights: { - summary: '生产链路延迟恢复,需跟进指标及复盘会议。', - bullets: ['Prometheus 延迟恢复', '状态页面需更新', '18:00 复盘会议'], - actions: ['确认状态页', '同步客户邮件', '准备复盘材料'], - tone: '紧急', - suggestions: [ - '感谢通知,已安排团队核查 Prometheus 指标。', - '收到,我们将于 18:00 准备复盘材料。', - '请同步可能影响的客户列表,方便统一公告。', - ], - }, - }, - 'msg-1002': { - ...baseMessages[1], - text: '随信附上 5 月份账单,包含折扣与超额费用明细,请在本周内完成对账。', - attachments: [ - { - id: 'att-2', - fileName: 'may-usage.xlsx', - contentType: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', - size: 54567, - downloadUrl: '#', - }, - ], - aiInsights: { - summary: '账单需要财务团队在本周内确认。', - bullets: ['包含折扣明细', '有部分资源超额', '需在周五前回复'], - actions: ['核对折扣', '确认超额原因', '回邮确认'], - tone: '正式', - suggestions: ['已收悉,我们将在周四前完成对账并回复。'], - }, - }, - 'msg-1003': { - ...baseMessages[2], - html: '

联调会议要点:

  1. 六月上线 Beta,需补充监控指标
  2. AI 模型回退策略需评审
  3. 下一次联调会议安排在周五上午
', - aiInsights: { - summary: '会议聚焦上线计划、模型回退与下次会议时间。', - bullets: ['六月 Beta 上线', '确认模型回退策略', '周五上午继续联调'], - actions: ['同步监控指标清单', '准备回退方案文档', '发送会议邀请'], - tone: '合作', - }, - }, - 'msg-1004': { - ...baseMessages[3], - text: 'IAM 角色矩阵变更涉及新建只读角色,需要安全团队审批。', - aiInsights: { - summary: '安全团队需在 24 小时内确认新角色审批。', - bullets: ['新增只读角色', '审批截止 24 小时内', '需评估权限边界'], - actions: ['审阅角色权限', '评估风险', '确认审批或驳回'], - tone: '提醒', - }, - }, -} - -const TENANT_DATA: Record = { - 'tenant-alpha': { - inbox: baseMessages, - messages: detailMap, - namespace: { - model: 'gpt-4o-mini', - temperature: 0.3, - maxTokens: 2048, - rateLimitPerMinute: 60, - vectorIndex: 's3://tenant-alpha-mail', - policy: '{"blockedKeywords": ["NDA", "秘密"]}', - updatedAt: new Date(now - 3600 * 1000).toISOString(), - }, - }, - default: { - inbox: baseMessages, - messages: detailMap, - namespace: { - model: 'gpt-4o-mini', - temperature: 0.5, - maxTokens: 2048, - rateLimitPerMinute: 30, - vectorIndex: 's3://default-mail', - policy: '{"allowExternal": true}', - updatedAt: new Date(now - 7200 * 1000).toISOString(), - }, - }, -} - -export function resolveTenantId(raw: string | null | undefined) { - if (!raw) { - return 'default' - } - return TENANT_DATA[raw] ? raw : 'default' -} - -export function getInbox(tenantId: string): MailInboxResponse { - const data = TENANT_DATA[tenantId] ?? TENANT_DATA.default - return { - messages: data.inbox, - labels: [ - { id: 'Incident', name: 'Incident', color: '#f97316', unread: data.inbox.filter((item) => item.unread && item.labels.includes('Incident')).length }, - { id: 'Billing', name: 'Billing', color: '#2563eb', unread: data.inbox.filter((item) => item.unread && item.labels.includes('Billing')).length }, - { id: 'Security', name: 'Security', color: '#7c3aed', unread: data.inbox.filter((item) => item.unread && item.labels.includes('Security')).length }, - { id: 'Product', name: 'Product', color: '#0f766e', unread: data.inbox.filter((item) => item.unread && item.labels.includes('Product')).length }, - ], - unreadCount: data.inbox.filter((item) => item.unread).length, - nextCursor: null, - } -} - -export function getMessage(tenantId: string, id: string): MailMessageDetail | null { - const data = TENANT_DATA[tenantId] ?? TENANT_DATA.default - return data.messages[id] ?? null -} - -export function getNamespace(tenantId: string): NamespacePolicy { - const data = TENANT_DATA[tenantId] ?? TENANT_DATA.default - return data.namespace -} - -export function updateNamespace(tenantId: string, patch: Partial): NamespacePolicy { - const key = TENANT_DATA[tenantId] ? tenantId : 'default' - const current = TENANT_DATA[key].namespace - const next = { ...current, ...patch, updatedAt: new Date().toISOString() } - TENANT_DATA[key].namespace = next - return next -} diff --git a/dashboard/src/app/api/mail/namespace/route.ts b/dashboard/src/app/api/mail/namespace/route.ts deleted file mode 100644 index 45a3828..0000000 --- a/dashboard/src/app/api/mail/namespace/route.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { NextRequest, NextResponse } from 'next/server' - -import { getNamespace, resolveTenantId, updateNamespace } from '../mockData' - -export async function GET(request: NextRequest) { - const tenantId = resolveTenantId(request.headers.get('x-tenant-id')) - return NextResponse.json(getNamespace(tenantId)) -} - -export async function PUT(request: NextRequest) { - const tenantId = resolveTenantId(request.headers.get('x-tenant-id')) - const patch = (await request.json()) as Record - return NextResponse.json(updateNamespace(tenantId, patch)) -} diff --git a/dashboard/src/app/api/mail/send/route.ts b/dashboard/src/app/api/mail/send/route.ts deleted file mode 100644 index ec3fb9d..0000000 --- a/dashboard/src/app/api/mail/send/route.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { NextRequest, NextResponse } from 'next/server' - -import type { ComposePayload } from '@lib/mail/types' - -export async function POST(request: NextRequest) { - const payload = (await request.json()) as ComposePayload - void payload - return NextResponse.json({ success: true }) -} diff --git a/dashboard/src/app/api/ping/route.ts b/dashboard/src/app/api/ping/route.ts deleted file mode 100644 index 1ca0387..0000000 --- a/dashboard/src/app/api/ping/route.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { NextResponse } from 'next/server' - -import { loadRuntimeConfig } from '@server/runtime-loader' - -export async function GET(request: Request) { - const hostnameHeader = request.headers.get('host') ?? undefined - const runtimeConfig = loadRuntimeConfig({ hostname: hostnameHeader }) - - const payload = { - status: 'ok' as const, - environment: runtimeConfig.environment, - region: runtimeConfig.region, - apiBaseUrl: runtimeConfig.apiBaseUrl, - authUrl: runtimeConfig.authUrl, - dashboardUrl: runtimeConfig.dashboardUrl, - logLevel: runtimeConfig.logLevel, - } - - console.info('[runtime-config] /api/ping resolved config snippet', payload) - - return NextResponse.json(payload) -} diff --git a/dashboard/src/app/api/rag/query/route.ts b/dashboard/src/app/api/rag/query/route.ts deleted file mode 100644 index 17f9fb0..0000000 --- a/dashboard/src/app/api/rag/query/route.ts +++ /dev/null @@ -1,37 +0,0 @@ -import { getInternalServerServiceBaseUrl } from '@server/serviceConfig' - -const FORWARDED_HEADERS = ['authorization', 'cookie', 'x-account-session'] as const - -function buildForwardHeaders(req: Request) { - const headers = new Headers({ 'Content-Type': 'application/json' }) - - for (const name of FORWARDED_HEADERS) { - const value = req.headers.get(name) - if (value) { - headers.set(name, value) - } - } - - return headers -} - -export async function POST(req: Request) { - try { - const { question, history } = await req.json() - const apiBase = getInternalServerServiceBaseUrl() - const response = await fetch(`${apiBase}/api/rag/query`, { - method: 'POST', - headers: buildForwardHeaders(req), - body: JSON.stringify({ question, history }), - credentials: 'include' - }) - - const data = await response.json().catch(() => null) - return Response.json(data ?? { error: 'Invalid response from server' }, { - status: response.status - }) - } catch (error) { - const message = error instanceof Error ? error.message : 'Unknown error' - return Response.json({ error: message }, { status: 500 }) - } -} diff --git a/dashboard/src/app/api/render-markdown/route.ts b/dashboard/src/app/api/render-markdown/route.ts deleted file mode 100644 index 90618b9..0000000 --- a/dashboard/src/app/api/render-markdown/route.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { NextRequest, NextResponse } from 'next/server' - -import { ContentNotFoundError, renderMarkdownFile } from '@server/render-markdown' - -export const runtime = 'nodejs' - -export async function GET(request: NextRequest) { - const path = request.nextUrl.searchParams.get('path') - if (!path) { - return NextResponse.json({ error: 'Missing path parameter' }, { status: 400 }) - } - - try { - const result = await renderMarkdownFile(path) - return NextResponse.json(result, { status: 200 }) - } catch (error) { - if (error instanceof ContentNotFoundError) { - return NextResponse.json({ error: 'Markdown file not found' }, { status: 404 }) - } - console.error('Failed to render markdown:', error) - return NextResponse.json({ error: 'Failed to render markdown' }, { status: 500 }) - } -} diff --git a/dashboard/src/app/api/task/[...segments]/route.ts b/dashboard/src/app/api/task/[...segments]/route.ts deleted file mode 100644 index bab800d..0000000 --- a/dashboard/src/app/api/task/[...segments]/route.ts +++ /dev/null @@ -1,46 +0,0 @@ -export const dynamic = 'force-dynamic' - -import type { NextRequest } from 'next/server' - -import { createUpstreamProxyHandler } from '@lib/apiProxy' -import { getInternalServerServiceBaseUrl } from '@server/serviceConfig' - -const TASK_PREFIX = '/api/task' - -function createHandler() { - const upstreamBaseUrl = getInternalServerServiceBaseUrl() - return createUpstreamProxyHandler({ - upstreamBaseUrl, - upstreamPathPrefix: TASK_PREFIX, - }) -} - -const handler = createHandler() - -export function GET(request: NextRequest) { - return handler(request) -} - -export function POST(request: NextRequest) { - return handler(request) -} - -export function PUT(request: NextRequest) { - return handler(request) -} - -export function PATCH(request: NextRequest) { - return handler(request) -} - -export function DELETE(request: NextRequest) { - return handler(request) -} - -export function HEAD(request: NextRequest) { - return handler(request) -} - -export function OPTIONS(request: NextRequest) { - return handler(request) -} diff --git a/dashboard/src/app/api/users/route.ts b/dashboard/src/app/api/users/route.ts deleted file mode 100644 index 8700dd4..0000000 --- a/dashboard/src/app/api/users/route.ts +++ /dev/null @@ -1,63 +0,0 @@ -export const dynamic = 'force-dynamic' - -import { NextResponse } from 'next/server' - -import { getInternalServerServiceBaseUrl } from '@server/serviceConfig' -import { getAccountSession, userHasRole } from '@server/account/session' -import type { AccountUserRole } from '@server/account/session' - -const SERVER_API_BASE = getInternalServerServiceBaseUrl() -const SERVER_USERS_ENDPOINT = `${SERVER_API_BASE}/api/users` - -const ALLOWED_ROLES: AccountUserRole[] = ['admin', 'operator'] - -type ErrorPayload = { - error: string -} - -type PermissionAwareHeaders = { - 'X-User-Role': string - 'X-User-Permissions'?: string -} - -function buildForwardHeaders(role: string, permissions: string[]): PermissionAwareHeaders { - const headers: PermissionAwareHeaders = { - 'X-User-Role': role, - } - if (permissions.length > 0) { - headers['X-User-Permissions'] = permissions.join(',') - } - return headers -} - -export async function GET() { - const session = await getAccountSession() - const user = session.user - - if (!user) { - return NextResponse.json({ error: 'unauthenticated' }, { status: 401 }) - } - - if (!(await userHasRole(user, ALLOWED_ROLES))) { - return NextResponse.json({ error: 'forbidden' }, { status: 403 }) - } - - const headers = new Headers({ - Accept: 'application/json', - ...buildForwardHeaders(user.role, user.permissions), - }) - - const response = await fetch(SERVER_USERS_ENDPOINT, { - method: 'GET', - headers, - cache: 'no-store', - }) - - const payload = await response.json().catch(() => null) - if (payload === null) { - return NextResponse.json({ error: 'invalid_response' }, { status: 502 }) - } - - return NextResponse.json(payload, { status: response.status }) -} - diff --git a/dashboard/src/app/blog/[slug]/page.tsx b/dashboard/src/app/blog/[slug]/page.tsx deleted file mode 100644 index dc674cc..0000000 --- a/dashboard/src/app/blog/[slug]/page.tsx +++ /dev/null @@ -1,123 +0,0 @@ -import Link from 'next/link' -import { notFound } from 'next/navigation' -import { readMarkdownFile } from '@lib/markdown' -import type { Metadata } from 'next' - -type PageProps = { - params: { slug: string } -} - -function formatDate(dateStr: string, language: 'zh' | 'en'): string { - const date = new Date(dateStr) - - if (language === 'zh') { - return date.toLocaleDateString('zh-CN', { - year: 'numeric', - month: 'long', - day: 'numeric', - }) - } else { - return date.toLocaleDateString('en-US', { - year: 'numeric', - month: 'long', - day: 'numeric', - }) - } -} - -export async function generateMetadata({ params }: PageProps): Promise { - const { slug } = await params - try { - const blogContentRoot = process.cwd() + '/src/content/blog' - const file = await readMarkdownFile(`${slug}.md`, { baseDir: blogContentRoot }) - - const title = file.metadata.title as string - const excerpt = (file.metadata.excerpt as string) || '' - - return { - title: `${title} | Cloud-Neutral Blog`, - description: excerpt, - } - } catch (error) { - return { - title: 'Blog Post | Cloud-Neutral', - } - } -} - -export default async function BlogPostPage({ params }: PageProps) { - const { slug } = await params - try { - const blogContentRoot = process.cwd() + '/src/content/blog' - const file = await readMarkdownFile(`${slug}.md`, { baseDir: blogContentRoot }) - - const title = (file.metadata.title as string) || slug - const author = file.metadata.author as string | undefined - const date = file.metadata.date as string | undefined - const tags = file.metadata.tags as string[] | undefined - - return ( -
-
- {/* Back to blog link */} - - ← {date ? 'Back to Blog' : '返回博客'} - - - {/* Article header */} -
-

- {title} -

- - {author && ( -

- {date ? 'By' : '作者'} {author} -

- )} - - {date && ( - - )} - - {tags && tags.length > 0 && ( -
- {tags.map((tag) => ( - - {tag} - - ))} -
- )} -
- - {/* Article content */} -
- - {/* Footer */} -
- - ← Back to Blog - -
-
-
- ) - } catch (error) { - notFound() - } -} diff --git a/dashboard/src/app/blog/page.tsx b/dashboard/src/app/blog/page.tsx deleted file mode 100644 index 0126442..0000000 --- a/dashboard/src/app/blog/page.tsx +++ /dev/null @@ -1,175 +0,0 @@ -export const dynamic = 'force-dynamic' - -import Link from 'next/link' -import SearchComponent from '@components/search' -import { getHomepagePosts } from '@lib/marketingContent' -import type { Metadata } from 'next' -import { notFound } from 'next/navigation' - -export const metadata: Metadata = { - title: 'Blog | Cloud-Neutral', - description: 'Latest updates, releases, and insights from the Cloud-Neutral community.', -} - -function formatDate(dateStr: string | undefined, language: 'zh' | 'en'): string { - if (!dateStr) return '' - - const date = new Date(dateStr) - - if (language === 'zh') { - return date.toLocaleDateString('zh-CN', { - year: 'numeric', - month: 'long', - day: 'numeric', - }) - } else { - return date.toLocaleDateString('en-US', { - year: 'numeric', - month: 'long', - day: 'numeric', - }) - } -} - -type PageProps = { - searchParams?: { page?: string } | Promise<{ page?: string }> -} - -export default async function BlogPage({ searchParams }: PageProps) { - const posts = await getHomepagePosts() - const resolvedSearchParams = await Promise.resolve(searchParams ?? {}) - const { page } = resolvedSearchParams ?? {} - const postsPerPage = 10 - const currentPage = parseInt(page || '1', 10) - const totalPages = Math.max(1, Math.ceil(posts.length / postsPerPage)) - - if ((posts.length > 0 && currentPage > totalPages) || currentPage < 1) { - notFound() - } - - const startIndex = (currentPage - 1) * postsPerPage - const endIndex = startIndex + postsPerPage - const paginatedPosts = posts.slice(startIndex, endIndex) - - return ( -
- {/* Sticky Navigation Header */} -
-
- - SVC.plus - / - blog - -
- -
-
-
- -
-
-
-

Blog

-

- Latest updates, releases, and insights from the Cloud-Neutral community. -

-
- - {posts.length === 0 ? ( -
-

暂无博客文章

-
- ) : ( - <> -
- {paginatedPosts.map((post) => ( -
-
- Blog - {post.date && ( - - )} -
-

{post.title}

- {post.author && ( -

By {post.author}

- )} -

{post.excerpt}

-
- {post.tags && post.tags.length > 0 && ( -
- {post.tags.map((tag) => ( - - {tag} - - ))} -
- )} - - Read more → - -
-
- ))} -
- - {totalPages > 1 && ( - - )} - - )} -
-
-
- ) -} diff --git a/dashboard/src/app/cloud_iac/README.md b/dashboard/src/app/cloud_iac/README.md deleted file mode 100644 index 5d39485..0000000 --- a/dashboard/src/app/cloud_iac/README.md +++ /dev/null @@ -1,32 +0,0 @@ -# Cloud IaC Catalog - -Cloud IaC Catalog 提供跨云厂商(AWS、GCP、Azure、阿里云)的核心基础设施服务对照表,并预置 Terraform、Pulumi 以及 GitHub CI 的触发入口。页面基于 Next.js App Router 与 Tailwind CSS 构建,可快速扩展为企业内部的多云自动化控制台。 - -## 开发调试 - -```bash -cd dashboard -yarn install -yarn dev -``` - -开发服务器默认运行在 。访问 `/cloud_iac` 路由即可查看 IAC 编排面板。 - -## 数据与配置 - -- `lib/iac/catalog.ts`:维护十三大类别的产品对照表与 IaC 模块元数据。 -- `lib/iac/actions.ts`:封装触发 Terraform、Pulumi 与 GitHub Workflow 的占位实现,后续可替换为实际 API。 -- `components/iac/CloudIacCatalog.tsx`:渲染左侧筛选与右侧卡片网格,并处理弹窗交互。 -- `components/iac/RunModal.tsx`:运行确认弹窗,展示模块信息与 JSON 参数输入。 - -如需接入真实环境,可在 `catalog.ts` 中替换 Terraform 模块路径、Pulumi 组件名称或 GitHub Workflow 文件名,并在 `actions.ts` 中对接内部 API / 消息队列。 - -## 与 CI / IaC 系统集成 - -1. **Terraform / Pulumi**:在 `runTerraformModule` 与 `runPulumiProgram` 中调用内部 API(例如触发 Terraform Cloud、Atlantis、Pulumi Service 或自建执行引擎)。 -2. **GitHub CI**:在 `triggerGithubWorkflow` 中调用 GitHub REST / GraphQL API,或将请求转发至现有的 GitHub App 服务。 -3. **参数传递**:弹窗中的 JSON 参数会原样传入上述动作处理函数,可用于指定环境、凭证、变量文件等运行上下文。 - -## Feature Flag - -`next.config.js` 会读取 `config/feature-toggles.json` 中的 `appModules.cloud_iac` 配置以决定入口是否展示与页面是否可访问。将该节点的 `enabled` 设置为 `false`(或为特定云厂商 / 服务节点设为 `false`)即可在生产环境中按需关闭。 diff --git a/dashboard/src/app/cloud_iac/[provider]/[service]/page.tsx b/dashboard/src/app/cloud_iac/[provider]/[service]/page.tsx deleted file mode 100644 index 0af4c2f..0000000 --- a/dashboard/src/app/cloud_iac/[provider]/[service]/page.tsx +++ /dev/null @@ -1,76 +0,0 @@ -export const dynamic = 'error' - -import type { Metadata } from 'next' -import { notFound } from 'next/navigation' - -import { CATALOG, PROVIDERS } from '@lib/iac/catalog' -import type { CatalogItem, ProviderKey } from '@lib/iac/types' - -import cloudIacIndex from '../../../../../public/_build/cloud_iac_index.json' -import { isFeatureEnabled } from '@lib/featureToggles' - -import ServiceDetailView from '@components/iac/ServiceDetailView' - -type PageParams = { - provider: string - service: string -} - -type CloudIacIndex = { - providers: { key: ProviderKey; label: string }[] - services: { provider: ProviderKey; service: string }[] -} - -const CLOUD_IAC_INDEX = cloudIacIndex as CloudIacIndex - -const PROVIDER_MAP = new Map(PROVIDERS.map((provider) => [provider.key, provider.label] as const)) - -function findCategoryBySlug(provider: ProviderKey, slug: string): CatalogItem | undefined { - return CATALOG.find((item) => item.iac?.[provider]?.detailSlug === slug) -} - -export function generateStaticParams() { - return CLOUD_IAC_INDEX.services.map((item) => ({ provider: item.provider, service: item.service })) -} - -export const dynamicParams = false - -export const metadata: Metadata = { - title: 'Cloud IaC Catalog', -} - -export default function CloudIacServicePage({ params }: { params: PageParams }) { - const providerKey = params.provider as ProviderKey - const serviceSlug = params.service - - if (!isFeatureEnabled('appModules', `/cloud_iac/${providerKey}/${serviceSlug}`)) { - notFound() - } - - const providerLabel = PROVIDER_MAP.get(providerKey) - if (!providerLabel) { - notFound() - } - - const category = findCategoryBySlug(providerKey, serviceSlug) - if (!category) { - notFound() - } - - const integration = category.iac?.[providerKey] - const productName = category.products[providerKey] ?? category.title - - return ( -
-
- -
-
- ) -} diff --git a/dashboard/src/app/cloud_iac/[provider]/page.tsx b/dashboard/src/app/cloud_iac/[provider]/page.tsx deleted file mode 100644 index b9d097d..0000000 --- a/dashboard/src/app/cloud_iac/[provider]/page.tsx +++ /dev/null @@ -1,62 +0,0 @@ -export const dynamic = 'error' - -import type { Metadata } from 'next' -import { notFound } from 'next/navigation' - -import CloudIacCatalog from '@components/iac/CloudIacCatalog' -import { CATALOG, PROVIDERS } from '@lib/iac/catalog' -import type { ProviderKey } from '@lib/iac/types' - -import cloudIacIndex from '../../../../public/_build/cloud_iac_index.json' -import { isFeatureEnabled } from '@lib/featureToggles' - -type PageParams = { - provider: string -} - -type CloudIacIndex = { - providers: { key: ProviderKey; label: string }[] -} - -const CLOUD_IAC_INDEX = cloudIacIndex as CloudIacIndex - -const PROVIDER_MAP = new Map(PROVIDERS.map((provider) => [provider.key, provider.label] as const)) - -export function generateStaticParams() { - return CLOUD_IAC_INDEX.providers.map((provider) => ({ provider: provider.key })) -} - -export const dynamicParams = false - -export const metadata: Metadata = { - title: 'Cloud IaC Catalog', -} - -export default function CloudIacProviderPage({ params }: { params: PageParams }) { - const providerKey = params.provider as ProviderKey - - if (!isFeatureEnabled('appModules', `/cloud_iac/${providerKey}`)) { - notFound() - } - if (!PROVIDER_MAP.has(providerKey)) { - notFound() - } - - const providerLabel = PROVIDER_MAP.get(providerKey)! - - return ( -
-
-
-

{providerLabel} Catalog

-

核心服务目录

-

- 浏览 {providerLabel} 提供的计算、网络、负载均衡、存储、数据库、缓存、队列、容器服务、数据服务、安全防护以及身份与访问管理能力,点击卡片进入服务详情配置 IaC 与 GitOps。 -

-
- - -
-
- ) -} diff --git a/dashboard/src/app/cloud_iac/page.tsx b/dashboard/src/app/cloud_iac/page.tsx deleted file mode 100644 index ce12b1f..0000000 --- a/dashboard/src/app/cloud_iac/page.tsx +++ /dev/null @@ -1,38 +0,0 @@ -export const dynamic = 'error' - -import type { Metadata } from 'next' -import { notFound } from 'next/navigation' - -import CloudIacCatalog from '@components/iac/CloudIacCatalog' -import { CATALOG, PROVIDERS } from '@lib/iac/catalog' - -import { isFeatureEnabled } from '@lib/featureToggles' - -export const metadata: Metadata = { - title: 'Cloud IaC Catalog', - description: - '跨云厂商的计算、网络、存储等核心服务一站式对照表,可分层浏览厂商详情并调度 Terraform / Pulumi / GitOps 流程。', -} - -export default function CloudIacPage() { - if (!isFeatureEnabled('appModules', '/cloud_iac')) { - notFound() - } - - return ( -
-
-
-

Cloud Automation

-

Cloud IaC Catalog

-

- 跨云厂商(AWS / GCP / Azure / 阿里云)的计算、网络、DNS / CDN、负载均衡、存储、数据库、缓存、队列、容器服务、边缘计算 / IoT、 - 数据服务、监控日志 / 事件总线、API 网关 / 数据集成、安全防护、身份与访问管理等核心能力汇总于此。先在概览页快速比对,再进入各云厂商目录与服务详情页配置 GitOps 同步与 IaC 执行流程。 -

-
- - -
-
- ) -} diff --git a/dashboard/src/app/components/ClientTime.tsx b/dashboard/src/app/components/ClientTime.tsx deleted file mode 100644 index cfa230e..0000000 --- a/dashboard/src/app/components/ClientTime.tsx +++ /dev/null @@ -1,38 +0,0 @@ -'use client' - -import { useMemo } from 'react' - -type ClientTimeProps = { - isoString: string - locale?: string - options?: Intl.DateTimeFormatOptions - fallback?: string -} - -function formatTimestamp( - isoString: string, - locale?: string, - options?: Intl.DateTimeFormatOptions, - fallback?: string, -): { display: string; dateTime: string } { - if (!isoString) { - return { display: fallback ?? '--', dateTime: '' } - } - - const date = new Date(isoString) - if (Number.isNaN(date.getTime())) { - return { display: fallback ?? isoString, dateTime: isoString } - } - - const formatter = new Intl.DateTimeFormat(locale ?? undefined, options) - return { display: formatter.format(date), dateTime: date.toISOString() } -} - -export default function ClientTime({ isoString, locale, options, fallback }: ClientTimeProps) { - const { display, dateTime } = useMemo( - () => formatTimestamp(isoString, locale, options, fallback), - [isoString, locale, options, fallback], - ) - - return -} diff --git a/dashboard/src/app/components/icons/WeChatIcon.tsx b/dashboard/src/app/components/icons/WeChatIcon.tsx deleted file mode 100644 index bf5b942..0000000 --- a/dashboard/src/app/components/icons/WeChatIcon.tsx +++ /dev/null @@ -1,28 +0,0 @@ -import type { SVGProps } from 'react' - -export function WeChatIcon({ className, ...props }: SVGProps) { - return ( - - ) -} diff --git a/dashboard/src/app/components/insight/ai/Assistant.tsx b/dashboard/src/app/components/insight/ai/Assistant.tsx deleted file mode 100644 index 7c3952b..0000000 --- a/dashboard/src/app/components/insight/ai/Assistant.tsx +++ /dev/null @@ -1,199 +0,0 @@ -'use client' - -import { useMemo, useState } from 'react' -import { InsightState } from '../../insight/store/urlState' - -const quickActions = [ - { id: 'explain', label: 'Explain anomaly', prompt: 'Explain the recent anomaly in my metrics.' }, - { id: 'logs', label: 'Fetch related logs', prompt: 'Show me logs correlated with the current filters.' }, - { id: 'rca', label: 'Root cause analysis', prompt: 'Run an RCA for the checkout service using metrics, logs and traces.' }, - { id: 'alert', label: 'Draft alert', prompt: 'Generate an alert rule for p95 latency over 300ms.' }, - { id: 'report', label: 'Incident report', prompt: 'Create a short incident report for the last hour.' } -] - -interface AssistantProps { - state: InsightState -} - -export function AIAssistant({ state }: AssistantProps) { - const [isOpen, setIsOpen] = useState(false) - const [isMinimized, setIsMinimized] = useState(false) - const [isMaximized, setIsMaximized] = useState(false) - const [message, setMessage] = useState('') - const [history, setHistory] = useState<{ question: string; timestamp: number }[]>([]) - const [conversation, setConversation] = useState< - { author: 'user' | 'ai'; text: string; timestamp: number }[] - >([]) - - const contextSummary = useMemo( - () => - `Org=${state.org}, Project=${state.project}, Env=${state.env}, Region=${state.region}, Topology=${state.topologyMode}, Service=${state.service || 'all'}, Time=${state.timeRange}`, - [state] - ) - - function openPanel(prompt?: string) { - setIsOpen(true) - setIsMinimized(false) - if (prompt) { - appendMessage(prompt) - } - } - - function appendMessage(prompt: string) { - const timestamp = Date.now() - const updatedHistory = [{ question: prompt, timestamp }, ...history].slice(0, 10) - setHistory(updatedHistory) - setConversation(prev => [ - ...prev, - { author: 'user', text: prompt, timestamp }, - { - author: 'ai', - text: `Using context (${contextSummary}) I will draft insights for “${prompt}”. Connect me to your backend to replace this placeholder response.`, - timestamp: timestamp + 1 - } - ]) - } - - function handleSend() { - if (!message.trim()) return - appendMessage(message.trim()) - setMessage('') - } - - function toggleMinimize() { - setIsMinimized(prev => !prev) - } - - function toggleMaximize() { - setIsMaximized(prev => !prev) - setIsMinimized(false) - } - - function closePanel() { - setIsOpen(false) - setIsMinimized(false) - setIsMaximized(false) - } - - return ( -
-
-

AI Assistant

-

Bring AskAI insights into your observability workflow.

-
-
- {quickActions.map(action => ( - - ))} -
-
-

Current context

-

{contextSummary}

-
-
-

Recent questions

- {history.length === 0 ? ( -

Run a quick action or open the assistant to get started.

- ) : ( -
    - {history.map(item => ( -
  • - {item.question} - {new Date(item.timestamp).toLocaleTimeString()} -
  • - ))} -
- )} -
- - - {isOpen && ( -
-
-
-

AI copilot

- {!isMinimized && ( -

Context aware responses for the current workspace.

- )} -
-
- - - -
-
- - {!isMinimized && ( -
- {conversation.length === 0 ? ( -

- Ask a question to start a conversation. The assistant replies with enriched placeholders until wired to - your backend. -

- ) : ( -
    - {conversation.map(entry => ( -
  • -

    - {entry.author === 'user' ? 'You' : 'Assistant'} · {new Date(entry.timestamp).toLocaleTimeString()} -

    -

    {entry.text}

    -
  • - ))} -
- )} -
- )} - - {!isMinimized && ( -
-