diff --git a/.cursorrules b/.cursorrules index e5e2aae..d17dd05 100644 --- a/.cursorrules +++ b/.cursorrules @@ -2,13 +2,13 @@ **IMPORTANT:** This file, `claude.md`, and `AGENTS.md` must stay in sync. See "Sync Instructions" at bottom. -**For universal development standards applicable to any project, see:** `DEVELOPMENT-STANDARDS.md` +**For universal development standards applicable to any project, see:** `docs/guides/DEVELOPMENT-STANDARDS.md` --- ## Universal Standards (Apply to All Projects) -See `DEVELOPMENT-STANDARDS.md` for complete details on: +See `docs/guides/DEVELOPMENT-STANDARDS.md` for complete details on: - Code style (TypeScript strict, Prettier, ESLint, 2-space indentation) - Testing strategy (unit/integration/E2E pyramid, Jest, ≥70% coverage) - Accessibility (WCAG 2.1 Level AA minimum) @@ -67,7 +67,7 @@ npm run format # Auto-format with Prettier Every PR must include: 1. **Progress log:** Create `docs/progress/YYYY_MM_DD.md` with work summary, blockers, next steps 2. **Changelog:** Update `CHANGELOG.md` under `[Unreleased]` section -3. **ADL entry:** If major architectural decision, create entry in `docs/ARCHITECTURE-DECISIONS.md` +3. **ADL entry:** If major architectural decision, create entry in `docs/guides/ARCHITECTURE-DECISIONS.md` 4. **User docs:** Update `user-docs/` if UI/behavior changed 5. **Developer docs:** Update `docs/` if architecture/structure changed @@ -107,6 +107,44 @@ Every PR must include: --- +## Documentation Maintenance + +**Keep all documentation up to date and well-organized.** + +### Organization Standards +- **Dev docs** (`dev-docs/`): ALL CAPS for technical docs, Title Case for user guides +- **Example docs** (`docs/examples/`): kebab-case (e.g., `getting-started.md`) + +**Directory Structure:** +- `dev-docs/specs/` - Technical specifications +- `dev-docs/guides/` - Development guides +- `dev-docs/planning/` - Phase plans +- `dev-docs/progress/` - Daily logs (YYYY_MM_DD.md) +- `dev-docs/` (root) - User guides and project docs +- `docs/examples/` - Example documentation files + +### Update When +- Adding/changing features → update relevant docs +- Architectural decisions → create ADL entry +- Setup/deployment changes → update user-docs/ +- Structure changes → update `DOCUMENTATION.md` +- Daily work → create/update progress log + +### Quality Checklist +- [ ] All file paths/references accurate +- [ ] Cross-references updated +- [ ] Naming conventions followed +- [ ] `DOCUMENTATION.md` updated if structure changed +- [ ] No broken links +- [ ] Code examples tested + +### Cross-Reference Maintenance +- Use relative paths: `docs/specs/EMBERDOCS-TECHNICAL-SPEC.md` +- When moving files, update ALL references (use `grep` to find) +- Update: README.md, DOCUMENTATION.md, planning docs, progress logs + +--- + ## Sync Instructions **These three files must always be in sync:** @@ -116,7 +154,7 @@ Every PR must include: **When updating standards:** - [ ] Update all three files with consistent changes -- [ ] Keep universal rules (DEVELOPMENT-STANDARDS.md section) identical across all three +- [ ] Keep universal rules (docs/guides/DEVELOPMENT-STANDARDS.md section) identical across all three - [ ] Project-specific overrides can be formatted differently per file - [ ] Include "Sync Instructions" section in each file @@ -126,3 +164,4 @@ Every PR must include: - New documentation requirement → add to all three - Architecture decision locked → add to ADL + all three files - Phase plan updated → reflect in guidelines +- Documentation structure/organization changed → update all three + DOCUMENTATION.md diff --git a/.env.example b/.env.example index 2f170e9..9dcd070 100644 --- a/.env.example +++ b/.env.example @@ -1,66 +1,55 @@ -# ============================================ # EmberDocs Configuration -# ============================================ -# Copy this file to .env.local and fill in your values -# Never commit .env.local to version control +# Copy this file to .env.local and customize as needed +# All variables are optional - EmberDocs works with sensible defaults -# ============================================ -# Content Configuration (Optional) -# ============================================ -# Directory where markdown documentation files are stored -# Default: docs/examples -# Examples: -# EMBERDOCS_CONTENT_DIR=docs/content # Files in docs/content/ folder -# EMBERDOCS_CONTENT_DIR=content # Files in content/ folder -# EMBERDOCS_CONTENT_DIR=pages # Files in pages/ folder -EMBERDOCS_CONTENT_DIR=docs/examples +# Branding (optional) +# Default product name is "EmberDocs" +EMBERDOCS_PRODUCT_NAME="EmberDocs" -# URL route prefix for documentation pages -# Default: /docs -# Examples: -# EMBERDOCS_BASE_ROUTE=/documentation # URLs: /documentation/getting-started/intro -# EMBERDOCS_BASE_ROUTE=/help # URLs: /help/getting-started/intro -# EMBERDOCS_BASE_ROUTE=/guides # URLs: /guides/getting-started/intro -EMBERDOCS_BASE_ROUTE=/docs +# Company or organization name (used in headers, metadata, and page titles) +# If set, page titles will be formatted as: {PRODUCT_NAME} - {COMPANY_NAME} Documentation +EMBERDOCS_COMPANY_NAME="Your Company Name" -# Show marketing landing page on root route (/) -# Default: false (root route redirects to documentation index) -# Set to 'true' to show the EmberDocs framework marketing landing page -# Only needed for the EmberDocs framework repository itself -# EMBERDOCS_SHOW_LANDING=true +# Default author name (used when document frontmatter doesn't specify an author) +EMBERDOCS_DEFAULT_AUTHOR="Your Name" -# ============================================ -# Branding & Metadata -# ============================================ -# Default author name for documents -# Used when a document's frontmatter doesn't specify an author -# If not set, author metadata will only appear if specified in document frontmatter -# EMBERDOCS_DEFAULT_AUTHOR=Your Company Name +# Primary URL for your company/product (used in links and metadata) +EMBERDOCS_PRIMARY_URL=https://your-url.com -# Company or organization name -# Used in headers, metadata, and page titles -# If not set, product name will be used alone -# EMBERDOCS_COMPANY_NAME=Your Company, Inc. - -# Product name -# Used in headers, metadata, and page titles -# Default: EmberDocs -# EMBERDOCS_PRODUCT_NAME=Your Product Name - -# Primary URL for the company/product -# Used in links, metadata, and footer -# EMBERDOCS_PRIMARY_URL=https://example.com - -# Logo path (relative to /public directory) +# Logo Configuration (optional) +# Path to your logo image (relative to /public directory) # Supported formats: PNG, SVG, JPG -# Example: /logos/my-logo.png +# Example: /logos/your-logo.png # EMBERDOCS_LOGO_PATH=/logos/your-logo.png +# Navigation Links (optional) +# Header navigation links as JSON object +# Format: {"Label": "URL", "Another Label": "Another URL"} +# External links must start with http:// or https:// +# Internal links start with / +# EMBERDOCS_HEADER_LINKS={"Docs": "/docs", "Features": "/#features", "GitHub": "https://github.com/yourorg"} + +# Footer Configuration (optional) # Footer text content (e.g., copyright notice) -# Example: "Your Company © 2025" -# EMBERDOCS_FOOTER_TEXT=Your Company © 2025 +# EMBERDOCS_FOOTER_TEXT="Your Company © 2025" -# Footer links as JSON object -# Format: {"Label": "URL", "Another Label": "Another URL"} -# Example: {"Privacy": "/privacy", "Terms": "/terms", "Contact": "/contact"} -# EMBERDOCS_FOOTER_LINKS={"Privacy": "/privacy", "Terms": "/terms"} +# Footer links as JSON object (same format as header links) +# EMBERDOCS_FOOTER_LINKS={"Privacy": "/privacy", "Terms": "/terms", "Contact": "/contact"} + +# Content Configuration (optional) +# Custom documentation content directory (default: docs/examples) +# EMBERDOCS_CONTENT_DIR=docs/examples + +# Custom documentation base route (default: /docs) +# URLs will be served at this path instead of /docs/* +# EMBERDOCS_BASE_ROUTE=/docs + +# Framework Mode (only for EmberDocs framework repository) +# Set to true to show the EmberDocs marketing landing page at root (/) +# Default: false (root redirects to /docs/index) +# EMBERDOCS_SHOW_LANDING=false + +# Theme Selection +# Choose the theme for both landing page and documentation pages +# Options: dark (default), light, monochrome +# EMBERDOCS_THEME=monochrome diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index a857c04..559384c 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -36,7 +36,7 @@ All tests must pass locally before submitting. Use the checklist below: Documentation is required for most PRs. Check the boxes that apply: ### Progress Log (Required for all PRs) -- [ ] Daily progress log created in `docs/progress/YYYY_MM_DD_progress.md` +- [ ] Daily progress log created in `dev-docs/progress/YYYY_MM_DD_progress.md` - Include: work summary, related PRs, any blockers, next steps **Example:** @@ -55,17 +55,17 @@ Documentation is required for most PRs. Check the boxes that apply: ``` ### Phase Plan Updates (If scope changed) -- [ ] `docs/planning/mvp_phase01of02.md` updated with deliverable changes (if applicable) -- [ ] `docs/planning/mvp_phase02of02.md` updated (if applicable) +- [ ] `dev-docs/planning/mvp_phase01of02.md` updated with deliverable changes (if applicable) +- [ ] `dev-docs/planning/mvp_phase02of02.md` updated (if applicable) - [ ] Exit criteria reviewed for go/no-go status **Example:** "Updated D1.3 acceptance criteria per feedback in #42" ### User-Facing Documentation (If UI/behavior changed) -- [ ] `user-docs/Setup.md` updated (setup/installation changes) -- [ ] `user-docs/Deployment.md` updated (deployment steps changed) -- [ ] `user-docs/Configuration.md` updated (new config options) -- [ ] `user-docs/Troubleshooting.md` updated (new error cases documented) +- [ ] `dev-docs/Setup.md` updated (setup/installation changes) +- [ ] `dev-docs/Deployment.md` updated (deployment steps changed) +- [ ] `dev-docs/Configuration.md` updated (new config options) +- [ ] `dev-docs/Troubleshooting.md` updated (new error cases documented) - [ ] `CHANGELOG.md` updated under `[Unreleased]` section ### Developer Documentation (If architecture/code structure changed) @@ -98,7 +98,7 @@ Alternatively, link to a Vercel preview: `https://emberdocs-pr-XX.vercel.app/` - [ ] All tests pass locally (`npm run check`) - [ ] No console errors/warnings in dev mode - [ ] Commit messages are clear and imperative (e.g., "Add error handling module") -- [ ] Progress log created in `docs/progress/` +- [ ] Progress log created in `dev-docs/progress/` - [ ] Relevant docs updated (user or developer) - [ ] Changelog updated under `[Unreleased]` - [ ] No unrelated changes (scope-focused) diff --git a/AGENTS.md b/AGENTS.md index 044f6ec..014f2bd 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -2,13 +2,13 @@ **IMPORTANT:** This file, `claude.md`, and `.cursorrules` must stay in sync. See "Sync Instructions" at bottom. -**For universal development standards applicable to any project, see:** `DEVELOPMENT-STANDARDS.md` +**For universal development standards applicable to any project, see:** `dev-docs/guides/DEVELOPMENT-STANDARDS.md` --- ## Universal Standards (Apply to All Projects) -See `DEVELOPMENT-STANDARDS.md` for comprehensive details on: +See `dev-docs/guides/DEVELOPMENT-STANDARDS.md` for comprehensive details on: - **Code Style:** TypeScript strict, Prettier, ESLint, naming conventions - **Testing:** Unit/integration/E2E pyramid, Jest, coverage targets ≥70% - **Git & Version Control:** Conventional Commits, branch strategy, semantic versioning @@ -45,9 +45,9 @@ npm run dev - [ ] Repo cloned and dependencies installed - [ ] Dev server running at http://localhost:3000 - [ ] All tests pass: `npm run check` -- [ ] Read `docs/QUICK-REFERENCE.md` (5 min) -- [ ] Reviewed Phase 01 deliverables in `docs/planning/mvp_phase01of02.md` -- [ ] Checked locked decisions in `docs/ARCHITECTURE-DECISIONS.md` +- [ ] Read `dev-docs/Quick-Reference.md` (5 min) +- [ ] Reviewed Phase 01 deliverables in `dev-docs/planning/mvp_phase01of02.md` +- [ ] Checked locked decisions in `dev-docs/guides/ARCHITECTURE-DECISIONS.md` - [ ] Configured Git user: `git config user.name "Your Name"` --- @@ -206,7 +206,7 @@ Describe what changed and why in 1–3 sentences. - [x] Manual testing in browser ## Documentation -- [x] Progress log created: `docs/progress/YYYY_MM_DD.md` +- [x] Progress log created: `dev-docs/progress/YYYY_MM_DD.md` - [x] CHANGELOG.md updated under `[Unreleased]` - [x] User docs updated (if UI changed) - [x] Developer docs updated (if architecture changed) @@ -270,7 +270,7 @@ git branch -d feature/search-indexing ### Progress Log (Required) -**File:** `docs/progress/YYYY_MM_DD.md` (e.g., `docs/progress/2025_12_24.md`) +**File:** `dev-docs/progress/YYYY_MM_DD.md` (e.g., `dev-docs/progress/2025_12_24.md`) **Template:** ```markdown @@ -313,7 +313,7 @@ git branch -d feature/search-indexing ### Architecture Decision (If applicable) -**File:** `docs/ARCHITECTURE-DECISIONS.md` +**File:** `dev-docs/guides/ARCHITECTURE-DECISIONS.md` If you made a major architectural decision, create an ADL entry: @@ -440,6 +440,100 @@ Use GitHub Discussions for: --- +## Documentation Maintenance + +**IMPORTANT:** Documentation must be kept up to date and well-organized. This is a requirement for all contributions. + +### Documentation Organization + +**Naming Conventions:** +- **Developer docs** (`dev-docs/`): ALL CAPS with hyphens for technical docs, Title Case for user guides + - Technical examples: `ARCHITECTURE-DECISIONS.md` (in `dev-docs/guides/`), `EMBERDOCS-TECHNICAL-SPEC.md` (in `dev-docs/specs/`) + - User guide examples: `Setup.md`, `Deployment.md`, `Quick-Reference.md` (in `dev-docs/`) +- **Example docs** (`docs/examples/`): kebab-case + - Examples: `getting-started.md`, `api-reference.md` + +**Directory Structure:** +- `dev-docs/specs/` - Technical specifications (EMBERDOCS-TECHNICAL-SPEC.md, EMBERDOCS-API-SPEC.md, etc.) +- `dev-docs/guides/` - Development guides (ARCHITECTURE-DECISIONS.md, DEVELOPMENT-STANDARDS.md, etc.) +- `dev-docs/planning/` - Phase plans and planning documents +- `dev-docs/progress/` - Daily progress logs (format: `YYYY_MM_DD.md` or `YYYY_MM_DD_description.md`) +- `dev-docs/` (root) - User guides and project overview docs (Setup.md, Deployment.md, Quick-Reference.md, PROJECT-OVERVIEW.md, etc.) +- `docs/examples/` - Example documentation files (user-facing sample docs) + +**Reference Documentation:** +- `DOCUMENTATION.md` at repository root provides complete documentation index +- Always update `DOCUMENTATION.md` when adding, moving, or renaming documentation files + +### When to Update Documentation + +**Always update documentation when:** +- Adding new features or changing existing functionality +- Making architectural decisions (create ADL entry in `dev-docs/guides/ARCHITECTURE-DECISIONS.md`) +- Changing setup or deployment processes +- Updating dependencies or tools +- Completing deliverables (update progress logs in `dev-docs/progress/`) +- Fixing bugs that affect user workflows + +**Specific documentation to update:** +- **Technical Specs** (`dev-docs/specs/`): When architecture, API, or system design changes +- **Architecture Decisions** (`dev-docs/guides/ARCHITECTURE-DECISIONS.md`): When making major technical decisions +- **Progress Logs** (`dev-docs/progress/`): Daily (end of work day) - required for all work sessions +- **User Docs** (`dev-docs/`): When features change or new setup steps added +- **README.md**: When project overview, quick start, or key features change +- **DOCUMENTATION.md**: When documentation structure changes (new files, moved files, renamed files) + +### Documentation Quality Checklist + +**Before committing documentation changes:** +- [ ] All file paths and references are accurate (use relative paths, not absolute) +- [ ] Cross-references between documents are updated +- [ ] Naming conventions are followed (ALL CAPS for dev docs, Title Case for user docs) +- [ ] `DOCUMENTATION.md` is updated if structure changed +- [ ] Progress log created if this is a work session (`dev-docs/progress/YYYY_MM_DD.md`) +- [ ] No broken links (verify with `grep` or link checker) +- [ ] Code examples are tested and accurate +- [ ] Screenshots/mockups are up to date (if applicable) + +### Cross-Reference Maintenance + +**Always maintain accurate cross-references:** +- Use relative paths: `dev-docs/specs/EMBERDOCS-TECHNICAL-SPEC.md` (not absolute paths) +- When moving files, update ALL references across the codebase +- Use `grep` to find all references before moving/renaming files: + ```bash + grep -r "old-filename" . --include="*.md" + ``` +- Update references in: README.md, DOCUMENTATION.md, planning docs, progress logs, and internal cross-references + +### Documentation Review Process + +**During code review, reviewers verify:** +- [ ] Documentation changes match code changes +- [ ] New features are documented +- [ ] Breaking changes are clearly marked +- [ ] Examples and code snippets are accurate +- [ ] Links and references work +- [ ] Progress log is created/updated + +**Before merging PR:** +- [ ] All documentation references are valid +- [ ] `DOCUMENTATION.md` reflects current structure +- [ ] No orphaned documentation files +- [ ] Documentation follows naming conventions + +### Documentation as Part of PR Requirements + +**Every PR must include:** +1. **Progress Log** - Create `dev-docs/progress/YYYY_MM_DD.md` with work summary +2. **Changelog** - Update `CHANGELOG.md` under `[Unreleased]` section +3. **Documentation Updates** - Update relevant docs (dev-docs/ if UI or architecture changed) +4. **DOCUMENTATION.md** - Update if documentation structure changed + +**See also:** Documentation Requirements section above for detailed templates. + +--- + ## Sync Instructions **These three files must always stay in sync:** @@ -460,17 +554,18 @@ Use GitHub Discussions for: - Architecture decision locked (also create ADL entry) - Phase plan updated - Git workflow changed +- Documentation structure/organization changed (also update DOCUMENTATION.md) --- ## Quick Links -- **Phase Plans:** `docs/planning/mvp_phase01of02.md`, `docs/planning/mvp_phase02of02.md` -- **Architecture Decisions:** `docs/ARCHITECTURE-DECISIONS.md` -- **Developer Cheat Sheet:** `docs/QUICK-REFERENCE.md` -- **Development Standards:** `DEVELOPMENT-STANDARDS.md` -- **Setup Guide:** `docs/DEV-SETUP-VERIFICATION.md` -- **Feature Dependencies:** `docs/FEATURE-DEPENDENCIES.md` +- **Phase Plans:** `dev-docs/planning/mvp_phase01of02.md`, `dev-docs/planning/mvp_phase02of02.md` +- **Architecture Decisions:** `dev-docs/guides/ARCHITECTURE-DECISIONS.md` +- **Developer Cheat Sheet:** `dev-docs/Quick-Reference.md` +- **Development Standards:** `dev-docs/guides/DEVELOPMENT-STANDARDS.md` +- **Setup Guide:** `dev-docs/guides/DEV-SETUP-VERIFICATION.md` +- **Feature Dependencies:** `dev-docs/guides/FEATURE-DEPENDENCIES.md` - **Changelog:** `CHANGELOG.md` - **PR Template:** `.github/PULL_REQUEST_TEMPLATE.md` @@ -478,10 +573,10 @@ Use GitHub Discussions for: ## Getting Help -- **Code Questions:** Check `docs/QUICK-REFERENCE.md` -- **Architecture Questions:** See `docs/ARCHITECTURE-DECISIONS.md` -- **Standards Questions:** Read `DEVELOPMENT-STANDARDS.md` or `claude.md` -- **Setup Issues:** Follow `docs/DEV-SETUP-VERIFICATION.md` +- **Code Questions:** Check `dev-docs/Quick-Reference.md` +- **Architecture Questions:** See `dev-docs/guides/ARCHITECTURE-DECISIONS.md` +- **Standards Questions:** Read `dev-docs/guides/DEVELOPMENT-STANDARDS.md` or `claude.md` +- **Setup Issues:** Follow `dev-docs/guides/DEV-SETUP-VERIFICATION.md` - **GitHub Issues:** Open an issue for bugs or feature requests - **GitHub Discussions:** Ask questions or discuss design - **Project Board:** View progress and blockers diff --git a/DOCUMENTATION.md b/DOCUMENTATION.md new file mode 100644 index 0000000..d09512c --- /dev/null +++ b/DOCUMENTATION.md @@ -0,0 +1,237 @@ +# EmberDocs Documentation Index + +**Last Updated:** 2026-01-02 +**Purpose:** Complete reference guide to all documentation in the EmberDocs repository + +--- + +## Quick Navigation + +- **[Developer Documentation](#developer-documentation)** - Technical specs, guides, and development resources +- **[User Documentation](#user-documentation)** - Setup, deployment, and usage guides +- **[Example Documentation](#example-documentation)** - Sample docs used for testing and demonstration +- **[Root-Level Documentation](#root-level-documentation)** - Project overview and contributor guidelines + +--- + +## Developer Documentation + +Located in `dev-docs/` - All developer-facing documentation including technical specs, guides, planning, and progress logs. + +### Technical Specifications (`dev-docs/specs/`) + +| Document | Description | Size | +|----------|-------------|------| +| [EMBERDOCS-TECHNICAL-SPEC.md](dev-docs/specs/EMBERDOCS-TECHNICAL-SPEC.md) | Complete technical overview, architecture, and system design | ~28KB | +| [EMBERDOCS-API-SPEC.md](dev-docs/specs/EMBERDOCS-API-SPEC.md) | REST and GraphQL API endpoints and contracts | ~17KB | +| [EMBERDOCS-DATABASE-SCHEMA.md](dev-docs/specs/EMBERDOCS-DATABASE-SCHEMA.md) | PostgreSQL schema with Prisma ORM (for premium features) | ~26KB | +| [EMBERDOCS-ROADMAP.md](dev-docs/specs/EMBERDOCS-ROADMAP.md) | 16-week development timeline and phased plan | ~18KB | + +### Development Guides (`dev-docs/guides/`) + +| Document | Description | Purpose | +|----------|-------------|---------| +| [ARCHITECTURE-DECISIONS.md](dev-docs/guides/ARCHITECTURE-DECISIONS.md) | Architecture Decision Log (ADL) - "Why" behind major technical choices | Reference locked decisions | +| [DEVELOPMENT-STANDARDS.md](dev-docs/guides/DEVELOPMENT-STANDARDS.md) | Universal development standards (code style, testing, Git workflow) | Coding guidelines | +| [DEV-SETUP-VERIFICATION.md](dev-docs/guides/DEV-SETUP-VERIFICATION.md) | Local environment setup checklist and verification steps | Onboarding | +| [FEATURE-DEPENDENCIES.md](dev-docs/guides/FEATURE-DEPENDENCIES.md) | Dependency graphs, critical path analysis, risk matrix | Planning | + +### Planning Documents (`dev-docs/planning/`) + +| Document | Description | +|----------|-------------| +| [mvp_phase01of02.md](dev-docs/planning/mvp_phase01of02.md) | Phase 01 detailed deliverables (D1.1-D1.9) | +| [mvp_phase02of02.md](dev-docs/planning/mvp_phase02of02.md) | Phase 02 detailed deliverables (D2.1-D2.9) | +| [cli_tool_implementation.md](dev-docs/planning/cli_tool_implementation.md) | CLI tool design and implementation plan | +| [deferred_frontmatter_ui_editor.md](dev-docs/planning/deferred_frontmatter_ui_editor.md) | Deferred feature documentation | + +### Progress Logs (`dev-docs/progress/`) + +Daily work logs following format: `YYYY_MM_DD.md` or `YYYY_MM_DD_description.md` + +**Recent logs:** +- [2025_12_27.md](dev-docs/progress/2025_12_27.md) +- [2025_12_24.md](dev-docs/progress/2025_12_24.md) +- [2025_12_24_ux_improvements.md](dev-docs/progress/2025_12_24_ux_improvements.md) +- [2025_12_23_progress.md](dev-docs/progress/2025_12_23_progress.md) + +### Other Developer Docs (`dev-docs/`) + +| Document | Description | +|----------|-------------| +| [PROJECT-OVERVIEW.md](dev-docs/PROJECT-OVERVIEW.md) | Complete package overview and quick start guide | +| [USER-STORIES.md](dev-docs/USER-STORIES.md) | User personas and stories | +| [EMBERDOCS-LICENSING.md](dev-docs/EMBERDOCS-LICENSING.md) | Licensing model and terms | +| [ACCESSIBILITY-AUDIT.md](dev-docs/ACCESSIBILITY-AUDIT.md) | Accessibility audit results and compliance | +| [Setup.md](dev-docs/Setup.md) | Installation and initial configuration | +| [Deployment.md](dev-docs/Deployment.md) | Production deployment instructions | +| [Quick-Reference.md](dev-docs/Quick-Reference.md) | Developer cheat sheet (common commands, patterns, FAQ) | + +--- + +## User Documentation + +Located in `dev-docs/` - Setup, deployment, and usage guides for developers and end users. + +**Note:** User documentation is now located in `dev-docs/` alongside developer documentation. The distinction is: +- **Developer docs** (specs/, guides/, planning/, progress/): Technical documentation for contributors +- **User docs** (Setup.md, Deployment.md, Quick-Reference.md): Guides for using and deploying EmberDocs + +**Naming Convention:** Title Case (e.g., `Setup.md`, `Deployment.md`, `Quick-Reference.md`) + +--- + +## Example Documentation + +Located in `docs/examples/` - Sample documentation files used for testing and demonstration. + +These files are served as example content in the documentation site and follow standard markdown with YAML frontmatter. + +**Structure:** +- `docs/examples/index.md` - Homepage +- `docs/examples/getting-started/` - Getting started guides +- `docs/examples/guides/` - Usage guides +- `docs/examples/api-reference/` - API reference documentation +- `docs/examples/deep/` - Deep nesting examples + +**Note:** These are example files, not developer documentation. They demonstrate how users would structure their own documentation. + +--- + +## Root-Level Documentation + +Project overview and contributor guidelines at repository root. + +| Document | Description | Audience | +|----------|-------------|----------| +| [README.md](README.md) | Project overview, quick start, features | Everyone | +| [AGENTS.md](AGENTS.md) | Contributing guidelines and workflow | Contributors | +| [claude.md](claude.md) | Detailed contributor guidelines | Contributors | +| [CHANGELOG.md](CHANGELOG.md) | Version history and changes | Everyone | +| [NOTICES.md](NOTICES.md) | Third-party license notices | Legal/Compliance | +| [LICENSE](LICENSE) | Core framework license | Everyone | + +--- + +## Brand & Design Documentation + +Located in `brand/` and `mockups/` directories. + +### Brand (`brand/`) + +| Document | Description | +|----------|-------------| +| [EMBERDOCS-STYLE-GUIDE.md](brand/EMBERDOCS-STYLE-GUIDE.md) | Complete design system (colors, typography, components) | +| [emberdocs-brand-guidelines.md](brand/emberdocs-brand-guidelines.md) | Logo usage and brand identity | + +### Mockups (`mockups/`) + +| Directory | Description | +|-----------|-------------| +| `mockups/ui/` | Application UI screen designs | +| `mockups/landing/` | Marketing landing page variations | +| `mockups/bw/` | Black and white mockups | + +See [UI-MOCKUPS-GUIDE.md](mockups/ui/UI-MOCKUPS-GUIDE.md) and [LANDING-MOCKUPS-GUIDE.md](mockups/landing/LANDING-MOCKUPS-GUIDE.md) for details. + +--- + +## Naming Conventions + +### Developer Documentation (`dev-docs/`) + +**Format:** ALL CAPS with hyphens +**Examples:** +- `ARCHITECTURE-DECISIONS.md` +- `DEVELOPMENT-STANDARDS.md` +- `EMBERDOCS-TECHNICAL-SPEC.md` +- `EMBERDOCS-API-SPEC.md` + +**Organization:** +- `dev-docs/specs/` - Technical specifications +- `dev-docs/guides/` - Development guides +- `dev-docs/planning/` - Phase plans and planning docs +- `dev-docs/progress/` - Daily progress logs + +### User Documentation (`dev-docs/`) + +**Format:** Title Case with hyphens +**Examples:** +- `Setup.md` +- `Deployment.md` +- `Quick-Reference.md` + +### Example Documentation (`docs/examples/`) + +**Format:** kebab-case (standard markdown naming) +**Examples:** +- `getting-started.md` +- `basic-usage.md` +- `api-reference.md` + +--- + +## Finding Documentation + +### By Purpose + +**Getting Started:** +1. [README.md](README.md) - Project overview +2. [dev-docs/Setup.md](dev-docs/Setup.md) - Installation +3. [dev-docs/Quick-Reference.md](dev-docs/Quick-Reference.md) - Common commands + +**Understanding Architecture:** +1. [dev-docs/specs/EMBERDOCS-TECHNICAL-SPEC.md](dev-docs/specs/EMBERDOCS-TECHNICAL-SPEC.md) - System design +2. [dev-docs/guides/ARCHITECTURE-DECISIONS.md](dev-docs/guides/ARCHITECTURE-DECISIONS.md) - Decision log +3. [dev-docs/specs/EMBERDOCS-API-SPEC.md](dev-docs/specs/EMBERDOCS-API-SPEC.md) - API design + +**Contributing:** +1. [AGENTS.md](AGENTS.md) - Contributing workflow +2. [dev-docs/guides/DEVELOPMENT-STANDARDS.md](dev-docs/guides/DEVELOPMENT-STANDARDS.md) - Coding standards +3. [dev-docs/guides/DEV-SETUP-VERIFICATION.md](dev-docs/guides/DEV-SETUP-VERIFICATION.md) - Setup verification + +**Planning:** +1. [dev-docs/specs/EMBERDOCS-ROADMAP.md](dev-docs/specs/EMBERDOCS-ROADMAP.md) - Development timeline +2. [dev-docs/planning/mvp_phase01of02.md](dev-docs/planning/mvp_phase01of02.md) - Phase 01 plan +3. [dev-docs/guides/FEATURE-DEPENDENCIES.md](dev-docs/guides/FEATURE-DEPENDENCIES.md) - Dependency analysis + +--- + +## Documentation Maintenance + +### When to Update + +- **Technical Specs** (`dev-docs/specs/`): When architecture or API changes +- **Architecture Decisions** (`dev-docs/guides/ARCHITECTURE-DECISIONS.md`): When making major technical decisions +- **Progress Logs** (`dev-docs/progress/`): Daily (end of work day) +- **User Docs** (`dev-docs/`): When features change or new setup steps added +- **README.md**: When project overview or quick start changes + +### Cross-References + +All documentation should cross-reference related documents. Use relative paths: +- `dev-docs/specs/EMBERDOCS-TECHNICAL-SPEC.md` +- `dev-docs/guides/ARCHITECTURE-DECISIONS.md` +- `dev-docs/Quick-Reference.md` + +--- + +## Quick Reference + +**Most Frequently Used:** +- [README.md](README.md) - Start here +- [dev-docs/Quick-Reference.md](dev-docs/Quick-Reference.md) - Developer cheat sheet +- [dev-docs/guides/ARCHITECTURE-DECISIONS.md](dev-docs/guides/ARCHITECTURE-DECISIONS.md) - Locked decisions +- [AGENTS.md](AGENTS.md) - Contributing guidelines + +**For New Contributors:** +1. Read [README.md](README.md) +2. Follow [dev-docs/guides/DEV-SETUP-VERIFICATION.md](dev-docs/guides/DEV-SETUP-VERIFICATION.md) +3. Review [AGENTS.md](AGENTS.md) +4. Bookmark [dev-docs/Quick-Reference.md](dev-docs/Quick-Reference.md) + +--- + +**Last Updated:** 2026-01-02 +**Maintained by:** EmberDocs Team + diff --git a/README.md b/README.md index 186e9c0..4cee398 100644 --- a/README.md +++ b/README.md @@ -11,26 +11,27 @@ ## 🚀 Quick Start +Get up and running in typically 2 minutes (with Node.js 18+ installed): + ```bash # Clone the repository git clone https://github.com/sturdy-barnacle/emberdocs.git cd emberdocs -# Install dependencies +# Install dependencies (~1-2 minutes) npm install -# Set up environment variables (optional) +# Configure (optional - EmberDocs works with defaults) cp .env.example .env.local -# Build search index -npm run build:search - -# Run development server +# Start development server npm run dev ``` Visit `http://localhost:3000` to see your documentation site. +**Note:** The search index is automatically built during production builds (`npm run build`). For development, you can manually build it with `npm run build:search` if needed, but it's not required to get started. + **Note:** By default, the root route (`/`) redirects to your documentation index. To show the EmberDocs framework marketing landing page, set `EMBERDOCS_SHOW_LANDING=true` in `.env.local`. ### Custom Documentation Content Directory @@ -69,13 +70,14 @@ EMBERDOCS_BASE_ROUTE=/documentation # URLs at /documentation/* EmberDocs is a modern documentation framework designed for developers who want: -- **Git-Native Versioning** - Automatic version detection from Git tags -- **Instant Search** - <50ms FlexSearch with ⌘K shortcuts +- **Git-Native Versioning** - Version detection from Git tags (routing planned for Phase 02) +- **Instant Search** - <50ms for typical queries (FlexSearch with ⌘K shortcuts) - **Dark Theme First** - Developer-focused dark UI with light mode support - **Mobile Optimized** - Touch-optimized responsive design -- **Zero Config** - 30-second setup time +- **Zero Config** - Typically 2-minute setup time (with Node.js 18+ installed) - **Privacy First** - No third-party trackers - **Free Forever** - Core framework free to self-host +- **Theme Options** - Choose between dark (default), light, or monochrome theme via `EMBERDOCS_THEME` --- @@ -85,9 +87,7 @@ EmberDocs is a modern documentation framework designed for developers who want: |-------|-----------| | **Frontend** | Next.js 16+, React 18+, TypeScript 5+ | | **Styling** | Tailwind CSS 3+ | -| **Database** | PostgreSQL 14+, Prisma ORM | | **Search** | FlexSearch (client-side) | -| **Cache** | Redis (optional) | | **Deployment** | Vercel, Netlify, or self-hosted | --- @@ -96,16 +96,28 @@ EmberDocs is a modern documentation framework designed for developers who want: ``` emberdocs/ -├── docs/ # 📋 Project documentation -│ ├── PROJECT-OVERVIEW.md # Complete package overview -│ ├── emberdocs-technical-spec.md -│ ├── emberdocs-database-schema.md -│ ├── emberdocs-api-spec.md -│ ├── emberdocs-roadmap.md +├── docs/ # 📋 Example documentation (user-facing) +│ └── examples/ # Sample docs for testing/demonstration +├── dev-docs/ # 💻 Developer documentation +│ ├── specs/ # Technical specifications +│ │ ├── EMBERDOCS-TECHNICAL-SPEC.md +│ │ ├── EMBERDOCS-DATABASE-SCHEMA.md +│ │ ├── EMBERDOCS-API-SPEC.md +│ │ └── EMBERDOCS-ROADMAP.md +│ ├── guides/ # Development guides +│ │ ├── ARCHITECTURE-DECISIONS.md +│ │ ├── DEVELOPMENT-STANDARDS.md +│ │ ├── DEV-SETUP-VERIFICATION.md +│ │ └── FEATURE-DEPENDENCIES.md │ ├── planning/ # Phase plans (e.g., mvp_phase01of02.md) │ ├── progress/ # Daily progress logs +│ ├── PROJECT-OVERVIEW.md # Complete package overview │ ├── USER-STORIES.md # User stories & personas -│ └── EMBERDOCS-LICENSING.md +│ ├── EMBERDOCS-LICENSING.md # Licensing model +│ ├── ACCESSIBILITY-AUDIT.md # Accessibility audit results +│ ├── Setup.md # Installation guide +│ ├── Deployment.md # Deployment guide +│ └── Quick-Reference.md # Developer cheat sheet ├── brand/ # 🎨 Brand & design system │ ├── emberdocs-brand-guidelines.md │ └── EMBERDOCS-STYLE-GUIDE.md @@ -113,7 +125,7 @@ emberdocs/ │ ├── landing/ # Landing page variations │ └── ui/ # Application UI screens ├── logos/ # 🔥 Logo assets -└── src/ # 💻 Source code (coming soon) +└── src/ # 💻 Source code ``` --- @@ -122,11 +134,11 @@ emberdocs/ ### For Developers -- **[Technical Specification](docs/emberdocs-technical-spec.md)** - Complete technical overview -- **[Database Schema](docs/emberdocs-database-schema.md)** - Data models and storage -- **[API Specification](docs/emberdocs-api-spec.md)** - REST and GraphQL endpoints -- **[Roadmap](docs/emberdocs-roadmap.md)** - Phased development plan -- **[User Stories](docs/USER-STORIES.md)** - User personas and stories +- **[Technical Specification](dev-docs/specs/EMBERDOCS-TECHNICAL-SPEC.md)** - Complete technical overview +- **[Database Schema](dev-docs/specs/EMBERDOCS-DATABASE-SCHEMA.md)** - Data models and storage +- **[API Specification](dev-docs/specs/EMBERDOCS-API-SPEC.md)** - REST and GraphQL endpoints +- **[Roadmap](dev-docs/specs/EMBERDOCS-ROADMAP.md)** - Phased development plan +- **[User Stories](dev-docs/USER-STORIES.md)** - User personas and stories ### For Designers @@ -137,8 +149,8 @@ emberdocs/ ### For Contributors -- **[Development Roadmap](docs/emberdocs-roadmap.md)** - 16-week development timeline -- **[Licensing](docs/EMBERDOCS-LICENSING.md)** - Proprietary core license (source-available) +- **[Development Roadmap](dev-docs/specs/EMBERDOCS-ROADMAP.md)** - 16-week development timeline +- **[Licensing](dev-docs/EMBERDOCS-LICENSING.md)** - Proprietary core license (source-available) --- @@ -147,7 +159,7 @@ emberdocs/ ### Core Features - ✅ Markdown & MDX support - ✅ Git-based versioning -- ✅ Full-text search (<50ms) +- ✅ Full-text search (<50ms for typical queries) - ✅ Dark/light themes - ✅ Mobile responsive - ✅ Code syntax highlighting @@ -164,12 +176,12 @@ emberdocs/ ## 📊 Performance Targets -| Metric | Target | -|--------|--------| -| Search Response | <50ms | -| Initial Load (TTI) | <1s | -| Build Time | <1s per page | -| Lighthouse Score | 100/100/100/100 | +| Metric | Target | Current | +|--------|--------|---------| +| Search Response | <50ms (typical) | <50ms for typical queries | +| Initial Load (TTI) | <1s | - | +| Build Time | <1s per page | ~30s for 1000 docs | +| Lighthouse Score | 100/100/100/100 | ~90 accessibility, ~85 performance | --- @@ -182,9 +194,9 @@ Core documentation engine with markdown parsing, basic search, and dark mode. Multi-version support, advanced search, mobile navigation, and CLI tool. ### **v1.0** (Weeks 13-16) -Performance optimization, component library, and hosted service. +Performance optimization and hosted service. -👉 **[View Detailed Roadmap](docs/emberdocs-roadmap.md)** +👉 **[View Detailed Roadmap](dev-docs/specs/EMBERDOCS-ROADMAP.md)** --- @@ -193,28 +205,27 @@ Performance optimization, component library, and hosted service. - **Core Framework:** Proprietary source-available license (free to use and self-host; redistribution is not permitted) - **Hosted Service:** Proprietary (optional premium offering) -See **[EMBERDOCS-LICENSING.md](docs/EMBERDOCS-LICENSING.md)** for details. +See **[EMBERDOCS-LICENSING.md](dev-docs/EMBERDOCS-LICENSING.md)** for details. --- ## 🤝 Contributing -We welcome contributions! Here's how to get started: +We welcome your feedback and bug reports! The best way to contribute is by submitting Issues: -1. **Read the docs** - Start with [PROJECT-OVERVIEW.md](docs/PROJECT-OVERVIEW.md) -2. **Review the roadmap** - Check [emberdocs-roadmap.md](docs/emberdocs-roadmap.md) -3. **Pick a user story** - See [USER-STORIES.md](docs/USER-STORIES.md) -4. **Fork & submit PR** - Follow our coding standards +- **Bug Reports** - Found a bug? [Open an issue](https://github.com/sturdy-barnacle/emberdocs/issues/new?template=bug_report.md) +- **Feature Requests** - Have an idea? [Suggest a feature](https://github.com/sturdy-barnacle/emberdocs/issues/new?template=feature_request.md) +- **Documentation** - Found an error or have a suggestion? [Report it](https://github.com/sturdy-barnacle/emberdocs/issues/new) +- **Questions** - Use [GitHub Discussions](https://github.com/sturdy-barnacle/emberdocs/discussions) for questions and community discussion ### Development Setup +If you'd like to contribute code, here's how to set up your development environment: + ```bash # Install dependencies npm install -# Set up database -npm run db:setup - # Run tests npm test @@ -222,6 +233,8 @@ npm test npm run dev ``` +**Note:** By submitting code contributions, you grant us a license to use your contribution as part of EmberDocs under our proprietary license. See [LICENSE](LICENSE) section 4 for details. + --- ## 🌟 Design Philosophy @@ -248,7 +261,6 @@ Built with: - [Next.js](https://nextjs.org/) - React framework - [Tailwind CSS](https://tailwindcss.com/) - Utility-first CSS - [FlexSearch](https://github.com/nextapps-de/flexsearch) - Full-text search -- [Prisma](https://www.prisma.io/) - Database ORM --- diff --git a/claude.md b/claude.md index 9b8a2d7..fb75dcf 100644 --- a/claude.md +++ b/claude.md @@ -2,13 +2,13 @@ **IMPORTANT:** This file, `.cursorrules`, and `AGENTS.md` must stay in sync. See "Sync Instructions" at bottom. -**For universal development standards applicable to any project, see:** `DEVELOPMENT-STANDARDS.md` +**For universal development standards applicable to any project, see:** `dev-docs/guides/DEVELOPMENT-STANDARDS.md` --- ## Universal Standards (Apply to All Projects) -See `DEVELOPMENT-STANDARDS.md` for comprehensive details on: +See `dev-docs/guides/DEVELOPMENT-STANDARDS.md` for comprehensive details on: - **Philosophy & Principles:** Clarity over cleverness, DRY, YAGNI, fail fast, documentation as code - **Code Organization:** Directory structure, module organization, functional cohesion - **Coding Style:** TypeScript strict mode, naming conventions (PascalCase/camelCase/kebab-case), formatting (Prettier, ESLint) @@ -45,8 +45,8 @@ src/ ├── components/ # React components (common, layout, features) └── styles/ # Global CSS, design tokens, Tailwind config -docs/ # Developer documentation (docs/planning, docs/progress) -user-docs/ # User guides (setup, deployment, troubleshooting) +docs/ # Example documentation (docs/examples/ only) +dev-docs/ # Developer documentation (specs/, guides/, planning/, progress/, and user guides) brand/ # Design assets, logos, style guide ``` @@ -55,15 +55,15 @@ brand/ # Design assets, logos, style guide - `src/lib/navigation.ts` — Navigation generator - `src/lib/search.ts` — Search indexing - `src/app/docs/[...slug]/page.tsx` — Doc page renderer -- `docs/ARCHITECTURE-DECISIONS.md` — Locked decisions (ADL-001 through ADL-012) -- `docs/QUICK-REFERENCE.md` — Developer cheat sheet +- `dev-docs/guides/ARCHITECTURE-DECISIONS.md` — Locked decisions (ADL-001 through ADL-012) +- `dev-docs/Quick-Reference.md` — Developer cheat sheet ### Development Workflow **Before starting work:** -1. Read `docs/QUICK-REFERENCE.md` (5 min overview) -2. Understand Phase 01 deliverables in `docs/planning/mvp_phase01of02.md` -3. Check `docs/ARCHITECTURE-DECISIONS.md` for locked decisions +1. Read `dev-docs/Quick-Reference.md` (5 min overview) +2. Understand Phase 01 deliverables in `dev-docs/planning/mvp_phase01of02.md` +3. Check `dev-docs/guides/ARCHITECTURE-DECISIONS.md` for locked decisions **While coding:** ```bash @@ -124,7 +124,7 @@ export function parse(x: any): any { Each PR must include: -1. **Progress Log** — Create `docs/progress/YYYY_MM_DD.md` +1. **Progress Log** — Create `dev-docs/progress/YYYY_MM_DD.md` ```markdown # Progress: 2025-12-24 ## Summary @@ -151,7 +151,7 @@ Each PR must include: - Automatic TOC generation from headings ``` -3. **Architecture Decision** — If major decision made, create ADL entry in `docs/ARCHITECTURE-DECISIONS.md` +3. **Architecture Decision** — If major decision made, create ADL entry in `dev-docs/guides/ARCHITECTURE-DECISIONS.md` ```markdown ## ADL-XXX: [Decision Title] **Date:** YYYY-MM-DD @@ -162,7 +162,7 @@ Each PR must include: **Consequences:** [Pros/cons] ``` -4. **User Docs** — If UI/behavior changed, update `user-docs/` +4. **User Docs** — If UI/behavior changed, update `dev-docs/` 5. **Developer Docs** — If architecture changed, update `docs/` ### Testing Standards @@ -259,7 +259,7 @@ These decisions are fixed for Phase 01–02. Follow them: - **ADL-011:** Hybrid testing (TDD for D1.1; implement-then-test for D1.2–D1.4) - **ADL-012:** WCAG 2.1 Level AA accessibility (US ADA + EU compliance) -See `docs/ARCHITECTURE-DECISIONS.md` for full context. +See `dev-docs/guides/ARCHITECTURE-DECISIONS.md` for full context. ### Design & Branding @@ -270,6 +270,87 @@ See `docs/ARCHITECTURE-DECISIONS.md` for full context. --- +## Documentation Maintenance + +**IMPORTANT:** Keep all documentation up to date and well-organized. Documentation is a first-class citizen in this project. + +### Documentation Organization Standards + +**Naming Conventions:** +- **Developer docs** (`dev-docs/`): ALL CAPS with hyphens for technical docs (e.g., `ARCHITECTURE-DECISIONS.md`, `EMBERDOCS-TECHNICAL-SPEC.md`), Title Case for user guides (e.g., `Setup.md`, `Quick-Reference.md`) +- **Example docs** (`docs/examples/`): kebab-case (e.g., `getting-started.md`, `api-reference.md`) + +**Directory Structure:** +- `dev-docs/specs/` - Technical specifications (EMBERDOCS-TECHNICAL-SPEC.md, EMBERDOCS-API-SPEC.md, etc.) +- `dev-docs/guides/` - Development guides (ARCHITECTURE-DECISIONS.md, DEVELOPMENT-STANDARDS.md, etc.) +- `dev-docs/planning/` - Phase plans and planning documents +- `dev-docs/progress/` - Daily progress logs (YYYY_MM_DD.md format) +- `dev-docs/` (root) - User guides and project overview docs (Setup.md, Deployment.md, Quick-Reference.md, PROJECT-OVERVIEW.md, etc.) +- `docs/examples/` - Example documentation files (user-facing sample docs) + +**Reference Documentation:** +- `DOCUMENTATION.md` at repository root provides complete documentation index +- Always update `DOCUMENTATION.md` when adding, moving, or renaming documentation files + +### When to Update Documentation + +**Always update when:** +- Adding new features or changing existing functionality +- Making architectural decisions (create ADL entry in `dev-docs/guides/ARCHITECTURE-DECISIONS.md`) +- Changing setup or deployment processes +- Updating dependencies or tools +- Completing deliverables (update progress logs) +- Fixing bugs that affect user workflows + +**Update specific docs:** +- **Technical Specs** (`dev-docs/specs/`): When architecture, API, or system design changes +- **Architecture Decisions** (`dev-docs/guides/ARCHITECTURE-DECISIONS.md`): When making major technical decisions +- **Progress Logs** (`dev-docs/progress/`): Daily (end of work day) - use format `YYYY_MM_DD.md` +- **User Docs** (`dev-docs/`): When features change or new setup steps added +- **README.md**: When project overview, quick start, or key features change +- **DOCUMENTATION.md**: When documentation structure changes (new files, moved files, renamed files) + +### Documentation Quality Checklist + +Before committing documentation changes: +- [ ] All file paths and references are accurate (use relative paths) +- [ ] Cross-references between documents are updated +- [ ] Naming conventions are followed (ALL CAPS for dev docs, Title Case for user docs) +- [ ] `DOCUMENTATION.md` is updated if structure changed +- [ ] Progress log created if this is a work session +- [ ] No broken links (verify with `grep` or link checker) +- [ ] Code examples are tested and accurate +- [ ] Screenshots/mockups are up to date (if applicable) + +### Cross-Reference Maintenance + +**Always maintain accurate cross-references:** +- Use relative paths: `dev-docs/specs/EMBERDOCS-TECHNICAL-SPEC.md` (not absolute paths) +- When moving files, update ALL references across the codebase +- Use `grep` to find all references before moving/renaming files: + ```bash + grep -r "old-filename" . --include="*.md" + ``` +- Update references in: README.md, DOCUMENTATION.md, planning docs, progress logs, and internal cross-references + +### Documentation Review Process + +**During code review, verify:** +- [ ] Documentation changes match code changes +- [ ] New features are documented +- [ ] Breaking changes are clearly marked +- [ ] Examples and code snippets are accurate +- [ ] Links and references work +- [ ] Progress log is created/updated + +**Before merging:** +- [ ] All documentation references are valid +- [ ] `DOCUMENTATION.md` reflects current structure +- [ ] No orphaned documentation files +- [ ] Documentation follows naming conventions + +--- + ## Sync Instructions **These three files must always stay in sync:** @@ -284,8 +365,9 @@ See `docs/ARCHITECTURE-DECISIONS.md` for full context. - Include sync instructions in each file **Changes requiring sync:** -- New coding style rule → add to all three + DEVELOPMENT-STANDARDS.md +- New coding style rule → add to all three + dev-docs/guides/DEVELOPMENT-STANDARDS.md - New tool/dependency → add to all three - New documentation requirement → add to all three -- Architecture decision locked → create ADL entry + update all three + DEVELOPMENT-STANDARDS.md +- Architecture decision locked → create ADL entry + update all three + dev-docs/guides/DEVELOPMENT-STANDARDS.md - Phase plan updated → reflect in all three +- Documentation structure/organization changed → update all three + DOCUMENTATION.md diff --git a/docs/accessibility-audit.md b/dev-docs/ACCESSIBILITY-AUDIT.md similarity index 100% rename from docs/accessibility-audit.md rename to dev-docs/ACCESSIBILITY-AUDIT.md diff --git a/user-docs/Deployment.md b/dev-docs/Deployment.md similarity index 85% rename from user-docs/Deployment.md rename to dev-docs/Deployment.md index 373c9f8..63d679e 100644 --- a/user-docs/Deployment.md +++ b/dev-docs/Deployment.md @@ -23,9 +23,9 @@ npm run build ## Versioning & Releases - Tag releases with `vX.Y.Z` to align with git-native versioning and doc routing once implemented. -- Keep `docs/planning/` and `docs/progress/` updated; link the relevant entries in your release notes/PR. +- Keep `dev-docs/planning/` and `dev-docs/progress/` updated; link the relevant entries in your release notes/PR. ## Post-Deploy Checks - Smoke-test navigation, search, and version selector (if enabled). - Verify env-flagged integrations behave correctly when missing or disabled. -- Record deploy outcomes and any incidents in `docs/progress/` for the deployment day. +- Record deploy outcomes and any incidents in `dev-docs/progress/` for the deployment day. diff --git a/docs/EMBERDOCS-LICENSING.md b/dev-docs/EMBERDOCS-LICENSING.md similarity index 100% rename from docs/EMBERDOCS-LICENSING.md rename to dev-docs/EMBERDOCS-LICENSING.md diff --git a/docs/PROJECT-OVERVIEW.md b/dev-docs/PROJECT-OVERVIEW.md similarity index 77% rename from docs/PROJECT-OVERVIEW.md rename to dev-docs/PROJECT-OVERVIEW.md index 84c71e3..df6db41 100644 --- a/docs/PROJECT-OVERVIEW.md +++ b/dev-docs/PROJECT-OVERVIEW.md @@ -17,13 +17,28 @@ This folder contains everything you need to build EmberDocs, a modern documentat ``` emberdocs-complete/ ├── README.md # This file - start here -├── docs/ # Technical specifications -│ ├── emberdocs-technical-spec.md -│ ├── emberdocs-database-schema.md -│ ├── emberdocs-api-spec.md -│ ├── emberdocs-roadmap.md -│ ├── EMBERDOCS-LICENSING.md -│ └── LICENSING-UPDATE-SUMMARY.md +├── docs/ # Example documentation (user-facing) +│ └── examples/ # Sample docs for testing/demonstration +├── dev-docs/ # Developer documentation +│ ├── specs/ # Technical specifications +│ │ ├── EMBERDOCS-TECHNICAL-SPEC.md +│ │ ├── EMBERDOCS-DATABASE-SCHEMA.md +│ │ ├── EMBERDOCS-API-SPEC.md +│ │ └── EMBERDOCS-ROADMAP.md +│ ├── guides/ # Development guides +│ │ ├── ARCHITECTURE-DECISIONS.md +│ │ ├── DEVELOPMENT-STANDARDS.md +│ │ ├── DEV-SETUP-VERIFICATION.md +│ │ └── FEATURE-DEPENDENCIES.md +│ ├── planning/ # Phase plans +│ ├── progress/ # Daily progress logs +│ ├── PROJECT-OVERVIEW.md # This file +│ ├── USER-STORIES.md # User personas +│ ├── EMBERDOCS-LICENSING.md # Licensing model +│ ├── ACCESSIBILITY-AUDIT.md # Accessibility audit +│ ├── Setup.md # Installation guide +│ ├── Deployment.md # Deployment guide +│ └── Quick-Reference.md # Developer cheat sheet ├── brand/ # Brand identity & design system │ ├── emberdocs-brand-guidelines.md │ └── EMBERDOCS-STYLE-GUIDE.md @@ -57,9 +72,9 @@ Start with the technical spec to understand what you're building. ### 2. Review Technical Architecture Read in this order: -1. `docs/emberdocs-technical-spec.md` - Complete technical overview -2. `docs/emberdocs-database-schema.md` - Data models and storage -3. `docs/emberdocs-api-spec.md` - API endpoints and contracts +1. `dev-docs/specs/EMBERDOCS-TECHNICAL-SPEC.md` - Complete technical overview +2. `dev-docs/specs/EMBERDOCS-DATABASE-SCHEMA.md` - Data models and storage +3. `dev-docs/specs/EMBERDOCS-API-SPEC.md` - API endpoints and contracts ### 3. Understand the Design 1. `brand/EMBERDOCS-STYLE-GUIDE.md` - Colors, typography, components @@ -67,8 +82,8 @@ Read in this order: 3. Open the HTML mockups in your browser to see the UI ### 4. Plan Development -1. `docs/emberdocs-roadmap.md` - 16-week development timeline -2. `docs/EMBERDOCS-LICENSING.md` - Licensing model details +1. `dev-docs/specs/EMBERDOCS-ROADMAP.md` - 16-week development timeline +2. `dev-docs/EMBERDOCS-LICENSING.md` - Licensing model details ### 5. Start Building Use the mockups and technical specs to begin implementation. @@ -77,9 +92,9 @@ Use the mockups and technical specs to begin implementation. ## 📋 Complete Document Index -### Technical Documentation (`/docs`) +### Technical Documentation (`/dev-docs`) -**emberdocs-technical-spec.md** (28KB) +**specs/EMBERDOCS-TECHNICAL-SPEC.md** (28KB) - Product overview and philosophy - Core features and capabilities - Technology stack (Next.js, TypeScript, PostgreSQL, FlexSearch) @@ -88,21 +103,21 @@ Use the mockups and technical specs to begin implementation. - CLI tool design - Performance targets (<50ms search, <1s builds) -**emberdocs-database-schema.md** (26KB) +**specs/EMBERDOCS-DATABASE-SCHEMA.md** (26KB) - PostgreSQL schema with Prisma ORM - Multi-tenancy support - Privacy-first analytics - Complete table definitions - Indexes and relationships -**emberdocs-api-spec.md** (17KB) +**specs/EMBERDOCS-API-SPEC.md** (17KB) - REST and GraphQL endpoints - Authentication (API keys, JWT) - Content management APIs - Search API integration - Webhook system -**emberdocs-roadmap.md** (18KB) +**specs/EMBERDOCS-ROADMAP.md** (18KB) - 16-week development timeline - Phase 1: Core Framework (Weeks 1-4) - Phase 2: Search & Navigation (Weeks 5-8) @@ -114,11 +129,6 @@ Use the mockups and technical specs to begin implementation. - What users CAN and CANNOT do - FAQ and use cases -**LICENSING-UPDATE-SUMMARY.md** (8KB) -- Summary of licensing changes -- Marketing messaging updates -- Competitive positioning - --- ### Brand & Design (`/brand`) @@ -223,7 +233,7 @@ Use the mockups and technical specs to begin implementation. - **Instant Search** - <50ms FlexSearch with keyboard shortcuts - **Dark Theme** - Developer-focused dark UI - **Mobile-First** - Touch-optimized responsive design -- **Zero Config** - 30-second setup time +- **Zero Config** - 2-minute setup time - **Privacy-First** - No third-party trackers - **Free Forever** - Core framework free to self-host @@ -279,9 +289,9 @@ Use the mockups and technical specs to begin implementation. ## 🎯 Next Steps -1. Read `docs/emberdocs-technical-spec.md` +1. Read `dev-docs/specs/EMBERDOCS-TECHNICAL-SPEC.md` 2. Browse UI mockups in `mockups/ui/` -3. Review `docs/emberdocs-roadmap.md` +3. Review `dev-docs/specs/EMBERDOCS-ROADMAP.md` 4. Start building! --- diff --git a/docs/QUICK-REFERENCE.md b/dev-docs/Quick-Reference.md similarity index 80% rename from docs/QUICK-REFERENCE.md rename to dev-docs/Quick-Reference.md index 00f5957..23d43c8 100644 --- a/docs/QUICK-REFERENCE.md +++ b/dev-docs/Quick-Reference.md @@ -56,19 +56,34 @@ src/ ├── versioning.ts # Git version detection (Phase 02) docs/ +└── examples/ # Example documentation (user-facing sample docs) + +dev-docs/ # Developer documentation +├── specs/ # Technical specifications +│ ├── EMBERDOCS-TECHNICAL-SPEC.md +│ ├── EMBERDOCS-API-SPEC.md +│ ├── EMBERDOCS-DATABASE-SCHEMA.md +│ └── EMBERDOCS-ROADMAP.md +├── guides/ # Development guides +│ ├── ARCHITECTURE-DECISIONS.md +│ ├── DEVELOPMENT-STANDARDS.md +│ ├── DEV-SETUP-VERIFICATION.md +│ └── FEATURE-DEPENDENCIES.md ├── planning/ # Phase plans (mvp_phase01of02.md, etc.) ├── progress/ # Daily logs (YYYY_MM_DD.md) -├── ARCHITECTURE-DECISIONS.md # Architecture Decision Log (ADL) -├── emberdocs-technical-spec.md -├── emberdocs-api-spec.md -└── ... (other specs) +├── PROJECT-OVERVIEW.md # Complete package overview +├── USER-STORIES.md # User personas and stories +├── EMBERDOCS-LICENSING.md # Licensing model +├── ACCESSIBILITY-AUDIT.md # Accessibility audit results +├── Setup.md # Installation guide +├── Deployment.md # Deployment guide +└── Quick-Reference.md # This file - Developer cheat sheet tests/ # Jest unit tests + Playwright e2e -user-docs/ # User-facing guides (setup, deployment) brand/ # Design assets and style guide ``` -**Key rule:** `src/` = app code. `docs/` = developer docs. `user-docs/` = user guides. +**Key rule:** `src/` = app code. `docs/examples/` = example user-facing docs. `dev-docs/` = all developer documentation. --- @@ -160,9 +175,9 @@ npm test -- pattern.test.ts # Single file ### 1. Create Markdown File ```bash -# Save to docs/guides/my-guide.md -mkdir -p docs/guides -touch docs/guides/my-guide.md +# Save to dev-docs/guides/my-guide.md +mkdir -p dev-docs/guides +touch dev-docs/guides/my-guide.md ``` ### 2. Add Frontmatter @@ -207,7 +222,7 @@ npm run dev ### Creating a Progress Log -Each day, create `docs/progress/YYYY_MM_DD.md`: +Each day, create `dev-docs/progress/YYYY_MM_DD.md`: ```markdown # Progress: 2025-12-23 @@ -218,7 +233,7 @@ Each day, create `docs/progress/YYYY_MM_DD.md`: - ✅ Enhanced mvp_phase02of02.md with success metrics ## Work Done -### Architecture Decisions (docs/ARCHITECTURE-DECISIONS.md) +### Architecture Decisions (dev-docs/guides/ARCHITECTURE-DECISIONS.md) - Created comprehensive ADL documenting 7 key decisions (Next.js, Tailwind, FlexSearch, etc.) - Includes decision context, alternatives, and consequences @@ -245,7 +260,7 @@ Each day, create `docs/progress/YYYY_MM_DD.md`: - #39: ADL for design decisions ``` -**File pattern:** `docs/progress/YYYY_MM_DD.md` +**File pattern:** `dev-docs/progress/YYYY_MM_DD.md` **Frequency:** Daily (at end of work day or next morning) **Link from:** Commit messages, PR description @@ -253,22 +268,22 @@ Each day, create `docs/progress/YYYY_MM_DD.md`: ## Editing Documentation -### Specs & Architecture Docs (in `docs/`) +### Specs & Architecture Docs (in `dev-docs/specs/` and `dev-docs/guides/`) - **Purpose:** Developer-facing, technical details -- **Files:** `emberdocs-technical-spec.md`, `emberdocs-api-spec.md`, `ARCHITECTURE-DECISIONS.md`, etc. +- **Files:** `dev-docs/specs/EMBERDOCS-TECHNICAL-SPEC.md`, `dev-docs/specs/EMBERDOCS-API-SPEC.md`, `dev-docs/guides/ARCHITECTURE-DECISIONS.md`, etc. - **Update when:** Making architectural decisions, changing code structure, designing new features -### User Guides (in `user-docs/`) +### User Guides (in `dev-docs/`) - **Purpose:** End-user instructions (non-developers) - **Files:** `Setup.md`, `Deployment.md`, `Configuration.md`, etc. - **Update when:** Adding new features, changing UI, simplifying workflows -### Planning (in `docs/planning/`) +### Planning (in `dev-docs/planning/`) - **Purpose:** Phase plans, roadmap, milestones - **Files:** `mvp_phase01of02.md`, `mvp_phase02of02.md` - **Update when:** Refining deliverables, adjusting scope, completing phases -### Progress (in `docs/progress/`) +### Progress (in `dev-docs/progress/`) - **Purpose:** Daily work logs - **Files:** `YYYY_MM_DD_progress.md` - **Update when:** End of each work day @@ -307,7 +322,7 @@ git commit -m "WIP: search index" - [ ] Summary: describe what changed and why - [ ] Link related issues: "Fixes #42" - [ ] Test results: "npm test passes" -- [ ] Doc updates: link paths like `docs/planning/mvp_phase01of02.md` +- [ ] Doc updates: link paths like `dev-docs/planning/mvp_phase01of02.md` - [ ] Screenshots: for UI changes (Loom video for complex flows) --- @@ -406,7 +421,7 @@ A: Run `npm run typecheck` to see errors. Fix by adding type annotations or adju A: Run `npm run build && npm start` (starts production server on localhost:3000). **Q: Where do I ask questions?** -A: Check `docs/`, `user-docs/`, and `claude.md` first. Open an issue on GitHub for bugs or feature requests. +A: Check `dev-docs/` and `claude.md` first. Open an issue on GitHub for bugs or feature requests. --- @@ -414,21 +429,21 @@ A: Check `docs/`, `user-docs/`, and `claude.md` first. Open an issue on GitHub f | Resource | Purpose | Path | |----------|---------|------| -| **Technical Spec** | Architecture, data structures, API design | `docs/emberdocs-technical-spec.md` | -| **Phase Plans** | Detailed deliverables & milestones | `docs/planning/mvp_phase01of02.md`, `mvp_phase02of02.md` | -| **Architecture Decisions** | "Why" behind major technical choices | `docs/ARCHITECTURE-DECISIONS.md` | +| **Technical Spec** | Architecture, data structures, API design | `dev-docs/specs/EMBERDOCS-TECHNICAL-SPEC.md` | +| **Phase Plans** | Detailed deliverables & milestones | `dev-docs/planning/mvp_phase01of02.md`, `mvp_phase02of02.md` | +| **Architecture Decisions** | "Why" behind major technical choices | `dev-docs/guides/ARCHITECTURE-DECISIONS.md` | | **Contributor Guidelines** | Code style, docs, git workflow | `AGENTS.md`, `claude.md`, `.cursorrules` | | **Brand Guide** | Colors, typography, logos | `brand/EMBERDOCS-STYLE-GUIDE.md` | -| **User Docs** | Setup, deployment, troubleshooting | `user-docs/` | -| **API Spec** | REST & GraphQL endpoints | `docs/emberdocs-api-spec.md` | -| **Database Schema** | PostgreSQL schema, Prisma ORM | `docs/emberdocs-database-schema.md` | +| **User Docs** | Setup, deployment, troubleshooting | `dev-docs/` | +| **API Spec** | REST & GraphQL endpoints | `dev-docs/specs/EMBERDOCS-API-SPEC.md` | +| **Database Schema** | PostgreSQL schema, Prisma ORM | `dev-docs/specs/EMBERDOCS-DATABASE-SCHEMA.md` | --- ## Need Help? -1. **Check existing docs:** Most answers are in `docs/` or `user-docs/` -2. **Review progress logs:** See what was done recently in `docs/progress/` +1. **Check existing docs:** Most answers are in `docs/` or `dev-docs/` +2. **Review progress logs:** See what was done recently in `dev-docs/progress/` 3. **Search code:** Use GitHub search or IDE grep for patterns 4. **Ask in issues:** Open a GitHub issue or discussion 5. **Slack/Discord:** Reach out to team (if applicable) diff --git a/user-docs/Setup.md b/dev-docs/Setup.md similarity index 78% rename from user-docs/Setup.md rename to dev-docs/Setup.md index d771ced..8a5de44 100644 --- a/user-docs/Setup.md +++ b/dev-docs/Setup.md @@ -9,10 +9,11 @@ Goal: get a runnable EmberDocs instance locally in minutes. ## Install & Configure ```bash npm install -cp .env.example .env.local # add required secrets/keys +cp .env.example .env.local # optional - customize branding/config ``` - Keep `.env.local` private; never commit it. -- Toggle optional integrations (analytics, semantic search) via env flags—defaults should work offline. +- All environment variables are optional - EmberDocs works with sensible defaults. +- See `.env.example` for all available configuration options. ## Homepage Behavior @@ -28,20 +29,38 @@ By default, the root route (`/`) redirects to your documentation index (`index.m ## Configuration Options +### Theme Selection + +Choose the visual theme for your documentation site: + +```bash +# Theme options: dark (default), light +EMBERDOCS_THEME=light +``` + +**Available themes:** +- **dark** (default): Developer-focused dark theme with terminal-style code blocks +- **light**: Minimal, clean light theme with simple code blocks and feature cards +- **monochrome**: Pure black-and-white minimalist theme with high contrast, no brand colors + +The theme applies to both the landing page (if enabled) and all documentation pages. The default theme is `dark` if not specified. + +**Note:** Theme selection is set via environment variable and applies site-wide. Users can still toggle between light/dark using the theme toggle button in the header (if available), but the initial/default theme is controlled by this setting. + ### Branding & Metadata EmberDocs supports environment variables to customize branding and metadata throughout your documentation site: ```bash # Default author name (used when document frontmatter doesn't specify an author) -EMBERDOCS_DEFAULT_AUTHOR=Your Company Name +EMBERDOCS_DEFAULT_AUTHOR="Your Company Name" # Company or organization name (used in headers, metadata, and page titles) -EMBERDOCS_COMPANY_NAME=Your Company, Inc. +EMBERDOCS_COMPANY_NAME="Your Company, Inc." # Product name (used in headers, metadata, and page titles) # Default: EmberDocs -EMBERDOCS_PRODUCT_NAME=Your Product Name +EMBERDOCS_PRODUCT_NAME="Your Product Name" # Primary URL for your company/product (used in links and metadata) EMBERDOCS_PRIMARY_URL=https://example.com @@ -70,7 +89,7 @@ EMBERDOCS_LOGO_PATH=/logos/your-logo.png **Tips:** Logo displays at 28x28 pixels. SVG format works best. If not set, the default gradient logo mark is used. -**See also:** [Customization Guide](/docs/guides/customization) for detailed logo setup instructions. +**See also:** See `brand/EMBERDOCS-STYLE-GUIDE.md` for detailed logo setup instructions. ### Navigation Links Configuration @@ -86,7 +105,7 @@ EMBERDOCS_HEADER_LINKS={"Docs": "/docs", "Features": "/#features", "GitHub": "ht **Default:** If not set, EmberDocs uses: "Docs", "Features", and "GitHub" -**See also:** [Customization Guide](/docs/guides/customization) for detailed examples and troubleshooting. +**See also:** See `brand/EMBERDOCS-STYLE-GUIDE.md` for detailed examples and troubleshooting. ### Footer Configuration @@ -102,7 +121,7 @@ EMBERDOCS_FOOTER_LINKS={"Privacy": "/privacy", "Terms": "/terms", "Contact": "/c **Note:** If both `EMBERDOCS_FOOTER_TEXT` and `EMBERDOCS_FOOTER_LINKS` are empty, no footer is displayed. -**See also:** [Customization Guide](/docs/guides/customization) for detailed examples and troubleshooting. +**See also:** See `brand/EMBERDOCS-STYLE-GUIDE.md` for detailed examples and troubleshooting. ### Custom Documentation Path @@ -126,7 +145,7 @@ npm run build:search The folder structure you choose becomes your documentation structure: - `docs/examples/getting-started/intro.md` → `/docs/getting-started/intro` - `docs/content/tutorials/basics.md` → `/docs/tutorials/basics` -- `content/guides/advanced.md` → `/docs/guides/advanced` +- `content/guides/advanced.md` → `/dev-docs/guides/advanced` Navigation automatically reflects your folder structure. @@ -202,10 +221,12 @@ npm run lint && npm run typecheck && npm run test - App will serve on `http://localhost:3000` once `src/` is populated per the technical spec. ## Structure to Know -- `docs/`: developer docs/specs; align new features with these. -- `user-docs/`: user-facing guides (this file). -- `docs/planning/`: phase plans (e.g., `mvp_phase01of02.md`). -- `docs/progress/`: daily logs (`YYYY_MM_DD_progress.md`). +- `dev-docs/`: all developer documentation (specs, guides, planning, progress, and user guides) +- `dev-docs/specs/`: technical specifications +- `dev-docs/guides/`: development guides +- `dev-docs/planning/`: phase plans (e.g., `mvp_phase01of02.md`) +- `dev-docs/progress/`: daily logs (`YYYY_MM_DD_progress.md`) +- `docs/examples/`: example documentation files (user-facing sample docs) ## Troubleshooting - Missing dependencies? Run `npm install`. diff --git a/docs/USER-STORIES.md b/dev-docs/USER-STORIES.md similarity index 77% rename from docs/USER-STORIES.md rename to dev-docs/USER-STORIES.md index 51c2d35..22a83e9 100644 --- a/docs/USER-STORIES.md +++ b/dev-docs/USER-STORIES.md @@ -11,8 +11,9 @@ Primary personas and outcome-driven stories for EmberDocs. Use these to guide pl ## Stories with Acceptance Criteria & Milestones - Indie developer bootstrap - - Acceptance: `npx emberdocs init` creates a runnable site with sample docs, TOC, search index, and brand defaults in <5 minutes on a clean machine. - - Milestone: MVP Phase 01 — install/init command, starter content, dev server script. + - Acceptance: Cloning the repository and running `npm install && npm run dev` creates a runnable site with sample docs, TOC, search index, and brand defaults in <5 minutes on a clean machine. + - Milestone: MVP Phase 01 — clone-based setup, starter content, dev server script. + - Future: MVP Phase 02 — CLI tool (`npx emberdocs init`) for even faster setup. - OSS maintainer versioning - Acceptance: tagging `vX.Y.Z` triggers version-aware routing; docs show version selector; missing tag fallback renders latest. @@ -36,12 +37,12 @@ Primary personas and outcome-driven stories for EmberDocs. Use these to guide pl - Admin env-flagged integrations - Acceptance: analytics/search upgrades toggle via env; defaults to privacy-safe off; app renders without env vars set. - - Milestone: MVP Phase 02 — env guards, safe fallbacks, docs in `docs/`. + - Milestone: MVP Phase 02 — env guards, safe fallbacks, docs in `dev-docs/`. - Developer visibility - - Acceptance: each workday has `docs/progress/YYYY_MM_DD_progress.md`; phase plans live in `docs/planning/`; links referenced in PRs. + - Acceptance: each workday has `dev-docs/progress/YYYY_MM_DD_progress.md`; phase plans live in `dev-docs/planning/`; links referenced in PRs. - Milestone: Ongoing — process enforced from first sprint; tracked in PR template. - User deployment guides - - Acceptance: `user-docs/` contains setup, customization, and deployment guides validated against current CLI/options. + - Acceptance: `dev-docs/` contains setup, customization, and deployment guides validated against current CLI/options. - Milestone: MVP Phase 02 — author guides after features stabilize; keep updated through beta. diff --git a/docs/ARCHITECTURE-DECISIONS.md b/dev-docs/guides/ARCHITECTURE-DECISIONS.md similarity index 94% rename from docs/ARCHITECTURE-DECISIONS.md rename to dev-docs/guides/ARCHITECTURE-DECISIONS.md index 6fc7935..9de3263 100644 --- a/docs/ARCHITECTURE-DECISIONS.md +++ b/dev-docs/guides/ARCHITECTURE-DECISIONS.md @@ -32,7 +32,7 @@ Use Next.js 16 App Router (not Pages Router) with TypeScript 5 in strict mode (` - ⚠️ Steeper learning curve for contributors unfamiliar with modern React patterns - ⚠️ Requires discipline to prevent over-component-ization -**Related Docs:** `emberdocs-technical-spec.md`, `tsconfig.json` +**Related Docs:** `dev-docs/specs/EMBERDOCS-TECHNICAL-SPEC.md`, `tsconfig.json` --- @@ -91,7 +91,7 @@ Implement search using FlexSearch (JavaScript library). Pre-generate search inde - ⚠️ Updating search index requires full rebuild/deploy (not real-time) - ⚠️ Client-side search less suitable for massive doc repositories -**Related Docs:** `emberdocs-technical-spec.md#search-indexing`, `mvp_phase01of02.md` +**Related Docs:** `dev-docs/specs/EMBERDOCS-TECHNICAL-SPEC.md#search-indexing`, `dev-docs/planning/mvp_phase01of02.md` --- @@ -119,7 +119,7 @@ Use PostgreSQL as the primary database (optional; can run without it). Prisma OR - ⚠️ Deployment requires database setup (adds complexity for "free tier" users) - ⚠️ Type sync between Prisma and business logic requires discipline -**Related Docs:** `emberdocs-database-schema.md`, `emberdocs-technical-spec.md#database` +**Related Docs:** `dev-docs/specs/EMBERDOCS-DATABASE-SCHEMA.md`, `dev-docs/specs/EMBERDOCS-TECHNICAL-SPEC.md#database` --- @@ -147,7 +147,7 @@ Versions are defined by Git tags (e.g., `v1.0`, `v2.0`) or branch names in the d - ⚠️ Requires Git repo for docs; not suitable for non-code content - ⚠️ End users (non-developers) may find version switching less intuitive -**Related Docs:** `emberdocs-technical-spec.md#versioning`, `embp_phase01of02.md` +**Related Docs:** `dev-docs/specs/EMBERDOCS-TECHNICAL-SPEC.md#versioning`, `dev-docs/planning/mvp_phase01of02.md` --- @@ -179,7 +179,7 @@ Full feature set (versioning, team accounts, analytics) deferred to Beta/v1.0. - ⚠️ Risk of scope creep if phases not strictly enforced - ⚠️ Deferred features (versioning, analytics) may feel incomplete -**Related Docs:** `mvp_phase01of02.md`, `mvp_phase02of02.md`, `emberdocs-roadmap.md` +**Related Docs:** `dev-docs/planning/mvp_phase01of02.md`, `dev-docs/planning/mvp_phase02of02.md`, `dev-docs/specs/EMBERDOCS-ROADMAP.md` --- @@ -221,7 +221,7 @@ Set target at **<100ms per query on 1000 docs** with index JSON <500KB. - ✅ Can still optimize further if needed - ⚠️ Some users may see 80–100ms on very large doc sites (acceptable trade-off) -**Related Docs:** `docs/planning/mvp_phase01of02.md` (D1.3), `docs/FEATURE-DEPENDENCIES.md` +**Related Docs:** `dev-docs/planning/mvp_phase01of02.md` (D1.3), `dev-docs/guides/FEATURE-DEPENDENCIES.md` --- @@ -258,7 +258,7 @@ Keep Git-tag approach for MVP. Fallback gracefully if Git unavailable: **Deferred to v1.0:** Dynamic version management (add/remove versions without rebuild), database-backed versioning. -**Related Docs:** `docs/planning/mvp_phase02of02.md` (D2.5), `docs/FEATURE-DEPENDENCIES.md` +**Related Docs:** `dev-docs/planning/mvp_phase02of02.md` (D2.5), `dev-docs/guides/FEATURE-DEPENDENCIES.md` --- @@ -303,7 +303,7 @@ Use hybrid approach to balance speed and safety: - `src/components/` (React): ≥60% - Tests run in <10s; CI fails if below threshold -**Related Docs:** `docs/planning/mvp_phase01of02.md` (D1.8), `docs/QUICK-REFERENCE.md` (testing tips) +**Related Docs:** `dev-docs/planning/mvp_phase01of02.md` (D1.8), `dev-docs/Quick-Reference.md` (testing tips) --- @@ -352,7 +352,7 @@ Implement **WCAG 2.1 Level AA** as MVP target. Phase 02 Week 1 (D2.2) includes 3 **Legal Compliance:** Consult legal counsel if operating in regulated industry. For general SaaS, WCAG 2.1 AA is standard and defensible. -**Related Docs:** `docs/planning/mvp_phase02of02.md` (D2.2), WebAIM guides, WCAG 2.1 spec +**Related Docs:** `dev-docs/planning/mvp_phase02of02.md` (D2.2), WebAIM guides, WCAG 2.1 spec --- @@ -378,7 +378,7 @@ Implement **WCAG 2.1 Level AA** as MVP target. Phase 02 Week 1 (D2.2) includes 3 - ✅ Less risk of license messaging drift across docs and marketing - ⚠️ Requires clear contributor guidance on redistribution restrictions -**Related Docs:** `LICENSE`, `docs/EMBERDOCS-LICENSING.md`, `NOTICES.md` +**Related Docs:** `LICENSE`, `dev-docs/EMBERDOCS-LICENSING.md`, `NOTICES.md` --- diff --git a/docs/DEV-SETUP-VERIFICATION.md b/dev-docs/guides/DEV-SETUP-VERIFICATION.md similarity index 96% rename from docs/DEV-SETUP-VERIFICATION.md rename to dev-docs/guides/DEV-SETUP-VERIFICATION.md index 49e1cb8..da1a9e1 100644 --- a/docs/DEV-SETUP-VERIFICATION.md +++ b/dev-docs/guides/DEV-SETUP-VERIFICATION.md @@ -285,7 +285,7 @@ Verify you can access key documentation. ls -la docs/ # Should show: planning/, progress/, ARCHITECTURE-DECISIONS.md, etc. -ls -la user-docs/ +ls -la dev-docs/ # Should show: Setup.md, Deployment.md, etc. ``` @@ -300,7 +300,7 @@ cat claude.md | head -10 # Developer instructions ### [ ] Quick Reference Available ```bash -open docs/QUICK-REFERENCE.md # Open in editor/browser +open dev-docs/Quick-Reference.md # Open in editor/browser # Should see: Setup, Common Commands, Project Structure, etc. ``` @@ -410,8 +410,8 @@ Print this section and check off each item: Once setup is verified: 1. **Read the docs:** - - Start with `docs/QUICK-REFERENCE.md` for common commands - - Read `docs/planning/mvp_phase01of02.md` to understand Phase 01 scope + - Start with `dev-docs/Quick-Reference.md` for common commands + - Read `dev-docs/planning/mvp_phase01of02.md` to understand Phase 01 scope 2. **Explore the codebase:** - `src/app/page.tsx` — homepage (great starting point) @@ -429,7 +429,7 @@ Once setup is verified: - Run `npm run check` to verify all tests pass 5. **Create a progress log:** - - Create `docs/progress/YYYY_MM_DD_progress.md` + - Create `dev-docs/progress/YYYY_MM_DD_progress.md` - Document what you did and what you'll do next --- @@ -438,7 +438,7 @@ Once setup is verified: If you get stuck: -1. **Check docs:** `docs/QUICK-REFERENCE.md` or `AGENTS.md` +1. **Check docs:** `dev-docs/Quick-Reference.md` or `AGENTS.md` 2. **Google error message:** Most Node/npm errors have Stack Overflow answers 3. **Ask team:** Open GitHub issue or discussion 4. **Clean & retry:** `rm -rf node_modules && npm install` diff --git a/DEVELOPMENT-STANDARDS.md b/dev-docs/guides/DEVELOPMENT-STANDARDS.md similarity index 87% rename from DEVELOPMENT-STANDARDS.md rename to dev-docs/guides/DEVELOPMENT-STANDARDS.md index e975836..2a4cd4c 100644 --- a/DEVELOPMENT-STANDARDS.md +++ b/dev-docs/guides/DEVELOPMENT-STANDARDS.md @@ -39,14 +39,14 @@ This document defines the universal development standards for EmberDocs. When making meaningful changes: - Update `CHANGELOG.md` under `[Unreleased]`. -- Create a progress log in `docs/progress/YYYY_MM_DD.md`. -- If you make a major architecture decision, update `docs/ARCHITECTURE-DECISIONS.md`. +- Create a progress log in `dev-docs/progress/YYYY_MM_DD.md`. +- If you make a major architecture decision, update `dev-docs/guides/ARCHITECTURE-DECISIONS.md`. Useful references: -- `docs/QUICK-REFERENCE.md` -- `docs/DEV-SETUP-VERIFICATION.md` -- `docs/ARCHITECTURE-DECISIONS.md` +- `dev-docs/Quick-Reference.md` +- `dev-docs/guides/DEV-SETUP-VERIFICATION.md` +- `dev-docs/guides/ARCHITECTURE-DECISIONS.md` ## Security and configuration diff --git a/docs/FEATURE-DEPENDENCIES.md b/dev-docs/guides/FEATURE-DEPENDENCIES.md similarity index 96% rename from docs/FEATURE-DEPENDENCIES.md rename to dev-docs/guides/FEATURE-DEPENDENCIES.md index 9d07476..bb16971 100644 --- a/docs/FEATURE-DEPENDENCIES.md +++ b/dev-docs/guides/FEATURE-DEPENDENCIES.md @@ -294,8 +294,8 @@ When planning a new feature, ask: ## Related Documents -- **Phase 01 Plan:** `docs/planning/mvp_phase01of02.md` (detailed deliverables D1.1–D1.9) -- **Phase 02 Plan:** `docs/planning/mvp_phase02of02.md` (detailed deliverables D2.1–D2.9) -- **Architecture Decisions:** `docs/ARCHITECTURE-DECISIONS.md` (why we chose these features) -- **Quick Reference:** `docs/QUICK-REFERENCE.md` (developer cheat sheet) +- **Phase 01 Plan:** `dev-docs/planning/mvp_phase01of02.md` (detailed deliverables D1.1–D1.9) +- **Phase 02 Plan:** `dev-docs/planning/mvp_phase02of02.md` (detailed deliverables D2.1–D2.9) +- **Architecture Decisions:** `dev-docs/guides/ARCHITECTURE-DECISIONS.md` (why we chose these features) +- **Quick Reference:** `dev-docs/Quick-Reference.md` (developer cheat sheet) diff --git a/docs/planning/cli_tool_implementation.md b/dev-docs/planning/cli_tool_implementation.md similarity index 100% rename from docs/planning/cli_tool_implementation.md rename to dev-docs/planning/cli_tool_implementation.md diff --git a/docs/planning/deferred_frontmatter_ui_editor.md b/dev-docs/planning/deferred_frontmatter_ui_editor.md similarity index 98% rename from docs/planning/deferred_frontmatter_ui_editor.md rename to dev-docs/planning/deferred_frontmatter_ui_editor.md index 5c9455e..30f40e2 100644 --- a/docs/planning/deferred_frontmatter_ui_editor.md +++ b/dev-docs/planning/deferred_frontmatter_ui_editor.md @@ -89,8 +89,8 @@ If demand emerges, consider these alternatives: ## Related Documentation - Original plan: `/Users/kq/.cursor/plans/frontmatter_ui_editor_92740241.plan.md` (if still exists) -- Frontmatter fields: `docs/QUICK-REFERENCE.md` -- User setup: `user-docs/Setup.md` +- Frontmatter fields: `dev-docs/Quick-Reference.md` +- User setup: `dev-docs/Setup.md` ## Notes diff --git a/docs/planning/mvp_phase01of02.md b/dev-docs/planning/mvp_phase01of02.md similarity index 95% rename from docs/planning/mvp_phase01of02.md rename to dev-docs/planning/mvp_phase01of02.md index cd2004f..1430e27 100644 --- a/docs/planning/mvp_phase01of02.md +++ b/dev-docs/planning/mvp_phase01of02.md @@ -153,7 +153,7 @@ ### D1.9: Documentation & Contributor Guides - **Deliverable:** - Update `AGENTS.md` / `claude.md` with Phase 01 completion notes - - Daily progress log: `docs/progress/YYYY_MM_DD_progress.md` + - Daily progress log: `dev-docs/progress/YYYY_MM_DD_progress.md` - README section: "Getting Started for Contributors" - API reference for content, search, and nav modules in `docs/` - **Acceptance Criteria:** @@ -173,7 +173,7 @@ - [ ] Theme toggle component and dark/light CSS variables - [ ] Sample docs created (`docs/examples/`) - [ ] `npm run dev` works; homepage renders -- [ ] First daily progress log: `docs/progress/YYYY_MM_DD_progress.md` +- [ ] First daily progress log: `dev-docs/progress/YYYY_MM_DD_progress.md` **Definition of Done:** - Content parsing tests pass (≥ 70% coverage) @@ -282,7 +282,7 @@ ## Related Documents -- **Technical Spec:** `docs/emberdocs-technical-spec.md` (architecture, data structures) -- **Architecture Decisions:** `docs/ARCHITECTURE-DECISIONS.md` (ADL-001, ADL-003, ADL-004, ADL-005) -- **Roadmap:** `docs/emberdocs-roadmap.md` (overview of Beta/v1.0 features) -- **Phase 02:** `docs/planning/mvp_phase02of02.md` (stabilization) +- **Technical Spec:** `dev-docs/specs/EMBERDOCS-TECHNICAL-SPEC.md` (architecture, data structures) +- **Architecture Decisions:** `dev-docs/guides/ARCHITECTURE-DECISIONS.md` (ADL-001, ADL-003, ADL-004, ADL-005) +- **Roadmap:** `dev-docs/specs/EMBERDOCS-ROADMAP.md` (overview of Beta/v1.0 features) +- **Phase 02:** `dev-docs/planning/mvp_phase02of02.md` (stabilization) diff --git a/docs/planning/mvp_phase02of02.md b/dev-docs/planning/mvp_phase02of02.md similarity index 91% rename from docs/planning/mvp_phase02of02.md rename to dev-docs/planning/mvp_phase02of02.md index b222845..d4fb1ca 100644 --- a/docs/planning/mvp_phase02of02.md +++ b/dev-docs/planning/mvp_phase02of02.md @@ -26,7 +26,7 @@ ### Documentation & User Guides - **Developer Docs:** Architecture deep dives, contribution guide - **User Docs:** Setup guide, deployment guide, configuration reference, troubleshooting -- **Daily Progress Logs:** Continue logging in `docs/progress/` +- **Daily Progress Logs:** Continue logging in `dev-docs/progress/` - **Changelog:** Alpha/Beta release notes with breaking changes, new features, fixes - **API Reference:** REST/GraphQL endpoints (from `emberdocs-api-spec.md`) @@ -94,18 +94,18 @@ - ✅ Fallback: single version if Git unavailable (no version switcher shown) - ✅ Unit tests cover version routing and manifest generation -### D2.6: Documentation Expansion (Docs in `docs/` and `user-docs/`) +### D2.6: Documentation Expansion (Docs in `dev-docs/`) - **Developer Documentation:** - - `docs/ARCHITECTURE-DEEP-DIVE.md` — data flow, module responsibilities, extension points - - `docs/CONTRIBUTING.md` — how to contribute, code style, PR process + - `dev-docs/guides/ARCHITECTURE-DECISIONS.md` — data flow, module responsibilities, extension points + - `AGENTS.md` — how to contribute, code style, PR process - API reference for `src/lib/` modules (auto-generated from JSDoc or manually curated) - **User-Facing Documentation:** - - `user-docs/SETUP-GUIDE.md` — installation, `.env.local`, first doc creation - - `user-docs/DEPLOYMENT.md` — Vercel, Docker, self-hosted, environment variables - - `user-docs/CONFIGURATION.md` — configuration reference and theme customization - - `user-docs/TROUBLESHOOTING.md` — common issues, error messages, solutions - - `user-docs/CHANGELOG.md` — Alpha/Beta release notes (breaking changes, new features, bug fixes) + - `dev-docs/SETUP-GUIDE.md` — installation, `.env.local`, first doc creation + - `dev-docs/DEPLOYMENT.md` — Vercel, Docker, self-hosted, environment variables + - `dev-docs/CONFIGURATION.md` — configuration reference and theme customization + - `dev-docs/TROUBLESHOOTING.md` — common issues, error messages, solutions + - `dev-docs/CHANGELOG.md` — Alpha/Beta release notes (breaking changes, new features, bug fixes) - **Acceptance Criteria:** - ✅ New user can follow setup guide to create first doc @@ -282,8 +282,8 @@ After Phase 02 exit criteria met: ## Related Documents -- **Phase 01:** `docs/planning/mvp_phase01of02.md` (core engine) -- **Technical Spec:** `docs/emberdocs-technical-spec.md` (architecture) -- **Architecture Decisions:** `docs/ARCHITECTURE-DECISIONS.md` (ADL-006, ADL-007) -- **Roadmap:** `docs/emberdocs-roadmap.md` (Beta/v1.0 overview) -- **API Spec:** `docs/emberdocs-api-spec.md` (REST/GraphQL endpoints, for future documentation) +- **Phase 01:** `dev-docs/planning/mvp_phase01of02.md` (core engine) +- **Technical Spec:** `dev-docs/specs/EMBERDOCS-TECHNICAL-SPEC.md` (architecture) +- **Architecture Decisions:** `dev-docs/guides/ARCHITECTURE-DECISIONS.md` (ADL-006, ADL-007) +- **Roadmap:** `dev-docs/specs/EMBERDOCS-ROADMAP.md` (Beta/v1.0 overview) +- **API Spec:** `dev-docs/specs/EMBERDOCS-API-SPEC.md` (REST/GraphQL endpoints, for future documentation) diff --git a/docs/progress/2025_12_23_d1.1_completion.md b/dev-docs/progress/2025_12_23_d1.1_completion.md similarity index 99% rename from docs/progress/2025_12_23_d1.1_completion.md rename to dev-docs/progress/2025_12_23_d1.1_completion.md index 244acdf..71f37e2 100644 --- a/docs/progress/2025_12_23_d1.1_completion.md +++ b/dev-docs/progress/2025_12_23_d1.1_completion.md @@ -194,7 +194,7 @@ expect(result.frontmatter.version).toBe(1); ## D1.1 Acceptance Criteria — Verified ✅ -From `docs/planning/mvp_phase01of02.md`: +From `dev-docs/planning/mvp_phase01of02.md`: | Criterion | Result | Evidence | |-----------|--------|----------| diff --git a/docs/progress/2025_12_23_d1.2_completion.md b/dev-docs/progress/2025_12_23_d1.2_completion.md similarity index 99% rename from docs/progress/2025_12_23_d1.2_completion.md rename to dev-docs/progress/2025_12_23_d1.2_completion.md index b1a0270..430e254 100644 --- a/docs/progress/2025_12_23_d1.2_completion.md +++ b/dev-docs/progress/2025_12_23_d1.2_completion.md @@ -165,7 +165,7 @@ content.ts 88.4 84 71.42 88.05 ## D1.2 Acceptance Criteria — Verified ✅ -From `docs/planning/mvp_phase01of02.md`: +From `dev-docs/planning/mvp_phase01of02.md`: | Criterion | Result | Evidence | |-----------|--------|----------| diff --git a/docs/progress/2025_12_23_d1.3_completion.md b/dev-docs/progress/2025_12_23_d1.3_completion.md similarity index 99% rename from docs/progress/2025_12_23_d1.3_completion.md rename to dev-docs/progress/2025_12_23_d1.3_completion.md index 2fa5eb0..b280f85 100644 --- a/docs/progress/2025_12_23_d1.3_completion.md +++ b/dev-docs/progress/2025_12_23_d1.3_completion.md @@ -172,7 +172,7 @@ These are defensive paths in production code; the core search functionality func ## D1.3 Acceptance Criteria — Verified ✅ -From `docs/planning/mvp_phase01of02.md`: +From `dev-docs/planning/mvp_phase01of02.md`: | Criterion | Result | Evidence | |-----------|--------|----------| diff --git a/docs/progress/2025_12_23_d1456_completion.md b/dev-docs/progress/2025_12_23_d1456_completion.md similarity index 99% rename from docs/progress/2025_12_23_d1456_completion.md rename to dev-docs/progress/2025_12_23_d1456_completion.md index 3c848cc..2eb1398 100644 --- a/docs/progress/2025_12_23_d1456_completion.md +++ b/dev-docs/progress/2025_12_23_d1456_completion.md @@ -348,9 +348,9 @@ Route (app) Size ├ /docs/getting-started/installation ├ /docs/getting-started/introduction ├ /docs/getting-started/quick-start - ├ /docs/guides/advanced-features - ├ /docs/guides/basic-usage - ├ /docs/guides/troubleshooting + ├ /dev-docs/guides/advanced-features + ├ /dev-docs/guides/basic-usage + ├ /dev-docs/guides/troubleshooting └ /docs/index Shared JS: 87.2 kB (chunks: 31.7 + 53.7 + 1.84) diff --git a/docs/progress/2025_12_23_phase02_quick_wins.md b/dev-docs/progress/2025_12_23_phase02_quick_wins.md similarity index 100% rename from docs/progress/2025_12_23_phase02_quick_wins.md rename to dev-docs/progress/2025_12_23_phase02_quick_wins.md diff --git a/docs/progress/2025_12_23_progress.md b/dev-docs/progress/2025_12_23_progress.md similarity index 86% rename from docs/progress/2025_12_23_progress.md rename to dev-docs/progress/2025_12_23_progress.md index 768661e..903e36b 100644 --- a/docs/progress/2025_12_23_progress.md +++ b/dev-docs/progress/2025_12_23_progress.md @@ -42,18 +42,18 @@ | File | Lines | Purpose | |------|-------|---------| | `DEVELOPMENT-STANDARDS.md` | ~800 | Universal standards template (reusable across projects) | -| `docs/QUICK-REFERENCE.md` | ~280 | Developer cheat sheet (common commands, patterns, FAQ) | -| `docs/FEATURE-DEPENDENCIES.md` | ~380 | Dependency graphs (critical path, risk matrix) | -| `docs/DEV-SETUP-VERIFICATION.md` | ~420 | Local environment setup checklist (node_modules → npm run check) | +| `dev-docs/Quick-Reference.md` | ~280 | Developer cheat sheet (common commands, patterns, FAQ) | +| `dev-docs/guides/FEATURE-DEPENDENCIES.md` | ~380 | Dependency graphs (critical path, risk matrix) | +| `dev-docs/guides/DEV-SETUP-VERIFICATION.md` | ~420 | Local environment setup checklist (node_modules → npm run check) | | `CHANGELOG.md` | ~300 | Release notes template (Keep a Changelog + SemVer format) | ### 3. Files Enhanced (Existing) | File | Before | After | Changes | |------|--------|-------|---------| -| `docs/ARCHITECTURE-DECISIONS.md` | ADL-001–007 | Updated | Added ADL-009 through ADL-012 with full context, alternatives, consequences | -| `docs/planning/mvp_phase01of02.md` | 27 lines | 289 lines | Added 9 deliverables (D1.1–D1.9) + weekly milestones + KPIs + exit criteria | -| `docs/planning/mvp_phase02of02.md` | 27 lines | 321 lines | Added 9 deliverables (D2.1–D2.9) + prerequisites + risk assessment | +| `dev-docs/guides/ARCHITECTURE-DECISIONS.md` | ADL-001–007 | Updated | Added ADL-009 through ADL-012 with full context, alternatives, consequences | +| `dev-docs/planning/mvp_phase01of02.md` | 27 lines | 289 lines | Added 9 deliverables (D1.1–D1.9) + weekly milestones + KPIs + exit criteria | +| `dev-docs/planning/mvp_phase02of02.md` | 27 lines | 321 lines | Added 9 deliverables (D2.1–D2.9) + prerequisites + risk assessment | | `.cursorrules` | 46 lines | 117 lines | Added "Universal Standards" section, project-specific rules, sync instructions | | `claude.md` | 46 lines | 275 lines | Added detailed guidelines, TypeScript examples, doc requirements, locked decisions | | `AGENTS.md` | 46 lines | 463 lines | Added 7-step contributing workflow, code review checklist, sync instructions | @@ -142,8 +142,8 @@ All user decisions locked (Message 3 of conversation): ## Key Resources for D1.1 Implementation **Reference Documentation:** -- `docs/QUICK-REFERENCE.md` — Common commands and patterns -- `docs/planning/mvp_phase01of02.md` — D1.1 detailed acceptance criteria (D1.1.1–D1.1.5) +- `dev-docs/Quick-Reference.md` — Common commands and patterns +- `dev-docs/planning/mvp_phase01of02.md` — D1.1 detailed acceptance criteria (D1.1.1–D1.1.5) - `DEVELOPMENT-STANDARDS.md` — Universal standards (naming, testing, TypeScript) - `claude.md` — TypeScript examples and guidelines diff --git a/docs/progress/2025_12_24.md b/dev-docs/progress/2025_12_24.md similarity index 100% rename from docs/progress/2025_12_24.md rename to dev-docs/progress/2025_12_24.md diff --git a/docs/progress/2025_12_24_ux_improvements.md b/dev-docs/progress/2025_12_24_ux_improvements.md similarity index 99% rename from docs/progress/2025_12_24_ux_improvements.md rename to dev-docs/progress/2025_12_24_ux_improvements.md index e38ddc7..235ad0c 100644 --- a/docs/progress/2025_12_24_ux_improvements.md +++ b/dev-docs/progress/2025_12_24_ux_improvements.md @@ -552,8 +552,8 @@ b95ba68 - feat: add mobile navigation, syntax highlighting, and landing page imp ## References - UX Review: `~/.claude/plans/humble-wondering-metcalfe.md` -- Architecture Decisions: `docs/ARCHITECTURE-DECISIONS.md` -- Phase 01 Plan: `docs/planning/mvp_phase01of02.md` +- Architecture Decisions: `dev-docs/guides/ARCHITECTURE-DECISIONS.md` +- Phase 01 Plan: `dev-docs/planning/mvp_phase01of02.md` - Style Guide: `brand/EMBERDOCS-STYLE-GUIDE.md` --- diff --git a/docs/progress/2025_12_27.md b/dev-docs/progress/2025_12_27.md similarity index 91% rename from docs/progress/2025_12_27.md rename to dev-docs/progress/2025_12_27.md index deb2fd7..198621c 100644 --- a/docs/progress/2025_12_27.md +++ b/dev-docs/progress/2025_12_27.md @@ -16,7 +16,7 @@ ### Documentation updates - Updated component API docs for `SearchPalette` to show the correct props and usage pattern. -- Updated developer quick reference to use the standard `docs/progress/YYYY_MM_DD.md` filename format. +- Updated developer quick reference to use the standard `dev-docs/progress/YYYY_MM_DD.md` filename format. ### Changelog updates - Updated `[Unreleased]` to capture the search palette behavior and UI fixes, and removal of the old context helper. diff --git a/docs/emberdocs-api-spec.md b/dev-docs/specs/EMBERDOCS-API-SPEC.md similarity index 100% rename from docs/emberdocs-api-spec.md rename to dev-docs/specs/EMBERDOCS-API-SPEC.md diff --git a/docs/emberdocs-database-schema.md b/dev-docs/specs/EMBERDOCS-DATABASE-SCHEMA.md similarity index 100% rename from docs/emberdocs-database-schema.md rename to dev-docs/specs/EMBERDOCS-DATABASE-SCHEMA.md diff --git a/docs/emberdocs-roadmap.md b/dev-docs/specs/EMBERDOCS-ROADMAP.md similarity index 94% rename from docs/emberdocs-roadmap.md rename to dev-docs/specs/EMBERDOCS-ROADMAP.md index 857f9db..c1b4ef5 100644 --- a/docs/emberdocs-roadmap.md +++ b/dev-docs/specs/EMBERDOCS-ROADMAP.md @@ -30,7 +30,7 @@ This roadmap breaks down EmberDocs development into manageable phases, prioritiz **Tasks:** - [ ] Initialize Turborepo monorepo -- [ ] Set up packages: core, cli, react, widget +- [ ] Set up packages: core, cli - [ ] Configure TypeScript, ESLint, Prettier - [ ] Set up testing framework (Jest, Vitest) - [ ] Create GitHub repository @@ -534,52 +534,6 @@ track('outbound_link', { --- -### Week 12: Widget & React Component - -**Objectives:** -- Build embeddable widget -- Create React component library -- Integration examples -- Documentation - -**Tasks:** -- [ ] Build standalone widget bundle -- [ ] Create loader script -- [ ] Package React components -- [ ] Add TypeScript definitions -- [ ] Create integration examples -- [ ] Write integration guides -- [ ] Publish to npm - -**Deliverables:** -- Embeddable widget (` -
-``` - -**React Usage:** -```tsx -import { DocsPage } from '@emberdocs/react'; - -export default function Docs() { - return ; -} -``` - ---- - ## Phase 4: Polish & Launch (Weeks 13-16) ### Week 13: Performance Optimization diff --git a/docs/emberdocs-technical-spec.md b/dev-docs/specs/EMBERDOCS-TECHNICAL-SPEC.md similarity index 95% rename from docs/emberdocs-technical-spec.md rename to dev-docs/specs/EMBERDOCS-TECHNICAL-SPEC.md index 71264de..ed2ad90 100644 --- a/docs/emberdocs-technical-spec.md +++ b/dev-docs/specs/EMBERDOCS-TECHNICAL-SPEC.md @@ -24,18 +24,18 @@ EmberDocs is a source-available documentation framework designed for indie devel ### Core Value Propositions -1. **Zero-Config to Start:** `npx emberdocs init` creates working documentation in 30 seconds -2. **True Portability:** Works as standalone site, React component, or embeddable widget -3. **Privacy-First:** Client-side search, no tracking, GDPR compliant by default -4. **Git-Native:** Automatic versioning from git tags, no manual version management +1. **Zero-Config to Start:** (Planned) `npx emberdocs init` will create working documentation in 30 seconds. Currently, users clone the repo and run `npm install`. +2. **True Portability:** Works as standalone site, deployable anywhere Next.js runs +3. **Privacy-First:** Client-side search, no tracking, privacy-first architecture (no external services) +4. **Git-Native:** Version detection from git tags (routing planned for Phase 02), no manual version management 5. **Developer Experience:** Hot reload, broken link detection, markdown-only workflow ### Positioning | Feature | EmberDocs | Docusaurus | GitBook | VitePress | |---------|-----------|------------|---------|-----------| -| Setup time | 30 seconds | 15 minutes | 5 minutes | 10 minutes | -| Drop-in integration | ✅ | ❌ | ❌ | ❌ | +| Setup time | Typically 2 minutes (with Node.js 18+) | 15 minutes | 5 minutes | 10 minutes | +| Easy deployment | ✅ | ❌ | ❌ | ❌ | | Self-hosted (free) | ✅ | ✅ | ❌ | ✅ | | Zero config | ✅ | ❌ | Partial | Partial | | Privacy-first analytics | ✅ | ❌ | ❌ | ❌ | @@ -141,23 +141,9 @@ emberdocs/ │ │ │ └── utils/ │ │ └── package.json │ │ -│ ├── react/ # React component library -│ │ ├── src/ -│ │ │ ├── DocsPage.tsx # Main component -│ │ │ ├── DocsProvider.tsx -│ │ │ └── hooks/ -│ │ └── package.json -│ │ -│ └── widget/ # Embeddable widget -│ ├── src/ -│ │ ├── embed.ts # Standalone bundle -│ │ └── loader.ts -│ └── package.json -│ ├── examples/ │ ├── standalone/ # Full standalone site -│ ├── nextjs-integration/ # Next.js integration -│ └── widget-embed/ # Widget example +│ └── nextjs-integration/ # Next.js integration │ ├── docs/ # EmberDocs own documentation │ ├── index.md @@ -851,6 +837,10 @@ export function CodeBlock({ ## CLI Tool +**Status:** Planned for Phase 02 / Future Version (see `dev-docs/planning/cli_tool_implementation.md`) + +The CLI tool is not yet implemented. Users currently need to clone the repository and set up manually. The CLI functionality described below is planned for future releases. + ### Commands **`init` - Initialize New Project** @@ -861,7 +851,6 @@ npx emberdocs init [directory] Options: --minimal Create minimal setup (no examples) --integrate Add to existing Next.js project - --widget Widget-only setup --template Use specific template ``` @@ -911,7 +900,6 @@ npx emberdocs build Options: --output Output directory (default: out) --static Static export only - --widget Build widget bundle ``` **`dev` - Development Server** @@ -1030,7 +1018,6 @@ CMD ["node", "server.js"] **API Security:** - Rate limiting on search endpoints - API key validation for AI features -- CORS configuration for widget **User Privacy:** - No tracking by default diff --git a/docs/LICENSING-UPDATE-SUMMARY.md b/docs/LICENSING-UPDATE-SUMMARY.md deleted file mode 100644 index 13eb229..0000000 --- a/docs/LICENSING-UPDATE-SUMMARY.md +++ /dev/null @@ -1,249 +0,0 @@ -# Licensing Update Summary - -**Date:** December 2025 -**Updated by:** Claude -**Status:** Historical Document - -> **NOTE: This document is historical. EmberDocs core is licensed under a proprietary source-available license. See `LICENSE` and `docs/EMBERDOCS-LICENSING.md` for current licensing information.** - ---- - -## What Changed - -EmberDocs licensing has been updated from "MIT Open Source" to a **source-available proprietary model** with the following structure: - -### New Licensing Structure - -1. **Core Framework:** Proprietary (free to self-install/self-host) - - Users can view/study the code - - Users can install and use for free forever - - Users can modify for their own use - - Users CANNOT redistribute or sell - -2. **Hosted/SaaS:** Proprietary - - Premium managed hosting service - - $15/month or $150/year - ---- - -## Files Updated - -### Landing Pages (All 5 Mockups) -- ✅ Removed "MIT Licensed" references -- ✅ Removed "Open Source" claims -- ✅ Updated to "Free self-hosted documentation framework" -- ✅ Changed badge from "Open Source • MIT Licensed" to "Source-Available • Free to Self-Host" -- ✅ Updated feature descriptions to reflect licensing - -**Files:** -- `landing-mockup-01-minimal.html` -- `landing-mockup-02-developer-dark.html` -- `landing-mockup-03-feature-grid.html` -- `landing-mockup-04-visual-modern.html` -- `landing-mockup-05-social-proof.html` - -### Documentation -- ✅ `README.md` - Updated licensing section and footer -- ✅ `EMBERDOCS-STYLE-GUIDE.md` - Added licensing messaging guidelines -- ✅ `emberdocs-brand-guidelines.md` - Added licensing messaging section -- ✅ `LANDING-MOCKUPS-GUIDE.md` - Updated mockup descriptions - -### New Files Created -- ✅ `EMBERDOCS-LICENSING.md` - Comprehensive licensing documentation - ---- - -## Key Messaging Changes - -### Before (Incorrect) -- "Open source and MIT licensed" -- "Fully open source" -- "Fork and contribute" -- "MIT License" - -### After (Correct) -- "Free to use forever" -- "Free to self-host" -- "Source-available" -- "View and study the code" -- "Cannot redistribute or sell" - ---- - -## What This Means for Users - -### They CAN: -✅ Use EmberDocs for free forever -✅ Self-host on their infrastructure -✅ View and study the source code -✅ Modify for their own installation -✅ Use for commercial projects -✅ Create unlimited documentation sites - -### They CANNOT: -❌ Redistribute EmberDocs to others -❌ Sell copies of EmberDocs -❌ Create competing hosted services -❌ Fork and rebrand EmberDocs -❌ Package for others to download - ---- - -## Marketing Implications - -### Positive Impacts -1. **Still Free:** Users can still use EmberDocs for free forever -2. **Transparency:** Source code remains viewable -3. **No Lock-in:** Markdown files are portable -4. **Sustainable:** Clear business model via hosted service - -### Messaging Adjustments Needed -1. Remove "open source" from all marketing -2. Emphasize "free to self-host" instead -3. Highlight "source-available" for transparency -4. Be clear about what users CAN do (use freely) - -### Competitive Positioning - -**vs Open Source (Docusaurus, VitePress):** -- "More sustainable business model" -- "Better long-term support" -- "Still free to use" - -**vs Proprietary SaaS (GitBook):** -- "No vendor lock-in" -- "Free to self-host forever" -- "View the code (transparency)" - ---- - -## FAQ Updates Needed - -**Old FAQ:** -Q: Is EmberDocs open source? -A: Yes, MIT licensed! - -**New FAQ:** -Q: Is EmberDocs open source? -A: EmberDocs is source-available, meaning you can view and study the code, but it's not open source. The core framework is proprietary but free to use and self-host. - ---- - -**Old FAQ:** -Q: Can I fork EmberDocs? -A: Yes, it's MIT licensed! - -**New FAQ:** -Q: Can I modify EmberDocs? -A: Yes! You can modify EmberDocs for your own installation. However, you cannot redistribute modified versions. - ---- - -## Legal Protections Gained - -1. **Prevents unauthorized redistribution** - - Bad actors cannot rebrand and sell - - Protects business model - -2. **Prevents competing hosted services** - - Others cannot use our code for SaaS - - Sustains premium offering - -3. **Maintains IP rights** - - Clear ownership - - Enables future licensing options - -4. **Still allows user freedom** - - Users keep all practical freedoms - - Can use, modify, customize freely - ---- - -## Action Items - -### Immediate -- ✅ Update all landing pages (DONE) -- ✅ Update documentation (DONE) -- ✅ Create licensing guide (DONE) -- ✅ Update style guide (DONE) - -### Before Launch -- [x] Create LICENSE file (custom proprietary license) -- [x] Update package.json with license field -- [x] Update documentation to reference LICENSE file -- [ ] Update GitHub repository with license (when repository is public) -- [ ] Add license notice to all source files (optional - using LICENSE file only) -- [ ] Create FAQ page on website -- [ ] Update Terms of Service - -### Ongoing -- [ ] Monitor messaging consistency -- [ ] Update any future marketing materials -- [ ] Brief team/contributors on licensing -- [ ] Prepare response to licensing questions - ---- - -## Communication Plan - -### To Community -**Message:** "EmberDocs remains free to use and self-host forever. We've updated our licensing to be source-available rather than open source. This protects the project's sustainability while maintaining full transparency and your freedom to use EmberDocs however you need." - -### To Potential Users -**Message:** "EmberDocs is free to self-host on your infrastructure with no limits. View the source code, customize it for your needs, and use it for any project. We're funded by our optional premium hosting service, not by limiting the free version." - -### To Investors (if applicable) -**Message:** "Our licensing protects against unauthorized redistribution while keeping the product free for users. This enables a sustainable SaaS business model with strong competitive moats." - ---- - -## Similar Examples in the Industry - -EmberDocs joins other successful source-available projects: - -1. **Elasticsearch** (now under SSPL) - - Free to use, source-available - - Cannot provide as hosted service - - Successful business model - -2. **MongoDB** (SSPL) - - Free to use and self-host - - Source-available - - Prevents competing SaaS - -3. **Sentry** (BSL - Business Source License) - - Free to use, source-available - - Time-limited before going open source - - Successful company - ---- - -## Monitoring & Compliance - -### What to Watch -- Unauthorized redistribution attempts -- Competing hosted services -- License violation reports -- Community sentiment - -### How to Respond -- Document violations clearly -- Send cease and desist if needed -- Maintain friendly tone with community -- Emphasize user freedoms remain intact - ---- - -## Summary - -The licensing update positions EmberDocs as: -1. **Free to use** (like open source) -2. **Transparent** (source-available) -3. **Sustainable** (protected business model) -4. **User-friendly** (no practical limitations) - -**Bottom line:** Users get all the benefits of using EmberDocs for free, we get protection to build a sustainable business. Win-win. - ---- - -**Questions?** Contact legal@emberdocs.com or team@emberdocs.com diff --git a/docs/examples/api-reference/components.md b/docs/examples/api-reference/components.md index 179624e..d1ba72b 100644 --- a/docs/examples/api-reference/components.md +++ b/docs/examples/api-reference/components.md @@ -2,7 +2,7 @@ title: "Components Reference" slug: "api-reference/components" -date: "2025-01-15" +date: "2026-01-02" tags: ["api", "components"] published: true order: 8 @@ -14,7 +14,7 @@ React component library for EmberDocs documentation sites. ## ThemeToggle Component -Toggle between light and dark mode themes. +Toggle between light and dark mode themes. Supports three themes: dark (default), light, and monochrome. ### Usage @@ -38,48 +38,18 @@ export function Header() { ### Behavior -- Automatically detects system theme preference on first load +- Respects server-side theme set via `EMBERDOCS_THEME` environment variable +- If monochrome theme is set via environment, toggle is hidden +- Automatically detects system theme preference on first load (if no server theme) - Persists user selection to localStorage with key "theme" - Updates `data-theme` attribute on document root -- Smooth transition between light and dark modes +- Toggles between light and dark modes (monochrome is environment-only) -### Code Example +### Notes -```typescript -'use client'; - -import { useEffect, useState } from 'react'; - -export function ThemeToggle(): JSX.Element { - const [theme, setTheme] = useState<'light' | 'dark'>('light'); - const [mounted, setMounted] = useState(false); - - useEffect(() => { - setMounted(true); - const stored = localStorage.getItem('theme') as 'light' | 'dark' | null; - const prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches; - const initial = stored ?? (prefersDark ? 'dark' : 'light'); - - setTheme(initial); - document.documentElement.setAttribute('data-theme', initial); - }, []); - - const toggle = () => { - const next = theme === 'light' ? 'dark' : 'light'; - setTheme(next); - document.documentElement.setAttribute('data-theme', next); - localStorage.setItem('theme', next); - }; - - if (!mounted) return
; - - return ( - - ); -} -``` +- The component is hidden if `EMBERDOCS_THEME` is set to `monochrome` +- Theme toggle only switches between light and dark (monochrome requires environment variable) +- Component prevents hydration mismatches by not rendering until mounted ## Breadcrumbs Component @@ -189,7 +159,7 @@ export function Example() { interface CodeBlockProps { code: string; // Original code text language: string; // Language identifier (typescript, bash, etc) - highlightedHtml: string; // Pre-highlighted HTML from Shiki + highlightedHtml?: string; // Optional pre-highlighted HTML (not currently used) } ``` diff --git a/docs/examples/api-reference/configuration.md b/docs/examples/api-reference/configuration.md index a02617a..7148e88 100644 --- a/docs/examples/api-reference/configuration.md +++ b/docs/examples/api-reference/configuration.md @@ -2,7 +2,7 @@ title: "Configuration Reference" slug: "api-reference/configuration" -date: "2025-01-15" +date: "2026-01-02" tags: ["api", "configuration"] published: true order: 7 @@ -14,18 +14,28 @@ Complete configuration options for EmberDocs. ## tailwind.config.ts +EmberDocs uses Tailwind CSS with custom design tokens. The configuration extends default Tailwind with CSS variable-based colors: + ```typescript import type { Config } from 'tailwindcss'; const config: Config = { content: [ - './src/**/*.{js,ts,jsx,tsx}', + './src/pages/**/*.{js,ts,jsx,tsx,mdx}', + './src/components/**/*.{js,ts,jsx,tsx,mdx}', + './src/app/**/*.{js,ts,jsx,tsx,mdx}', ], + darkMode: ['class', '[data-theme="dark"]'], theme: { extend: { colors: { - primary: '#8B5CF6', - accent: '#F59E0B', + 'ed-purple': 'var(--ed-purple)', + 'ed-amber': 'var(--ed-amber)', + 'ed-bg': 'var(--ed-bg)', + 'ed-surface': 'var(--ed-surface)', + 'ed-border': 'var(--ed-border)', + 'ed-text': 'var(--ed-text)', + // ... more design tokens }, }, }, @@ -34,94 +44,84 @@ const config: Config = { export default config; ``` -## next.config.js +## next.config.mjs ```javascript /** @type {import('next').NextConfig} */ const nextConfig = { - pageExtensions: ['ts', 'tsx', 'md', 'mdx'], - staticPageGenerationTimeout: 300, + reactStrictMode: true, + typedRoutes: true, + async rewrites() { + const baseRoute = process.env.EMBERDOCS_BASE_ROUTE || '/docs'; + if (baseRoute === '/docs') { + return []; + } + return [ + { + source: `${baseRoute}/:path*`, + destination: '/docs/:path*', + }, + ]; + }, }; -module.exports = nextConfig; -``` - -## Search Configuration - -Configure search indexing: - -```typescript -interface SearchIndexOptions { - maxBodyWords?: number; // Default: 500 - titleWeight?: number; // Default: 3 - headingWeight?: number; // Default: 2 - generateExcerpts?: boolean; // Default: true -} +export default nextConfig; ``` ## Environment Variables +EmberDocs uses environment variables for configuration. All variables are optional and have sensible defaults. + Create a `.env.local` file: ```bash -# API Configuration -NEXT_PUBLIC_API_URL=https://api.example.com +# Content Configuration +EMBERDOCS_CONTENT_DIR=docs/examples # Directory containing markdown files +EMBERDOCS_BASE_ROUTE=/docs # URL prefix for documentation pages -# Feature flags -NEXT_PUBLIC_ENABLE_SEARCH=true -NEXT_PUBLIC_ENABLE_ANALYTICS=false +# Branding +EMBERDOCS_PRODUCT_NAME=EmberDocs +EMBERDOCS_COMPANY_NAME= +EMBERDOCS_DEFAULT_AUTHOR= -# Analytics -NEXT_PUBLIC_GA_ID=UA-XXXXXXXXX-X -``` +# Navigation +EMBERDOCS_HEADER_LINKS={"Docs": "/docs", "GitHub": "https://github.com/yourorg"} +EMBERDOCS_FOOTER_LINKS={"Privacy": "/privacy", "Terms": "/terms"} -Access in your code: +# Theme +EMBERDOCS_THEME=dark # Options: dark, light, monochrome -```typescript -const apiUrl = process.env.NEXT_PUBLIC_API_URL; +# Landing Page (framework repo only) +EMBERDOCS_SHOW_LANDING=false # Set to true to show marketing landing page ``` -## Metadata Configuration - -Configure global metadata in `layout.tsx`: +Access in your code: ```typescript -export const metadata: Metadata = { - title: 'EmberDocs', - description: 'Modern documentation framework', - keywords: ['documentation', 'next.js'], - openGraph: { - type: 'website', - locale: 'en_US', - url: 'https://example.com', - title: 'EmberDocs', - description: 'Modern documentation framework', - }, -}; +import { EMBERDOCS_CONTENT_DIR, EMBERDOCS_BASE_ROUTE } from '@/lib/config'; ``` ## Build Configuration ### Search Index Build -Configure in `scripts/build-search-index.ts`: +The search index is automatically built during production builds. To build manually: ```typescript -const index = await buildSearchIndex('./docs', { - maxBodyWords: 500, - titleWeight: 3, - headingWeight: 2, -}); +import { buildSearchIndex, saveIndexToFile } from '@/lib/search'; + +const index = await buildSearchIndex('./docs'); +await saveIndexToFile('./public/search-index.json', index); ``` ### Static Generation +Static params are automatically generated from the file structure in `src/app/docs/[...slug]/page.tsx`: + ```typescript export async function generateStaticParams() { - const docs = getDocuments(); - return docs.map(doc => ({ - slug: doc.path.split('/'), - })); + // Automatically discovers all markdown files in EMBERDOCS_CONTENT_DIR + // Returns array of { slug: string[] } for Next.js static generation } ``` @@ -222,9 +222,8 @@ npm run start | Setting | Default | Type | |---------|---------|------| -| Search max body words | 500 | number | -| Title weight | 3 | number | -| Heading weight | 2 | number | -| Generate excerpts | true | boolean | +| Content directory | `docs/examples` | string | +| Base route | `/docs` | string | +| Theme | `dark` | 'dark' \| 'light' \| 'monochrome' | +| Show landing | `false` | boolean | | Dev port | 3000 | number | -| Build timeout | 60s | number | diff --git a/docs/examples/api-reference/index.md b/docs/examples/api-reference/index.md index eea3b16..c347b70 100644 --- a/docs/examples/api-reference/index.md +++ b/docs/examples/api-reference/index.md @@ -2,7 +2,7 @@ title: "API Reference" slug: "api-reference" -date: "2025-01-15" +date: "2026-01-02" tags: ["api", "reference"] published: true order: 7 diff --git a/docs/examples/api-reference/special-characters.md b/docs/examples/api-reference/special-characters.md index 9c5b907..393d668 100644 --- a/docs/examples/api-reference/special-characters.md +++ b/docs/examples/api-reference/special-characters.md @@ -2,7 +2,7 @@ title: "Special Characters & Edge Cases" slug: "api-reference/special-characters" -date: "2025-01-15" +date: "2026-01-02" tags: ["api", "edge-cases", "special-characters"] published: true order: 10 @@ -60,28 +60,27 @@ slug: "guides/advanced-features" # becomes /docs/guides/advanced-features --- ``` -### Slug Validation +### Slug Generation -Valid slugs contain only: -- Lowercase letters (a-z) -- Numbers (0-9) -- Hyphens (-) -- Forward slashes (/) for nesting +The `generateSlug()` function creates URL-safe slugs from text: ```typescript -// Valid -"getting-started" -"api-reference" -"guides/advanced-features" -"deep/nesting/many/levels/document" - -// Invalid (will be sanitized) -"Getting Started" // Uppercase not allowed -"api_reference" // Underscore converted to hyphen -"guide with spaces" // Spaces removed -"@api" // @ removed +// Examples +generateSlug('Getting Started'); // "getting-started" +generateSlug('API & Reference'); // "api-and-reference" +generateSlug('Hello World!'); // "hello-world" +generateSlug('Special-Chars_123'); // "special-chars123" ``` +**Behavior:** +- Converts to lowercase +- Replaces `&` with `and` +- Removes special characters (keeps alphanumeric, spaces, hyphens) +- Replaces spaces with hyphens +- Trims leading/trailing hyphens + +**Note:** Frontmatter `slug` fields are used as-is in URLs. For heading IDs, `generateSlug()` is used automatically. + ## Content Edge Cases ### Unicode & International Characters @@ -298,53 +297,37 @@ HTML is rendered as-is in the content. ### Script Tags -Script tags in markdown are **sanitized** for security: - -```markdown - -``` +Script tags in markdown are handled by `react-markdown`, which renders them as text by default. For security, you should not include script tags in markdown content. -Scripts are stripped to prevent XSS attacks. +**Note:** `react-markdown` does not execute scripts, but they may render as visible text. Avoid including script tags in documentation content. ## Performance Edge Cases ### Many Documents -EmberDocs efficiently handles: -- 100 documents -- 1000 documents -- 10000+ documents (tested) +EmberDocs is designed to handle: +- 100+ documents efficiently +- 1000+ documents with good performance +- Larger document sets (performance may vary based on content size) ### Large Search Index -Search index grows with document count: -- 100 docs = ~50KB index -- 1000 docs = ~500KB index -- 10000 docs = ~5MB index - -Pre-built and cached, so no runtime penalty. +Search index size depends on document count and content: +- Index is pre-built at build time +- Stored as JSON in `public/search-index.json` +- FlexSearch index is built client-side from the serialized documents +- No runtime build penalty (index is loaded once on page load) ### Image Handling -Large images should be optimized: +Images in markdown are rendered as standard `` tags: ```markdown -![Alt text](./image.webp) -![Alt text](./image.png) +![Alt text](./image.webp) +![Alt text](./image.png) ``` -Use Next.js `` component for optimization: - -```typescript -import Image from 'next/image'; - -Description -``` +**Note:** For optimal performance, optimize images before including them in documentation. Large images may impact page load times. ## Troubleshooting Edge Cases diff --git a/docs/examples/api-reference/utilities.md b/docs/examples/api-reference/utilities.md index 2e53670..78af40e 100644 --- a/docs/examples/api-reference/utilities.md +++ b/docs/examples/api-reference/utilities.md @@ -2,7 +2,7 @@ title: "Utilities Reference" slug: "api-reference/utilities" -date: "2025-01-15" +date: "2026-01-02" tags: ["api", "utilities"] published: true order: 9 @@ -19,7 +19,17 @@ Helper functions and utilities for EmberDocs development. Parse markdown file content with YAML frontmatter. ```typescript -function parseMarkdown(content: string): { +function parseMarkdown( + input: string, + options?: ParseOptions +): ContentData + +interface ParseOptions { + generateToc?: boolean; // Default: true + strictFrontmatter?: boolean; // Default: false +} + +interface ContentData { frontmatter: Record; body: string; toc: TocEntry[]; @@ -44,26 +54,36 @@ const parsed = parseMarkdown(markdown); console.log(parsed.frontmatter.title); // "My Doc" console.log(parsed.body); // "# Hello\n\nThis is content." console.log(parsed.toc); // Array of headings + +// Parse without TOC generation +const parsedNoToc = parseMarkdown(markdown, { generateToc: false }); ``` -### extractHeadings() +### generateSlug() -Extract heading structure from markdown body. +Generate URL-safe slug from text (used internally for heading IDs). ```typescript -function extractHeadings(body: string): TocEntry[] +function generateSlug(text: string): string ``` -**Returns array of:** +**Example:** ```typescript -interface TocEntry { - slug: string; // URL-safe heading ID - title: string; // Heading text - level: number; // 1-6 for H1-H6 -} +import { generateSlug } from '@/lib/content'; + +generateSlug('Getting Started'); // "getting-started" +generateSlug('API & Reference'); // "api-and-reference" +generateSlug('Hello World!'); // "hello-world" ``` +**Behavior:** +- Converts to lowercase +- Replaces `&` with `and` +- Removes special characters +- Replaces spaces with hyphens +- Trims leading/trailing hyphens + ## Search Functions ### buildSearchIndex() @@ -71,42 +91,39 @@ interface TocEntry { Generate full-text search index from document directory. ```typescript -async function buildSearchIndex( - docsPath: string, - options?: SearchIndexOptions -): Promise +async function buildSearchIndex(docsPath: string): Promise ``` -**Options:** +**Example:** ```typescript -interface SearchIndexOptions { - maxBodyWords?: number; // Default: 500 - titleWeight?: number; // Default: 3 - headingWeight?: number; // Default: 2 - generateExcerpts?: boolean; // Default: true -} +import { buildSearchIndex, saveIndexToFile } from '@/lib/search'; + +const index = await buildSearchIndex('./docs'); +await saveIndexToFile('./public/search-index.json', index); ``` -**Example:** +**Returns:** ```typescript -import { buildSearchIndex } from '@/lib/search'; - -const index = await buildSearchIndex('./docs', { - maxBodyWords: 500, - titleWeight: 3, - headingWeight: 2, -}); +interface SearchIndex { + documents: Record; + index?: any; // FlexSearch index (built client-side) + metadata: { + buildTime: number; + documentCount: number; + indexedWords: number; + }; +} ``` ### querySearchIndex() -Search pre-built index with natural language query. +Search pre-built index with natural language query. Note: This is a server-side fallback. Client-side search uses FlexSearch directly. ```typescript function querySearchIndex( - index: FlexSearch.Index, + index: SearchIndex, documents: Record, query: string, limit?: number @@ -116,10 +133,13 @@ function querySearchIndex( **Example:** ```typescript -import { querySearchIndex } from '@/lib/search'; +import { querySearchIndex, buildSearchIndex } from '@/lib/search'; + +// Build index +const searchIndex = await buildSearchIndex('./docs'); -const results = querySearchIndex(index, documents, "authentication", 10); -// Returns top 10 results sorted by relevance +// Search +const results = querySearchIndex(searchIndex, searchIndex.documents, "authentication", 10); results.forEach(result => { console.log(result.title); // Document title @@ -129,15 +149,33 @@ results.forEach(result => { }); ``` +### serializeIndex() + +Serialize search index to JSON string. + +```typescript +function serializeIndex(index: SearchIndex): string +``` + ### deserializeIndex() -Convert JSON serialized index back to queryable format. +Convert JSON serialized index back to SearchIndex format. ```typescript -function deserializeIndex(json: string): { - index: FlexSearch.Index; - documents: Record; -} +function deserializeIndex(serialized: string): SearchIndex +``` + +**Example:** + +```typescript +import { serializeIndex, deserializeIndex, buildSearchIndex } from '@/lib/search'; + +// Build and serialize +const index = await buildSearchIndex('./docs'); +const json = serializeIndex(index); + +// Later, deserialize +const restored = deserializeIndex(json); ``` ### saveIndexToFile() @@ -153,37 +191,51 @@ async function saveIndexToFile( ## Navigation Functions -### generateNavigation() +### discoverDocuments() -Build navigation tree from document structure. +Discover all markdown documents from a directory structure. ```typescript -function generateNavigation(docsPath: string): NavigationNode +function discoverDocuments( + rootPath: string, + currentPath?: string, + parentId?: string | null +): NavigationNode[] ``` -**Returns:** +**Example:** ```typescript -interface NavigationNode { - id: string; - title: string; - path: string; - children: NavigationNode[]; - frontmatter?: Record; - nodeMap: Record; -} +import { discoverDocuments, buildNavigationTree } from '@/lib/navigation'; + +// Discover all documents +const nodes = discoverDocuments('./docs/examples'); + +// Build hierarchical tree +const { roots, nodeMap } = buildNavigationTree(nodes); + +// Access nested document +const deepDoc = nodeMap['deep/nesting/many/levels/deep-doc']; +console.log(deepDoc.title); // Document title from frontmatter ``` -**Example:** +### buildNavigationTree() + +Build hierarchical tree structure from flat node list. ```typescript -import { generateNavigation } from '@/lib/navigation'; +function buildNavigationTree(nodes: NavigationNode[]): NavigationStructure +``` -const nav = generateNavigation('./docs/examples'); +**Returns:** -// Access nested document -const deepDoc = nav.nodeMap['docs/examples/deep/nesting/many/levels/deep-doc']; -console.log(deepDoc.title); // Document title from frontmatter +```typescript +interface NavigationStructure { + roots: NavigationNode[]; + nodeMap: Record; + versions: Version[]; + currentVersion?: string; +} ``` ### getBreadcrumbs() @@ -192,18 +244,19 @@ Generate breadcrumb trail for current path. ```typescript function getBreadcrumbs( - nav: NavigationNode, - path: string + structure: NavigationStructure, + pathname: string ): BreadcrumbItem[] ``` **Example:** ```typescript -import { getBreadcrumbs, generateNavigation } from '@/lib/navigation'; +import { discoverDocuments, buildNavigationTree, getBreadcrumbs } from '@/lib/navigation'; -const nav = generateNavigation('./docs'); -const breadcrumbs = getBreadcrumbs(nav, '/guides/advanced-features'); +const nodes = discoverDocuments('./docs'); +const nav = buildNavigationTree(nodes); +const breadcrumbs = getBreadcrumbs(nav, '/docs/guides/advanced-features'); // Returns: // [ @@ -213,24 +266,93 @@ const breadcrumbs = getBreadcrumbs(nav, '/guides/advanced-features'); // ] ``` +### findNodeByPath() + +Find navigation node by pathname. + +```typescript +function findNodeByPath( + structure: NavigationStructure, + pathname: string +): NavigationNode | undefined +``` + +### detectVersions() + +Detect Git tag versions for documentation versioning. + +```typescript +function detectVersions(baseDir?: string): Version[] +``` + +**Returns:** + +```typescript +interface Version { + tag: string; + label: string; + isCurrent: boolean; +} +``` + +**Example:** + +```typescript +import { detectVersions } from '@/lib/navigation'; + +const versions = detectVersions(); +// Returns array of Git tag versions +// Example: [{ tag: 'v1.0.0', label: 'v1.0.0', isCurrent: true }] +// Falls back to [{ tag: 'main', label: 'Latest', isCurrent: true }] if no tags +``` + +### generateNavigation() + +Complete navigation generation (discovers documents, builds tree, detects versions). + +```typescript +function generateNavigation( + docsPath?: string, + baseDir?: string +): NavigationStructure +``` + +**Example:** + +```typescript +import { generateNavigation } from '@/lib/navigation'; + +const nav = generateNavigation('./docs/examples'); +console.log(nav.roots); // Root navigation nodes +console.log(nav.nodeMap); // All nodes by ID +console.log(nav.versions); // Git tag versions +``` + ### flattenNavigation() Convert navigation tree to flat list of all documents. ```typescript -function flattenNavigation( - node: NavigationNode, - depth?: number -): Array +function flattenNavigation(nodes: NavigationNode[]): NavDocument[] +``` + +**Returns:** + +```typescript +interface NavDocument { + title: string; + path: string; +} ``` **Example:** ```typescript -const flat = flattenNavigation(nav); -flat.forEach(item => { - console.log(' '.repeat(item.depth) + item.title); - // Prints tree structure +import { flattenNavigation } from '@/lib/nav-helpers'; + +const flat = flattenNavigation(nav.roots); +flat.forEach(doc => { + console.log(`${doc.title} -> ${doc.path}`); }); ``` @@ -249,10 +371,8 @@ interface DocumentMetadata { order?: number; } -interface Document { - id: string; - path: string; - frontmatter: DocumentMetadata; +interface ContentData { + frontmatter: Record; body: string; toc: TocEntry[]; } @@ -268,6 +388,7 @@ interface SearchDocument { body: string; excerpt?: string; tags?: string[]; + headings?: string[]; } interface SearchResult { @@ -281,11 +402,11 @@ interface SearchResult { interface SearchIndex { documents: Record; - index: FlexSearch.Index; + index?: any; // FlexSearch index (built client-side) metadata: { buildTime: number; documentCount: number; - indexedWords: number; + indexedWords?: number; }; } ``` @@ -297,9 +418,23 @@ interface NavigationNode { id: string; title: string; path: string; - children: NavigationNode[]; + type?: 'folder' | 'doc'; + parentId?: string | null; + children?: NavigationNode[]; frontmatter?: DocumentMetadata; +} + +interface NavigationStructure { + roots: NavigationNode[]; nodeMap: Record; + versions: Version[]; + currentVersion?: string; +} + +interface Version { + tag: string; + label: string; + isCurrent: boolean; } interface BreadcrumbItem { @@ -308,100 +443,25 @@ interface BreadcrumbItem { } ``` -## File System Functions - -### getDocuments() - -List all markdown documents in directory. - -```typescript -function getDocuments(docsPath: string): Document[] -``` - -### getNestedDocs() +### getPrevNextDocs() -Find documents in nested subdirectories. +Get previous and next documents in navigation order. ```typescript -function getNestedDocs( - basePath: string, - depth?: number -): Document[] +function getPrevNextDocs( + currentPath: string, + navNodes: NavigationNode[] +): { prev?: NavDocument; next?: NavDocument } ``` **Example:** ```typescript -// Get all docs up to 3 levels deep -const docs = getNestedDocs('./docs', 3); -``` - -### findDocBySlug() +import { getPrevNextDocs } from '@/lib/nav-helpers'; -Locate document by slug identifier. - -```typescript -function findDocBySlug( - documents: Document[], - slug: string -): Document | undefined -``` - -**Example:** - -```typescript -const doc = findDocBySlug(documents, 'guides/advanced-features'); -if (doc) { - console.log(doc.frontmatter.title); -} -``` - -## String Utilities - -### slugify() - -Convert text to URL-safe slug. - -```typescript -function slugify(text: string): string -``` - -**Example:** - -```typescript -slugify('Hello World!'); // "hello-world" -slugify('API Reference'); // "api-reference" -slugify('Special-Chars_123'); // "special-chars_123" -``` - -### titleCase() - -Convert string to title case. - -```typescript -function titleCase(text: string): string -``` - -**Example:** - -```typescript -titleCase('hello world'); // "Hello World" -titleCase('api reference'); // "Api Reference" -``` - -### excerpt() - -Generate preview text from content. - -```typescript -function excerpt(text: string, length?: number): string -``` - -**Example:** - -```typescript -const preview = excerpt(longContent, 150); -// Returns first 150 characters, truncated at word boundary +const { prev, next } = getPrevNextDocs('/docs/guides/advanced', nav.roots); +if (prev) console.log('Previous:', prev.title); +if (next) console.log('Next:', next.title); ``` ## Markdown Utilities @@ -411,113 +471,57 @@ const preview = excerpt(longContent, 150); Syntax highlight code block using Shiki. ```typescript -async function highlightCode( - code: string, - language: string -): Promise +async function highlightCode(code: string, language: string): Promise ``` **Example:** ```typescript -import { highlightCode } from '@/lib/markdown'; +import { highlightCode } from '@/lib/highlight'; const html = await highlightCode('const x = 5;', 'typescript'); // Returns HTML with syntax highlighting ``` -### getLanguageFromCodeBlock() +**Note:** This is used internally by the CodeBlock component. For most use cases, you'll use the `CodeBlock` component directly. -Extract language identifier from markdown code fence. - -```typescript -function getLanguageFromCodeBlock(fence: string): string -``` +### extractExcerpt() -**Example:** +Extract excerpt from text with query highlighting. ```typescript -getLanguageFromCodeBlock('```typescript'); // "typescript" -getLanguageFromCodeBlock('```'); // "" -``` - -## Date Functions - -### formatDate() - -Format date for display. - -```typescript -function formatDate(date: Date | string, format?: string): string +function extractExcerpt( + text: string, + query?: string, + contextWords?: number +): string ``` **Example:** ```typescript -formatDate('2025-01-15'); // "January 15, 2025" -formatDate(new Date(), 'short'); // "1/15/25" -``` - -### getLastModified() - -Get file modification date. - -```typescript -async function getLastModified(filePath: string): Promise -``` - -## Validation Functions - -### isValidFrontmatter() +import { extractExcerpt } from '@/lib/search'; -Check if frontmatter is valid. - -```typescript -function isValidFrontmatter( - frontmatter: Record -): boolean +const excerpt = extractExcerpt(longText, 'authentication', 2); +// Returns excerpt with query highlighted ``` -### validateDocument() +### flattenToc() -Validate complete document structure. +Flatten nested TOC structure to flat array. ```typescript -function validateDocument(document: Document): { - valid: boolean; - errors: string[]; -} +function flattenToc(toc: TocEntry[]): TocEntry[] ``` **Example:** ```typescript -const result = validateDocument(doc); -if (!result.valid) { - result.errors.forEach(err => console.error(err)); -} -``` - -## Performance Utilities - -### memoizeAsync() - -Cache async function results. - -```typescript -function memoizeAsync( - fn: () => Promise, - ttl?: number -): () => Promise -``` - -**Example:** +import { parseMarkdown, flattenToc } from '@/lib/content'; -```typescript -const cachedIndex = memoizeAsync( - () => buildSearchIndex('./docs'), - 3600000 // 1 hour TTL -); +const parsed = parseMarkdown(markdown); +const flatToc = flattenToc(parsed.toc); +// Returns all headings in flat array (no nesting) ``` ## Next Steps diff --git a/docs/examples/deep/index.md b/docs/examples/deep/index.md index 7ab1442..46d58ef 100644 --- a/docs/examples/deep/index.md +++ b/docs/examples/deep/index.md @@ -2,7 +2,7 @@ title: "Deep Nesting" slug: "deep" -date: "2025-01-15" +date: "2026-01-02" tags: ["examples", "nesting"] published: true order: 11 diff --git a/docs/examples/deep/nesting/index.md b/docs/examples/deep/nesting/index.md index 1c6a38b..35d121b 100644 --- a/docs/examples/deep/nesting/index.md +++ b/docs/examples/deep/nesting/index.md @@ -2,7 +2,7 @@ title: "Nesting Examples" slug: "deep/nesting" -date: "2025-01-15" +date: "2026-01-02" tags: ["examples", "nesting"] published: true order: 1 diff --git a/docs/examples/deep/nesting/many/index.md b/docs/examples/deep/nesting/many/index.md index cb71452..d1d8e5b 100644 --- a/docs/examples/deep/nesting/many/index.md +++ b/docs/examples/deep/nesting/many/index.md @@ -2,7 +2,7 @@ title: "Many Levels" slug: "deep/nesting/many" -date: "2025-01-15" +date: "2026-01-02" tags: ["examples", "nesting"] published: true order: 1 diff --git a/docs/examples/deep/nesting/many/levels/deep-doc.md b/docs/examples/deep/nesting/many/levels/deep-doc.md index 5eea8c7..4792bbb 100644 --- a/docs/examples/deep/nesting/many/levels/deep-doc.md +++ b/docs/examples/deep/nesting/many/levels/deep-doc.md @@ -2,7 +2,7 @@ title: "Deep Nesting Example" slug: "deep/nesting/many/levels/deep-doc" -date: "2025-01-15" +date: "2026-01-02" tags: ["examples", "nesting", "navigation"] published: true order: 1 diff --git a/docs/examples/deep/nesting/many/levels/index.md b/docs/examples/deep/nesting/many/levels/index.md index ea7ea69..d9e53eb 100644 --- a/docs/examples/deep/nesting/many/levels/index.md +++ b/docs/examples/deep/nesting/many/levels/index.md @@ -2,7 +2,7 @@ title: "Levels" slug: "deep/nesting/many/levels" -date: "2025-01-15" +date: "2026-01-02" tags: ["examples", "nesting"] published: true order: 1 diff --git a/docs/examples/getting-started/index.md b/docs/examples/getting-started/index.md index 8bf8d03..4bb114a 100644 --- a/docs/examples/getting-started/index.md +++ b/docs/examples/getting-started/index.md @@ -2,7 +2,7 @@ title: "Getting Started" slug: "getting-started" -date: "2025-01-15" +date: "2026-01-02" tags: ["getting-started", "guide"] published: true order: 1 diff --git a/docs/examples/getting-started/installation.md b/docs/examples/getting-started/installation.md index ee0cc32..3356a81 100644 --- a/docs/examples/getting-started/installation.md +++ b/docs/examples/getting-started/installation.md @@ -2,7 +2,7 @@ title: "Installation Guide" slug: "getting-started/installation" -date: "2025-01-15" +date: "2026-01-02" tags: ["getting-started", "installation"] published: true order: 2 @@ -16,63 +16,57 @@ This guide walks you through installing and setting up EmberDocs for your projec Before getting started, ensure you have: -- Node.js 18.0 or higher -- npm or yarn package manager -- Basic knowledge of Next.js (optional, but helpful) +- **Node.js 18.0 or higher** - Check with `node --version` +- **npm or yarn** - Check with `npm --version` +- **Git** - For cloning the repository ## Installation Steps -### 1. Create a new project +### 1. Clone the Repository ```bash -npx create-next-app@latest my-docs --typescript -cd my-docs +git clone https://github.com/sturdy-barnacle/emberdocs.git +cd emberdocs ``` -### 2. Install EmberDocs +### 2. Install Dependencies ```bash -npm install emberdocs flexsearch react-markdown remark-gfm +npm install ``` -### 3. Create documentation directory +This will install all required dependencies including Next.js, React, TypeScript, and other core libraries. -```bash -mkdir -p docs -``` - -### 4. Add your first document +### 3. Configure Environment Variables (Optional) -Create `docs/index.md`: +EmberDocs works with zero configuration, but you can customize branding and behavior: -```markdown ---- -title: "My Documentation" -slug: "index" ---- - -# Welcome +```bash +# Copy the example environment file +cp .env.example .env.local -This is my documentation site. +# Edit .env.local to customize your site +# See user-docs/Setup.md for all available options ``` -### 5. Start the development server +**Note:** If you skip this step, EmberDocs will use sensible defaults. You can always add `.env.local` later. + +### 4. Start the Development Server ```bash npm run dev ``` -Visit `http://localhost:3000` to see your documentation. - -## Configuration +Visit `http://localhost:3000` to see your documentation site. -EmberDocs works with zero configuration, but you can customize it. See the [Configuration Guide](/docs/api-reference/configuration) for more details. +**Note:** By default, the root route (`/`) redirects to your documentation index (`/docs/index`). To show the EmberDocs framework marketing landing page instead, set `EMBERDOCS_SHOW_LANDING=true` in `.env.local`. ## What's Next? -- Learn about [Quick Start](/docs/getting-started/quick-start) -- Explore [Basic Usage](/docs/guides/basic-usage) +- Learn about [Quick Start](/docs/getting-started/quick-start) for creating your first documents +- Explore [Basic Usage](/docs/guides/basic-usage) to understand how to organize content - Check [Troubleshooting](/docs/guides/troubleshooting) if you hit any issues +- Read the [Setup Guide](/docs/getting-started/quick-start) for detailed configuration options ## Troubleshooting @@ -92,3 +86,20 @@ Clear your Next.js cache and rebuild: rm -rf .next npm run build ``` + +### Missing search index + +If search doesn't work, build the search index: + +```bash +npm run build:search +``` + +**Note:** The search index is automatically built during `npm run build`, but for development you may need to build it manually after adding new documents. + +### Environment variables not working + +Make sure you: +1. Created `.env.local` (not `.env`) +2. Restarted the dev server after editing `.env.local` +3. Used the correct variable names (check `.env.example` for reference) diff --git a/docs/examples/getting-started/introduction.md b/docs/examples/getting-started/introduction.md index 06db4d2..6ffa1ee 100644 --- a/docs/examples/getting-started/introduction.md +++ b/docs/examples/getting-started/introduction.md @@ -2,7 +2,7 @@ title: "Introduction to EmberDocs" slug: "getting-started/introduction" -date: "2025-01-15" +date: "2026-01-02" tags: ["getting-started", "introduction"] published: true order: 1 diff --git a/docs/examples/getting-started/quick-start.md b/docs/examples/getting-started/quick-start.md index 2ab1d50..ecb22a1 100644 --- a/docs/examples/getting-started/quick-start.md +++ b/docs/examples/getting-started/quick-start.md @@ -2,7 +2,7 @@ title: "Quick Start" slug: "getting-started/quick-start" -date: "2025-01-15" +date: "2026-01-02" tags: ["getting-started", "quick-start"] published: true order: 3 @@ -80,7 +80,7 @@ Edit `docs/examples/index.md`: --- title: "Welcome to My Documentation" slug: "index" -date: "2025-01-15" +date: "2026-01-02" published: true order: 0 --- @@ -134,7 +134,7 @@ Every markdown file needs YAML frontmatter at the top (between `---` delimiters) --- title: "Complete Guide to EmberDocs" slug: "guides/complete-guide" -date: "2025-01-15" +date: "2026-01-02" tags: ["guide", "tutorial", "advanced"] published: true order: 5 @@ -144,21 +144,7 @@ author: "Jane Smith" # Your content here ``` -## 4. Build the Search Index - -EmberDocs requires a search index to be built before running: - -```bash -# Build search index manually -npm run build:search - -# Or let it build automatically during production build -npm run build -``` - -The search index is automatically built before production builds via the `prebuild` script. For development, you can build it manually or it will be generated on first build. - -## 5. Start the Development Server +## 4. Start the Development Server ```bash npm run dev @@ -168,7 +154,9 @@ Open `http://localhost:3000` in your browser. You'll see your documentation! **Note:** The root route (`/`) redirects to `/docs/index` by default. To show the EmberDocs marketing landing page instead, set `EMBERDOCS_SHOW_LANDING=true` in `.env.local`. -## 6. Add More Documents +**Search Index:** The search index is automatically built during production builds (`npm run build`). For development, you can manually build it with `npm run build:search` if needed, but it's not required to get started. + +## 5. Add More Documents Create additional markdown files in `docs/examples/`: @@ -183,7 +171,7 @@ Edit `docs/examples/getting-started.md`: --- title: "Getting Started" slug: "getting-started" -date: "2025-01-15" +date: "2026-01-02" published: true order: 1 --- @@ -242,7 +230,7 @@ function greet(name: string): string { The page will automatically appear in the sidebar navigation. The URL will be `/docs/getting-started` (based on the `slug` field). -## 7. Organize with Folders +## 6. Organize with Folders Create folders to organize your documentation: @@ -263,7 +251,7 @@ Edit `docs/examples/guides/index.md`: --- title: "Guides" slug: "guides" -date: "2025-01-15" +date: "2026-01-02" published: true order: 2 --- @@ -294,7 +282,7 @@ docs/examples/ The folder structure automatically creates navigation hierarchy in the sidebar. -## 8. Use Search +## 7. Use Search Search is built-in and works automatically: @@ -309,7 +297,7 @@ The search index is built from all your markdown files and includes: - Headings - Excerpts for preview -## 9. Customize Sidebar Order +## 8. Customize Sidebar Order Control the order of items in the sidebar using the `order` field in frontmatter: @@ -336,7 +324,7 @@ order: 2 - Items without `order` are sorted alphabetically after ordered items - Folders always appear before documents in the same parent -## 10. Customize Your Branding +## 9. Customize Your Branding ### Add Your Logo @@ -667,14 +655,13 @@ npm run start Before deploying, optimize your build: ```bash -# Check bundle size -npm run build -- --analyze - # Test production build locally npm run build npm run start ``` +**Note:** For bundle size analysis, you can use `@next/bundle-analyzer` (not included by default). Install it separately if needed. + **Tips:** - Keep images optimized (use Next.js Image component) - Minimize dependencies diff --git a/docs/examples/guides/advanced-features.md b/docs/examples/guides/advanced-features.md index 1fb4da7..333c087 100644 --- a/docs/examples/guides/advanced-features.md +++ b/docs/examples/guides/advanced-features.md @@ -2,7 +2,7 @@ title: "Advanced Features" slug: "guides/advanced-features" -date: "2025-01-15" +date: "2026-01-02" tags: ["guides", "advanced"] published: true order: 5 @@ -217,13 +217,15 @@ const HeavyComponent = dynamic(() => import('./Heavy'), { EmberDocs optimizes at build time: ```bash -# Analyze bundle size -npm run build -- --profile +# Build for production +npm run build # Preview production build npm run start ``` +**Note:** For bundle size analysis, use `@next/bundle-analyzer` (install separately if needed). + ## Search Keyboard Shortcuts Implement keyboard navigation for better UX: @@ -253,7 +255,7 @@ Integrate with external APIs in your documentation: ```typescript // lib/api.ts export async function fetchLatestVersion(): Promise { - const response = await fetch('https://api.github.com/repos/emberdocs/emberdocs/releases/latest'); + const response = await fetch('https://api.github.com/repos/sturdy-barnacle/emberdocs/releases/latest'); const data = await response.json(); return data.tag_name; } diff --git a/docs/examples/guides/basic-usage.md b/docs/examples/guides/basic-usage.md index a91cfd6..e0cae4f 100644 --- a/docs/examples/guides/basic-usage.md +++ b/docs/examples/guides/basic-usage.md @@ -2,7 +2,7 @@ title: "Basic Usage" slug: "guides/basic-usage" -date: "2025-01-15" +date: "2026-01-02" tags: ["guides", "usage"] published: true order: 4 @@ -21,7 +21,7 @@ Every document is a Markdown file with a YAML frontmatter block at the top: title: "My Document" slug: "my-document" published: true -date: "2025-01-15" +date: "2026-01-02" tags: ["example", "documentation"] --- diff --git a/docs/examples/guides/customization.md b/docs/examples/guides/customization.md index 70f2010..0311755 100644 --- a/docs/examples/guides/customization.md +++ b/docs/examples/guides/customization.md @@ -2,7 +2,7 @@ title: "Customization Guide" slug: "guides/customization" -date: "2025-01-15" +date: "2026-01-02" tags: ["guides", "customization", "branding"] published: true order: 7 diff --git a/docs/examples/guides/index.md b/docs/examples/guides/index.md index fb1f99c..251f5c9 100644 --- a/docs/examples/guides/index.md +++ b/docs/examples/guides/index.md @@ -2,7 +2,7 @@ title: "Guides" slug: "guides" -date: "2025-01-15" +date: "2026-01-02" tags: ["guides", "tutorials"] published: true order: 4 diff --git a/docs/examples/guides/troubleshooting.md b/docs/examples/guides/troubleshooting.md index 61b62bc..58227da 100644 --- a/docs/examples/guides/troubleshooting.md +++ b/docs/examples/guides/troubleshooting.md @@ -2,7 +2,7 @@ title: "Troubleshooting" slug: "guides/troubleshooting" -date: "2025-01-15" +date: "2026-01-02" tags: ["guides", "troubleshooting"] published: true order: 6 @@ -98,7 +98,7 @@ export default { **Solutions:** 1. Optimize images with Next.js Image 2. Enable code splitting with `dynamic()` -3. Check bundle size: `npm run build -- --profile` +3. Use `@next/bundle-analyzer` for bundle size analysis (install separately if needed) ### Search is laggy @@ -163,7 +163,7 @@ For older browsers, use a transpiler. If issues persist: -1. Check [GitHub Issues](https://github.com/emberdocs/emberdocs/issues) +1. Check [GitHub Issues](https://github.com/sturdy-barnacle/emberdocs/issues) 2. Create a minimal reproduction 3. Include: - Node.js version diff --git a/docs/examples/index.md b/docs/examples/index.md index d9873e5..2f9a3a7 100644 --- a/docs/examples/index.md +++ b/docs/examples/index.md @@ -2,7 +2,7 @@ title: "EmberDocs Documentation" slug: "index" -date: "2025-01-15" +date: "2026-01-02" tags: ["welcome", "getting-started"] published: true order: 0 @@ -35,7 +35,7 @@ If you encounter any issues or have questions: 1. Check the [Troubleshooting](/docs/guides/troubleshooting) guide 2. Search the documentation using ⌘K / Ctrl+K -3. Visit our [GitHub repository](https://github.com/emberdocs/emberdocs) +3. Visit our [GitHub repository](https://github.com/sturdy-barnacle/emberdocs) ## What's Next? diff --git a/docs/planning/license_options_analysis.md b/docs/planning/license_options_analysis.md deleted file mode 100644 index d78bd2e..0000000 --- a/docs/planning/license_options_analysis.md +++ /dev/null @@ -1,259 +0,0 @@ -# License Options Analysis - -**Date:** 2025-01-15 -**Current License:** Proprietary core license (source-available) -**Status:** Historical - proprietary licensing was chosen and implemented - -> **NOTE: This document is historical. EmberDocs core uses a proprietary source-available license. See [EMBERDOCS-LICENSING.md](../EMBERDOCS-LICENSING.md) for current licensing information.** - ---- - -## Current License Summary - -**EmberDocs Proprietary License:** -- ✅ Free to use and self-host -- ✅ Source-available (can view/study code) -- ✅ Can modify for own use -- ❌ Cannot redistribute -- ❌ Cannot sell or create competing services -- ❌ Cannot fork/rebrand - -**Goal:** Keep code free for users, but prevent redistribution and competing services. - ---- - -## Open Source License Options with Attribution - -### 1. MIT License - -**Attribution Requirements:** -- Must include copyright notice and license text -- Simple, permissive requirement - -**Pros:** -- ✅ Very permissive - allows commercial use, modification, distribution -- ✅ Simple and widely understood -- ✅ Compatible with most other licenses -- ✅ No copyleft requirements - -**Cons:** -- ❌ **Too permissive** - allows redistribution and competing services -- ❌ No protection against forks/rebranding -- ❌ Anyone can sell it or create SaaS competitors - -**Verdict:** ❌ **Not suitable** - too permissive, doesn't meet your goals - ---- - -### 2. Apache License 2.0 - -**Attribution Requirements:** -- Must include copyright notice -- Must include license text -- Must include NOTICE file (if provided) -- Must state significant changes made - -**Pros:** -- ✅ Explicit attribution requirements -- ✅ Patent grant included -- ✅ Well-established and respected -- ✅ Clear change attribution requirement - -**Cons:** -- ❌ **Too permissive** - allows redistribution and competing services -- ❌ No protection against forks/rebranding -- ❌ Anyone can sell it or create SaaS competitors - -**Verdict:** ❌ **Not suitable** - too permissive, doesn't meet your goals - ---- - -### 3. GNU General Public License (GPL) v3 - -**Attribution Requirements:** -- Must include copyright notice -- Must include full license text -- Must state changes made and date -- Must preserve license notices - -**Pros:** -- ✅ Strong attribution requirements -- ✅ Copyleft - derivative works must be GPL -- ✅ Prevents proprietary forks -- ✅ Well-established and legally tested - -**Cons:** -- ❌ **Copyleft requirement** - derivative works must be GPL -- ❌ Can still be redistributed (as long as it's GPL) -- ❌ Can still be forked and rebranded (as long as it's GPL) -- ❌ **Doesn't prevent competing services** - someone could create a GPL SaaS competitor -- ❌ More complex than permissive licenses - -**Verdict:** ⚠️ **Partially suitable** - provides attribution and prevents proprietary forks, but doesn't prevent redistribution or competing services - ---- - -### 4. Common Public Attribution License (CPAL) - -**Attribution Requirements:** -- Must display attribution notice -- Attribution must be "reasonably calculated to inform the public" -- Based on MPL 2.0 with attribution clause - -**Pros:** -- ✅ Explicit attribution requirement -- ✅ Weak copyleft (file-level, not project-level) -- ✅ Allows proprietary extensions -- ✅ Designed for attribution needs - -**Cons:** -- ❌ Still allows redistribution -- ❌ Still allows competing services -- ❌ Less common/well-known -- ❌ Attribution display requirement may be burdensome - -**Verdict:** ⚠️ **Partially suitable** - better attribution than MIT/Apache, but still too permissive - ---- - -### 5. AGPL (Affero GPL) v3 - -**Attribution Requirements:** -- Same as GPL v3 -- Plus: Must provide source code to network users - -**Pros:** -- ✅ Strong attribution -- ✅ Strong copyleft -- ✅ **Prevents SaaS competitors** - requires source code for network services -- ✅ Well-established - -**Cons:** -- ❌ **Very restrictive** - even using it as a service requires open sourcing -- ❌ Still allows redistribution (as long as it's AGPL) -- ❌ Can still be forked and rebranded (as long as it's AGPL) -- ❌ May discourage adoption - -**Verdict:** ⚠️ **Partially suitable** - prevents SaaS competitors but very restrictive, still allows redistribution - ---- - -## Comparison Table - -| License | Attribution | Redistribution | Competing Services | Fork/Rebrand | Copyleft | -|---------|-------------|----------------|-------------------|-------------|----------| -| **Current (Proprietary)** | ✅ Required | ❌ Blocked | ❌ Blocked | ❌ Blocked | N/A | -| **MIT** | ✅ Required | ✅ Allowed | ✅ Allowed | ✅ Allowed | None | -| **Apache 2.0** | ✅ Required | ✅ Allowed | ✅ Allowed | ✅ Allowed | None | -| **GPL v3** | ✅ Required | ✅ Allowed* | ✅ Allowed | ✅ Allowed* | Strong | -| **CPAL** | ✅ Required | ✅ Allowed | ✅ Allowed | ✅ Allowed | Weak | -| **AGPL v3** | ✅ Required | ✅ Allowed* | ❌ Blocked | ✅ Allowed* | Strong | - -*Allowed only if derivative work is also licensed under the same license - ---- - -## Recommendation - -### Option 1: Keep Current Proprietary License ✅ **RECOMMENDED** - -**Why:** -- Meets all your goals (free use, no redistribution, no competing services) -- Source-available provides transparency -- Allows modifications for own use -- Protects commercial interests - -**Trade-offs:** -- Not "open source" (OSI definition) -- May limit adoption from open-source-only users -- Requires custom license management - ---- - -### Option 2: Dual License (Proprietary + GPL) - -**Approach:** -- Core framework: Keep proprietary license -- Consider: Release some components under a separate open-source license for community (only if demand emerges) - -**Pros:** -- Best of both worlds -- Community can contribute to GPL components -- Core remains protected - -**Cons:** -- More complex to manage -- Need clear boundaries between licenses - ---- - -### Option 3: Switch to AGPL v3 - -**Only if:** -- You're willing to allow redistribution (as long as it's AGPL) -- You're willing to allow forks/rebranding (as long as it's AGPL) -- Preventing SaaS competitors is the primary concern -- You want to be "fully open source" - -**Trade-offs:** -- ✅ Prevents SaaS competitors -- ✅ Strong attribution -- ❌ Still allows redistribution -- ❌ Still allows forks/rebranding -- ❌ Very restrictive (may limit adoption) - ---- - -## Questions to Consider - -1. **Is "open source" status important?** - - If yes: Consider AGPL or dual licensing - - If no: Current license is fine - -2. **Is preventing redistribution critical?** - - If yes: Keep proprietary or use AGPL (with copyleft) - - If no: MIT/Apache might work - -3. **Is preventing competing services critical?** - - If yes: Keep proprietary or use AGPL - - If no: GPL might work - -4. **Is preventing forks/rebranding critical?** - - If yes: Keep proprietary - - If no: Any open source license allows this - -5. **Do you want to allow community contributions?** - - If yes: Consider dual licensing or AGPL - - If no: Current license is fine - ---- - -## Conclusion - -**For your stated goals (free use, no redistribution, no competing services, no forks):** - -✅ **Keep the current proprietary license** - It's the only option that meets all your requirements. - -**If you're willing to compromise:** - -⚠️ **AGPL v3** - Prevents SaaS competitors but still allows redistribution and forks (as long as they're AGPL). - -❌ **MIT/Apache/GPL** - Too permissive, don't meet your goals. - ---- - -## Next Steps - -1. **Decision:** Choose license based on priorities -2. **If keeping proprietary:** No changes needed -3. **If switching to AGPL:** - - Replace LICENSE file with AGPL v3 text - - Update package.json license field - - Update documentation - - Update NOTICES.md if needed -4. **If dual licensing:** Create clear boundaries and documentation - ---- - -**Note:** This analysis is for informational purposes. Consult with a legal professional before making licensing decisions. - diff --git a/mockups/bw/landing-mockup-04-bw.html b/mockups/bw/landing-mockup-04-bw.html new file mode 100644 index 0000000..cf4ee37 --- /dev/null +++ b/mockups/bw/landing-mockup-04-bw.html @@ -0,0 +1,643 @@ + + + + + + EmberDocs - Minimalist B&W Landing Page + + + + + + +
+ +
+ +
+
+
+

Documentation
without the hassle

+

+ Write in markdown. Deploy in seconds. No configuration required. +

+ + +
+
+
+
+
+
+
+ # Create a new project + $ npx emberdocs init my-docs + + # Start writing + $ cd my-docs && npm run dev + + # Done. Your docs are live. +
+
+
+
+ +
+
+
+
<50ms
+
Search speed
+
+
+
30s
+
Setup time
+
+
+
100%
+
Free to self-host
+
+
+
+ +
+
+
+

Everything you need

+

+ Built for developers who want simple, fast, and beautiful documentation. +

+
+ +
+
+
+

Instant Search

+

FlexSearch-powered client-side search with keyboard shortcuts. Find anything in milliseconds.

+
+ +
+
🎯
+

Zero Config

+

Drop in your markdown files. No complex configuration. No build steps. Just works.

+
+ +
+
📱
+

Mobile First

+

Responsive design that works perfectly on every device. Touch-optimized navigation.

+
+ +
+
🔄
+

Git Versioning

+

Automatic version detection from Git tags. No manual configuration needed.

+
+ +
+
🎨
+

Clean Design

+

Beautiful typography and minimal interface. Focus on your content, not the chrome.

+
+ +
+
🔓
+

No Lock-in

+

Your markdown files are portable. Export anytime. Source-available core framework.

+
+
+
+
+ +
+
+
+

Why EmberDocs?

+

+ Compare EmberDocs to other documentation tools +

+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureEmberDocsGitBookReadMe
Free to self-host
Instant search
Git-native versioning
Zero configuration
No vendor lock-in
+
+
+
+ +
+
+

Start building today

+

Free to self-host. No limits. No fees.

+ Get Started +
+
+
+ + + + diff --git a/mockups/bw/ui-mockup-06-bw.html b/mockups/bw/ui-mockup-06-bw.html new file mode 100644 index 0000000..d47cad0 --- /dev/null +++ b/mockups/bw/ui-mockup-06-bw.html @@ -0,0 +1,682 @@ + + + + + + EmberDocs - Minimalist B&W Documentation Page + + + + + + +
+
+ + +
+
+ +
+ + + + +
+ + +

Installation

+ + + +

EmberDocs can be installed in multiple ways depending on your needs. The CLI tool is the fastest way to get started.

+ +

Quick Install

+

The easiest way to create a new EmberDocs project is using the CLI:

+ +
+
+ bash + +
+
+ # Create a new project + npx emberdocs init my-docs + + # Navigate to project + cd my-docs + + # Start development server + npm run dev +
+
+ +

This creates a new directory with everything you need to start writing documentation.

+ +
+
Pro Tip
+

Use the --minimal flag to skip example pages and create a bare-bones project structure.

+
+ +

Requirements

+

Before installing EmberDocs, make sure you have the following installed:

+ +
    +
  • Node.js - Version 18.0 or higher
  • +
  • npm or yarn - For package management
  • +
  • Git (optional) - For version control and versioning features
  • +
+ +

Manual Setup

+

If you prefer to set up EmberDocs manually, you can install it as a package:

+ +
+
+ bash + +
+
+ npm install @emberdocs/core +
+
+ +

Project Structure

+

A typical EmberDocs project has the following structure:

+ +
+
+ text + +
+
+ my-docs/ + ├── docs/ + │ ├── index.md + │ ├── getting-started.md + │ └── api/ + │ └── overview.md + ├── emberdocs.config.js + ├── package.json + └── README.md +
+
+ +

Next Steps

+

Now that you have EmberDocs installed, you can:

+ +
    +
  • Learn about configuration options
  • +
  • Follow the Quick Start guide
  • +
  • Explore deployment options
  • +
+ + +
+ + + +
+ + diff --git a/mockups/landing/landing-mockup-01-minimal.html b/mockups/landing/landing-mockup-01-minimal.html index 3112b8e..cd64e32 100644 --- a/mockups/landing/landing-mockup-01-minimal.html +++ b/mockups/landing/landing-mockup-01-minimal.html @@ -280,9 +280,9 @@

Documentation that doesn't suck

-
# Create your docs in 30 seconds
-
npx emberdocs init my-docs
-
cd my-docs
+
# Clone, install, run - that's it
+
git clone https://github.com/sturdy-barnacle/emberdocs.git
+
cd emberdocs && npm install
npm run dev
diff --git a/mockups/landing/landing-mockup-02-developer-dark.html b/mockups/landing/landing-mockup-02-developer-dark.html index 20e0470..19bd553 100644 --- a/mockups/landing/landing-mockup-02-developer-dark.html +++ b/mockups/landing/landing-mockup-02-developer-dark.html @@ -379,10 +379,10 @@

Zero-config documentation framework for indie developers. - Beautiful, fast, and maintainable. Deploy in 30 seconds, - customize when you need to. + Beautiful, fast, and maintainable. Clone, install, run. + Customize when you need to.

- npx emberdocs init → + Get Started →
@@ -390,7 +390,7 @@

Search latency

- 30s + 2 min Setup time
@@ -409,17 +409,21 @@

$ - npx emberdocs init my-docs + git clone https://github.com/sturdy-barnacle/emberdocs.git
-
Creating EmberDocs project...
-
✓ Created docs/ directory
-
✓ Generated example pages
-
✓ Installed dependencies
-
✓ Ready to go!
+
Cloning into 'emberdocs'...
+
✓ Repository cloned
+

+
+ $ + cd emberdocs && + npm install +
+
Installing dependencies...
+
✓ Dependencies installed

$ - cd my-docs && npm run dev
Starting development server...
diff --git a/mockups/landing/landing-mockup-03-feature-grid.html b/mockups/landing/landing-mockup-03-feature-grid.html index 482a78d..4c56a58 100644 --- a/mockups/landing/landing-mockup-03-feature-grid.html +++ b/mockups/landing/landing-mockup-03-feature-grid.html @@ -288,8 +288,8 @@

Documentation that doesn't suck

Zero Configuration

Drop markdown files in a folder and you're done. EmberDocs handles everything: navigation generation, search indexing, syntax highlighting, and deployment.

-npx emberdocs init my-docs -cd my-docs && npm run dev +git clone https://github.com/sturdy-barnacle/emberdocs.git +cd emberdocs && npm install && npm run dev # ✓ Your docs are live
@@ -348,8 +348,8 @@

Free to Self-Host

Ready to build better docs?

-

Get started in 30 seconds. No credit card required.

- npx emberdocs init → +

Get started in 2 minutes. No credit card required.

+ Get Started →
diff --git a/mockups/ui/ui-mockup-01-documentation-page.html b/mockups/ui/ui-mockup-01-documentation-page.html index 30928ce..6d97f19 100644 --- a/mockups/ui/ui-mockup-01-documentation-page.html +++ b/mockups/ui/ui-mockup-01-documentation-page.html @@ -562,11 +562,12 @@

Quick Install

- # Create a new project - npx emberdocs init my-docs + # Clone the repository + git clone https://github.com/sturdy-barnacle/emberdocs.git + cd emberdocs - # Navigate to project - cd my-docs + # Install dependencies + npm install # Start development server npm run dev diff --git a/mockups/ui/ui-mockup-02-search-modal.html b/mockups/ui/ui-mockup-02-search-modal.html index a245e73..e4090b6 100644 --- a/mockups/ui/ui-mockup-02-search-modal.html +++ b/mockups/ui/ui-mockup-02-search-modal.html @@ -384,7 +384,7 @@
Quick Install
Getting Started → Installation → Quick Install
- The easiest way to create a new EmberDocs project is using the CLI: npx emberdocs init my-docs + Clone the repository, install dependencies, and run the dev server: git clone https://github.com/sturdy-barnacle/emberdocs.git && cd emberdocs && npm install && npm run dev
diff --git a/mockups/ui/ui-mockup-05-component-library.html b/mockups/ui/ui-mockup-05-component-library.html index 93a6cc6..4476f0b 100644 --- a/mockups/ui/ui-mockup-05-component-library.html +++ b/mockups/ui/ui-mockup-05-component-library.html @@ -674,7 +674,7 @@

Code Display

Inline Code

- Install with npm install emberdocs to get started. + Clone the repository and install dependencies: git clone https://github.com/sturdy-barnacle/emberdocs.git

diff --git a/public/favicon.png b/public/favicon.png new file mode 100644 index 0000000..8ec656c Binary files /dev/null and b/public/favicon.png differ diff --git a/src/app/docs/[...slug]/page.tsx b/src/app/docs/[...slug]/page.tsx index 3e32c1d..1e45d31 100644 --- a/src/app/docs/[...slug]/page.tsx +++ b/src/app/docs/[...slug]/page.tsx @@ -33,6 +33,7 @@ interface PageProps { } export default async function DocPage({ params }: PageProps) { + // Immediately unwrap params Promise to prevent enumeration errors in dev tools const { slug: slugArray } = await params; let slug = slugArray?.join('/') || ''; diff --git a/src/app/docs/docs.css b/src/app/docs/docs.css index 85ff6cb..c8e6ca1 100644 --- a/src/app/docs/docs.css +++ b/src/app/docs/docs.css @@ -37,6 +37,75 @@ border-radius: 6px; } +/* Monochrome theme overrides for docs */ +[data-theme='monochrome'] .logo-mark { + background: var(--black); +} + +[data-theme='monochrome'] .sidebar { + background: var(--gray-50); +} + +[data-theme='monochrome'] .code-block { + background: var(--gray-50); + border: 1px solid var(--gray-200); +} + +[data-theme='monochrome'] .code-header { + background: var(--gray-100); + border-bottom: 1px solid var(--gray-200); +} + +[data-theme='monochrome'] .code-copy { + background: var(--white); + border: 1px solid var(--gray-200); + color: var(--gray-700); +} + +[data-theme='monochrome'] .code-copy:hover { + background: var(--black); + color: var(--white); + border-color: var(--black); +} + +[data-theme='monochrome'] .callout { + background: var(--gray-50); + border-left: 3px solid var(--black); +} + +[data-theme='monochrome'] .callout-title { + color: var(--black); +} + +[data-theme='monochrome'] .callout.warning { + background: var(--gray-50); + border-left-color: var(--black); +} + +[data-theme='monochrome'] .sidebar-link:hover { + color: var(--text); /* #000000 - high contrast */ + background: var(--gray-100); /* #F5F5F5 - subtle gray background instead of purple */ + border-left-color: var(--black); +} + +[data-theme='monochrome'] .sidebar-link.active { + color: var(--text); /* #000000 - maximum contrast */ + background: var(--gray-100); /* #F5F5F5 - subtle gray background instead of purple */ + border-left-color: var(--black); +} + +[data-theme='monochrome'] .toc-link.active { + color: var(--black); +} + +[data-theme='monochrome'] code:not(pre code) { + color: var(--black); +} + +[data-theme='monochrome'] .nav-card:hover { + border-color: var(--black); +} + .header-nav { display: flex; align-items: center; @@ -755,6 +824,16 @@ background: rgba(139, 92, 246, 0.1); } +/* Light theme: Use lighter purple for hover background */ +[data-theme='light'] .sidebar-link:hover { + background: rgba(124, 58, 237, 0.08); /* Lighter purple for light theme */ +} + +/* Monochrome theme: Use gray background instead of purple */ +[data-theme='monochrome'] .sidebar-link:hover { + background: var(--gray-100); /* #F5F5F5 - subtle gray background */ +} + .sidebar-link.active { color: var(--ed-link); background: rgba(139, 92, 246, 0.1); @@ -762,6 +841,17 @@ font-weight: 500; } +/* Light theme: Use lighter purple for active background */ +[data-theme='light'] .sidebar-link.active { + background: rgba(124, 58, 237, 0.08); /* Lighter purple for light theme */ +} + +/* Monochrome theme: Use gray background instead of purple */ +[data-theme='monochrome'] .sidebar-link.active { + background: var(--gray-100); /* #F5F5F5 - subtle gray background */ + color: var(--text); /* #000000 - maximum contrast */ +} + .sidebar-link:visited { color: var(--text-secondary); } @@ -773,9 +863,25 @@ background: rgba(139, 92, 246, 0.1); } +/* Light theme: Use lighter purple for focus background */ +[data-theme='light'] .sidebar-link:focus-visible { + background: rgba(124, 58, 237, 0.08); /* Lighter purple for light theme */ +} + +/* Monochrome theme: Use gray background instead of purple */ +[data-theme='monochrome'] .sidebar-link:focus-visible { + background: var(--gray-100); /* #F5F5F5 - subtle gray background */ +} + .sidebar-link.nested { padding-left: 40px; font-size: 13px; + background: transparent; /* Ensure no background on nested links */ +} + +/* Dark theme: Ensure nested links have no background by default */ +[data-theme='dark'] .sidebar-link.nested:not(:hover):not(.active):not(:focus-visible) { + background: transparent; } /* Index link styling - special treatment for root index.md */ @@ -998,6 +1104,51 @@ color: inherit; } +/* Light theme: Code block copy button styles */ +/* Target buttons inside code blocks (CodeBlock component) */ +[data-theme='light'] .my-6 button { + border-color: rgba(255, 255, 255, 0.3) !important; + color: rgba(255, 255, 255, 0.8) !important; +} + +[data-theme='light'] .my-6 button:hover { + border-color: rgba(255, 255, 255, 0.5) !important; + color: rgba(255, 255, 255, 1) !important; + background-color: rgba(255, 255, 255, 0.1) !important; +} + +/* Light theme: Copied state - use bright green for visibility */ +[data-theme='light'] .my-6 button.border-green-500, +[data-theme='light'] .my-6 button.text-green-500 { + border-color: #10B981 !important; + color: #10B981 !important; +} + +/* Light theme: Failed state - use bright red for visibility */ +[data-theme='light'] .my-6 button.border-red-500, +[data-theme='light'] .my-6 button.text-red-500 { + border-color: #EF4444 !important; + color: #EF4444 !important; +} + +/* Dark theme: Copied state - use brighter green for visibility on dark background */ +[data-theme='dark'] .my-6 button.border-green-500, +[data-theme='dark'] .my-6 button.text-green-500, +html:not([data-theme]) .my-6 button.border-green-500, +html:not([data-theme]) .my-6 button.text-green-500 { + border-color: #34D399 !important; /* green-400 - brighter for dark theme */ + color: #34D399 !important; +} + +/* Dark theme: Failed state - use brighter red for visibility */ +[data-theme='dark'] .my-6 button.border-red-500, +[data-theme='dark'] .my-6 button.text-red-500, +html:not([data-theme]) .my-6 button.border-red-500, +html:not([data-theme]) .my-6 button.text-red-500 { + border-color: #F87171 !important; /* red-400 - brighter for dark theme */ + color: #F87171 !important; +} + /* Tables */ .docs-content .docs-table-wrapper { width: 100%; diff --git a/src/app/globals.css b/src/app/globals.css index a1199e8..b120660 100644 --- a/src/app/globals.css +++ b/src/app/globals.css @@ -93,9 +93,9 @@ --ed-surface-hover: #F3F4F6; --ed-border: #E5E7EB; --ed-text: #111827; - --ed-text-secondary: #4B5563; + --ed-text-secondary: #6B7280; --ed-text-tertiary: #6B7280; - --ed-code-bg: #F9FAFB; + --ed-code-bg: #1E293B; --ed-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); /* Accessible Link Colors for Light Theme (WCAG 2.1 AA compliant) */ @@ -105,6 +105,10 @@ --ed-link-visited: #9333EA; /* Slightly different shade for visited */ --ed-link-focus: #7C3AED; /* Focus ring color */ + /* Terminal Colors for Light Theme (dark code blocks) */ + --ed-terminal-bg: #1E293B; + --ed-terminal-header: #334155; + /* Legacy aliases */ --bg: var(--ed-bg); --surface: var(--ed-surface); @@ -115,6 +119,69 @@ --text-tertiary: var(--ed-text-tertiary); --code-bg: var(--ed-code-bg); --shadow: var(--ed-shadow); + --terminal-bg: var(--ed-terminal-bg); + --terminal-header: var(--ed-terminal-header); +} + +[data-theme='monochrome'] { + --ed-bg: #FFFFFF; + --ed-surface: #FAFAFA; + --ed-surface-hover: #F5F5F5; + --ed-border: #E5E5E5; + --ed-text: #000000; + --ed-text-secondary: #525252; + --ed-text-tertiary: #737373; + --ed-code-bg: #F5F5F5; + --ed-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + + /* Monochrome: Black links (no brand colors) */ + --ed-link: #000000; + --ed-link-hover: #262626; + --ed-link-active: #000000; + --ed-link-visited: #404040; + --ed-link-focus: #000000; + + /* Brand colors set to black/gray for monochrome */ + --ed-purple: #000000; + --ed-amber: #525252; + --ed-deep-purple: #000000; + --ed-light-purple: #737373; + + /* Terminal Colors for Monochrome (black code blocks) */ + --ed-terminal-bg: #000000; + --ed-terminal-header: #171717; + + /* Grayscale palette for monochrome theme */ + --gray-50: #FAFAFA; + --gray-100: #F5F5F5; + --gray-200: #E5E5E5; + --gray-300: #D4D4D4; + --gray-400: #A3A3A3; + --gray-500: #737373; + --gray-600: #525252; + --gray-700: #404040; + --gray-800: #262626; + --gray-900: #171717; + --black: #000000; + --white: #FFFFFF; + + /* Legacy aliases */ + --bg: var(--ed-bg); + --surface: var(--ed-surface); + --surface-hover: var(--ed-surface-hover); + --border: var(--ed-border); + --text: var(--ed-text); + --text-secondary: var(--ed-text-secondary); + --text-tertiary: var(--ed-text-tertiary); + --code-bg: var(--ed-code-bg); + --shadow: var(--ed-shadow); + --terminal-bg: var(--ed-terminal-bg); + --terminal-header: var(--ed-terminal-header); + --purple: var(--ed-purple); + --amber: var(--ed-amber); + --accent: var(--purple); + --accent-secondary: var(--amber); + --muted: var(--text-tertiary); } * { @@ -130,6 +197,16 @@ html:not([data-theme]) { color-scheme: dark; } +/* Light theme color scheme */ +html[data-theme='light'] { + color-scheme: light; +} + +/* Monochrome theme color scheme */ +html[data-theme='monochrome'] { + color-scheme: light; +} + body { margin: 0; background: var(--bg); diff --git a/src/app/landing.css b/src/app/landing.css index 2a1dc94..305e283 100644 --- a/src/app/landing.css +++ b/src/app/landing.css @@ -1,23 +1,29 @@ @import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap'); -:root { - --purple: #8B5CF6; - --amber: #F59E0B; - --bg: #0F172A; - --surface: #1E293B; - --border: #334155; - --text: #F1F5F9; - --text-secondary: #CBD5E1; - --text-tertiary: #94A3B8; -} - -body { - font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif; - color: var(--text); - background: var(--bg); - line-height: 1.5; - margin: 0; - padding: 0; +/* Note: CSS variables are defined in globals.css, not here */ +/* This file only contains landing-page-specific styles */ + +/* Base code snippet styles */ +.code-snippet { + font-family: 'JetBrains Mono', monospace; + font-size: 14px; + line-height: 1.8; +} + +.code-snippet > div { + display: block; +} + +.code-preview { + font-family: 'JetBrains Mono', monospace; +} + +.code-content { + font-family: 'JetBrains Mono', monospace; +} + +.code-line { + display: block; } .landing-container { @@ -115,6 +121,17 @@ body { border-radius: 8px; } +.btn-secondary { + background: transparent; + color: var(--purple); + border: 2px solid var(--purple); + padding: 10px 24px; +} + +.btn-secondary:hover { + background: rgba(139, 92, 246, 0.1); +} + /* Hero */ .hero { padding: 100px 0; @@ -175,7 +192,7 @@ body { /* Terminal */ .terminal { - background: #0A0F1E; + background: var(--terminal-bg); border: 1px solid var(--border); border-radius: 12px; overflow: hidden; @@ -183,7 +200,7 @@ body { } .terminal-header { - background: #1A1F2E; + background: var(--terminal-header); padding: 12px 16px; border-bottom: 1px solid var(--border); display: flex; @@ -197,9 +214,9 @@ body { border-radius: 50%; } -.dot-red { background: #EF4444; } -.dot-yellow { background: #F59E0B; } -.dot-green { background: #10B981; } +.dot-red { background: var(--ed-error); } +.dot-yellow { background: var(--ed-amber); } +.dot-green { background: var(--ed-success); } .terminal-body { padding: 24px; @@ -213,19 +230,19 @@ body { } .prompt { - color: #10B981; + color: var(--ed-success); } .command { - color: #F59E0B; + color: var(--ed-amber); } .output { - color: #94A3B8; + color: var(--text-tertiary); } .success { - color: #10B981; + color: var(--ed-success); } /* Features */ @@ -307,7 +324,7 @@ body { } .comparison-header { - background: #1A1F2E; + background: var(--surface); font-weight: 600; } @@ -321,12 +338,12 @@ body { } .check { - color: #10B981; + color: var(--ed-success); font-weight: 600; } .cross { - color: #EF4444; + color: var(--ed-error); } /* Footer */ @@ -341,6 +358,358 @@ body { margin: 0; } +/* Light Theme Styles */ +[data-theme='light'] .landing-header { + background: rgba(255, 255, 255, 0.8); + backdrop-filter: blur(10px); +} + +[data-theme='light'] .btn-secondary { + background: transparent; + color: var(--purple); + border: 2px solid var(--purple); + padding: 10px 24px; +} + +[data-theme='light'] .btn-secondary:hover { + background: rgba(124, 58, 237, 0.1); +} + +[data-theme='light'] .hero { + padding: 120px 0 80px; + text-align: center; +} + +[data-theme='light'] .hero-grid { + grid-template-columns: 1fr; + text-align: center; +} + +[data-theme='light'] .hero-content h1 { + max-width: 800px; + margin-left: auto; + margin-right: auto; +} + +[data-theme='light'] .hero-content p { + font-size: 20px; + max-width: 600px; + margin-left: auto; + margin-right: auto; +} + +[data-theme='light'] .hero-cta { + display: flex; + gap: 16px; + justify-content: center; + margin-bottom: 60px; +} + +/* Light theme: Simple code snippet instead of terminal */ +[data-theme='light'] .code-snippet { + background: var(--ed-code-bg); + color: #E2E8F0; + padding: 24px; + border-radius: 12px; + max-width: 600px; + margin: 0 auto; + text-align: left; + font-family: 'JetBrains Mono', monospace; + font-size: 14px; + line-height: 1.8; + border: 1px solid #334155; +} + +[data-theme='light'] .code-snippet .comment { + color: #94A3B8; +} + +[data-theme='light'] .code-snippet .command { + color: #F59E0B; +} + +/* Light theme: Feature cards instead of tech stack */ +[data-theme='light'] .features { + background: var(--surface); +} + +[data-theme='light'] .feature-grid { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 32px; + margin-top: 0; +} + +[data-theme='light'] .feature-card { + background: white; + padding: 32px; + border-radius: 12px; + border: 1px solid var(--border); +} + +[data-theme='light'] .feature-icon { + width: 48px; + height: 48px; + background: linear-gradient(135deg, var(--purple) 0%, var(--amber) 100%); + border-radius: 8px; + margin-bottom: 16px; +} + +[data-theme='light'] .feature-card h3 { + font-size: 20px; + font-weight: 600; + margin-bottom: 12px; +} + +[data-theme='light'] .feature-card p { + color: var(--text-secondary); + line-height: 1.6; +} + +[data-theme='light'] .comparison { + background: var(--surface); +} + +[data-theme='light'] .comparison-header { + background: var(--surface); +} + +/* Monochrome Theme Styles */ +[data-theme='monochrome'] .landing-header { + background: rgba(255, 255, 255, 0.8); + backdrop-filter: blur(10px); + border-bottom: 1px solid var(--gray-200); +} + +[data-theme='monochrome'] .btn-primary { + background: var(--black); + color: var(--white); + border: 2px solid var(--black); +} + +[data-theme='monochrome'] .btn-primary:hover { + background: var(--gray-900); + transform: translateY(-2px); + box-shadow: 0 8px 16px rgba(0, 0, 0, 0.15); +} + +[data-theme='monochrome'] .btn-secondary { + background: var(--white); + color: var(--black); + border: 2px solid var(--gray-300); +} + +[data-theme='monochrome'] .btn-secondary:hover { + border-color: var(--black); + background: var(--gray-50); +} + +[data-theme='monochrome'] .hero { + padding: 120px 0 80px; + text-align: center; +} + +[data-theme='monochrome'] .hero-grid { + grid-template-columns: 1fr; + text-align: center; +} + +[data-theme='monochrome'] .hero-content h1 { + font-size: 72px; + font-weight: 700; + line-height: 1.1; + letter-spacing: -0.03em; + margin-bottom: 24px; + color: var(--black); + max-width: 100%; + margin-left: auto; + margin-right: auto; +} + +[data-theme='monochrome'] .hero-content p { + font-size: 24px; + color: var(--gray-600); + margin-bottom: 48px; + max-width: 700px; + margin-left: auto; + margin-right: auto; + font-weight: 400; +} + +[data-theme='monochrome'] .hero-cta { + display: flex; + gap: 16px; + justify-content: center; + margin-bottom: 64px; +} + +/* Monochrome: Black code preview */ +[data-theme='monochrome'] .code-preview { + background: var(--black); + border-radius: 12px; + padding: 32px; + max-width: 700px; + margin: 0 auto 64px; + box-shadow: 0 20px 60px rgba(0, 0, 0, 0.2); +} + +[data-theme='monochrome'] .code-header { + display: flex; + gap: 8px; + margin-bottom: 24px; +} + +[data-theme='monochrome'] .code-dot { + width: 12px; + height: 12px; + border-radius: 50%; + background: var(--gray-700); +} + +[data-theme='monochrome'] .code-content { + font-family: 'JetBrains Mono', monospace; + font-size: 14px; + line-height: 1.8; + color: var(--gray-300); +} + +[data-theme='monochrome'] .code-line { + display: block; +} + +[data-theme='monochrome'] .code-comment { + color: var(--gray-600); +} + +[data-theme='monochrome'] .code-command { + color: var(--white); +} + +/* Monochrome: Stats section */ +[data-theme='monochrome'] .stats { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 48px; + padding: 80px 0; + border-top: 1px solid var(--gray-200); + border-bottom: 1px solid var(--gray-200); + margin-top: 0; +} + +[data-theme='monochrome'] .stat { + text-align: center; + border-left: none; + padding-left: 0; +} + +[data-theme='monochrome'] .stat-number { + font-size: 48px; + font-weight: 700; + color: var(--black); + margin-bottom: 8px; + letter-spacing: -0.02em; + display: block; +} + +[data-theme='monochrome'] .stat-label { + font-size: 16px; + color: var(--gray-600); +} + +/* Monochrome: Features section */ +[data-theme='monochrome'] .features { + padding: 120px 0; + background: var(--white); +} + +[data-theme='monochrome'] .features h2 { + font-size: 48px; + font-weight: 700; + margin-bottom: 16px; + letter-spacing: -0.02em; +} + +[data-theme='monochrome'] .features-subtitle { + font-size: 20px; + color: var(--gray-600); + max-width: 600px; + margin: 0 auto 80px; +} + +[data-theme='monochrome'] .feature-grid { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 48px; + margin-top: 0; +} + +[data-theme='monochrome'] .feature-card { + background: var(--white); + padding: 32px; + border-radius: 12px; + border: 1px solid var(--gray-200); + text-align: left; +} + +[data-theme='monochrome'] .feature-icon { + width: 48px; + height: 48px; + background: var(--black); + border-radius: 8px; + margin-bottom: 24px; + display: flex; + align-items: center; + justify-content: center; + font-size: 24px; +} + +[data-theme='monochrome'] .feature-card h3 { + font-size: 20px; + font-weight: 600; + margin-bottom: 12px; + color: var(--black); +} + +[data-theme='monochrome'] .feature-card p { + color: var(--gray-600); + line-height: 1.7; +} + +/* Monochrome: Comparison table */ +[data-theme='monochrome'] .comparison { + background: var(--gray-50); + padding: 120px 0; +} + +[data-theme='monochrome'] .comparison-table { + background: var(--white); + border-radius: 12px; + overflow: hidden; + border: 1px solid var(--gray-200); +} + +[data-theme='monochrome'] .comparison-header { + background: var(--black); + color: var(--white); +} + +[data-theme='monochrome'] .comparison-header .comparison-cell { + color: var(--white); +} + +[data-theme='monochrome'] .comparison-cell { + color: var(--black); +} + +[data-theme='monochrome'] .check { + color: var(--black); + font-weight: 700; +} + +[data-theme='monochrome'] .cross { + color: var(--gray-400); +} + @media (max-width: 768px) { .hero-grid { grid-template-columns: 1fr; @@ -354,4 +723,34 @@ body { grid-template-columns: 1.5fr 1fr 1fr 1fr; font-size: 14px; } + + [data-theme='light'] .hero h1 { + font-size: 36px; + } + + [data-theme='light'] .feature-grid { + grid-template-columns: 1fr; + } + + [data-theme='light'] .nav-links { + display: none; + } + + [data-theme='monochrome'] .hero h1 { + font-size: 48px; + } + + [data-theme='monochrome'] .feature-grid { + grid-template-columns: 1fr; + gap: 48px; + } + + [data-theme='monochrome'] .stats { + grid-template-columns: 1fr; + gap: 32px; + } + + [data-theme='monochrome'] .nav-links { + display: none; + } } diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 2e323de..fc1778a 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -1,6 +1,6 @@ import './globals.css'; import type { Metadata } from 'next/types'; -import { EMBERDOCS_PRODUCT_NAME, EMBERDOCS_COMPANY_NAME } from '@/lib/config'; +import { EMBERDOCS_PRODUCT_NAME, EMBERDOCS_COMPANY_NAME, EMBERDOCS_THEME } from '@/lib/config'; const productName = EMBERDOCS_PRODUCT_NAME; const companyName = EMBERDOCS_COMPANY_NAME; @@ -12,7 +12,12 @@ export const metadata: Metadata = { title: siteTitle, description: companyName ? `Documentation for ${productName} by ${companyName}` - : 'Zero-config documentation framework for indie developers. Beautiful, fast, and maintainable.' + : 'Zero-config documentation framework for indie developers. Beautiful, fast, and maintainable.', + icons: { + icon: '/favicon.png', + shortcut: '/favicon.png', + apple: '/favicon.png', + }, }; export default function RootLayout({ @@ -20,8 +25,11 @@ export default function RootLayout({ }: { children: React.ReactNode; }) { + // Set theme based on environment variable (defaults to 'dark') + const theme = EMBERDOCS_THEME === 'light' ? 'light' : EMBERDOCS_THEME === 'monochrome' ? 'monochrome' : 'dark'; + return ( - + diff --git a/src/app/page.tsx b/src/app/page.tsx index 0343383..b0cda21 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -1,6 +1,8 @@ import { redirect } from 'next/navigation'; -import { EMBERDOCS_BASE_ROUTE } from '@/lib/config'; +import { EMBERDOCS_BASE_ROUTE, EMBERDOCS_THEME } from '@/lib/config'; import './landing.css'; +import { Hero } from '@/components/landing/Hero'; +import { Features } from '@/components/landing/Features'; // Check if landing page should be shown (only for framework repo) const SHOW_LANDING = process.env.EMBERDOCS_SHOW_LANDING === 'true'; @@ -11,6 +13,8 @@ export default function HomePage() { redirect(`${EMBERDOCS_BASE_ROUTE}/index` as any); } + const theme = EMBERDOCS_THEME; + // Show marketing landing page (only when EMBERDOCS_SHOW_LANDING=true) return ( <> @@ -32,93 +36,10 @@ export default function HomePage() {
-
-
-
-
-

- Build docs that
- developers actually use -

-

- Zero-config documentation framework for indie developers. - Beautiful, fast, and maintainable. Deploy in 30 seconds, - customize when you need to. -

- npx emberdocs init → - -
-
- <50ms - Search latency -
-
- 30s - Setup time -
-
- 100% - Free to self-host -
-
-
- -
-
-
-
-
-
-
-
- ${' '} - npx emberdocs init my-docs -
-
Creating EmberDocs project...
-
✓ Created docs/ directory
-
✓ Generated example pages
-
✓ Installed dependencies
-
✓ Ready to go!
-

-
- ${' '} - cd my-docs &&{' '} - npm run dev -
-
Starting development server...
-
✓ Server running at http://localhost:3000
-
-
-
-
-
- -
-
-

Built for developers

-

Modern stack, zero complexity

- -
-
-

Next.js 16

-

App Router, Edge Functions

-
-
-

TypeScript

-

Full type safety

-
-
-

FlexSearch

-

Client-side, <50ms

-
-
-

Tailwind CSS

-

Utility-first styling

-
-
-
-
+ + + {/* Comparison table - shown in both themes */}

Why EmberDocs?

@@ -132,7 +53,7 @@ export default function HomePage() {
Setup time
-
30 seconds
+
Typically 2 minutes
15 minutes
5 minutes
@@ -155,7 +76,7 @@ export default function HomePage() {
-
Drop-in integration
+
Easy deployment
diff --git a/src/components/ThemeToggle.tsx b/src/components/ThemeToggle.tsx index d54aa99..52a34e0 100644 --- a/src/components/ThemeToggle.tsx +++ b/src/components/ThemeToggle.tsx @@ -3,13 +3,26 @@ import { useEffect, useState } from 'react'; export function ThemeToggle(): JSX.Element { - const [theme, setTheme] = useState<'light' | 'dark'>('light'); + const [theme, setTheme] = useState<'light' | 'dark' | 'monochrome'>('light'); const [mounted, setMounted] = useState(false); useEffect(() => { setMounted(true); - // Check localStorage for saved preference + // Check if server-side theme is already set (from EMBERDOCS_THEME env var) + const serverTheme = document.documentElement.getAttribute('data-theme') as 'light' | 'dark' | 'monochrome' | null; + + // If server-side theme is set, respect it and don't override + if (serverTheme) { + setTheme(serverTheme); + // Don't allow toggling if monochrome is set via env var + if (serverTheme === 'monochrome') { + return; + } + return; + } + + // Only use localStorage/system preference if no server-side theme is set const stored = localStorage.getItem('theme') as 'light' | 'dark' | null; // Check system preference @@ -23,6 +36,12 @@ export function ThemeToggle(): JSX.Element { }, []); const toggle = () => { + // Don't toggle if monochrome theme is set via server + const currentServerTheme = document.documentElement.getAttribute('data-theme'); + if (currentServerTheme === 'monochrome') { + return; + } + const next = theme === 'light' ? 'dark' : 'light'; setTheme(next); document.documentElement.setAttribute('data-theme', next); @@ -34,6 +53,11 @@ export function ThemeToggle(): JSX.Element { return
; } + // Don't show toggle button if monochrome theme is set + if (theme === 'monochrome') { + return
; + } + return (
+ ); + } + + // Light theme: Simple code block + if (currentTheme === 'light') { + return ( +
+
# Clone, install, run - that's it
+
+ git clone https://github.com/sturdy-barnacle/emberdocs.git +
+
+ cd emberdocs && npm install +
+
+ npm run dev +
+
+ ); + } + + // Dark theme: Terminal window + return ( +
+
+
+
+
+
+
+
+ ${' '} + git clone https://github.com/sturdy-barnacle/emberdocs.git +
+
Cloning into 'emberdocs'...
+
✓ Repository cloned
+

+
+ ${' '} + cd emberdocs &&{' '} + npm install +
+
Installing dependencies...
+
✓ Dependencies installed
+

+
+ ${' '} + npm run dev +
+
Starting development server...
+
✓ Server running at http://localhost:3000
+
+
+ ); +} + diff --git a/src/components/landing/Features.tsx b/src/components/landing/Features.tsx new file mode 100644 index 0000000..59286ff --- /dev/null +++ b/src/components/landing/Features.tsx @@ -0,0 +1,142 @@ +import { EMBERDOCS_THEME } from '@/lib/config'; + +interface FeaturesProps { + theme?: 'dark' | 'light' | 'monochrome'; +} + +export function Features({ theme }: FeaturesProps): JSX.Element { + const currentTheme = theme || EMBERDOCS_THEME; + + // Monochrome theme: Feature cards with black icons + if (currentTheme === 'monochrome') { + return ( +
+
+
+

Everything you need

+

+ Built for developers who want simple, fast, and beautiful documentation. +

+
+ +
+
+
+

Instant Search

+

FlexSearch-powered client-side search with keyboard shortcuts. Find anything in milliseconds.

+
+ +
+
🎯
+

Zero Config

+

Drop in your markdown files. No complex configuration. No build steps. Just works.

+
+ +
+
📱
+

Mobile First

+

Responsive design that works perfectly on every device. Touch-optimized navigation.

+
+ +
+
🔄
+

Git Versioning

+

Version detection from Git tags (routing planned for Phase 02). No manual configuration needed.

+
+ +
+
🎨
+

Clean Design

+

Beautiful typography and minimal interface. Focus on your content, not the chrome.

+
+ +
+
🔓
+

No Lock-in

+

Your markdown files are portable. Export anytime. Source-available core framework.

+
+
+
+
+ ); + } + + // Light theme: Feature cards + if (currentTheme === 'light') { + return ( +
+
+

Everything you need, nothing you don't

+ +
+
+
+

Zero Config

+

Drop markdown files in a folder. That's it. No config files, no manual setup, no deployment headaches.

+
+ +
+
+

Instant Search

+

Client-side search returns results in under 50ms for typical queries. No tracking, no external services, works offline.

+
+ +
+
+

Git Native

+

Git-native versioning (detection implemented, routing planned for Phase 02). Version tags become versioned docs.

+
+ +
+
+

Privacy First

+

No analytics by default. No cookies. No tracking. Privacy-first architecture (no external services).

+
+ +
+
+

Works Everywhere

+

Deploy as a standalone site on Vercel, Netlify, or self-hosted. Works on any platform that supports Next.js.

+
+ +
+
+

Actually Free

+

Full-featured, free to self-host. Unlimited pages, unlimited users. Source-available core framework.

+
+
+
+
+ ); + } + + // Dark theme: Tech stack badges + return ( +
+
+

Built for developers

+

Modern stack, zero complexity

+ +
+
+

Next.js 16

+

App Router, Edge Functions

+
+
+

TypeScript

+

Full type safety

+
+
+

FlexSearch

+

Client-side, <50ms (typical)

+
+
+

Tailwind CSS

+

Utility-first styling

+
+
+
+
+ ); +} + diff --git a/src/components/landing/Hero.tsx b/src/components/landing/Hero.tsx new file mode 100644 index 0000000..47c5c7f --- /dev/null +++ b/src/components/landing/Hero.tsx @@ -0,0 +1,113 @@ +import { EMBERDOCS_THEME } from '@/lib/config'; +import { CodeSnippet } from './CodeSnippet'; + +interface HeroProps { + theme?: 'dark' | 'light' | 'monochrome'; +} + +export function Hero({ theme }: HeroProps): JSX.Element { + const currentTheme = theme || EMBERDOCS_THEME; + + // Monochrome theme: Large typography, centered layout + if (currentTheme === 'monochrome') { + return ( + <> +
+
+
+

Documentation
without the hassle

+

+ Write in markdown. Deploy in seconds. No configuration required. +

+ + + + +
+
+
+ +
+
+
+
<50ms
+
Search speed (typical)
+
+
+
2 min
+
Setup time (typical)
+
+
+
100%
+
Free to self-host
+
+
+
+ + ); + } + + // Light theme: Centered single column layout + if (currentTheme === 'light') { + return ( +
+
+
+

Documentation that doesn't suck

+

Beautiful docs in typically 2 minutes. Zero config. Works everywhere.

+ + + + +
+
+
+ ); + } + + // Dark theme: Two-column grid layout + return ( +
+
+
+
+

+ Build docs that
+ developers actually use +

+

+ Zero-config documentation framework for indie developers. + Beautiful, fast, and maintainable. Clone, install, run. + Customize when you need to. +

+ Get Started → + +
+
+ <50ms + Search latency (typical) +
+
+ 2 min + Setup time (typical) +
+
+ 100% + Free to self-host +
+
+
+ + +
+
+
+ ); +} + diff --git a/src/lib/config.ts b/src/lib/config.ts index ad773ea..fd34a61 100644 --- a/src/lib/config.ts +++ b/src/lib/config.ts @@ -139,3 +139,14 @@ export function getFooterLinks(): Record | undefined { } } +/** + * Theme selection for the entire site (landing page and documentation) + * Default: 'dark' (current default theme) + * Override: Set EMBERDOCS_THEME environment variable + * Options: 'dark', 'light', 'monochrome' + * + * The theme applies to both the marketing landing page and all documentation pages. + * When set, the theme is applied via the `data-theme` attribute on the `` element. + */ +export const EMBERDOCS_THEME = (process.env.EMBERDOCS_THEME || 'dark') as 'dark' | 'light' | 'monochrome'; + diff --git a/tsconfig.tsbuildinfo b/tsconfig.tsbuildinfo index 36367a2..7147af5 100644 --- a/tsconfig.tsbuildinfo +++ b/tsconfig.tsbuildinfo @@ -1 +1 @@ -{"fileNames":["./node_modules/typescript/lib/lib.es5.d.ts","./node_modules/typescript/lib/lib.es2015.d.ts","./node_modules/typescript/lib/lib.es2016.d.ts","./node_modules/typescript/lib/lib.es2017.d.ts","./node_modules/typescript/lib/lib.es2018.d.ts","./node_modules/typescript/lib/lib.es2019.d.ts","./node_modules/typescript/lib/lib.es2020.d.ts","./node_modules/typescript/lib/lib.dom.d.ts","./node_modules/typescript/lib/lib.dom.iterable.d.ts","./node_modules/typescript/lib/lib.es2015.core.d.ts","./node_modules/typescript/lib/lib.es2015.collection.d.ts","./node_modules/typescript/lib/lib.es2015.generator.d.ts","./node_modules/typescript/lib/lib.es2015.iterable.d.ts","./node_modules/typescript/lib/lib.es2015.promise.d.ts","./node_modules/typescript/lib/lib.es2015.proxy.d.ts","./node_modules/typescript/lib/lib.es2015.reflect.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2016.array.include.d.ts","./node_modules/typescript/lib/lib.es2016.intl.d.ts","./node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","./node_modules/typescript/lib/lib.es2017.date.d.ts","./node_modules/typescript/lib/lib.es2017.object.d.ts","./node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2017.string.d.ts","./node_modules/typescript/lib/lib.es2017.intl.d.ts","./node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","./node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","./node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","./node_modules/typescript/lib/lib.es2018.intl.d.ts","./node_modules/typescript/lib/lib.es2018.promise.d.ts","./node_modules/typescript/lib/lib.es2018.regexp.d.ts","./node_modules/typescript/lib/lib.es2019.array.d.ts","./node_modules/typescript/lib/lib.es2019.object.d.ts","./node_modules/typescript/lib/lib.es2019.string.d.ts","./node_modules/typescript/lib/lib.es2019.symbol.d.ts","./node_modules/typescript/lib/lib.es2019.intl.d.ts","./node_modules/typescript/lib/lib.es2020.bigint.d.ts","./node_modules/typescript/lib/lib.es2020.date.d.ts","./node_modules/typescript/lib/lib.es2020.promise.d.ts","./node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2020.string.d.ts","./node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2020.intl.d.ts","./node_modules/typescript/lib/lib.es2020.number.d.ts","./node_modules/typescript/lib/lib.decorators.d.ts","./node_modules/typescript/lib/lib.decorators.legacy.d.ts","./node_modules/@types/react/global.d.ts","./node_modules/csstype/index.d.ts","./node_modules/@types/prop-types/index.d.ts","./node_modules/@types/react/index.d.ts","./node_modules/@types/react/jsx-runtime.d.ts","./src/app/error.tsx","./node_modules/@types/node/compatibility/disposable.d.ts","./node_modules/@types/node/compatibility/indexable.d.ts","./node_modules/@types/node/compatibility/iterators.d.ts","./node_modules/@types/node/compatibility/index.d.ts","./node_modules/@types/node/globals.typedarray.d.ts","./node_modules/@types/node/buffer.buffer.d.ts","./node_modules/@types/node/globals.d.ts","./node_modules/@types/node/web-globals/abortcontroller.d.ts","./node_modules/@types/node/web-globals/domexception.d.ts","./node_modules/@types/node/web-globals/events.d.ts","./node_modules/undici-types/header.d.ts","./node_modules/undici-types/readable.d.ts","./node_modules/undici-types/file.d.ts","./node_modules/undici-types/fetch.d.ts","./node_modules/undici-types/formdata.d.ts","./node_modules/undici-types/connector.d.ts","./node_modules/undici-types/client.d.ts","./node_modules/undici-types/errors.d.ts","./node_modules/undici-types/dispatcher.d.ts","./node_modules/undici-types/global-dispatcher.d.ts","./node_modules/undici-types/global-origin.d.ts","./node_modules/undici-types/pool-stats.d.ts","./node_modules/undici-types/pool.d.ts","./node_modules/undici-types/handlers.d.ts","./node_modules/undici-types/balanced-pool.d.ts","./node_modules/undici-types/agent.d.ts","./node_modules/undici-types/mock-interceptor.d.ts","./node_modules/undici-types/mock-agent.d.ts","./node_modules/undici-types/mock-client.d.ts","./node_modules/undici-types/mock-pool.d.ts","./node_modules/undici-types/mock-errors.d.ts","./node_modules/undici-types/proxy-agent.d.ts","./node_modules/undici-types/env-http-proxy-agent.d.ts","./node_modules/undici-types/retry-handler.d.ts","./node_modules/undici-types/retry-agent.d.ts","./node_modules/undici-types/api.d.ts","./node_modules/undici-types/interceptors.d.ts","./node_modules/undici-types/util.d.ts","./node_modules/undici-types/cookies.d.ts","./node_modules/undici-types/patch.d.ts","./node_modules/undici-types/websocket.d.ts","./node_modules/undici-types/eventsource.d.ts","./node_modules/undici-types/filereader.d.ts","./node_modules/undici-types/diagnostics-channel.d.ts","./node_modules/undici-types/content-type.d.ts","./node_modules/undici-types/cache.d.ts","./node_modules/undici-types/index.d.ts","./node_modules/@types/node/web-globals/fetch.d.ts","./node_modules/@types/node/assert.d.ts","./node_modules/@types/node/assert/strict.d.ts","./node_modules/@types/node/async_hooks.d.ts","./node_modules/@types/node/buffer.d.ts","./node_modules/@types/node/child_process.d.ts","./node_modules/@types/node/cluster.d.ts","./node_modules/@types/node/console.d.ts","./node_modules/@types/node/constants.d.ts","./node_modules/@types/node/crypto.d.ts","./node_modules/@types/node/dgram.d.ts","./node_modules/@types/node/diagnostics_channel.d.ts","./node_modules/@types/node/dns.d.ts","./node_modules/@types/node/dns/promises.d.ts","./node_modules/@types/node/domain.d.ts","./node_modules/@types/node/events.d.ts","./node_modules/@types/node/fs.d.ts","./node_modules/@types/node/fs/promises.d.ts","./node_modules/@types/node/http.d.ts","./node_modules/@types/node/http2.d.ts","./node_modules/@types/node/https.d.ts","./node_modules/@types/node/inspector.generated.d.ts","./node_modules/@types/node/module.d.ts","./node_modules/@types/node/net.d.ts","./node_modules/@types/node/os.d.ts","./node_modules/@types/node/path.d.ts","./node_modules/@types/node/perf_hooks.d.ts","./node_modules/@types/node/process.d.ts","./node_modules/@types/node/punycode.d.ts","./node_modules/@types/node/querystring.d.ts","./node_modules/@types/node/readline.d.ts","./node_modules/@types/node/readline/promises.d.ts","./node_modules/@types/node/repl.d.ts","./node_modules/@types/node/sea.d.ts","./node_modules/@types/node/stream.d.ts","./node_modules/@types/node/stream/promises.d.ts","./node_modules/@types/node/stream/consumers.d.ts","./node_modules/@types/node/stream/web.d.ts","./node_modules/@types/node/string_decoder.d.ts","./node_modules/@types/node/test.d.ts","./node_modules/@types/node/timers.d.ts","./node_modules/@types/node/timers/promises.d.ts","./node_modules/@types/node/tls.d.ts","./node_modules/@types/node/trace_events.d.ts","./node_modules/@types/node/tty.d.ts","./node_modules/@types/node/url.d.ts","./node_modules/@types/node/util.d.ts","./node_modules/@types/node/v8.d.ts","./node_modules/@types/node/vm.d.ts","./node_modules/@types/node/wasi.d.ts","./node_modules/@types/node/worker_threads.d.ts","./node_modules/@types/node/zlib.d.ts","./node_modules/@types/node/index.d.ts","./node_modules/@types/react/canary.d.ts","./node_modules/@types/react/experimental.d.ts","./node_modules/@types/react-dom/index.d.ts","./node_modules/@types/react-dom/canary.d.ts","./node_modules/@types/react-dom/experimental.d.ts","./node_modules/next/dist/server/get-page-files.d.ts","./node_modules/next/dist/compiled/webpack/webpack.d.ts","./node_modules/next/dist/build/webpack/plugins/next-font-manifest-plugin.d.ts","./node_modules/next/dist/shared/lib/deep-readonly.d.ts","./node_modules/next/dist/shared/lib/html-context.shared-runtime.d.ts","./node_modules/next/dist/shared/lib/modern-browserslist-target.d.ts","./node_modules/next/dist/shared/lib/entry-constants.d.ts","./node_modules/next/dist/shared/lib/constants.d.ts","./node_modules/next/dist/lib/load-custom-routes.d.ts","./node_modules/next/dist/shared/lib/image-config.d.ts","./node_modules/next/dist/build/webpack/plugins/subresource-integrity-plugin.d.ts","./node_modules/next/dist/server/api-utils/index.d.ts","./node_modules/next/dist/server/base-http/index.d.ts","./node_modules/next/dist/server/body-streams.d.ts","./node_modules/next/dist/server/lib/cache-control.d.ts","./node_modules/next/dist/lib/setup-exception-listeners.d.ts","./node_modules/next/dist/lib/worker.d.ts","./node_modules/next/dist/lib/constants.d.ts","./node_modules/next/dist/lib/bundler.d.ts","./node_modules/next/dist/server/lib/experimental/ppr.d.ts","./node_modules/next/dist/lib/page-types.d.ts","./node_modules/next/dist/build/segment-config/app/app-segment-config.d.ts","./node_modules/next/dist/build/segment-config/pages/pages-segment-config.d.ts","./node_modules/next/dist/build/analysis/get-page-static-info.d.ts","./node_modules/next/dist/build/webpack/loaders/get-module-build-info.d.ts","./node_modules/next/dist/build/webpack/plugins/middleware-plugin.d.ts","./node_modules/next/dist/server/require-hook.d.ts","./node_modules/next/dist/server/node-polyfill-crypto.d.ts","./node_modules/next/dist/server/node-environment-baseline.d.ts","./node_modules/next/dist/server/node-environment-extensions/error-inspect.d.ts","./node_modules/next/dist/server/node-environment-extensions/console-file.d.ts","./node_modules/next/dist/server/node-environment-extensions/console-exit.d.ts","./node_modules/next/dist/server/node-environment-extensions/console-dim.external.d.ts","./node_modules/next/dist/server/node-environment-extensions/unhandled-rejection.d.ts","./node_modules/next/dist/server/node-environment-extensions/random.d.ts","./node_modules/next/dist/server/node-environment-extensions/date.d.ts","./node_modules/next/dist/server/node-environment-extensions/web-crypto.d.ts","./node_modules/next/dist/server/node-environment-extensions/node-crypto.d.ts","./node_modules/next/dist/server/node-environment-extensions/fast-set-immediate.external.d.ts","./node_modules/next/dist/server/node-environment.d.ts","./node_modules/next/dist/build/page-extensions-type.d.ts","./node_modules/next/dist/lib/fallback.d.ts","./node_modules/next/dist/server/route-kind.d.ts","./node_modules/next/dist/server/route-definitions/route-definition.d.ts","./node_modules/next/dist/server/route-definitions/app-page-route-definition.d.ts","./node_modules/next/dist/server/lib/cache-handlers/types.d.ts","./node_modules/next/dist/server/response-cache/types.d.ts","./node_modules/next/dist/server/resume-data-cache/cache-store.d.ts","./node_modules/next/dist/server/resume-data-cache/resume-data-cache.d.ts","./node_modules/next/dist/client/components/app-router-headers.d.ts","./node_modules/next/dist/server/render-result.d.ts","./node_modules/next/dist/server/instrumentation/types.d.ts","./node_modules/next/dist/lib/coalesced-function.d.ts","./node_modules/next/dist/shared/lib/router/utils/middleware-route-matcher.d.ts","./node_modules/next/dist/server/lib/router-utils/types.d.ts","./node_modules/next/dist/trace/types.d.ts","./node_modules/next/dist/trace/trace.d.ts","./node_modules/next/dist/trace/shared.d.ts","./node_modules/next/dist/trace/index.d.ts","./node_modules/next/dist/build/load-jsconfig.d.ts","./node_modules/@next/env/dist/index.d.ts","./node_modules/next/dist/build/webpack/plugins/telemetry-plugin/use-cache-tracker-utils.d.ts","./node_modules/next/dist/build/webpack/plugins/telemetry-plugin/telemetry-plugin.d.ts","./node_modules/next/dist/telemetry/storage.d.ts","./node_modules/next/dist/build/build-context.d.ts","./node_modules/next/dist/shared/lib/bloom-filter.d.ts","./node_modules/next/dist/build/webpack-config.d.ts","./node_modules/next/dist/build/swc/generated-native.d.ts","./node_modules/next/dist/build/swc/types.d.ts","./node_modules/next/dist/server/dev/parse-version-info.d.ts","./node_modules/next/dist/next-devtools/shared/types.d.ts","./node_modules/next/dist/server/dev/dev-indicator-server-state.d.ts","./node_modules/next/dist/next-devtools/dev-overlay/cache-indicator.d.ts","./node_modules/next/dist/server/lib/parse-stack.d.ts","./node_modules/next/dist/next-devtools/server/shared.d.ts","./node_modules/next/dist/next-devtools/shared/stack-frame.d.ts","./node_modules/next/dist/next-devtools/dev-overlay/utils/get-error-by-type.d.ts","./node_modules/next/dist/next-devtools/dev-overlay/container/runtime-error/render-error.d.ts","./node_modules/next/dist/next-devtools/dev-overlay/shared.d.ts","./node_modules/next/dist/server/dev/debug-channel.d.ts","./node_modules/next/dist/server/dev/hot-reloader-types.d.ts","./node_modules/next/dist/server/lib/i18n-provider.d.ts","./node_modules/next/dist/server/web/next-url.d.ts","./node_modules/next/dist/compiled/@edge-runtime/cookies/index.d.ts","./node_modules/next/dist/server/web/spec-extension/cookies.d.ts","./node_modules/next/dist/server/web/spec-extension/request.d.ts","./node_modules/next/dist/server/after/builtin-request-context.d.ts","./node_modules/next/dist/server/web/spec-extension/fetch-event.d.ts","./node_modules/next/dist/server/web/spec-extension/response.d.ts","./node_modules/next/dist/build/segment-config/middleware/middleware-config.d.ts","./node_modules/next/dist/server/web/types.d.ts","./node_modules/next/dist/build/webpack/plugins/pages-manifest-plugin.d.ts","./node_modules/next/dist/shared/lib/router/utils/parse-url.d.ts","./node_modules/next/dist/server/route-definitions/locale-route-definition.d.ts","./node_modules/next/dist/server/route-definitions/pages-route-definition.d.ts","./node_modules/next/dist/build/webpack/plugins/flight-manifest-plugin.d.ts","./node_modules/next/dist/next-devtools/userspace/pages/pages-dev-overlay-setup.d.ts","./node_modules/next/dist/server/render.d.ts","./node_modules/next/dist/shared/lib/mitt.d.ts","./node_modules/next/dist/client/with-router.d.ts","./node_modules/next/dist/client/router.d.ts","./node_modules/next/dist/client/route-loader.d.ts","./node_modules/next/dist/client/page-loader.d.ts","./node_modules/next/dist/shared/lib/router/router.d.ts","./node_modules/next/dist/shared/lib/router-context.shared-runtime.d.ts","./node_modules/next/dist/shared/lib/loadable-context.shared-runtime.d.ts","./node_modules/next/dist/shared/lib/loadable.shared-runtime.d.ts","./node_modules/next/dist/shared/lib/image-config-context.shared-runtime.d.ts","./node_modules/next/dist/client/components/readonly-url-search-params.d.ts","./node_modules/next/dist/shared/lib/hooks-client-context.shared-runtime.d.ts","./node_modules/next/dist/shared/lib/head-manager-context.shared-runtime.d.ts","./node_modules/next/dist/shared/lib/app-router-types.d.ts","./node_modules/next/dist/client/flight-data-helpers.d.ts","./node_modules/next/dist/client/components/router-reducer/ppr-navigations.d.ts","./node_modules/next/dist/client/components/segment-cache/types.d.ts","./node_modules/next/dist/client/components/segment-cache/navigation.d.ts","./node_modules/next/dist/client/components/segment-cache/cache-key.d.ts","./node_modules/next/dist/client/components/router-reducer/fetch-server-response.d.ts","./node_modules/next/dist/client/components/router-reducer/router-reducer-types.d.ts","./node_modules/next/dist/shared/lib/app-router-context.shared-runtime.d.ts","./node_modules/next/dist/shared/lib/server-inserted-html.shared-runtime.d.ts","./node_modules/next/dist/server/route-modules/pages/vendored/contexts/entrypoints.d.ts","./node_modules/next/dist/server/route-modules/pages/module.compiled.d.ts","./node_modules/next/dist/build/templates/pages.d.ts","./node_modules/next/dist/server/route-modules/pages/module.d.ts","./node_modules/next/dist/server/route-modules/pages/builtin/_error.d.ts","./node_modules/next/dist/server/load-default-error-components.d.ts","./node_modules/next/dist/server/base-http/node.d.ts","./node_modules/next/dist/server/response-cache/index.d.ts","./node_modules/next/dist/server/route-definitions/pages-api-route-definition.d.ts","./node_modules/next/dist/server/route-matches/pages-api-route-match.d.ts","./node_modules/next/dist/server/route-matchers/route-matcher.d.ts","./node_modules/next/dist/server/route-matcher-providers/route-matcher-provider.d.ts","./node_modules/next/dist/server/route-matcher-managers/route-matcher-manager.d.ts","./node_modules/next/dist/server/normalizers/normalizer.d.ts","./node_modules/next/dist/server/normalizers/locale-route-normalizer.d.ts","./node_modules/next/dist/server/normalizers/request/pathname-normalizer.d.ts","./node_modules/next/dist/server/normalizers/request/suffix.d.ts","./node_modules/next/dist/server/normalizers/request/rsc.d.ts","./node_modules/next/dist/server/normalizers/request/next-data.d.ts","./node_modules/next/dist/server/normalizers/request/segment-prefix-rsc.d.ts","./node_modules/next/dist/build/static-paths/types.d.ts","./node_modules/next/dist/server/base-server.d.ts","./node_modules/next/dist/server/lib/async-callback-set.d.ts","./node_modules/next/dist/shared/lib/router/utils/route-regex.d.ts","./node_modules/next/dist/shared/lib/router/utils/route-matcher.d.ts","./node_modules/sharp/lib/index.d.ts","./node_modules/next/dist/server/image-optimizer.d.ts","./node_modules/next/dist/server/next-server.d.ts","./node_modules/next/dist/server/lib/types.d.ts","./node_modules/next/dist/server/lib/lru-cache.d.ts","./node_modules/next/dist/server/lib/dev-bundler-service.d.ts","./node_modules/next/dist/server/use-cache/cache-life.d.ts","./node_modules/next/dist/server/dev/static-paths-worker.d.ts","./node_modules/next/dist/server/dev/next-dev-server.d.ts","./node_modules/next/dist/server/next.d.ts","./node_modules/next/dist/server/lib/render-server.d.ts","./node_modules/next/dist/server/lib/router-server.d.ts","./node_modules/next/dist/shared/lib/router/utils/path-match.d.ts","./node_modules/next/dist/server/lib/router-utils/filesystem.d.ts","./node_modules/next/dist/server/lib/router-utils/setup-dev-bundler.d.ts","./node_modules/next/dist/server/lib/router-utils/router-server-context.d.ts","./node_modules/next/dist/server/route-modules/route-module.d.ts","./node_modules/next/dist/server/load-components.d.ts","./node_modules/next/dist/server/web/adapter.d.ts","./node_modules/next/dist/server/app-render/types.d.ts","./node_modules/next/dist/build/webpack/loaders/metadata/types.d.ts","./node_modules/next/dist/build/webpack/loaders/next-app-loader/index.d.ts","./node_modules/next/dist/server/lib/app-dir-module.d.ts","./node_modules/next/dist/server/web/spec-extension/adapters/request-cookies.d.ts","./node_modules/next/dist/server/async-storage/draft-mode-provider.d.ts","./node_modules/next/dist/server/web/spec-extension/adapters/headers.d.ts","./node_modules/next/dist/server/app-render/cache-signal.d.ts","./node_modules/next/dist/server/app-render/dynamic-rendering.d.ts","./node_modules/next/dist/server/request/fallback-params.d.ts","./node_modules/next/dist/server/app-render/work-unit-async-storage-instance.d.ts","./node_modules/next/dist/server/lib/lazy-result.d.ts","./node_modules/next/dist/server/lib/implicit-tags.d.ts","./node_modules/next/dist/server/app-render/staged-rendering.d.ts","./node_modules/next/dist/server/app-render/work-unit-async-storage.external.d.ts","./node_modules/next/dist/shared/lib/router/utils/parse-relative-url.d.ts","./node_modules/next/dist/server/app-render/app-render.d.ts","./node_modules/next/dist/server/route-modules/app-page/vendored/contexts/entrypoints.d.ts","./node_modules/next/dist/client/components/error-boundary.d.ts","./node_modules/next/dist/client/components/layout-router.d.ts","./node_modules/next/dist/client/components/render-from-template-context.d.ts","./node_modules/next/dist/server/app-render/action-async-storage-instance.d.ts","./node_modules/next/dist/server/app-render/action-async-storage.external.d.ts","./node_modules/next/dist/client/components/client-page.d.ts","./node_modules/next/dist/client/components/client-segment.d.ts","./node_modules/next/dist/server/request/search-params.d.ts","./node_modules/next/dist/client/components/hooks-server-context.d.ts","./node_modules/next/dist/client/components/http-access-fallback/error-boundary.d.ts","./node_modules/next/dist/lib/metadata/types/alternative-urls-types.d.ts","./node_modules/next/dist/lib/metadata/types/extra-types.d.ts","./node_modules/next/dist/lib/metadata/types/metadata-types.d.ts","./node_modules/next/dist/lib/metadata/types/manifest-types.d.ts","./node_modules/next/dist/lib/metadata/types/opengraph-types.d.ts","./node_modules/next/dist/lib/metadata/types/twitter-types.d.ts","./node_modules/next/dist/lib/metadata/types/metadata-interface.d.ts","./node_modules/next/dist/lib/metadata/types/resolvers.d.ts","./node_modules/next/dist/lib/metadata/types/icons.d.ts","./node_modules/next/dist/lib/metadata/resolve-metadata.d.ts","./node_modules/next/dist/lib/metadata/metadata.d.ts","./node_modules/next/dist/lib/framework/boundary-components.d.ts","./node_modules/next/dist/server/app-render/rsc/preloads.d.ts","./node_modules/next/dist/server/app-render/rsc/postpone.d.ts","./node_modules/next/dist/server/app-render/rsc/taint.d.ts","./node_modules/next/dist/shared/lib/segment-cache/segment-value-encoding.d.ts","./node_modules/next/dist/server/app-render/collect-segment-data.d.ts","./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.d.ts","./node_modules/next/dist/server/app-render/entry-base.d.ts","./node_modules/next/dist/build/templates/app-page.d.ts","./node_modules/next/dist/build/rendering-mode.d.ts","./node_modules/@types/react/jsx-dev-runtime.d.ts","./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/entrypoints.d.ts","./node_modules/@types/react-dom/client.d.ts","./node_modules/@types/react-dom/server.d.ts","./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/entrypoints.d.ts","./node_modules/next/dist/server/route-modules/app-page/module.d.ts","./node_modules/next/dist/server/route-modules/app-page/module.compiled.d.ts","./node_modules/next/dist/server/route-definitions/app-route-route-definition.d.ts","./node_modules/next/dist/server/async-storage/work-store.d.ts","./node_modules/next/dist/server/web/http.d.ts","./node_modules/next/dist/server/route-modules/app-route/shared-modules.d.ts","./node_modules/next/dist/client/components/redirect-status-code.d.ts","./node_modules/next/dist/client/components/redirect-error.d.ts","./node_modules/next/dist/build/templates/app-route.d.ts","./node_modules/next/dist/server/route-modules/app-route/module.d.ts","./node_modules/next/dist/server/route-modules/app-route/module.compiled.d.ts","./node_modules/next/dist/build/segment-config/app/app-segments.d.ts","./node_modules/next/dist/build/utils.d.ts","./node_modules/next/dist/server/lib/router-utils/build-prefetch-segment-data-route.d.ts","./node_modules/next/dist/build/turborepo-access-trace/types.d.ts","./node_modules/next/dist/build/turborepo-access-trace/result.d.ts","./node_modules/next/dist/build/turborepo-access-trace/helpers.d.ts","./node_modules/next/dist/build/turborepo-access-trace/index.d.ts","./node_modules/next/dist/export/routes/types.d.ts","./node_modules/next/dist/export/types.d.ts","./node_modules/next/dist/export/worker.d.ts","./node_modules/next/dist/build/worker.d.ts","./node_modules/next/dist/build/index.d.ts","./node_modules/next/dist/server/lib/incremental-cache/index.d.ts","./node_modules/next/dist/server/after/after.d.ts","./node_modules/next/dist/server/after/after-context.d.ts","./node_modules/next/dist/server/app-render/work-async-storage-instance.d.ts","./node_modules/next/dist/server/app-render/create-error-handler.d.ts","./node_modules/next/dist/shared/lib/action-revalidation-kind.d.ts","./node_modules/next/dist/server/app-render/work-async-storage.external.d.ts","./node_modules/next/dist/server/request/params.d.ts","./node_modules/next/dist/server/route-matches/route-match.d.ts","./node_modules/next/dist/server/request-meta.d.ts","./node_modules/next/dist/cli/next-test.d.ts","./node_modules/next/dist/server/config-shared.d.ts","./node_modules/next/dist/server/config.d.ts","./node_modules/next/dist/shared/lib/utils.d.ts","./node_modules/next/dist/build/adapter/build-complete.d.ts","./node_modules/next/dist/types.d.ts","./node_modules/next/types.d.ts","./src/lib/config.ts","./src/app/layout.tsx","./node_modules/next/dist/client/components/unrecognized-action-error.d.ts","./node_modules/next/dist/client/components/redirect.d.ts","./node_modules/next/dist/client/components/not-found.d.ts","./node_modules/next/dist/client/components/forbidden.d.ts","./node_modules/next/dist/client/components/unauthorized.d.ts","./node_modules/next/dist/client/components/unstable-rethrow.server.d.ts","./node_modules/next/dist/client/components/unstable-rethrow.d.ts","./node_modules/next/dist/client/components/navigation.react-server.d.ts","./node_modules/next/dist/client/components/navigation.d.ts","./node_modules/next/navigation.d.ts","./src/app/page.tsx","./node_modules/next/dist/client/link.d.ts","./node_modules/next/link.d.ts","./src/app/docs/error.tsx","./node_modules/next/dist/shared/lib/get-img-props.d.ts","./node_modules/next/dist/client/image-component.d.ts","./node_modules/next/dist/shared/lib/image-external.d.ts","./node_modules/next/image.d.ts","./src/components/header.tsx","./node_modules/flexsearch/index.d.ts","./src/lib/types.ts","./src/components/searchpalette.tsx","./src/app/docs/layout.tsx","./node_modules/@types/unist/index.d.ts","./node_modules/@types/hast/index.d.ts","./node_modules/vfile-message/lib/index.d.ts","./node_modules/vfile-message/index.d.ts","./node_modules/vfile/lib/index.d.ts","./node_modules/vfile/index.d.ts","./node_modules/unified/lib/callable-instance.d.ts","./node_modules/trough/lib/index.d.ts","./node_modules/trough/index.d.ts","./node_modules/unified/lib/index.d.ts","./node_modules/unified/index.d.ts","./node_modules/@types/mdast/index.d.ts","./node_modules/mdast-util-to-hast/lib/state.d.ts","./node_modules/mdast-util-to-hast/lib/footer.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/blockquote.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/break.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/code.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/delete.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/emphasis.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/footnote-reference.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/heading.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/html.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/image-reference.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/image.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/inline-code.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/link-reference.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/link.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/list-item.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/list.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/paragraph.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/root.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/strong.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/table.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/table-cell.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/table-row.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/text.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/thematic-break.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/index.d.ts","./node_modules/mdast-util-to-hast/lib/index.d.ts","./node_modules/mdast-util-to-hast/index.d.ts","./node_modules/remark-rehype/lib/index.d.ts","./node_modules/remark-rehype/index.d.ts","./node_modules/react-markdown/lib/index.d.ts","./node_modules/react-markdown/index.d.ts","./node_modules/micromark-util-types/index.d.ts","./node_modules/micromark-extension-gfm-footnote/lib/html.d.ts","./node_modules/micromark-extension-gfm-footnote/lib/syntax.d.ts","./node_modules/micromark-extension-gfm-footnote/index.d.ts","./node_modules/micromark-extension-gfm-strikethrough/lib/html.d.ts","./node_modules/micromark-extension-gfm-strikethrough/lib/syntax.d.ts","./node_modules/micromark-extension-gfm-strikethrough/index.d.ts","./node_modules/micromark-extension-gfm/index.d.ts","./node_modules/mdast-util-from-markdown/lib/types.d.ts","./node_modules/mdast-util-from-markdown/lib/index.d.ts","./node_modules/mdast-util-from-markdown/index.d.ts","./node_modules/mdast-util-to-markdown/lib/types.d.ts","./node_modules/mdast-util-to-markdown/lib/index.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/blockquote.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/break.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/code.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/definition.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/emphasis.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/heading.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/html.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/image.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/image-reference.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/inline-code.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/link.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/link-reference.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/list.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/list-item.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/paragraph.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/root.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/strong.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/text.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/thematic-break.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/index.d.ts","./node_modules/mdast-util-to-markdown/index.d.ts","./node_modules/mdast-util-gfm-footnote/lib/index.d.ts","./node_modules/mdast-util-gfm-footnote/index.d.ts","./node_modules/markdown-table/index.d.ts","./node_modules/mdast-util-gfm-table/lib/index.d.ts","./node_modules/mdast-util-gfm-table/index.d.ts","./node_modules/mdast-util-gfm/lib/index.d.ts","./node_modules/mdast-util-gfm/index.d.ts","./node_modules/remark-gfm/lib/index.d.ts","./node_modules/remark-gfm/index.d.ts","./src/components/breadcrumbs.tsx","./src/components/tableofcontents.tsx","./src/components/sidebar.tsx","./node_modules/@types/prismjs/index.d.ts","./src/components/codeblock.tsx","./src/lib/nav-helpers.ts","./src/components/navigationfooter.tsx","./src/components/footer.tsx","./node_modules/@types/js-yaml/index.d.ts","./node_modules/@types/js-yaml/index.d.mts","./src/lib/content.ts","./src/lib/navigation.ts","./src/app/docs/page.tsx","./src/app/docs/[...slug]/page.tsx","./node_modules/@types/aria-query/index.d.ts","./node_modules/@testing-library/dom/types/matches.d.ts","./node_modules/@testing-library/dom/types/wait-for.d.ts","./node_modules/@testing-library/dom/types/query-helpers.d.ts","./node_modules/@testing-library/dom/types/queries.d.ts","./node_modules/@testing-library/dom/types/get-queries-for-element.d.ts","./node_modules/pretty-format/build/types.d.ts","./node_modules/pretty-format/build/index.d.ts","./node_modules/@testing-library/dom/types/screen.d.ts","./node_modules/@testing-library/dom/types/wait-for-element-to-be-removed.d.ts","./node_modules/@testing-library/dom/types/get-node-text.d.ts","./node_modules/@testing-library/dom/types/events.d.ts","./node_modules/@testing-library/dom/types/pretty-dom.d.ts","./node_modules/@testing-library/dom/types/role-helpers.d.ts","./node_modules/@testing-library/dom/types/config.d.ts","./node_modules/@testing-library/dom/types/suggestions.d.ts","./node_modules/@testing-library/dom/types/index.d.ts","./node_modules/@types/react-dom/test-utils/index.d.ts","./node_modules/@testing-library/react/types/index.d.ts","./src/components/breadcrumbs.test.tsx","./src/components/footer.test.tsx","./src/components/header.test.tsx","./src/components/searchpalette.test.tsx","./src/components/sidebar.test.tsx","./src/components/tableofcontents.test.tsx","./src/components/themetoggle.tsx","./src/components/themetoggle.test.tsx","./src/components/versionswitcher.tsx","./src/lib/content.test.ts","./node_modules/@shikijs/vscode-textmate/dist/index.d.ts","./node_modules/@shikijs/types/dist/index.d.mts","./node_modules/shiki/dist/langs.d.mts","./node_modules/stringify-entities/lib/util/format-smart.d.ts","./node_modules/stringify-entities/lib/core.d.ts","./node_modules/stringify-entities/lib/index.d.ts","./node_modules/stringify-entities/index.d.ts","./node_modules/property-information/lib/util/info.d.ts","./node_modules/property-information/lib/find.d.ts","./node_modules/property-information/lib/hast-to-react.d.ts","./node_modules/property-information/lib/normalize.d.ts","./node_modules/property-information/index.d.ts","./node_modules/hast-util-to-html/lib/index.d.ts","./node_modules/hast-util-to-html/index.d.ts","./node_modules/@shikijs/core/dist/index.d.mts","./node_modules/shiki/dist/themes.d.mts","./node_modules/shiki/dist/bundle-full.d.mts","./node_modules/@shikijs/core/dist/types.d.mts","./node_modules/shiki/dist/types.d.mts","./node_modules/oniguruma-to-es/dist/esm/subclass.d.ts","./node_modules/oniguruma-to-es/dist/esm/index.d.ts","./node_modules/@shikijs/engine-javascript/dist/shared/engine-javascript.cdednu-m.d.mts","./node_modules/@shikijs/engine-javascript/dist/engine-raw.d.mts","./node_modules/@shikijs/engine-javascript/dist/index.d.mts","./node_modules/@shikijs/engine-oniguruma/dist/chunk-index.d.d.mts","./node_modules/@shikijs/engine-oniguruma/dist/index.d.mts","./node_modules/shiki/dist/index.d.mts","./src/lib/highlight.ts","./src/lib/markdown.ts","./src/lib/navigation.test.ts","./src/lib/search.ts","./src/lib/search.test.ts","./tests/smoke.test.tsx","./node_modules/next/dist/styled-jsx/types/css.d.ts","./node_modules/next/dist/styled-jsx/types/macro.d.ts","./node_modules/next/dist/styled-jsx/types/style.d.ts","./node_modules/next/dist/styled-jsx/types/global.d.ts","./node_modules/next/dist/styled-jsx/types/index.d.ts","./node_modules/next/dist/pages/_app.d.ts","./node_modules/next/app.d.ts","./node_modules/next/dist/server/web/spec-extension/unstable-cache.d.ts","./node_modules/next/dist/server/web/spec-extension/revalidate.d.ts","./node_modules/next/dist/server/web/spec-extension/unstable-no-store.d.ts","./node_modules/next/dist/server/use-cache/cache-tag.d.ts","./node_modules/next/cache.d.ts","./node_modules/next/dist/pages/_document.d.ts","./node_modules/next/document.d.ts","./node_modules/next/dist/shared/lib/dynamic.d.ts","./node_modules/next/dynamic.d.ts","./node_modules/next/dist/pages/_error.d.ts","./node_modules/next/error.d.ts","./node_modules/next/dist/shared/lib/head.d.ts","./node_modules/next/head.d.ts","./node_modules/next/dist/server/request/cookies.d.ts","./node_modules/next/dist/server/request/headers.d.ts","./node_modules/next/dist/server/request/draft-mode.d.ts","./node_modules/next/headers.d.ts","./node_modules/next/router.d.ts","./node_modules/next/dist/client/script.d.ts","./node_modules/next/script.d.ts","./node_modules/next/dist/server/web/spec-extension/user-agent.d.ts","./node_modules/next/dist/compiled/@edge-runtime/primitives/url.d.ts","./node_modules/next/dist/server/web/spec-extension/image-response.d.ts","./node_modules/next/dist/compiled/@vercel/og/satori/index.d.ts","./node_modules/next/dist/compiled/@vercel/og/emoji/index.d.ts","./node_modules/next/dist/compiled/@vercel/og/types.d.ts","./node_modules/next/dist/server/after/index.d.ts","./node_modules/next/dist/server/request/connection.d.ts","./node_modules/next/server.d.ts","./node_modules/next/types/global.d.ts","./node_modules/next/types/compiled.d.ts","./node_modules/next/index.d.ts","./node_modules/next/image-types/global.d.ts","./.next/dev/types/routes.d.ts","./next-env.d.ts","./node_modules/@types/yargs-parser/index.d.ts","./node_modules/@types/yargs/index.d.ts","./node_modules/@types/yargs/index.d.mts","./node_modules/@types/istanbul-lib-coverage/index.d.ts","./node_modules/chalk/index.d.ts","./node_modules/@types/istanbul-lib-report/index.d.ts","./node_modules/@types/istanbul-reports/index.d.ts","./node_modules/@sinclair/typebox/typebox.d.ts","./node_modules/@jest/schemas/build/index.d.ts","./node_modules/@jest/types/build/index.d.ts","./node_modules/@types/stack-utils/index.d.ts","./node_modules/jest-message-util/build/index.d.ts","./node_modules/@jest/console/build/index.d.ts","./node_modules/@types/graceful-fs/index.d.ts","./node_modules/jest-haste-map/build/index.d.ts","./node_modules/jest-resolve/build/index.d.ts","./node_modules/collect-v8-coverage/index.d.ts","./node_modules/@jest/test-result/build/index.d.ts","./node_modules/@jest/reporters/build/index.d.ts","./node_modules/jest-changed-files/build/index.d.ts","./node_modules/emittery/index.d.ts","./node_modules/jest-watcher/build/index.d.ts","./node_modules/jest-runner/build/index.d.ts","./node_modules/@jest/core/build/index.d.ts","./node_modules/jest-cli/build/index.d.ts","./node_modules/jest/build/index.d.ts","./jest.config.ts","./node_modules/@jest/expect-utils/build/index.d.ts","./node_modules/jest-diff/node_modules/pretty-format/build/index.d.ts","./node_modules/jest-diff/build/index.d.ts","./node_modules/jest-matcher-utils/build/index.d.ts","./node_modules/expect/build/index.d.ts","./node_modules/@types/jest/node_modules/pretty-format/build/index.d.ts","./node_modules/@types/jest/index.d.ts","./node_modules/@testing-library/jest-dom/types/matchers.d.ts","./node_modules/@testing-library/jest-dom/types/jest.d.ts","./node_modules/@testing-library/jest-dom/types/index.d.ts","./jest.setup.ts","./node_modules/tailwindcss/dist/colors.d.mts","./node_modules/tailwindcss/dist/resolve-config-quz9b-gn.d.mts","./node_modules/tailwindcss/dist/types-cjyaw1ql.d.mts","./node_modules/tailwindcss/dist/lib.d.mts","./tailwind.config.ts","./scripts/build-search-index.ts","./.next/dev/types/cache-life.d.ts","./node_modules/next/dist/client/form-shared.d.ts","./node_modules/next/dist/client/form.d.ts","./.next/dev/types/link.d.ts","./.next/dev/types/validator.ts","./node_modules/@babel/types/lib/index.d.ts","./node_modules/@types/babel__generator/index.d.ts","./node_modules/@babel/parser/typings/babel-parser.d.ts","./node_modules/@types/babel__template/index.d.ts","./node_modules/@types/babel__traverse/index.d.ts","./node_modules/@types/babel__core/index.d.ts","./node_modules/@types/ms/index.d.ts","./node_modules/@types/debug/index.d.ts","./node_modules/@types/estree/index.d.ts","./node_modules/@types/estree-jsx/index.d.ts","./node_modules/@types/flexsearch/index.d.ts","./node_modules/parse5/dist/common/html.d.ts","./node_modules/parse5/dist/common/token.d.ts","./node_modules/parse5/dist/common/error-codes.d.ts","./node_modules/parse5/dist/tokenizer/preprocessor.d.ts","./node_modules/entities/dist/esm/generated/decode-data-html.d.ts","./node_modules/entities/dist/esm/generated/decode-data-xml.d.ts","./node_modules/entities/dist/esm/decode-codepoint.d.ts","./node_modules/entities/dist/esm/decode.d.ts","./node_modules/parse5/dist/tokenizer/index.d.ts","./node_modules/parse5/dist/tree-adapters/interface.d.ts","./node_modules/parse5/dist/parser/open-element-stack.d.ts","./node_modules/parse5/dist/parser/formatting-element-list.d.ts","./node_modules/parse5/dist/parser/index.d.ts","./node_modules/parse5/dist/tree-adapters/default.d.ts","./node_modules/parse5/dist/serializer/index.d.ts","./node_modules/parse5/dist/common/foreign-content.d.ts","./node_modules/parse5/dist/index.d.ts","./node_modules/@types/tough-cookie/index.d.ts","./node_modules/@types/jsdom/base.d.ts","./node_modules/@types/jsdom/index.d.ts","./node_modules/@types/json-schema/index.d.ts","./node_modules/@types/json5/index.d.ts","../node_modules/keyv/src/index.d.ts","../node_modules/@types/http-cache-semantics/index.d.ts","../node_modules/@types/responselike/index.d.ts","../node_modules/@types/cacheable-request/index.d.ts","../node_modules/@types/keyv/index.d.ts"],"fileIdsList":[[59,105,613,614,615,616],[51,59,105,146,278,385,417,428,431,694],[59,105],[52,59,105,417,419,430,442,542,543,646],[52,59,105,673],[52,59,105],[59,105,644,645,646],[59,105,697],[59,105,108,147,153,657,659],[59,105,657,665,666,667,669,670],[59,105,153,657,665],[59,105,655],[59,105,651,657,660,662,663,664],[59,105,153,650,651,652,654,656],[59,105,444,482,574,586],[59,105,573,574],[59,105,574],[59,105,573,574,593,594,595],[59,105,573,574,593],[59,105,597],[59,105,444,482,573],[59,105,548],[59,105,545,546,547,548,549,552,553,554,555,556,557,558,559],[59,105,544],[59,105,551],[59,105,545,546,547],[59,105,545,546],[59,105,548,549,551],[59,105,546],[59,105,683],[59,105,681,682],[59,105,560,561],[59,105,697,698,699,700,701],[59,105,697,699],[59,105,703],[59,105,705,706],[59,105,117,153],[59,105,443],[59,105,651],[59,105,653],[59,105,676,679],[59,105,656],[59,105,538],[59,105,116,149,153,724,725,727],[59,105,726],[59,102,105],[59,104,105],[105],[59,105,110,138],[59,105,106,111,116,124,135,146],[59,105,106,107,116,124],[54,55,56,59,105],[59,105,108,147],[59,105,109,110,117,125],[59,105,110,135,143],[59,105,111,113,116,124],[59,104,105,112],[59,105,113,114],[59,105,115,116],[59,104,105,116],[59,105,116,117,118,135,146],[59,105,116,117,118,131,135,138],[59,105,113,116,119,124,135,146],[59,105,116,117,119,120,124,135,143,146],[59,105,119,121,135,143,146],[57,58,59,60,61,62,63,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152],[59,105,116,122],[59,105,123,146,151],[59,105,113,116,124,135],[59,105,125],[59,105,126],[59,104,105,127],[59,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152],[59,105,129],[59,105,130],[59,105,116,131,132],[59,105,131,133,147,149],[59,105,116,135,136,138],[59,105,137,138],[59,105,135,136],[59,105,138],[59,105,139],[59,102,105,135,140],[59,105,116,141,142],[59,105,141,142],[59,105,110,124,135,143],[59,105,144],[59,105,124,145],[59,105,119,130,146],[59,105,110,147],[59,105,135,148],[59,105,123,149],[59,105,150],[59,100,105],[59,100,105,116,118,127,135,138,146,149,151],[59,105,135,152],[51,59,105,156,157,158,375],[51,59,105],[51,59,105,156,157],[51,59,105,157,375],[51,59,105,561],[51,59,105,155,416,609,638],[51,59,105,154,416,609,638],[48,49,50,59,105],[59,105,649],[59,105,648],[59,105,122,153],[59,105,712,713,714],[59,105,675,678],[59,105,439],[59,105,585],[59,105,444,482,579,584],[59,105,650],[59,105,676],[59,105,153,657,661],[59,105,652,677],[59,105,657,658],[59,105,662],[59,105,657,665,669],[59,105,153,657,665,668],[59,105,657,671,672],[59,105,487,490,493,495,496,497],[59,105,454,482,487,490,493,495,497],[59,105,454,482,487,490,493,497],[59,105,520,521,525],[59,105,497,520,522,525],[59,105,497,520,522,524],[59,105,454,482,497,520,522,523,525],[59,105,522,525,526],[59,105,497,520,522,525,527],[59,105,444,454,455,456,480,481,482],[59,105,444,455,482],[59,105,444,454,455,482],[59,105,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479],[59,105,444,448,454,456,482],[59,105,498,499,519],[59,105,454,482,520,522,525],[59,105,454,482],[59,105,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518],[59,105,443,454,482],[59,105,487,488,489,493,497],[59,105,487,490,493,497],[59,105,487,490,491,492,497],[59,105,611],[59,105,166,167,173,184,372,400,412],[59,105,167,179,180,181,183,412],[59,105,167,170,217,219,221,222,225,412],[59,105,167,170,173,175,176,177,208,300,372,390,391,399,412],[59,105,412],[59,105,180,270,379,388,408],[59,105,167],[59,105,200,270,408],[59,105,227],[59,105,226,412],[59,105,119,370,379,643],[59,105,119,338,350,388,407],[59,105,119,281],[59,105,393],[59,105,392,393,394],[59,105,392],[59,105,119,159,167,173,176,178,180,184,185,198,199,200,227,300,311,389,400,412,416],[59,105,166,167,182,217,218,223,224,412,643],[59,105,182,643],[59,105,166,199,325,412,643],[59,105,643],[59,105,167,182,183,643],[59,105,220,643],[59,105,185,390,398],[52,59,105,130,408],[52,59,105,408],[51,52,59,105],[51,59,105,342],[59,105,268,278,279,408,420,427],[59,105,267,385,421,422,423,424,426],[59,105,384],[59,105,384,385],[59,105,208,270,271,275],[59,105,270],[59,105,270,274,276],[59,105,270,271,272,273],[59,105,425],[51,59,105,693],[51,59,105,168,434],[51,59,105,146],[51,59,105,182,260],[51,59,105,182,400],[59,105,258,262],[51,59,105,259,414],[51,59,105,119,153,154,155,416,609,636,637],[59,105,119],[59,105,119,171,173,207,256,301,322,324,395,396,400,412],[59,105,198,397],[59,105,416],[59,105,413],[51,59,105,327,340,349,359,361,407],[59,105,130,327,340,358,359,360,407,642],[59,105,352,353,354,355,356,357],[59,105,354],[59,105,358],[52,59,105,234,235,237],[51,59,105,228,229,230,231,236],[59,105,234,236],[59,105,232],[59,105,233],[51,52,59,105,259,414],[51,52,59,105,163,414],[51,52,59,105,414],[59,105,301,402],[59,105,402],[59,105,119,171,414],[59,105,346],[59,104,105,345],[59,105,171,209,270,287,324,333,336,338,339,378,407,410],[59,105,254,270,367],[59,105,338,407],[51,59,105,338,343,344,346,347,348,349,350,351,362,363,364,365,366,368,369,407,408,643],[59,105,332],[59,105,119,130,161,162,168,170,171,207,210,231,301,311,322,323,378,401,412,416,643],[59,105,407],[59,104,105,162,171,180,311,335,401,403,404,405,406],[59,105,338],[59,104,105,207,243,287,328,329,330,331,332,333,334,336,337,407,408],[59,105,119,170,171,243,244,328],[59,105,171,180,301,311,324,401,407],[59,105,119,170,412],[59,105,119,135,170,171,410],[59,105,119,130,146,161,162,170,171,173,182,200,209,210,212,240,245,250,254,256,285,287,289,292,294,297,298,299,300,322,324,400,401,408,410,412],[59,105,119,135],[59,105,167,168,169,178,410,411,414,416,643],[59,105,166,412],[59,105,239],[59,105,119,135,146,202,225,227,228,229,230,231,237,238,643],[59,105,130,146,200,202,217,249,250,251,285,286,287,292,300,301,307,310,312,322,324,401,408,410,412],[59,105,178,185,198,300,311,401,412],[59,105,119,146,168,173,287,305,410,412],[59,105,326],[59,105,119,239,308,309,319],[59,105,410,412],[59,105,333,335],[59,105,162,287,400,414],[59,105,119,130,213,217,286,292,307,310,314,410],[59,105,119,185,198,217,315],[59,105,167,212,317,400,412],[59,105,119,146,231,412],[59,105,119,182,211,212,213,222,239,316,318,400,412],[59,105,119,159,162,321,414,416],[59,105,284,322],[59,105,119,130,146,161,173,184,185,198,209,210,245,249,250,251,285,286,287,289,301,302,304,306,322,324,400,401,408,409,410,414],[59,105,119,135,185,307,313,319,410],[59,105,188,189,190,191,192,193,194,195,196,197],[59,105,240,293],[59,105,295],[59,105,293],[59,105,295,296],[59,105,119,171,173,176,207,208],[59,105,119,130,161,162,168,170,209,254,255,283,322,410,413,414,416],[59,105,119,130,146,171,172,208,255,287,333,401,409],[59,105,328],[59,105,329],[59,105,270,300,378],[59,105,330],[59,105,201,205],[59,105,119,173,201,209],[59,105,204,205],[59,105,206],[59,105,201,202],[59,105,201,252],[59,105,201],[59,105,240,291,409],[59,105,290],[59,105,202,408,409],[59,105,288,409],[59,105,202,408],[59,105,378],[59,105,162,171,173,203,209,270,287,321,324,327,333,340,341,371,372,374,377,400,410],[59,105,263,266,268,269,278,279],[51,52,59,105,156,157,158,373],[51,52,59,105,156,157,158,373,376],[59,105,387],[59,105,162,180,244,321,324,338,346,350,380,381,382,383,385,386,389,400,407,412],[59,105,278],[59,105,119,283],[59,105,283],[59,105,119,209,253,256,280,282,321,410,414,416],[59,105,163,263,264,265,266,268,269,278,279],[59,105,119,130,146,159,161,162,171,201,202,210,287,319,320,322,400,401,410,412,416],[59,105,244,246,249,401],[59,105,119,240,412],[59,105,243,338],[59,105,242],[59,105,244,245],[59,105,241,243,412],[59,105,119,171,172,244,246,247,248,412],[51,59,105,270,277,408],[59,105,164,165],[51,59,105,168],[51,59,105,267,408],[51,59,105,159,161,162,414,416],[59,105,168,434,435],[51,59,105,262],[51,59,105,130,146,224,257,259,261,413,414],[59,105,171,182,408],[59,105,303,408],[51,59,105,117,119,130,163,166,219,262,413,416],[51,59,105,154,155,416,638],[51,59,105,606,607,608,609],[59,105,110],[59,105,214,215,216],[59,105,214],[51,59,105,119,121,130,153,154,155,156,158,170,200,210,314,358,413,414,415,609,638],[59,105,618],[59,105,620],[59,105,622],[59,105,624],[59,105,626,627,628],[59,105,436],[59,105,417,429,432,437,610,612,617,619,621,623,625,629,630,632,641,642,643],[59,105,431],[59,105,428],[59,105,259],[59,105,631],[59,104,105,244,246,247,249,633,634,635,638,639,640],[59,105,153],[59,105,592],[59,105,709],[59,105,708,709],[59,105,708],[59,105,708,709,710,716,717,720,721,722,723],[59,105,709,717],[59,105,708,709,710,716,717,718,719],[59,105,708,717],[59,105,717,721],[59,105,709,710,711,715],[59,105,710],[59,105,708,709,717],[59,105,550],[59,105,581,582,583],[59,105,580,584],[59,105,584],[59,105,485],[51,59,105,444,453,482,484],[59,105,494,527,528],[59,105,529],[59,105,482,483],[59,105,444,448,453,454,482],[59,105,135,153],[59,105,444,482,574,575,587,588],[59,105,444,482,574,575,587,588,589,590,591,596,598],[59,105,587],[59,105,574,575,587,588,590],[59,105,578],[59,105,576],[59,105,576,577],[59,105,686,687,688],[59,105,686],[59,105,687],[59,105,450],[59,72,76,105,146],[59,72,105,135,146],[59,67,105],[59,69,72,105,143,146],[59,105,124,143],[59,67,105,153],[59,69,72,105,124,146],[59,64,65,68,71,105,116,135,146],[59,72,79,105],[59,64,70,105],[59,72,93,94,105],[59,68,72,105,138,146,153],[59,93,105,153],[59,66,67,105,153],[59,72,105],[59,66,67,68,69,70,71,72,73,74,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,94,95,96,97,98,99,105],[59,72,87,105],[59,72,79,80,105],[59,70,72,80,81,105],[59,71,105],[59,64,67,72,105],[59,72,76,80,81,105],[59,76,105],[59,70,72,75,105,146],[59,64,69,72,79,105],[59,105,135],[59,67,72,93,105,151,153],[59,105,448,452],[59,105,443,448,449,451,453],[59,105,445],[59,105,446,447],[59,105,443,446,448],[52,59,105,126,418,603],[51,52,59,105,117,126,418,440,486,529,530,531,532,534,535,536,537,540,541,695],[51,52,59,105,418,695],[51,52,59,105,438,441],[52,59,105,417,418],[52,59,105,418,695],[52,59,105,440,530,562],[52,59,105,440,695],[51,52,59,105,533],[52,59,105,537,562],[52,59,105,438,562],[51,52,59,105,418,437,695],[52,59,105,418,535,695],[51,52,59,105,441,562],[51,52,59,105,439,440,695],[52,59,105,440,532,562],[51,52,59,105,418,440,695],[52,59,105,440,531,562],[51,52,59,105,440],[52,59,105,562,569],[52,59,105,440,540],[52,59,105,440,539],[52,59,105,599],[52,59,105,440],[52,59,105,117,126,440,541],[52,59,105,106,117,126,440,540],[52,59,105,117,126,440,603],[52,59,105,117,126,418,439,440],[52,59,105,689],[52,59,105,562],[59,105,116,119,146,153,730,731,732],[59,105,116,153],[59,105,119,135,153],[59,105,116]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"080941d9f9ff9307f7e27a83bcd888b7c8270716c39af943532438932ec1d0b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2e80ee7a49e8ac312cc11b77f1475804bee36b3b2bc896bead8b6e1266befb43","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb5b19b86227ace1d29ea4cf81387279d04bb34051e944bc53df69f58914b788","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac51dd7d31333793807a6abaa5ae168512b6131bd41d9c5b98477fc3b7800f9f","impliedFormat":1},{"version":"87d9d29dbc745f182683f63187bf3d53fd8673e5fca38ad5eaab69798ed29fbc","impliedFormat":1},{"version":"7a3aa194cfd5919c4da251ef04ea051077e22702638d4edcb9579e9101653519","affectsGlobalScope":true,"impliedFormat":1},{"version":"42c169fb8c2d42f4f668c624a9a11e719d5d07dacbebb63cbcf7ef365b0a75b3","impliedFormat":1},{"version":"d813468a5c9afb9e5531afd07c5a16ff95872ab1ae548d45d2e668ceffaf3fb0","signature":"5cfeb25d7583b5a4972ea8bfce60e6c1dd7f2501ac3a6425521902bd91ab0f13"},{"version":"70521b6ab0dcba37539e5303104f29b721bfb2940b2776da4cc818c07e1fefc1","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab41ef1f2cdafb8df48be20cd969d875602483859dc194e9c97c8a576892c052","affectsGlobalScope":true,"impliedFormat":1},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a","impliedFormat":1},{"version":"98cffbf06d6bab333473c70a893770dbe990783904002c4f1a960447b4b53dca","affectsGlobalScope":true,"impliedFormat":1},{"version":"ba481bca06f37d3f2c137ce343c7d5937029b2468f8e26111f3c9d9963d6568d","affectsGlobalScope":true,"impliedFormat":1},{"version":"6d9ef24f9a22a88e3e9b3b3d8c40ab1ddb0853f1bfbd5c843c37800138437b61","affectsGlobalScope":true,"impliedFormat":1},{"version":"1db0b7dca579049ca4193d034d835f6bfe73096c73663e5ef9a0b5779939f3d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"f26b11d8d8e4b8028f1c7d618b22274c892e4b0ef5b3678a8ccbad85419aef43","affectsGlobalScope":true,"impliedFormat":1},{"version":"5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","impliedFormat":1},{"version":"763fe0f42b3d79b440a9b6e51e9ba3f3f91352469c1e4b3b67bfa4ff6352f3f4","impliedFormat":1},{"version":"25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","impliedFormat":1},{"version":"c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","impliedFormat":1},{"version":"78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","impliedFormat":1},{"version":"5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","impliedFormat":1},{"version":"7f182617db458e98fc18dfb272d40aa2fff3a353c44a89b2c0ccb3937709bfb5","impliedFormat":1},{"version":"cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","impliedFormat":1},{"version":"385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","impliedFormat":1},{"version":"9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","impliedFormat":1},{"version":"0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","impliedFormat":1},{"version":"11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","impliedFormat":1},{"version":"ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","impliedFormat":1},{"version":"4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","impliedFormat":1},{"version":"c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","impliedFormat":1},{"version":"13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","impliedFormat":1},{"version":"9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","impliedFormat":1},{"version":"4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","impliedFormat":1},{"version":"24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","impliedFormat":1},{"version":"ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","impliedFormat":1},{"version":"24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","impliedFormat":1},{"version":"dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","impliedFormat":1},{"version":"405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","impliedFormat":1},{"version":"0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","impliedFormat":1},{"version":"e61be3f894b41b7baa1fbd6a66893f2579bfad01d208b4ff61daef21493ef0a8","impliedFormat":1},{"version":"bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","impliedFormat":1},{"version":"89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","impliedFormat":1},{"version":"615ba88d0128ed16bf83ef8ccbb6aff05c3ee2db1cc0f89ab50a4939bfc1943f","impliedFormat":1},{"version":"a4d551dbf8746780194d550c88f26cf937caf8d56f102969a110cfaed4b06656","impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","impliedFormat":1},{"version":"317e63deeb21ac07f3992f5b50cdca8338f10acd4fbb7257ebf56735bf52ab00","impliedFormat":1},{"version":"4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"2cbe0621042e2a68c7cbce5dfed3906a1862a16a7d496010636cdbdb91341c0f","affectsGlobalScope":true,"impliedFormat":1},{"version":"e2677634fe27e87348825bb041651e22d50a613e2fdf6a4a3ade971d71bac37e","impliedFormat":1},{"version":"7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","impliedFormat":1},{"version":"8c0bcd6c6b67b4b503c11e91a1fb91522ed585900eab2ab1f61bba7d7caa9d6f","impliedFormat":1},{"version":"8cd19276b6590b3ebbeeb030ac271871b9ed0afc3074ac88a94ed2449174b776","affectsGlobalScope":true,"impliedFormat":1},{"version":"696eb8d28f5949b87d894b26dc97318ef944c794a9a4e4f62360cd1d1958014b","impliedFormat":1},{"version":"3f8fa3061bd7402970b399300880d55257953ee6d3cd408722cb9ac20126460c","impliedFormat":1},{"version":"35ec8b6760fd7138bbf5809b84551e31028fb2ba7b6dc91d95d098bf212ca8b4","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"68bd56c92c2bd7d2339457eb84d63e7de3bd56a69b25f3576e1568d21a162398","affectsGlobalScope":true,"impliedFormat":1},{"version":"3e93b123f7c2944969d291b35fed2af79a6e9e27fdd5faa99748a51c07c02d28","impliedFormat":1},{"version":"9d19808c8c291a9010a6c788e8532a2da70f811adb431c97520803e0ec649991","impliedFormat":1},{"version":"87aad3dd9752067dc875cfaa466fc44246451c0c560b820796bdd528e29bef40","impliedFormat":1},{"version":"4aacb0dd020eeaef65426153686cc639a78ec2885dc72ad220be1d25f1a439df","impliedFormat":1},{"version":"f0bd7e6d931657b59605c44112eaf8b980ba7f957a5051ed21cb93d978cf2f45","impliedFormat":1},{"version":"8db0ae9cb14d9955b14c214f34dae1b9ef2baee2fe4ce794a4cd3ac2531e3255","affectsGlobalScope":true,"impliedFormat":1},{"version":"15fc6f7512c86810273af28f224251a5a879e4261b4d4c7e532abfbfc3983134","impliedFormat":1},{"version":"58adba1a8ab2d10b54dc1dced4e41f4e7c9772cbbac40939c0dc8ce2cdb1d442","impliedFormat":1},{"version":"2fd4c143eff88dabb57701e6a40e02a4dbc36d5eb1362e7964d32028056a782b","impliedFormat":1},{"version":"714435130b9015fae551788df2a88038471a5a11eb471f27c4ede86552842bc9","impliedFormat":1},{"version":"855cd5f7eb396f5f1ab1bc0f8580339bff77b68a770f84c6b254e319bbfd1ac7","impliedFormat":1},{"version":"5650cf3dace09e7c25d384e3e6b818b938f68f4e8de96f52d9c5a1b3db068e86","impliedFormat":1},{"version":"1354ca5c38bd3fd3836a68e0f7c9f91f172582ba30ab15bb8c075891b91502b7","affectsGlobalScope":true,"impliedFormat":1},{"version":"27fdb0da0daf3b337c5530c5f266efe046a6ceb606e395b346974e4360c36419","impliedFormat":1},{"version":"2d2fcaab481b31a5882065c7951255703ddbe1c0e507af56ea42d79ac3911201","impliedFormat":1},{"version":"a192fe8ec33f75edbc8d8f3ed79f768dfae11ff5735e7fe52bfa69956e46d78d","impliedFormat":1},{"version":"ca867399f7db82df981d6915bcbb2d81131d7d1ef683bc782b59f71dda59bc85","affectsGlobalScope":true,"impliedFormat":1},{"version":"d9e971bba9cf977c7774abbd4d2e3413a231af8a06a2e8b16af2a606bc91ddd0","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e043a1bc8fbf2a255bccf9bf27e0f1caf916c3b0518ea34aa72357c0afd42ec","impliedFormat":1},{"version":"b4f70ec656a11d570e1a9edce07d118cd58d9760239e2ece99306ee9dfe61d02","impliedFormat":1},{"version":"3bc2f1e2c95c04048212c569ed38e338873f6a8593930cf5a7ef24ffb38fc3b6","impliedFormat":1},{"version":"6e70e9570e98aae2b825b533aa6292b6abd542e8d9f6e9475e88e1d7ba17c866","impliedFormat":1},{"version":"f9d9d753d430ed050dc1bf2667a1bab711ccbb1c1507183d794cc195a5b085cc","impliedFormat":1},{"version":"9eece5e586312581ccd106d4853e861aaaa1a39f8e3ea672b8c3847eedd12f6e","impliedFormat":1},{"version":"47ab634529c5955b6ad793474ae188fce3e6163e3a3fb5edd7e0e48f14435333","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"45650f47bfb376c8a8ed39d4bcda5902ab899a3150029684ee4c10676d9fbaee","impliedFormat":1},{"version":"0225ecb9ed86bdb7a2c7fd01f1556906902929377b44483dc4b83e03b3ef227d","affectsGlobalScope":true,"impliedFormat":1},{"version":"74cf591a0f63db318651e0e04cb55f8791385f86e987a67fd4d2eaab8191f730","impliedFormat":1},{"version":"5eab9b3dc9b34f185417342436ec3f106898da5f4801992d8ff38ab3aff346b5","impliedFormat":1},{"version":"12ed4559eba17cd977aa0db658d25c4047067444b51acfdcbf38470630642b23","affectsGlobalScope":true,"impliedFormat":1},{"version":"f3ffabc95802521e1e4bcba4c88d8615176dc6e09111d920c7a213bdda6e1d65","impliedFormat":1},{"version":"f9ab232778f2842ffd6955f88b1049982fa2ecb764d129ee4893cbc290f41977","impliedFormat":1},{"version":"ae56f65caf3be91108707bd8dfbccc2a57a91feb5daabf7165a06a945545ed26","impliedFormat":1},{"version":"a136d5de521da20f31631a0a96bf712370779d1c05b7015d7019a9b2a0446ca9","impliedFormat":1},{"version":"c3b41e74b9a84b88b1dca61ec39eee25c0dbc8e7d519ba11bb070918cfacf656","affectsGlobalScope":true,"impliedFormat":1},{"version":"4737a9dc24d0e68b734e6cfbcea0c15a2cfafeb493485e27905f7856988c6b29","affectsGlobalScope":true,"impliedFormat":1},{"version":"36d8d3e7506b631c9582c251a2c0b8a28855af3f76719b12b534c6edf952748d","impliedFormat":1},{"version":"1ca69210cc42729e7ca97d3a9ad48f2e9cb0042bada4075b588ae5387debd318","impliedFormat":1},{"version":"f5ebe66baaf7c552cfa59d75f2bfba679f329204847db3cec385acda245e574e","impliedFormat":1},{"version":"ed59add13139f84da271cafd32e2171876b0a0af2f798d0c663e8eeb867732cf","affectsGlobalScope":true,"impliedFormat":1},{"version":"05db535df8bdc30d9116fe754a3473d1b6479afbc14ae8eb18b605c62677d518","impliedFormat":1},{"version":"b1810689b76fd473bd12cc9ee219f8e62f54a7d08019a235d07424afbf074d25","impliedFormat":1},{"version":"91b0f6d01993021ecbe01eb076db6a3cf1b66359c1d99104f43436010e81afb5","impliedFormat":1},{"version":"d1bd4e51810d159899aad1660ccb859da54e27e08b8c9862b40cd36c1d9ff00f","impliedFormat":1},{"version":"17ed71200119e86ccef2d96b73b02ce8854b76ad6bd21b5021d4269bec527b5f","impliedFormat":1},{"version":"1cfa8647d7d71cb03847d616bd79320abfc01ddea082a49569fda71ac5ece66b","impliedFormat":1},{"version":"bb7a61dd55dc4b9422d13da3a6bb9cc5e89be888ef23bbcf6558aa9726b89a1c","impliedFormat":1},{"version":"21da358700a3893281ce0c517a7a30cbd46be020d9f0c3f2834d0a8ad1f5fc75","impliedFormat":1},{"version":"db6d2d9daad8a6d83f281af12ce4355a20b9a3e71b82b9f57cddcca0a8964a96","impliedFormat":1},{"version":"c5426dbfc1cf90532f66965a7aa8c1136a78d4d0f96d8180ecbfc11d7722f1a5","impliedFormat":1},{"version":"9c82171d836c47486074e4ca8e059735bf97b205e70b196535b5efd40cbe1bc5","impliedFormat":1},{"version":"5542d8a7ea13168cb573be0d1ba0d29460d59430fb12bb7bf4674efd5604e14c","impliedFormat":1},{"version":"446a50749b24d14deac6f8843e057a6355dd6437d1fac4f9e5ce4a5071f34bff","impliedFormat":1},{"version":"182e9fcbe08ac7c012e0a6e2b5798b4352470be29a64fdc114d23c2bab7d5106","impliedFormat":1},{"version":"5c9b31919ea1cb350a7ae5e71c9ced8f11723e4fa258a8cc8d16ae46edd623c7","impliedFormat":1},{"version":"96ffa70b486207241c0fcedb5d9553684f7fa6746bc2b04c519e7ebf41a51205","impliedFormat":1},{"version":"5c24c66b3ba29ce9f2a79c719967e6e944131352a117a0bc43fa5b346b5562b3","impliedFormat":1},{"version":"a86f82d646a739041d6702101afa82dcb935c416dd93cbca7fd754fd0282ce1f","impliedFormat":1},{"version":"1fffe726740f9787f15b532e1dc870af3cd964dbe29e191e76121aa3dd8693f2","impliedFormat":1},{"version":"35e6379c3f7cb27b111ad4c1aa69538fd8e788ab737b8ff7596a1b40e96f4f90","impliedFormat":1},{"version":"ad0d1d75d129b1c80f911be438d6b61bfa8703930a8ff2be2f0e1f8a91841c64","impliedFormat":1},{"version":"ce75b1aebb33d510ff28af960a9221410a3eaf7f18fc5f21f9404075fba77256","impliedFormat":1},{"version":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","impliedFormat":1},{"version":"02436d7e9ead85e09a2f8e27d5f47d9464bced31738dec138ca735390815c9f0","impliedFormat":1},{"version":"f4625edcb57b37b84506e8b276eb59ca30d31f88c6656d29d4e90e3bc58e69df","impliedFormat":1},{"version":"78a2869ad0cbf3f9045dda08c0d4562b7e1b2bfe07b19e0db072f5c3c56e9584","impliedFormat":1},{"version":"f8d5ff8eafd37499f2b6a98659dd9b45a321de186b8db6b6142faed0fea3de77","impliedFormat":1},{"version":"c86fe861cf1b4c46a0fb7d74dffe596cf679a2e5e8b1456881313170f092e3fa","impliedFormat":1},{"version":"c685d9f68c70fe11ce527287526585a06ea13920bb6c18482ca84945a4e433a7","impliedFormat":1},{"version":"540cc83ab772a2c6bc509fe1354f314825b5dba3669efdfbe4693ecd3048e34f","impliedFormat":1},{"version":"121b0696021ab885c570bbeb331be8ad82c6efe2f3b93a6e63874901bebc13e3","impliedFormat":1},{"version":"4e01846df98d478a2a626ec3641524964b38acaac13945c2db198bf9f3df22ee","impliedFormat":1},{"version":"678d6d4c43e5728bf66e92fc2269da9fa709cb60510fed988a27161473c3853f","impliedFormat":1},{"version":"ffa495b17a5ef1d0399586b590bd281056cee6ce3583e34f39926f8dcc6ecdb5","impliedFormat":1},{"version":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","impliedFormat":1},{"version":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","impliedFormat":1},{"version":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881","impliedFormat":1},{"version":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881","impliedFormat":1},{"version":"aa14cee20aa0db79f8df101fc027d929aec10feb5b8a8da3b9af3895d05b7ba2","impliedFormat":1},{"version":"493c700ac3bd317177b2eb913805c87fe60d4e8af4fb39c41f04ba81fae7e170","impliedFormat":1},{"version":"aeb554d876c6b8c818da2e118d8b11e1e559adbe6bf606cc9a611c1b6c09f670","impliedFormat":1},{"version":"acf5a2ac47b59ca07afa9abbd2b31d001bf7448b041927befae2ea5b1951d9f9","impliedFormat":1},{"version":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881","impliedFormat":1},{"version":"d71291eff1e19d8762a908ba947e891af44749f3a2cbc5bd2ec4b72f72ea795f","impliedFormat":1},{"version":"c0480e03db4b816dff2682b347c95f2177699525c54e7e6f6aa8ded890b76be7","impliedFormat":1},{"version":"e2a37ac938c4bede5bb284b9d2d042da299528f1e61f6f57538f1bd37d760869","impliedFormat":1},{"version":"76def37aff8e3a051cf406e10340ffba0f28b6991c5d987474cc11137796e1eb","impliedFormat":1},{"version":"b620391fe8060cf9bedc176a4d01366e6574d7a71e0ac0ab344a4e76576fcbb8","impliedFormat":1},{"version":"413df52d4ea14472c2fa5bee62f7a40abd1eb49be0b9722ee01ee4e52e63beb2","impliedFormat":1},{"version":"3e7efde639c6a6c3edb9847b3f61e308bf7a69685b92f665048c45132f51c218","impliedFormat":1},{"version":"df45ca1176e6ac211eae7ddf51336dc075c5314bc5c253651bae639defd5eec5","impliedFormat":1},{"version":"106c6025f1d99fd468fd8bf6e5bda724e11e5905a4076c5d29790b6c3745e50c","impliedFormat":1},{"version":"ee8df1cb8d0faaca4013a1b442e99130769ce06f438d18d510fed95890067563","impliedFormat":1},{"version":"bfb7f8475428637bee12bdd31bd9968c1c8a1cc2c3e426c959e2f3a307f8936f","impliedFormat":1},{"version":"6f491d0108927478d3247bbbc489c78c2da7ef552fd5277f1ab6819986fdf0b1","impliedFormat":1},{"version":"0d8f2b8781c721170b87a6b662b3cb038fd1a721165ecca390352c818d425872","impliedFormat":1},{"version":"7cb0ee103671d1e201cd53dda12bc1cd0a35f1c63d6102720c6eeb322cb8e17e","impliedFormat":1},{"version":"15a234e5031b19c48a69ccc1607522d6e4b50f57d308ecb7fe863d44cd9f9eb3","impliedFormat":1},{"version":"148679c6d0f449210a96e7d2e562d589e56fcde87f843a92808b3ff103f1a774","impliedFormat":1},{"version":"6459054aabb306821a043e02b89d54da508e3a6966601a41e71c166e4ea1474f","impliedFormat":1},{"version":"2f9c89cbb29d362290531b48880a4024f258c6033aaeb7e59fbc62db26819650","impliedFormat":1},{"version":"bb37588926aba35c9283fe8d46ebf4e79ffe976343105f5c6d45f282793352b2","impliedFormat":1},{"version":"05c97cddbaf99978f83d96de2d8af86aded9332592f08ce4a284d72d0952c391","impliedFormat":1},{"version":"72179f9dd22a86deaad4cc3490eb0fe69ee084d503b686985965654013f1391b","impliedFormat":1},{"version":"2e6114a7dd6feeef85b2c80120fdbfb59a5529c0dcc5bfa8447b6996c97a69f5","impliedFormat":1},{"version":"7b6ff760c8a240b40dab6e4419b989f06a5b782f4710d2967e67c695ef3e93c4","impliedFormat":1},{"version":"c8f004e6036aa1c764ad4ec543cf89a5c1893a9535c80ef3f2b653e370de45e6","impliedFormat":1},{"version":"dd80b1e600d00f5c6a6ba23f455b84a7db121219e68f89f10552c54ba46e4dc9","impliedFormat":1},{"version":"b064c36f35de7387d71c599bfcf28875849a1dbc733e82bd26cae3d1cd060521","impliedFormat":1},{"version":"05c7280d72f3ed26f346cbe7cbbbb002fb7f15739197cbbee6ab3fd1a6cb9347","impliedFormat":1},{"version":"8de9fe97fa9e00ec00666fa77ab6e91b35d25af8ca75dabcb01e14ad3299b150","impliedFormat":1},{"version":"803cd2aaf1921c218916c2c7ee3fce653e852d767177eb51047ff15b5b253893","impliedFormat":1},{"version":"dba114fb6a32b355a9cfc26ca2276834d72fe0e94cd2c3494005547025015369","impliedFormat":1},{"version":"7ab12b2f1249187223d11a589f5789c75177a0b597b9eb7f8e2e42d045393347","impliedFormat":1},{"version":"ad37fb4be61c1035b68f532b7220f4e8236cf245381ce3b90ac15449ecfe7305","impliedFormat":1},{"version":"93436bd74c66baba229bfefe1314d122c01f0d4c1d9e35081a0c4f0470ac1a6c","impliedFormat":1},{"version":"f974e4a06953682a2c15d5bd5114c0284d5abf8bc0fe4da25cb9159427b70072","impliedFormat":1},{"version":"50256e9c31318487f3752b7ac12ff365c8949953e04568009c8705db802776fb","impliedFormat":1},{"version":"7d73b24e7bf31dfb8a931ca6c4245f6bb0814dfae17e4b60c9e194a631fe5f7b","impliedFormat":1},{"version":"d130c5f73768de51402351d5dc7d1b36eaec980ca697846e53156e4ea9911476","impliedFormat":1},{"version":"413586add0cfe7369b64979d4ec2ed56c3f771c0667fbde1bf1f10063ede0b08","impliedFormat":1},{"version":"06472528e998d152375ad3bd8ebcb69ff4694fd8d2effaf60a9d9f25a37a097a","impliedFormat":1},{"version":"50b5bc34ce6b12eccb76214b51aadfa56572aa6cc79c2b9455cdbb3d6c76af1d","impliedFormat":1},{"version":"b7e16ef7f646a50991119b205794ebfd3a4d8f8e0f314981ebbe991639023d0e","impliedFormat":1},{"version":"a401617604fa1f6ce437b81689563dfdc377069e4c58465dbd8d16069aede0a5","impliedFormat":1},{"version":"6e9082e91370de5040e415cd9f24e595b490382e8c7402c4e938a8ce4bccc99f","impliedFormat":1},{"version":"8695dec09ad439b0ceef3776ea68a232e381135b516878f0901ed2ea114fd0fe","impliedFormat":1},{"version":"304b44b1e97dd4c94697c3313df89a578dca4930a104454c99863f1784a54357","impliedFormat":1},{"version":"d682336018141807fb602709e2d95a192828fcb8d5ba06dda3833a8ea98f69e3","impliedFormat":1},{"version":"6124e973eab8c52cabf3c07575204efc1784aca6b0a30c79eb85fe240a857efa","impliedFormat":1},{"version":"0d891735a21edc75df51f3eb995e18149e119d1ce22fd40db2b260c5960b914e","impliedFormat":1},{"version":"3b414b99a73171e1c4b7b7714e26b87d6c5cb03d200352da5342ab4088a54c85","impliedFormat":1},{"version":"4fbd3116e00ed3a6410499924b6403cc9367fdca303e34838129b328058ede40","impliedFormat":1},{"version":"b01bd582a6e41457bc56e6f0f9de4cb17f33f5f3843a7cf8210ac9c18472fb0f","impliedFormat":1},{"version":"0a437ae178f999b46b6153d79095b60c42c996bc0458c04955f1c996dc68b971","impliedFormat":1},{"version":"74b2a5e5197bd0f2e0077a1ea7c07455bbea67b87b0869d9786d55104006784f","impliedFormat":1},{"version":"4a7baeb6325920044f66c0f8e5e6f1f52e06e6d87588d837bdf44feb6f35c664","impliedFormat":1},{"version":"12d218a49dbe5655b911e6cc3c13b2c655e4c783471c3b0432137769c79e1b3c","impliedFormat":1},{"version":"7274fbffbd7c9589d8d0ffba68157237afd5cecff1e99881ea3399127e60572f","impliedFormat":1},{"version":"6b0fc04121360f752d196ba35b6567192f422d04a97b2840d7d85f8b79921c92","impliedFormat":1},{"version":"65a15fc47900787c0bd18b603afb98d33ede930bed1798fc984d5ebb78b26cf9","impliedFormat":1},{"version":"9d202701f6e0744adb6314d03d2eb8fc994798fc83d91b691b75b07626a69801","impliedFormat":1},{"version":"a365c4d3bed3be4e4e20793c999c51f5cd7e6792322f14650949d827fbcd170f","impliedFormat":1},{"version":"f374cb24e93e7798c4d9e83ff872fa52d2cdb36306392b840a6ddf46cb925cb6","impliedFormat":1},{"version":"42b81043b00ff27c6bd955aea0f6e741545f2265978bf364b614702b72a027ab","impliedFormat":1},{"version":"de9d2df7663e64e3a91bf495f315a7577e23ba088f2949d5ce9ec96f44fba37d","impliedFormat":1},{"version":"c7af78a2ea7cb1cd009cfb5bdb48cd0b03dad3b54f6da7aab615c2e9e9d570c5","impliedFormat":1},{"version":"1ee45496b5f8bdee6f7abc233355898e5bf9bd51255db65f5ff7ede617ca0027","impliedFormat":1},{"version":"97e5ccc7bb88419005cbdf812243a5b3186cdef81b608540acabe1be163fc3e4","affectsGlobalScope":true,"impliedFormat":1},{"version":"3fbdd025f9d4d820414417eeb4107ffa0078d454a033b506e22d3a23bc3d9c41","affectsGlobalScope":true,"impliedFormat":1},{"version":"a8f8e6ab2fa07b45251f403548b78eaf2022f3c2254df3dc186cb2671fe4996d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fa6c12a7c0f6b84d512f200690bfc74819e99efae69e4c95c4cd30f6884c526e","impliedFormat":1},{"version":"f1c32f9ce9c497da4dc215c3bc84b722ea02497d35f9134db3bb40a8d918b92b","impliedFormat":1},{"version":"b73c319af2cc3ef8f6421308a250f328836531ea3761823b4cabbd133047aefa","affectsGlobalScope":true,"impliedFormat":1},{"version":"e433b0337b8106909e7953015e8fa3f2d30797cea27141d1c5b135365bb975a6","impliedFormat":1},{"version":"9f9bb6755a8ce32d656ffa4763a8144aa4f274d6b69b59d7c32811031467216e","impliedFormat":1},{"version":"5c32bdfbd2d65e8fffbb9fbda04d7165e9181b08dad61154961852366deb7540","impliedFormat":1},{"version":"ddff7fc6edbdc5163a09e22bf8df7bef75f75369ebd7ecea95ba55c4386e2441","impliedFormat":1},{"version":"6b3453eebd474cc8acf6d759f1668e6ce7425a565e2996a20b644c72916ecf75","impliedFormat":1},{"version":"0c05e9842ec4f8b7bfebfd3ca61604bb8c914ba8da9b5337c4f25da427a005f2","impliedFormat":1},{"version":"89cd3444e389e42c56fd0d072afef31387e7f4107651afd2c03950f22dc36f77","impliedFormat":1},{"version":"7f2aa4d4989a82530aaac3f72b3dceca90e9c25bee0b1a327e8a08a1262435ad","impliedFormat":1},{"version":"e39a304f882598138a8022106cb8de332abbbb87f3fee71c5ca6b525c11c51fc","impliedFormat":1},{"version":"faed7a5153215dbd6ebe76dfdcc0af0cfe760f7362bed43284be544308b114cf","impliedFormat":1},{"version":"fcdf3e40e4a01b9a4b70931b8b51476b210c511924fcfe3f0dae19c4d52f1a54","impliedFormat":1},{"version":"345c4327b637d34a15aba4b7091eb068d6ab40a3dedaab9f00986253c9704e53","impliedFormat":1},{"version":"3a788c7fb7b1b1153d69a4d1d9e1d0dfbcf1127e703bdb02b6d12698e683d1fb","impliedFormat":1},{"version":"2e4f37ffe8862b14d8e24ae8763daaa8340c0df0b859d9a9733def0eee7562d9","impliedFormat":1},{"version":"d38530db0601215d6d767f280e3a3c54b2a83b709e8d9001acb6f61c67e965fc","impliedFormat":1},{"version":"6ac6715916fa75a1f7ebdfeacac09513b4d904b667d827b7535e84ff59679aff","impliedFormat":1},{"version":"4805f6161c2c8cefb8d3b8bd96a080c0fe8dbc9315f6ad2e53238f9a79e528a6","impliedFormat":1},{"version":"b83cb14474fa60c5f3ec660146b97d122f0735627f80d82dd03e8caa39b4388c","impliedFormat":1},{"version":"2b5b70d7782fe028487a80a1c214e67bd610532b9f978b78fa60f5b4a359f77e","impliedFormat":1},{"version":"7ee86fbb3754388e004de0ef9e6505485ddfb3be7640783d6d015711c03d302d","impliedFormat":1},{"version":"1a82deef4c1d39f6882f28d275cad4c01f907b9b39be9cbc472fcf2cf051e05b","impliedFormat":1},{"version":"162e071992b34bc36ca257d629547f93cb43728d6fe073ad18a237e4f7c52d7d","impliedFormat":1},{"version":"b73cbf0a72c8800cf8f96a9acfe94f3ad32ca71342a8908b8ae484d61113f647","impliedFormat":1},{"version":"bae6dd176832f6423966647382c0d7ba9e63f8c167522f09a982f086cd4e8b23","impliedFormat":1},{"version":"20865ac316b8893c1a0cc383ccfc1801443fbcc2a7255be166cf90d03fac88c9","impliedFormat":1},{"version":"c9958eb32126a3843deedda8c22fb97024aa5d6dd588b90af2d7f2bfac540f23","impliedFormat":1},{"version":"461d0ad8ae5f2ff981778af912ba71b37a8426a33301daa00f21c6ccb27f8156","impliedFormat":1},{"version":"e927c2c13c4eaf0a7f17e6022eee8519eb29ef42c4c13a31e81a611ab8c95577","impliedFormat":1},{"version":"fcafff163ca5e66d3b87126e756e1b6dfa8c526aa9cd2a2b0a9da837d81bbd72","impliedFormat":1},{"version":"70246ad95ad8a22bdfe806cb5d383a26c0c6e58e7207ab9c431f1cb175aca657","impliedFormat":1},{"version":"f00f3aa5d64ff46e600648b55a79dcd1333458f7a10da2ed594d9f0a44b76d0b","impliedFormat":1},{"version":"772d8d5eb158b6c92412c03228bd9902ccb1457d7a705b8129814a5d1a6308fc","impliedFormat":1},{"version":"802e797bcab5663b2c9f63f51bdf67eff7c41bc64c0fd65e6da3e7941359e2f7","impliedFormat":1},{"version":"8b4327413e5af38cd8cb97c59f48c3c866015d5d642f28518e3a891c469f240e","impliedFormat":1},{"version":"7e6ac205dcb9714f708354fd863bffa45cee90740706cc64b3b39b23ebb84744","impliedFormat":1},{"version":"61dc6e3ac78d64aa864eedd0a208b97b5887cc99c5ba65c03287bf57d83b1eb9","impliedFormat":1},{"version":"4b20fcf10a5413680e39f5666464859fc56b1003e7dfe2405ced82371ebd49b6","impliedFormat":1},{"version":"c06ef3b2569b1c1ad99fcd7fe5fba8d466e2619da5375dfa940a94e0feea899b","impliedFormat":1},{"version":"f7d628893c9fa52ba3ab01bcb5e79191636c4331ee5667ecc6373cbccff8ae12","impliedFormat":1},{"version":"1d879125d1ec570bf04bc1f362fdbe0cb538315c7ac4bcfcdf0c1e9670846aa6","impliedFormat":1},{"version":"8baa8dbdc393e3c6b26e8e31384b938756ce2effdc126648d43e58291ce9869b","impliedFormat":1},{"version":"933aee906d42ea2c53b6892192a8127745f2ec81a90695df4024308ba35a8ff4","impliedFormat":1},{"version":"d663134457d8d669ae0df34eabd57028bddc04fc444c4bc04bc5215afc91e1f4","impliedFormat":1},{"version":"985153f0deb9b4391110331a2f0c114019dbea90cba5ca68a4107700796e0d75","impliedFormat":1},{"version":"a3e3f0efcae272ab8ee3298e4e819f7d9dd9ff411101f45444877e77cfeca9a4","impliedFormat":1},{"version":"43e96a3d5d1411ab40ba2f61d6a3192e58177bcf3b133a80ad2a16591611726d","impliedFormat":1},{"version":"58659b06d33fa430bee1105b75cf876c0a35b2567207487c8578aec51ca2d977","impliedFormat":1},{"version":"71d9eb4c4e99456b78ae182fb20a5dfc20eb1667f091dbb9335b3c017dd1c783","impliedFormat":1},{"version":"cfa846a7b7847a1d973605fbb8c91f47f3a0f0643c18ac05c47077ebc72e71c7","impliedFormat":1},{"version":"30e6520444df1a004f46fdc8096f3fe06f7bbd93d09c53ada9dcdde59919ccca","impliedFormat":1},{"version":"6c800b281b9e89e69165fd11536195488de3ff53004e55905e6c0059a2d8591e","impliedFormat":1},{"version":"7d4254b4c6c67a29d5e7f65e67d72540480ac2cfb041ca484847f5ae70480b62","impliedFormat":1},{"version":"a58beefce74db00dbb60eb5a4bb0c6726fb94c7797c721f629142c0ae9c94306","impliedFormat":1},{"version":"41eeb453ccb75c5b2c3abef97adbbd741bd7e9112a2510e12f03f646dc9ad13d","impliedFormat":1},{"version":"502fa5863df08b806dbf33c54bee8c19f7e2ad466785c0fc35465d7c5ff80995","impliedFormat":1},{"version":"c91a2d08601a1547ffef326201be26db94356f38693bb18db622ae5e9b3d7c92","impliedFormat":1},{"version":"888cda0fa66d7f74e985a3f7b1af1f64b8ff03eb3d5e80d051c3cbdeb7f32ab7","impliedFormat":1},{"version":"60681e13f3545be5e9477acb752b741eae6eaf4cc01658a25ec05bff8b82a2ef","impliedFormat":1},{"version":"8b4b8ebc2d99ae651c5c4169ee8b24e2b0e02a3dfaef84e357d677b663c18fdf","impliedFormat":1},{"version":"a57b1802794433adec9ff3fed12aa79d671faed86c49b09e02e1ac41b4f1d33a","impliedFormat":1},{"version":"ad10d4f0517599cdeca7755b930f148804e3e0e5b5a3847adce0f1f71bbccd74","impliedFormat":1},{"version":"1042064ece5bb47d6aba91648fbe0635c17c600ebdf567588b4ca715602f0a9d","impliedFormat":1},{"version":"c49469a5349b3cc1965710b5b0f98ed6c028686aa8450bcb3796728873eb923e","impliedFormat":1},{"version":"4a889f2c763edb4d55cb624257272ac10d04a1cad2ed2948b10ed4a7fda2a428","impliedFormat":1},{"version":"7bb79aa2fead87d9d56294ef71e056487e848d7b550c9a367523ee5416c44cfa","impliedFormat":1},{"version":"d88ea80a6447d7391f52352ec97e56b52ebec934a4a4af6e2464cfd8b39c3ba8","impliedFormat":1},{"version":"55095860901097726220b6923e35a812afdd49242a1246d7b0942ee7eb34c6e4","impliedFormat":1},{"version":"96171c03c2e7f314d66d38acd581f9667439845865b7f85da8df598ff9617476","impliedFormat":1},{"version":"27ff4196654e6373c9af16b6165120e2dd2169f9ad6abb5c935af5abd8c7938c","impliedFormat":1},{"version":"bb8f2dbc03533abca2066ce4655c119bff353dd4514375beb93c08590c03e023","impliedFormat":1},{"version":"d193c8a86144b3a87b22bc1f5534b9c3e0f5a187873ec337c289a183973a58fe","impliedFormat":1},{"version":"1a6e6ba8a07b74e3ad237717c0299d453f9ceb795dbc2f697d1f2dd07cb782d2","impliedFormat":1},{"version":"58d70c38037fc0f949243388ff7ae20cf43321107152f14a9d36ca79311e0ada","impliedFormat":1},{"version":"f56bdc6884648806d34bc66d31cdb787c4718d04105ce2cd88535db214631f82","impliedFormat":1},{"version":"190da5eac6478d61ab9731ab2146fbc0164af2117a363013249b7e7992f1cccb","impliedFormat":1},{"version":"01479d9d5a5dda16d529b91811375187f61a06e74be294a35ecce77e0b9e8d6c","impliedFormat":1},{"version":"49f95e989b4632c6c2a578cc0078ee19a5831832d79cc59abecf5160ea71abad","impliedFormat":1},{"version":"9666533332f26e8995e4d6fe472bdeec9f15d405693723e6497bf94120c566c8","impliedFormat":1},{"version":"ce0df82a9ae6f914ba08409d4d883983cc08e6d59eb2df02d8e4d68309e7848b","impliedFormat":1},{"version":"796273b2edc72e78a04e86d7c58ae94d370ab93a0ddf40b1aa85a37a1c29ecd7","impliedFormat":1},{"version":"5df15a69187d737d6d8d066e189ae4f97e41f4d53712a46b2710ff9f8563ec9f","impliedFormat":1},{"version":"1a4dc28334a926d90ba6a2d811ba0ff6c22775fcc13679521f034c124269fd40","impliedFormat":1},{"version":"f05315ff85714f0b87cc0b54bcd3dde2716e5a6b99aedcc19cad02bf2403e08c","impliedFormat":1},{"version":"8a8c64dafaba11c806efa56f5c69f611276471bef80a1db1f71316ec4168acef","impliedFormat":1},{"version":"43ba4f2fa8c698f5c304d21a3ef596741e8e85a810b7c1f9b692653791d8d97a","impliedFormat":1},{"version":"5fad3b31fc17a5bc58095118a8b160f5260964787c52e7eb51e3d4fcf5d4a6f0","impliedFormat":1},{"version":"72105519d0390262cf0abe84cf41c926ade0ff475d35eb21307b2f94de985778","impliedFormat":1},{"version":"d0a4cac61fa080f2be5ebb68b82726be835689b35994ba0e22e3ed4d2bc45e3b","impliedFormat":1},{"version":"c857e0aae3f5f444abd791ec81206020fbcc1223e187316677e026d1c1d6fe08","impliedFormat":1},{"version":"ccf6dd45b708fb74ba9ed0f2478d4eb9195c9dfef0ff83a6092fa3cf2ff53b4f","impliedFormat":1},{"version":"2d7db1d73456e8c5075387d4240c29a2a900847f9c1bff106a2e490da8fbd457","impliedFormat":1},{"version":"2b15c805f48e4e970f8ec0b1915f22d13ca6212375e8987663e2ef5f0205e832","impliedFormat":1},{"version":"205a31b31beb7be73b8df18fcc43109cbc31f398950190a0967afc7a12cb478c","impliedFormat":1},{"version":"8fca3039857709484e5893c05c1f9126ab7451fa6c29e19bb8c2411a2e937345","impliedFormat":1},{"version":"35069c2c417bd7443ae7c7cafd1de02f665bf015479fec998985ffbbf500628c","impliedFormat":1},{"version":"dba6c7006e14a98ec82999c6f89fbbbfd1c642f41db148535f3b77b8018829b8","impliedFormat":1},{"version":"7f897b285f22a57a5c4dc14a27da2747c01084a542b4d90d33897216dceeea2e","impliedFormat":1},{"version":"7e0b7f91c5ab6e33f511efc640d36e6f933510b11be24f98836a20a2dc914c2d","impliedFormat":1},{"version":"045b752f44bf9bbdcaffd882424ab0e15cb8d11fa94e1448942e338c8ef19fba","impliedFormat":1},{"version":"2894c56cad581928bb37607810af011764a2f511f575d28c9f4af0f2ef02d1ab","impliedFormat":1},{"version":"0a72186f94215d020cb386f7dca81d7495ab6c17066eb07d0f44a5bf33c1b21a","impliedFormat":1},{"version":"d96b39301d0ded3f1a27b47759676a33a02f6f5049bfcbde81e533fd10f50dcb","impliedFormat":1},{"version":"2ded4f930d6abfaa0625cf55e58f565b7cbd4ab5b574dd2cb19f0a83a2f0be8b","impliedFormat":1},{"version":"0aedb02516baf3e66b2c1db9fef50666d6ed257edac0f866ea32f1aa05aa474f","impliedFormat":1},{"version":"ca0f4d9068d652bad47e326cf6ba424ac71ab866e44b24ddb6c2bd82d129586a","affectsGlobalScope":true,"impliedFormat":1},{"version":"04d36005fcbeac741ac50c421181f4e0316d57d148d37cc321a8ea285472462b","impliedFormat":1},{"version":"9e2739b32f741859263fdba0244c194ca8e96da49b430377930b8f721d77c000","impliedFormat":1},{"version":"56ccb49443bfb72e5952f7012f0de1a8679f9f75fc93a5c1ac0bafb28725fc5f","impliedFormat":1},{"version":"d90b9f1520366d713a73bd30c5a9eb0040d0fb6076aff370796bc776fd705943","impliedFormat":1},{"version":"05321b823dd3781d0b6aac8700bfdc0c9181d56479fe52ba6a40c9196fd661a8","impliedFormat":1},{"version":"736a8712572e21ee73337055ce15edb08142fc0f59cd5410af4466d04beff0f9","affectsGlobalScope":true,"impliedFormat":1},{"version":"bef86adb77316505c6b471da1d9b8c9e428867c2566270e8894d4d773a1c4dc2","impliedFormat":1},{"version":"a46dba563f70f32f9e45ae015f3de979225f668075d7a427f874e0f6db584991","impliedFormat":1},{"version":"6ac6715916fa75a1f7ebdfeacac09513b4d904b667d827b7535e84ff59679aff","impliedFormat":1},{"version":"2652448ac55a2010a1f71dd141f828b682298d39728f9871e1cdf8696ef443fd","impliedFormat":1},{"version":"02c4fc9e6bb27545fa021f6056e88ff5fdf10d9d9f1467f1d10536c6e749ac50","impliedFormat":1},{"version":"120599fd965257b1f4d0ff794bc696162832d9d8467224f4665f713a3119078b","impliedFormat":1},{"version":"5433f33b0a20300cca35d2f229a7fc20b0e8477c44be2affeb21cb464af60c76","impliedFormat":1},{"version":"db036c56f79186da50af66511d37d9fe77fa6793381927292d17f81f787bb195","impliedFormat":1},{"version":"bd4131091b773973ca5d2326c60b789ab1f5e02d8843b3587effe6e1ea7c9d86","impliedFormat":1},{"version":"c7f6485931085bf010fbaf46880a9b9ec1a285ad9dc8c695a9e936f5a48f34b4","impliedFormat":1},{"version":"14f6b927888a1112d662877a5966b05ac1bf7ed25d6c84386db4c23c95a5363b","impliedFormat":1},{"version":"6ac6715916fa75a1f7ebdfeacac09513b4d904b667d827b7535e84ff59679aff","impliedFormat":1},{"version":"622694a8522b46f6310c2a9b5d2530dde1e2854cb5829354e6d1ff8f371cf469","impliedFormat":1},{"version":"d24ff95760ea2dfcc7c57d0e269356984e7046b7e0b745c80fea71559f15bdd8","impliedFormat":1},{"version":"a9e6c0ff3f8186fccd05752cf75fc94e147c02645087ac6de5cc16403323d870","impliedFormat":1},{"version":"49c346823ba6d4b12278c12c977fb3a31c06b9ca719015978cb145eb86da1c61","impliedFormat":1},{"version":"bfac6e50eaa7e73bb66b7e052c38fdc8ccfc8dbde2777648642af33cf349f7f1","impliedFormat":1},{"version":"92f7c1a4da7fbfd67a2228d1687d5c2e1faa0ba865a94d3550a3941d7527a45d","impliedFormat":1},{"version":"f53b120213a9289d9a26f5af90c4c686dd71d91487a0aa5451a38366c70dc64b","impliedFormat":1},{"version":"83fe880c090afe485a5c02262c0b7cdd76a299a50c48d9bde02be8e908fb4ae6","impliedFormat":1},{"version":"13c1b657932e827a7ed510395d94fc8b743b9d053ab95b7cd829b2bc46fb06db","impliedFormat":1},{"version":"57d67b72e06059adc5e9454de26bbfe567d412b962a501d263c75c2db430f40e","impliedFormat":1},{"version":"6511e4503cf74c469c60aafd6589e4d14d5eb0a25f9bf043dcbecdf65f261972","impliedFormat":1},{"version":"078131f3a722a8ad3fc0b724cd3497176513cdcb41c80f96a3acbda2a143b58e","impliedFormat":1},{"version":"8c70ddc0c22d85e56011d49fddfaae3405eb53d47b59327b9dd589e82df672e7","impliedFormat":1},{"version":"a67b87d0281c97dfc1197ef28dfe397fc2c865ccd41f7e32b53f647184cc7307","impliedFormat":1},{"version":"771ffb773f1ddd562492a6b9aaca648192ac3f056f0e1d997678ff97dbb6bf9b","impliedFormat":1},{"version":"232f70c0cf2b432f3a6e56a8dc3417103eb162292a9fd376d51a3a9ea5fbbf6f","impliedFormat":1},{"version":"9e155d2255348d950b1f65643fb26c0f14f5109daf8bd9ee24a866ad0a743648","affectsGlobalScope":true,"impliedFormat":1},{"version":"0b103e9abfe82d14c0ad06a55d9f91d6747154ef7cacc73cf27ecad2bfb3afcf","impliedFormat":1},{"version":"7a883e9c84e720810f86ef4388f54938a65caa0f4d181a64e9255e847a7c9f51","impliedFormat":1},{"version":"a0ba218ac1baa3da0d5d9c1ec1a7c2f8676c284e6f5b920d6d049b13fa267377","impliedFormat":1},{"version":"8a0e762ceb20c7e72504feef83d709468a70af4abccb304f32d6b9bac1129b2c","impliedFormat":1},{"version":"d408d6f32de8d1aba2ff4a20f1aa6a6edd7d92c997f63b90f8ad3f9017cf5e46","impliedFormat":1},{"version":"9252d498a77517aab5d8d4b5eb9d71e4b225bbc7123df9713e08181de63180f6","impliedFormat":1},{"version":"221e915caef37c5cbaabd4946418f97dcc20591469e260732b31008321024dd8","impliedFormat":1},{"version":"4aa42ce8383b45823b3a1d3811c0fdd5f939f90254bc4874124393febbaf89f6","impliedFormat":1},{"version":"af48e58339188d5737b608d41411a9c054685413d8ae88b8c1d0d9bfabdf6e7e","impliedFormat":1},{"version":"371bf6127c1d427836de95197155132501cb6b69ef8709176ce6e0b85d059264","impliedFormat":1},{"version":"2bafd700e617d3693d568e972d02b92224b514781f542f70d497a8fdf92d52a2","affectsGlobalScope":true,"impliedFormat":1},{"version":"3dc14e1ab45e497e5d5e4295271d54ff689aeae00b4277979fdd10fa563540ae","impliedFormat":1},{"version":"f3ef51a2ab4b089ea7a05e193cfd2f54118f3166338548c5cfc545d281d0a694","signature":"22908349ff388755bc52f4c8195279fbc838ef54bd1e4311fa14dad3ab635109"},{"version":"25db92af5717445453331b8ebab4fb8f3a9312975d91cfe09d3f7c7a59e3c2d5","signature":"8fc7af9bc14f0610a2b2b26dcac75dcb4c7675337af0472f4c1b8e49857b1eb5"},{"version":"bc9ee0192f056b3d5527bcd78dc3f9e527a9ba2bdc0a2c296fbc9027147df4b2","impliedFormat":1},{"version":"330896c1a2b9693edd617be24fbf9e5895d6e18c7955d6c08f028f272b37314d","impliedFormat":1},{"version":"1d9c0a9a6df4e8f29dc84c25c5aa0bb1da5456ebede7a03e03df08bb8b27bae6","impliedFormat":1},{"version":"84380af21da938a567c65ef95aefb5354f676368ee1a1cbb4cae81604a4c7d17","impliedFormat":1},{"version":"1af3e1f2a5d1332e136f8b0b95c0e6c0a02aaabd5092b36b64f3042a03debf28","impliedFormat":1},{"version":"30d8da250766efa99490fc02801047c2c6d72dd0da1bba6581c7e80d1d8842a4","impliedFormat":1},{"version":"03566202f5553bd2d9de22dfab0c61aa163cabb64f0223c08431fb3fc8f70280","impliedFormat":1},{"version":"4c0a1233155afb94bd4d7518c75c84f98567cd5f13fc215d258de196cdb40d91","impliedFormat":1},{"version":"e7765aa8bcb74a38b3230d212b4547686eb9796621ffb4367a104451c3f9614f","impliedFormat":1},{"version":"1de80059b8078ea5749941c9f863aa970b4735bdbb003be4925c853a8b6b4450","impliedFormat":1},{"version":"aa25ba3f0a92d02caa372d59aa892f993a4e7495f9df9a0a6126184c79fb3b24","signature":"a1681e2f939f053d921acc0ca4bf6eda1fb5ff37e95ce7ef77a6221b566e94a4"},{"version":"b6c1f64158da02580f55e8a2728eda6805f79419aed46a930f43e68ad66a38fc","impliedFormat":1},{"version":"cdf21eee8007e339b1b9945abf4a7b44930b1d695cc528459e68a3adc39a622e","impliedFormat":1},{"version":"8b0f3d3864feacf987e17523ecd444fc867c268667473cfc8e25dfe9b3046baf","signature":"4968a75b7d4580235d7bbb846190f2a60511d8f99d07e6cf1ca793b1d6e0b0f3"},{"version":"ff863d17c6c659440f7c5c536e4db7762d8c2565547b2608f36b798a743606ca","impliedFormat":1},{"version":"5412ad0043cd60d1f1406fc12cb4fb987e9a734decbdd4db6f6acf71791e36fe","impliedFormat":1},{"version":"ad036a85efcd9e5b4f7dd5c1a7362c8478f9a3b6c3554654ca24a29aa850a9c5","impliedFormat":1},{"version":"fedebeae32c5cdd1a85b4e0504a01996e4a8adf3dfa72876920d3dd6e42978e7","impliedFormat":1},{"version":"ba1ffbcecaa4f42eb94638201903d6ec270b9b5cbd2903da5b37188c0d202f94","signature":"37b7f6c7a251fe37482e5a6b7ccb9b78412a0cc1260912b60ad2ae2f6d00be5c"},{"version":"1a51a0ad117ae0bb48d0014197a09c0f789a58ffb1827ef9db6a7b2728ec8da5","impliedFormat":1},{"version":"67864f1bd54798127fff2b44c81f7502f8b99662c05c7c5eee6281706213a02a","signature":"ad150a824182957430b50844e913490e2309fcc43382448fdc73f4d780e0400f"},{"version":"2349270bead5df0c457616eefb082df45edc1a42d3c8179b5005fc9b74aa8e98","signature":"f90a6be27edd1adf68afa60910fdcd9fb2a0c41b494d25f96d1045bb7d02dd4c"},{"version":"983ea32eb5932ad7759c4660dd5fe39d0fdbf0eb7c50a543b820827042e6f7ba","signature":"7952d03a6ce3a6a997b535989f97bb7efc5483197578310ff28c88a70cd89443"},{"version":"89121c1bf2990f5219bfd802a3e7fc557de447c62058d6af68d6b6348d64499a","impliedFormat":1},{"version":"79b4369233a12c6fa4a07301ecb7085802c98f3a77cf9ab97eee27e1656f82e6","impliedFormat":1},{"version":"2b37ba54ec067598bf912d56fcb81f6d8ad86a045c757e79440bdef97b52fe1b","impliedFormat":99},{"version":"1bc9dd465634109668661f998485a32da369755d9f32b5a55ed64a525566c94b","impliedFormat":99},{"version":"5702b3c2f5d248290ed99419d77ca1cc3e6c29db5847172377659c50e6303768","impliedFormat":99},{"version":"9764b2eb5b4fc0b8951468fb3dbd6cd922d7752343ef5fbf1a7cd3dfcd54a75e","impliedFormat":99},{"version":"1fc2d3fe8f31c52c802c4dee6c0157c5a1d1f6be44ece83c49174e316cf931ad","impliedFormat":99},{"version":"dc4aae103a0c812121d9db1f7a5ea98231801ed405bf577d1c9c46a893177e36","impliedFormat":99},{"version":"106d3f40907ba68d2ad8ce143a68358bad476e1cc4a5c710c11c7dbaac878308","impliedFormat":99},{"version":"42ad582d92b058b88570d5be95393cf0a6c09a29ba9aa44609465b41d39d2534","impliedFormat":99},{"version":"36e051a1e0d2f2a808dbb164d846be09b5d98e8b782b37922a3b75f57ee66698","impliedFormat":99},{"version":"d4a22007b481fe2a2e6bfd3a42c00cd62d41edb36d30fc4697df2692e9891fc8","impliedFormat":1},{"version":"9d62e577adb05f5aafed137e747b3a1b26f8dce7b20f350d22f6fb3255a3c0ed","impliedFormat":99},{"version":"7ed92bcef308af6e3925b3b61c83ad6157a03ff15c7412cf325f24042fe5d363","impliedFormat":99},{"version":"3da9062d0c762c002b7ab88187d72e1978c0224db61832221edc8f4eb0b54414","impliedFormat":99},{"version":"84dbf6af43b0b5ad42c01e332fddf4c690038248140d7c4ccb74a424e9226d4d","impliedFormat":99},{"version":"00884fc0ea3731a9ffecffcde8b32e181b20e1039977a8ae93ae5bce3ab3d245","impliedFormat":99},{"version":"0bd8b6493d9bf244afe133ccb52d32d293de8d08d15437cca2089beed5f5a6b5","impliedFormat":99},{"version":"7fc3099c95752c6e7b0ea215915464c7203e835fcd6878210f2ce4f0dcbbfe67","impliedFormat":99},{"version":"83b5499dbc74ee1add93aef162f7d44b769dcef3a74afb5f80c70f9a5ce77cc0","impliedFormat":99},{"version":"8bf8b772b38fc4da471248320f49a2219c363a9669938c720e0e0a5a2531eabf","impliedFormat":99},{"version":"7da6e8c98eacf084c961e039255f7ebb9d97a43377e7eee2695cb77fec640c66","impliedFormat":99},{"version":"0b5b064c5145a48cd3e2a5d9528c63f49bac55aa4bc5f5b4e68a160066401375","impliedFormat":99},{"version":"702ff40d28906c05d9d60b23e646c2577ad1cc7cd177d5c0791255a2eab13c07","impliedFormat":99},{"version":"49ff0f30d6e757d865ae0b422103f42737234e624815eee2b7f523240aa0c8f8","impliedFormat":99},{"version":"0389aacf0ffd49a877a46814a21a4770f33fc33e99951a1584de866c8e971993","impliedFormat":99},{"version":"5cb7a51cf151c1056b61f078cf80b811e19787d1f29a33a2a6e4bf00334bbc10","impliedFormat":99},{"version":"215aa8915d707f97ad511b7abbf7eda51d3a7048e9a656955cf0dda767ae7db0","impliedFormat":99},{"version":"0d689a717fbef83da07ab4de33f83db5cbcec9bc4e3b04edb106c538a50a0210","impliedFormat":99},{"version":"d00bc73e8d1f4137f2f6238bb3aa2bbdad8573658cc95920e2cdfa7ad491a8d8","impliedFormat":99},{"version":"e3667aa9f5245d1a99fb4a2a1ac48daf1429040c29cc0d262e3843f9ae3b9d65","impliedFormat":99},{"version":"08c0f3222b50ec2b534be1a59392660102549129246425d33ec43f35aa051dc6","impliedFormat":99},{"version":"612fb780f312e6bb3c40f3cb2b827ea7455b922198f651c799d844fdd44cf2e9","impliedFormat":99},{"version":"bcd98e8f44bc76e4fcb41e4b1a8bab648161a942653a3d1f261775a891d258de","impliedFormat":99},{"version":"5abaa19aa91bb4f63ea58154ada5d021e33b1f39aa026ca56eb95f13b12c497a","impliedFormat":99},{"version":"356a18b0c50f297fee148f4a2c64b0affd352cbd6f21c7b6bfa569d30622c693","impliedFormat":99},{"version":"5876027679fd5257b92eb55d62efee634358012b9f25c5711ad02b918e52c837","impliedFormat":99},{"version":"f5622423ee5642dcf2b92d71b37967b458e8df3cf90b468675ff9fddaa532a0f","impliedFormat":99},{"version":"70265bc75baf24ec0d61f12517b91ea711732b9c349fceef71a446c4ff4a247a","impliedFormat":99},{"version":"41a4b2454b2d3a13b4fc4ec57d6a0a639127369f87da8f28037943019705d619","impliedFormat":99},{"version":"e9b82ac7186490d18dffaafda695f5d975dfee549096c0bf883387a8b6c3ab5a","impliedFormat":99},{"version":"eed9b5f5a6998abe0b408db4b8847a46eb401c9924ddc5b24b1cede3ebf4ee8c","impliedFormat":99},{"version":"af85fde8986fdad68e96e871ae2d5278adaf2922d9879043b9313b18fae920b1","impliedFormat":99},{"version":"8a1f5d2f7cf4bf851cc9baae82056c3316d3c6d29561df28aff525556095554b","impliedFormat":99},{"version":"a5dbd4c9941b614526619bad31047ddd5f504ec4cdad88d6117b549faef34dd3","impliedFormat":99},{"version":"e87873f06fa094e76ac439c7756b264f3c76a41deb8bc7d39c1d30e0f03ef547","impliedFormat":99},{"version":"488861dc4f870c77c2f2f72c1f27a63fa2e81106f308e3fc345581938928f925","impliedFormat":99},{"version":"eff73acfacda1d3e62bb3cb5bc7200bb0257ea0c8857ce45b3fee5bfec38ad12","impliedFormat":99},{"version":"aff4ac6e11917a051b91edbb9a18735fe56bcfd8b1802ea9dbfb394ad8f6ce8e","impliedFormat":99},{"version":"1f68aed2648740ac69c6634c112fcaae4252fbae11379d6eabee09c0fbf00286","impliedFormat":99},{"version":"5e7c2eff249b4a86fb31e6b15e4353c3ddd5c8aefc253f4c3e4d9caeb4a739d4","impliedFormat":99},{"version":"14c8d1819e24a0ccb0aa64f85c61a6436c403eaf44c0e733cdaf1780fed5ec9f","impliedFormat":99},{"version":"011423c04bfafb915ceb4faec12ea882d60acbe482780a667fa5095796c320f8","impliedFormat":99},{"version":"f8eb2909590ec619643841ead2fc4b4b183fbd859848ef051295d35fef9d8469","impliedFormat":99},{"version":"fe784567dd721417e2c4c7c1d7306f4b8611a4f232f5b7ce734382cf34b417d2","impliedFormat":99},{"version":"45d1e8fb4fd3e265b15f5a77866a8e21870eae4c69c473c33289a4b971e93704","impliedFormat":99},{"version":"cd40919f70c875ca07ecc5431cc740e366c008bcbe08ba14b8c78353fb4680df","impliedFormat":99},{"version":"ddfd9196f1f83997873bbe958ce99123f11b062f8309fc09d9c9667b2c284391","impliedFormat":99},{"version":"2999ba314a310f6a333199848166d008d088c6e36d090cbdcc69db67d8ae3154","impliedFormat":99},{"version":"62c1e573cd595d3204dfc02b96eba623020b181d2aa3ce6a33e030bc83bebb41","impliedFormat":99},{"version":"ca1616999d6ded0160fea978088a57df492b6c3f8c457a5879837a7e68d69033","impliedFormat":99},{"version":"835e3d95251bbc48918bb874768c13b8986b87ea60471ad8eceb6e38ddd8845e","impliedFormat":99},{"version":"de54e18f04dbcc892a4b4241b9e4c233cfce9be02ac5f43a631bbc25f479cd84","impliedFormat":99},{"version":"453fb9934e71eb8b52347e581b36c01d7751121a75a5cd1a96e3237e3fd9fc7e","impliedFormat":99},{"version":"bc1a1d0eba489e3eb5c2a4aa8cd986c700692b07a76a60b73a3c31e52c7ef983","impliedFormat":99},{"version":"4098e612efd242b5e203c5c0b9afbf7473209905ab2830598be5c7b3942643d0","impliedFormat":99},{"version":"28410cfb9a798bd7d0327fbf0afd4c4038799b1d6a3f86116dc972e31156b6d2","impliedFormat":99},{"version":"514ae9be6724e2164eb38f2a903ef56cf1d0e6ddb62d0d40f155f32d1317c116","impliedFormat":99},{"version":"970e5e94a9071fd5b5c41e2710c0ef7d73e7f7732911681592669e3f7bd06308","impliedFormat":99},{"version":"491fb8b0e0aef777cec1339cb8f5a1a599ed4973ee22a2f02812dd0f48bd78c1","impliedFormat":99},{"version":"6acf0b3018881977d2cfe4382ac3e3db7e103904c4b634be908f1ade06eb302d","impliedFormat":99},{"version":"2dbb2e03b4b7f6524ad5683e7b5aa2e6aef9c83cab1678afd8467fde6d5a3a92","impliedFormat":99},{"version":"135b12824cd5e495ea0a8f7e29aba52e1adb4581bb1e279fb179304ba60c0a44","impliedFormat":99},{"version":"e4c784392051f4bbb80304d3a909da18c98bc58b093456a09b3e3a1b7b10937f","impliedFormat":99},{"version":"2e87c3480512f057f2e7f44f6498b7e3677196e84e0884618fc9e8b6d6228bed","impliedFormat":99},{"version":"66984309d771b6b085e3369227077da237b40e798570f0a2ddbfea383db39812","impliedFormat":99},{"version":"e41be8943835ad083a4f8a558bd2a89b7fe39619ed99f1880187c75e231d033e","impliedFormat":99},{"version":"260558fff7344e4985cfc78472ae58cbc2487e406d23c1ddaf4d484618ce4cfd","impliedFormat":99},{"version":"413d50bc66826f899c842524e5f50f42d45c8cb3b26fd478a62f26ac8da3d90e","impliedFormat":99},{"version":"d9083e10a491b6f8291c7265555ba0e9d599d1f76282812c399ab7639019f365","impliedFormat":99},{"version":"09de774ebab62974edad71cb3c7c6fa786a3fda2644e6473392bd4b600a9c79c","impliedFormat":99},{"version":"e8bcc823792be321f581fcdd8d0f2639d417894e67604d884c38b699284a1a2a","impliedFormat":99},{"version":"7c99839c518dcf5ab8a741a97c190f0703c0a71e30c6d44f0b7921b0deec9f67","impliedFormat":99},{"version":"44c14e4da99cd71f9fe4e415756585cec74b9e7dc47478a837d5bedfb7db1e04","impliedFormat":99},{"version":"1f46ee2b76d9ae1159deb43d14279d04bcebcb9b75de4012b14b1f7486e36f82","impliedFormat":99},{"version":"2838028b54b421306639f4419606306b940a5c5fcc5bc485954cbb0ab84d90f4","impliedFormat":99},{"version":"7116e0399952e03afe9749a77ceaca29b0e1950989375066a9ddc9cb0b7dd252","impliedFormat":99},{"version":"142f64fa61b78762d31c1c8206fb4dbd788ef992219a2d2f9a3f92b9420715b5","signature":"1391749917c3d4295bae0f950222f75cdc739e43249e8992c649ae6a41fa4741"},{"version":"a422105fe56de3c57c74878eeaf83bdf8cc837f6949434b1484843c6ea977b6b","signature":"7ca07d3bd60b71acc03d320edd3cebe239aa087dd8ad97785b3671b3e0f1dfdf"},{"version":"d11abce417cfcde6e3a05891468269c676cd54f6643c4c4fb7404276253e245b","signature":"30635157e278fc89daf99c1a0f6829642d9ba6ded156045e8f3da2c4ce958c45"},{"version":"e85d04f57b46201ddc8ba238a84322432a4803a5d65e0bbd8b3b4f05345edd51","impliedFormat":1},{"version":"431c146ffe6397bb4a2cfb70526f47d29c89ac43ada06ed18fb573cbc2267fa5","signature":"d8e1f5658882d42390e2f83013ead1b3ee373c1ee1687ef4c616ffef607a634f"},{"version":"e19a4711598cc465becc40c8e6d5c31cc5a66fcbd618d3cd15cb5896b87f7406","signature":"bfda5404e2732bb1e45847b4099fe827d378980314dd84d566af0c61a9618b8a"},{"version":"aff9633a737864a1f6bdc08b462340beb4856fc5536bd31bf51ad412a36a6596","signature":"fa1d254a48c1e82cfc49ad04e2ebc487a374b517c48f30a2358271f19afede87"},{"version":"cff019d011de1f8a7e5200e417360a74e982fa3636213dc87a225dd01220dcb9","signature":"02ec630b1de9a95f6491a52ebd017fc719fb15437dfdda1e2d8e7ed0180fd9d3"},{"version":"7a1dd1e9c8bf5e23129495b10718b280340c7500570e0cfe5cffcdee51e13e48","impliedFormat":1},{"version":"95bf7c19205d7a4c92f1699dae58e217bb18f324276dfe06b1c2e312c7c75cf2","impliedFormat":99},{"version":"97e0e5ed7aac8aed58bb64645107da954bc374437350879345cf0194652dad2e","signature":"b16a13c49f292dc806a22158bac80da5bacf061873f851748d980578eccee98a"},{"version":"bce9fe31afd7572dd82625302fa01f5bdc1dd7960747e179470026d8b829a4f7","signature":"71da0e5b028c295470667034e39dc0fbc4263e128157c51086460edbbc808f57"},{"version":"59ef9bb2ed3a26b0732fc6b4d46e611c3e98aa9b1118831504f197e1a0b90298","signature":"11eb7325d7294ba775a69ca3bbab22034bffe53bdbb130560f471de717262b6c"},{"version":"a56f4edf21afda9c241f23efee5a5f5ce648fdead5df3c3f21fc0dd8d142c1b4","signature":"9eb9f42ea35735c4c539e534b17dd64b20af75e1fe228c69a38d8b83b378c599"},{"version":"ae77d81a5541a8abb938a0efedf9ac4bea36fb3a24cc28cfa11c598863aba571","impliedFormat":1},{"version":"3cfb7c0c642b19fb75132154040bb7cd840f0002f9955b14154e69611b9b3f81","impliedFormat":1},{"version":"8387ec1601cf6b8948672537cf8d430431ba0d87b1f9537b4597c1ab8d3ade5b","impliedFormat":1},{"version":"d16f1c460b1ca9158e030fdf3641e1de11135e0c7169d3e8cf17cc4cc35d5e64","impliedFormat":1},{"version":"a934063af84f8117b8ce51851c1af2b76efe960aa4c7b48d0343a1b15c01aedf","impliedFormat":1},{"version":"e3c5ad476eb2fca8505aee5bdfdf9bf11760df5d0f9545db23f12a5c4d72a718","impliedFormat":1},{"version":"462bccdf75fcafc1ae8c30400c9425e1a4681db5d605d1a0edb4f990a54d8094","impliedFormat":1},{"version":"5923d8facbac6ecf7c84739a5c701a57af94a6f6648d6229a6c768cf28f0f8cb","impliedFormat":1},{"version":"d0570ce419fb38287e7b39c910b468becb5b2278cf33b1000a3d3e82a46ecae2","impliedFormat":1},{"version":"3aca7f4260dad9dcc0a0333654cb3cde6664d34a553ec06c953bce11151764d7","impliedFormat":1},{"version":"a0a6f0095f25f08a7129bc4d7cb8438039ec422dc341218d274e1e5131115988","impliedFormat":1},{"version":"1d2699a343a347a830be26eb17ab340d7875c6f549c8d7477efb1773060cc7e5","impliedFormat":1},{"version":"45785e608b3d380c79e21957a6d1467e1206ac0281644e43e8ed6498808ace72","impliedFormat":1},{"version":"bece27602416508ba946868ad34d09997911016dbd6893fb884633017f74e2c5","impliedFormat":1},{"version":"2a90177ebaef25de89351de964c2c601ab54d6e3a157cba60d9cd3eaf5a5ee1a","impliedFormat":1},{"version":"82200e963d3c767976a5a9f41ecf8c65eca14a6b33dcbe00214fcbe959698c46","impliedFormat":1},{"version":"b4966c503c08bbd9e834037a8ab60e5f53c5fd1092e8873c4a1c344806acdab2","impliedFormat":1},{"version":"b598deb1da203a2b58c76cf8d91cfc2ca172d785dacd8466c0a11e400ff6ab2d","impliedFormat":1},{"version":"f3ded47c50efa3fbc7105c933490fa0cf48df063248a5b27bca5849d5d126f9b","impliedFormat":1},{"version":"612811d64d060761e9691677217d1d015ee0c09e2fc3309c085b1ea527478a99","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"c41262dd3fbd51215af7469b05d088a6e2f04300ef2b6f408391571ec7ae8e85","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"fa402f40bea7b23bdb3cb5a6445c5edf6f798ba6aa17922933f7b1d814d4516a","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"51e6d0d26a66d079d3111e6f4e271a0cf9af059081b1999716676affecb545c0","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"c35c848fe58d91a53f86c998b1de9854e1a51bab4cf5d9769713802795432154","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"87954d164a835705e0032ce9c018d65f229066aebd535013044c9607f7eb9f49","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"59a71aa59ba60cff9e3166fdeb9e3262f6544c8303a8cfc866da7698ad1939ce","signature":"fe0d466be11feff0318d0e42b1f3e28df18bd0d2c851482ac6bba6cc251ed9d3"},{"version":"2e2ea2f420b457093a01b274779316e00d141d90abbff144ab94145c9fefe942","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"4da031e2252dd70b26ac9eda10d0d0dbc965efea286d9845f99867e70335d3fd","signature":"7afd9e8322c2794ad4635aa2c7039eb1bc7ad1dc7a5f2e5dd282ef24a144bff7"},{"version":"ea14d18a705fbecacee7a76f7754277282506a3571dc0fdf3341ea2d1a39c17e","signature":"6084ee08441d9c18aefd07448800d5cbc074545154a6f2602a6653b6d108fe18"},{"version":"6c3741e44c9b0ebd563c8c74dcfb2f593190dfd939266c07874dc093ecb4aa0e","impliedFormat":99},{"version":"bb12cda3fa5194cec23bea11b85866e275193782a8c125ed516bbaa0f07af62e","impliedFormat":99},{"version":"98686c200902ceac2c91a3a918b99f98d8aa654147be167facd648e1dcf6046e","impliedFormat":99},{"version":"a65735a086ae8b401c1c41b51b41546532670c919fd2cedc1606fd186fcee2d7","impliedFormat":99},{"version":"fe021dbde66bd0d6195d4116dcb4c257966ebc8cfba0f34441839415e9e913e1","impliedFormat":99},{"version":"d52a4b1cabee2c94ed18c741c480a45dd9fed32477dd94a9cc8630a8bc263426","impliedFormat":99},{"version":"d059a52684789e6ef30f8052244cb7c52fb786e4066ac415c50642174cc76d14","impliedFormat":99},{"version":"2ccdfd33a753c18e8e5fe8a1eadefff968531d920bc9cdc7e4c97b0c6d3dcaf8","impliedFormat":99},{"version":"d64a434d7fb5040dbe7d5f4911145deda53e281b3f1887b9a610defd51b3c1a2","impliedFormat":99},{"version":"927f406568919fd7cd238ef7fe5e9c5e9ec826f1fff89830e480aff8cfd197da","impliedFormat":99},{"version":"a77d742410fe78bb054d325b690fda75459531db005b62ba0e9371c00163353c","impliedFormat":99},{"version":"f8de61dd3e3c4dc193bb341891d67d3979cb5523a57fcacaf46bf1e6284e6c35","impliedFormat":99},{"version":"addca1bb7478ebc3f1c67b710755acc945329875207a3c9befd6b5cbcab12574","impliedFormat":99},{"version":"50b565f4771b6b150cbf3ae31eb815c31f15e2e0f45518958a5f4348a1a01660","impliedFormat":99},{"version":"50cda2625f8d3fe23a22e234d6f65a5da8f0598adfb0c28ffde840788e9eeaf6","impliedFormat":99},{"version":"bc7f70d67697f70e89ef74f6620b9ac0096a3f0ee3cdf2531b4fa08d2af4219d","impliedFormat":99},{"version":"4056a596190daaaa7268f5465b972915facc5eca90ee6432e90afa130ba2e4ee","impliedFormat":99},{"version":"aa20728bb08af6288996197b97b5ed7bcfb0b183423bb482a9b25867a5b33c57","impliedFormat":99},{"version":"5322c3686d3797d415f8570eec54e898f328e59f8271b38516b1366074b499aa","impliedFormat":99},{"version":"b0aa778c53f491350d81ec58eb3e435d34bef2ec93b496c51d9b50aa5a8a61e5","impliedFormat":99},{"version":"fa454230c32f38213198cf47db147caf4c03920b3f8904566b29a1a033341602","impliedFormat":99},{"version":"5571608cd06d2935efe2ed7ba105ec93e5c5d1e822d300e5770a1ad9a065c8b6","impliedFormat":99},{"version":"6bf8aa6ed64228b4d065f334b8fe11bc11f59952fd15015b690dfb3301c94484","impliedFormat":99},{"version":"41ae2bf47844e4643ebe68b8e0019af7a87a9daea2d38959a9f7520ada9ad3cb","impliedFormat":99},{"version":"f4498a2ac4186466abe5f9641c9279a3458fa5992dc10ed4581c265469b118d4","impliedFormat":99},{"version":"bd09a0e906dae9a9351c658e7d8d6caa9f4df2ba104df650ebca96d1c4f81c23","impliedFormat":99},{"version":"055ad004f230e10cf1099d08c6f5774c564782bd76fbefbda669ab1ad132c175","impliedFormat":99},{"version":"fed0bdbbd63d0df2a3bdd39390dab41dab114ba73be98fbfc70022b4f1b08e96","signature":"ec3727b08adf2efb6d58971013277df6a35f0e550b779d3a928dd1799528d744"},{"version":"9f4c212f4e19caed6355e4c334edf13d24063caa51a9597842d4b73a4b6289aa","signature":"298f8a949f107957ca1a76b819a448332b14d433cd7c5311c64195f967d8732f"},{"version":"eecc30e0f9601a0e5b5e36c504c0bc782b006863efb416edc25ffcf171c44259","signature":"3e27d4ec65a264f0669238226b0dca34d960df207ae833b9e6ed3c20f33075d4"},{"version":"98fee1770cc1a8c00e795a57cf04ee61fcd613dec67ac1a80fc4da6fb9e3f1fd","signature":"63c0b9ab22b9185f1834d765d52e1b7cb1c20a307ec521bade81fb334ff5856e"},{"version":"b43da9718ca2e17de5060bef1622755b838d84eee01b14841083672cb77bfd06","signature":"b99256e92eca2d6c012fef2c0044c2b9aca551f8e2859e4f1f86ffd047a5ddd2"},{"version":"b7462a691e7094d0ffaeaab062ea630390fc5a39efb741eae8e20cd3b882b32d","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"acd8fd5090ac73902278889c38336ff3f48af6ba03aa665eb34a75e7ba1dccc4","impliedFormat":1},{"version":"d6258883868fb2680d2ca96bc8b1352cab69874581493e6d52680c5ffecdb6cc","impliedFormat":1},{"version":"1b61d259de5350f8b1e5db06290d31eaebebc6baafd5f79d314b5af9256d7153","impliedFormat":1},{"version":"f258e3960f324a956fc76a3d3d9e964fff2244ff5859dcc6ce5951e5413ca826","impliedFormat":1},{"version":"643f7232d07bf75e15bd8f658f664d6183a0efaca5eb84b48201c7671a266979","impliedFormat":1},{"version":"616775f16134fa9d01fc677ad3f76e68c051a056c22ab552c64cc281a9686790","impliedFormat":1},{"version":"65c24a8baa2cca1de069a0ba9fba82a173690f52d7e2d0f1f7542d59d5eb4db0","impliedFormat":1},{"version":"f9fe6af238339a0e5f7563acee3178f51db37f32a2e7c09f85273098cee7ec49","impliedFormat":1},{"version":"1de8c302fd35220d8f29dea378a4ae45199dc8ff83ca9923aca1400f2b28848a","impliedFormat":1},{"version":"77e71242e71ebf8528c5802993697878f0533db8f2299b4d36aa015bae08a79c","impliedFormat":1},{"version":"98a787be42bd92f8c2a37d7df5f13e5992da0d967fab794adbb7ee18370f9849","impliedFormat":1},{"version":"332248ee37cca52903572e66c11bef755ccc6e235835e63d3c3e60ddda3e9b93","impliedFormat":1},{"version":"94e8cc88ae2ef3d920bb3bdc369f48436db123aa2dc07f683309ad8c9968a1e1","impliedFormat":1},{"version":"4545c1a1ceca170d5d83452dd7c4994644c35cf676a671412601689d9a62da35","impliedFormat":1},{"version":"320f4091e33548b554d2214ce5fc31c96631b513dffa806e2e3a60766c8c49d9","impliedFormat":1},{"version":"a2d648d333cf67b9aeac5d81a1a379d563a8ffa91ddd61c6179f68de724260ff","impliedFormat":1},{"version":"d90d5f524de38889d1e1dbc2aeef00060d779f8688c02766ddb9ca195e4a713d","impliedFormat":1},{"version":"a3f41ed1b4f2fc3049394b945a68ae4fdefd49fa1739c32f149d32c0545d67f5","impliedFormat":1},{"version":"b0309e1eda99a9e76f87c18992d9c3689b0938266242835dd4611f2b69efe456","impliedFormat":1},{"version":"47699512e6d8bebf7be488182427189f999affe3addc1c87c882d36b7f2d0b0e","impliedFormat":1},{"version":"6ceb10ca57943be87ff9debe978f4ab73593c0c85ee802c051a93fc96aaf7a20","impliedFormat":1},{"version":"1de3ffe0cc28a9fe2ac761ece075826836b5a02f340b412510a59ba1d41a505a","impliedFormat":1},{"version":"e46d6cc08d243d8d0d83986f609d830991f00450fb234f5b2f861648c42dc0d8","impliedFormat":1},{"version":"1c0a98de1323051010ce5b958ad47bc1c007f7921973123c999300e2b7b0ecc0","impliedFormat":1},{"version":"1d079c37fa53e3c21ed3fa214a27507bda9991f2a41458705b19ed8c2b61173d","impliedFormat":1},{"version":"5bf5c7a44e779790d1eb54c234b668b15e34affa95e78eada73e5757f61ed76a","impliedFormat":1},{"version":"5835a6e0d7cd2738e56b671af0e561e7c1b4fb77751383672f4b009f4e161d70","impliedFormat":1},{"version":"5c634644d45a1b6bc7b05e71e05e52ec04f3d73d9ac85d5927f647a5f965181a","impliedFormat":1},{"version":"4b7f74b772140395e7af67c4841be1ab867c11b3b82a51b1aeb692822b76c872","impliedFormat":1},{"version":"27be6622e2922a1b412eb057faa854831b95db9db5035c3f6d4b677b902ab3b7","impliedFormat":1},{"version":"a68d4b3182e8d776cdede7ac9630c209a7bfbb59191f99a52479151816ef9f9e","impliedFormat":99},{"version":"39644b343e4e3d748344af8182111e3bbc594930fff0170256567e13bbdbebb0","impliedFormat":99},{"version":"ed7fd5160b47b0de3b1571c5c5578e8e7e3314e33ae0b8ea85a895774ee64749","impliedFormat":99},{"version":"63a7595a5015e65262557f883463f934904959da563b4f788306f699411e9bac","impliedFormat":1},{"version":"4ba137d6553965703b6b55fd2000b4e07ba365f8caeb0359162ad7247f9707a6","impliedFormat":1},{"version":"6de125ea94866c736c6d58d68eb15272cf7d1020a5b459fea1c660027eca9a90","affectsGlobalScope":true,"impliedFormat":1},{"version":"8fac4a15690b27612d8474fb2fc7cc00388df52d169791b78d1a3645d60b4c8b","affectsGlobalScope":true,"impliedFormat":1},{"version":"064ac1c2ac4b2867c2ceaa74bbdce0cb6a4c16e7c31a6497097159c18f74aa7c","impliedFormat":1},{"version":"d3b315763d91265d6b0e7e7fa93cfdb8a80ce7cdd2d9f55ba0f37a22db00bdb8","impliedFormat":1},{"version":"b789bf89eb19c777ed1e956dbad0925ca795701552d22e68fd130a032008b9f9","impliedFormat":1},{"version":"13670c4396cd565ad254357288032c873abc925302f98e791a7de865e16862cb","affectsGlobalScope":true},"7ad303e40d4fddf44f156129e397511953a71481c5cfd86b1862649aaaf240cc",{"version":"bae8d023ef6b23df7da26f51cea44321f95817c190342a36882e93b80d07a960","impliedFormat":1},{"version":"26a770cec4bd2e7dbba95c6e536390fffe83c6268b78974a93727903b515c4e7","impliedFormat":1},{"version":"dd5115b329c19c4385af13eda13e3ab03355e711c3f313173fd54ed7d08cfd39","impliedFormat":99},{"version":"035a5df183489c2e22f3cf59fc1ed2b043d27f357eecc0eb8d8e840059d44245","impliedFormat":1},{"version":"0d14fa22c41fdc7277e6f71473b20ebc07f40f00e38875142335d5b63cdfc9d2","impliedFormat":1},{"version":"a4809f4d92317535e6b22b01019437030077a76fec1d93b9881c9ed4738fcc54","impliedFormat":1},{"version":"5f53fa0bd22096d2a78533f94e02c899143b8f0f9891a46965294ee8b91a9434","impliedFormat":1},{"version":"c085e9aa62d1ae1375794c1fb927a445fa105fed891a7e24edbb1c3300f7384a","impliedFormat":1},{"version":"f315e1e65a1f80992f0509e84e4ae2df15ecd9ef73df975f7c98813b71e4c8da","impliedFormat":1},{"version":"e00243d23c495ca2170c9b9e20b5c92331239100b51efdc2b4401cdad859bbef","impliedFormat":1},{"version":"ab82804a14454734010dcdcd43f564ff7b0389bee4c5692eec76ff5b30d4cf66","impliedFormat":1},{"version":"6fa5d56af71f07dc276aae3f6f30807a9cccf758517fb39742af72e963553d80","impliedFormat":1},{"version":"253b95673c4e01189af13e855c76a7f7c24197f4179954521bf2a50db5cfe643","impliedFormat":1},{"version":"afe73051ff6a03a9565cbd8ebb0e956ee3df5e913ad5c1ded64218aabfa3dcb5","impliedFormat":1},{"version":"31f24e33f22172ba0cc8cdc640779fb14c3480e10b517ad1b4564e83fa262a2b","impliedFormat":1},{"version":"f380ae8164792d9690a74f6b567b9e43d5323b580f074e50f68f983c0d073b5b","impliedFormat":1},{"version":"0fd641a3b3e3ec89058051a284135a3f30b94a325fb809c4e4159ec5495b5cdc","impliedFormat":1},{"version":"7b20065444d0353a2bc63145481e519e02d9113a098a2db079da21cb60590ef0","impliedFormat":1},{"version":"9f162ee475383c13e350c73e24db5adc246fba830b9d0cc11d7048af9bbd0a29","impliedFormat":1},{"version":"ce7c3363c40cd2fcc994517c7954954d1c70de2d972df7e45fa83837593b8687","impliedFormat":1},{"version":"6ab1224e0149cc983d5da72ff3540bc0cad8ee7b23cf2a3da136f77f76d01763","impliedFormat":1},{"version":"e059fb0805a29ea3976d703a6f082c1493ac5583ca8011e8c5b86d0a23667d0d","impliedFormat":1},{"version":"16fbf548a0337a83d30552e990b6832fd24bbc47042a8c491e1dc93029b4222f","impliedFormat":1},{"version":"0c4c7303956a4726568c801dcd81e9fbce32fbf74565f735bbcf46ba66417769","impliedFormat":1},{"version":"f39848c7895fd6373d5e30089e7fb1d10c464e7eeb37ce1ea47d188a707b162c","impliedFormat":1},{"version":"9249c34e7282d17a2749677c3521ea625f73c2b48792af08fa9c5e09abc6a882","impliedFormat":1},{"version":"68d819647c70b7e91fcf7e725875c8ab19b2a98f57339910d4e261c6fc19a624","signature":"76ce334773fe270e343f83381494fde51158ca7ce90a1eaf10a726d1328f8b5b"},{"version":"cdcc132f207d097d7d3aa75615ab9a2e71d6a478162dde8b67f88ea19f3e54de","impliedFormat":1},{"version":"5b9586e9b0b6322e5bfbd2c29bd3b8e21ab9d871f82346cb71020e3d84bae73e","impliedFormat":1},{"version":"3e70a7e67c2cb16f8cd49097360c0309fe9d1e3210ff9222e9dac1f8df9d4fb6","impliedFormat":1},{"version":"ab68d2a3e3e8767c3fba8f80de099a1cfc18c0de79e42cb02ae66e22dfe14a66","impliedFormat":1},{"version":"d96cc6598148bf1a98fb2e8dcf01c63a4b3558bdaec6ef35e087fd0562eb40ec","impliedFormat":1},{"version":"5b9586e9b0b6322e5bfbd2c29bd3b8e21ab9d871f82346cb71020e3d84bae73e","impliedFormat":1},{"version":"f8db4fea512ab759b2223b90ecbbe7dae919c02f8ce95ec03f7fb1cf757cfbeb","affectsGlobalScope":true,"impliedFormat":1},{"version":"f329dfad7970297cbf07ddc8fce2ad4a24e2a3855917c661922ef86eb24dd1f1","impliedFormat":1},{"version":"841784cfa9046a2b3e453d638ea5c3e53680eb8225a45db1c13813f6ea4095e5","affectsGlobalScope":true,"impliedFormat":1},{"version":"646ef1cff0ec3cf8e96adb1848357788f244b217345944c2be2942a62764b771","impliedFormat":1},{"version":"2ac7ddb95cb27a5b52cf9dfbbc6cea87d3a86c8bbfa8c0ccb7714a9372c11bd6","signature":"a46d66851af2c056e805fdd574bf5ec3adb1181c43c5e41f0a1c592e338afe64"},{"version":"c82e272bdd6b91312781f7abbc255d4202b1833cb72ac516b37ed3964658374f","impliedFormat":99},{"version":"397e0cbdbbdc4341e7841c3c63d8507c177119abf07532cf276f81fad1da7442","impliedFormat":99},{"version":"479d65834d88be6b00e43e6fdfe980194fcc2100df4112f4d72b2e0c80f848e0","impliedFormat":99},{"version":"10c7c5deb46598d73b372132151c70ddfb845e07101be422421c88a286af9e2c","impliedFormat":99},{"version":"b664d61eeb25f68133f9e5986ee9f3bfbc946a92d1d66345db4f897f26aba884","signature":"f2542ed28646ccec19a2b407da97ef71777f4a2722da6990c958c2c9612ae978"},{"version":"6565eed89dfca6fe75d0740d95c9ee83295f421c8617192688eb0d86f1a64ef2","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},"d1986184a09a52db8228cb2bb2a61a8c05c9354e5b93cec8e2628d8579c892d7",{"version":"bdc1824d433df07efbd9a0ccf543d9358e250676fb755b27a9937176ff3a31e1","impliedFormat":1},{"version":"41c514d6896dd73d171bfa8ee88fb56cecda181e1811493ea4d330683eef7df5","impliedFormat":1},{"version":"76e577185aca829e9ff93e4665d093af25fb31908b6eb643523810e4351ddff5","affectsGlobalScope":true},"6ed24d280fd813b28c58d4afe6de26573be6f42b0022d69d3b71db927c853642",{"version":"c2c2a861a338244d7dd700d0c52a78916b4bb75b98fc8ca5e7c501899fc03796","impliedFormat":1},{"version":"b6d03c9cfe2cf0ba4c673c209fcd7c46c815b2619fd2aad59fc4229aaef2ed43","impliedFormat":1},{"version":"adb467429462e3891de5bb4a82a4189b92005d61c7f9367c089baf03997c104e","impliedFormat":1},{"version":"670a76db379b27c8ff42f1ba927828a22862e2ab0b0908e38b671f0e912cc5ed","impliedFormat":1},{"version":"13b77ab19ef7aadd86a1e54f2f08ea23a6d74e102909e3c00d31f231ed040f62","impliedFormat":1},{"version":"069bebfee29864e3955378107e243508b163e77ab10de6a5ee03ae06939f0bb9","impliedFormat":1},{"version":"fb893a0dfc3c9fb0f9ca93d0648694dd95f33cbad2c0f2c629f842981dfd4e2e","impliedFormat":1},{"version":"3eb11dbf3489064a47a2e1cf9d261b1f100ef0b3b50ffca6c44dd99d6dd81ac1","impliedFormat":1},{"version":"151ff381ef9ff8da2da9b9663ebf657eac35c4c9a19183420c05728f31a6761d","impliedFormat":1},{"version":"5d08a179b846f5ee674624b349ebebe2121c455e3a265dc93da4e8d9e89722b4","impliedFormat":1},{"version":"1ef88d2f6523c40d5db6b52f6539bd9cd4c7203910f979142b3514fa3c5298f7","impliedFormat":1},{"version":"19990350fca066265b2c190c9b6cde1229f35002ea2d4df8c9e397e9942f6c89","impliedFormat":99},{"version":"8fb8fdda477cd7382477ffda92c2bb7d9f7ef583b1aa531eb6b2dc2f0a206c10","impliedFormat":99},{"version":"66995b0c991b5c5d42eff1d950733f85482c7419f7296ab8952e03718169e379","impliedFormat":99},{"version":"9863f888da357e35e013ca3465b794a490a198226bd8232c2f81fb44e16ff323","impliedFormat":99},{"version":"84bc2d80326a83ee4a6e7cba2fd480b86502660770c0e24da96535af597c9f1e","impliedFormat":99},{"version":"ea27768379b866ee3f5da2419650acdb01125479f7af73580a4bceb25b79e372","impliedFormat":99},{"version":"598931eeb4362542cae5845f95c5f0e45ac668925a40ce201e244d7fe808e965","impliedFormat":99},{"version":"da9ef88cde9f715756da642ad80c4cd87a987f465d325462d6bc2a0b11d202c8","impliedFormat":99},{"version":"b4c6184d78303b0816e779a48bef779b15aea4a66028eb819aac0abee8407dea","impliedFormat":99},{"version":"db085d2171d48938a99e851dafe0e486dce9859e5dfa73c21de5ed3d4d6fb0c5","impliedFormat":99},{"version":"62a3ad1ddd1f5974b3bf105680b3e09420f2230711d6520a521fab2be1a32838","impliedFormat":99},{"version":"a77be6fc44c876bc10c897107f84eaba10790913ebdcad40fcda7e47469b2160","impliedFormat":99},{"version":"06cf55b6da5cef54eaaf51cdc3d4e5ebf16adfdd9ebd20cec7fe719be9ced017","impliedFormat":99},{"version":"91f5dbcdb25d145a56cffe957ec665256827892d779ef108eb2f3864faff523b","impliedFormat":99},{"version":"052ba354bab8fb943e0bc05a0769f7b81d7c3b3c6cd0f5cfa53c7b2da2a525c5","impliedFormat":99},{"version":"927955a3de5857e0a1c575ced5a4245e74e6821d720ed213141347dd1870197f","impliedFormat":99},{"version":"fec804d54cd97dd77e956232fc37dc13f53e160d4bbeeb5489e86eeaa91f7ebd","impliedFormat":99},{"version":"03c258e060b7da220973f84b89615e4e9850e9b5d30b3a8e4840b3e3268ae8eb","impliedFormat":1},{"version":"fd0589ca571ad090b531d8c095e26caa53d4825c64d3ff2b2b1ab95d72294175","impliedFormat":1},{"version":"669843ecafb89ae1e944df06360e8966219e4c1c34c0d28aa2503272cdd444a7","affectsGlobalScope":true,"impliedFormat":1},{"version":"f3d8c757e148ad968f0d98697987db363070abada5f503da3c06aefd9d4248c1","impliedFormat":1},{"version":"96d14f21b7652903852eef49379d04dbda28c16ed36468f8c9fa08f7c14c9538","impliedFormat":1},{"version":"42baf4ca38c38deaf411ea73f37bc39ff56c6e5c761a968b64ac1b25c92b5cd8","impliedFormat":1},{"version":"d7dbe0ad36bdca8a6ecf143422a48e72cc8927bab7b23a1a2485c2f78a7022c6","impliedFormat":1},{"version":"8718fa41d7cf4aa91de4e8f164c90f88e0bf343aa92a1b9b725a9c675c64e16b","impliedFormat":1},{"version":"f992cd6cc0bcbaa4e6c810468c90f2d8595f8c6c3cf050c806397d3de8585562","impliedFormat":1},{"version":"fec943fdb3275eb6e006b35e04a8e2e99e9adf3f4b969ddf15315ac7575a93e4","impliedFormat":1}],"root":[53,418,419,430,433,438,[440,442],[530,532],[534,537],[540,543],[563,572],[600,605],646,647,674,685,[690,692],695,696],"options":{"allowJs":true,"checkJs":false,"esModuleInterop":true,"jsx":4,"module":99,"skipLibCheck":true,"strict":true,"target":7},"referencedMap":[[692,1],[695,2],[646,3],[696,4],[674,5],[685,6],[647,7],[699,8],[697,3],[660,9],[671,10],[675,3],[666,11],[656,12],[665,13],[657,14],[219,3],[587,15],[590,16],[595,17],[596,18],[594,19],[597,3],[598,20],[574,21],[573,3],[655,3],[558,3],[555,3],[554,3],[549,22],[560,23],[545,24],[556,25],[548,26],[547,27],[557,3],[552,28],[559,3],[553,29],[546,3],[684,30],[683,31],[682,24],[562,32],[544,3],[702,33],[698,8],[700,34],[701,8],[704,35],[706,36],[705,3],[707,3],[661,37],[444,38],[651,3],[653,39],[654,40],[681,41],[680,42],[539,43],[538,3],[726,44],[727,45],[728,3],[729,3],[454,38],[703,3],[102,46],[103,46],[104,47],[59,48],[105,49],[106,50],[107,51],[54,3],[57,52],[55,3],[56,3],[108,53],[109,54],[110,55],[111,56],[112,57],[113,58],[114,58],[115,59],[116,60],[117,61],[118,62],[60,3],[58,3],[119,63],[120,64],[121,65],[153,66],[122,67],[123,68],[124,69],[125,70],[126,71],[127,72],[128,73],[129,74],[130,75],[131,76],[132,76],[133,77],[134,3],[135,78],[137,79],[136,80],[138,81],[139,82],[140,83],[141,84],[142,85],[143,86],[144,87],[145,88],[146,89],[147,90],[148,91],[149,92],[150,93],[61,3],[62,3],[63,3],[101,94],[151,95],[152,96],[533,3],[50,3],[157,97],[375,98],[158,99],[156,98],[376,100],[561,101],[154,102],[155,103],[48,3],[51,104],[373,98],[52,98],[658,3],[725,3],[443,3],[648,3],[650,105],[649,106],[652,3],[664,107],[49,3],[668,3],[714,3],[715,108],[712,3],[713,3],[679,109],[439,110],[586,111],[585,112],[667,3],[672,113],[677,114],[676,42],[662,115],[678,116],[659,117],[663,118],[670,119],[669,120],[673,121],[523,3],[497,122],[496,123],[495,124],[522,125],[521,126],[525,127],[524,128],[527,129],[526,130],[482,131],[456,132],[457,133],[458,133],[459,133],[460,133],[461,133],[462,133],[463,133],[464,133],[465,133],[466,133],[480,134],[467,133],[468,133],[469,133],[470,133],[471,133],[472,133],[473,133],[474,133],[476,133],[477,133],[475,133],[478,133],[479,133],[481,133],[455,135],[520,136],[500,137],[501,137],[502,137],[503,137],[504,137],[505,137],[506,138],[508,137],[507,137],[519,139],[509,137],[511,137],[510,137],[513,137],[512,137],[514,137],[515,137],[516,137],[517,137],[518,137],[499,137],[498,140],[490,141],[488,142],[489,142],[493,143],[491,142],[492,142],[494,142],[487,3],[612,144],[617,1],[415,145],[182,146],[223,147],[400,148],[218,149],[199,3],[372,3],[180,3],[389,150],[248,151],[181,3],[300,152],[226,153],[227,154],[371,155],[386,156],[282,157],[394,158],[395,159],[393,160],[392,3],[390,161],[225,162],[183,163],[325,3],[326,164],[254,165],[184,166],[161,165],[250,165],[169,165],[221,167],[220,3],[399,168],[411,3],[208,3],[347,169],[348,170],[342,98],[423,3],[350,3],[351,171],[343,172],[428,173],[427,174],[422,3],[267,3],[385,175],[384,3],[421,176],[344,98],[276,177],[272,178],[277,179],[275,3],[274,180],[273,3],[424,3],[420,3],[426,181],[425,3],[271,178],[693,98],[694,182],[435,183],[431,184],[261,185],[260,186],[259,187],[631,98],[258,188],[242,3],[634,3],[637,3],[636,98],[638,189],[160,3],[396,190],[397,191],[398,192],[177,3],[211,3],[176,193],[200,3],[363,98],[167,194],[362,195],[361,196],[352,3],[353,3],[360,3],[355,3],[358,197],[354,3],[356,198],[359,199],[357,198],[179,3],[174,3],[175,165],[231,3],[236,200],[237,201],[235,202],[233,203],[234,204],[229,3],[369,171],[255,171],[611,205],[618,206],[622,207],[403,208],[402,3],[245,3],[639,209],[170,210],[345,211],[346,212],[340,213],[331,3],[368,214],[405,98],[332,215],[370,216],[365,217],[364,3],[366,3],[337,3],[324,218],[404,219],[407,220],[334,221],[338,222],[329,223],[381,224],[171,225],[286,226],[301,227],[172,228],[412,229],[413,230],[238,231],[230,3],[239,232],[313,233],[228,3],[312,234],[159,3],[306,235],[210,3],[327,236],[302,3],[173,3],[204,3],[310,237],[178,3],[240,238],[336,239],[401,240],[335,3],[309,3],[232,3],[315,241],[316,242],[391,3],[318,243],[320,244],[319,245],[213,3],[308,228],[322,246],[285,247],[307,248],[314,249],[187,3],[191,3],[190,3],[189,3],[194,3],[188,3],[197,3],[196,3],[193,3],[192,3],[195,3],[198,250],[186,3],[294,251],[293,3],[298,252],[295,253],[297,254],[299,252],[296,253],[209,255],[256,256],[410,257],[640,3],[626,258],[628,259],[333,260],[627,261],[408,219],[349,219],[185,3],[287,262],[205,263],[206,264],[207,265],[203,266],[380,266],[252,266],[288,267],[253,267],[202,268],[201,3],[292,269],[291,270],[290,271],[289,272],[409,273],[379,274],[378,275],[341,276],[374,277],[377,278],[388,279],[387,280],[383,281],[284,282],[281,283],[283,284],[280,285],[321,286],[311,3],[616,3],[323,287],[382,3],[241,288],[330,190],[328,289],[243,290],[246,291],[635,3],[244,292],[247,292],[614,3],[613,3],[615,3],[633,3],[249,293],[406,3],[278,294],[270,98],[224,3],[166,295],[162,3],[620,98],[165,3],[434,296],[269,98],[624,171],[268,297],[163,298],[266,296],[168,3],[436,299],[264,98],[265,98],[257,3],[164,3],[263,300],[262,301],[212,302],[339,75],[251,75],[317,3],[304,303],[303,3],[367,178],[279,98],[414,304],[606,98],[609,305],[610,306],[607,98],[608,3],[222,307],[217,308],[216,3],[215,309],[214,3],[416,310],[619,311],[621,312],[623,313],[625,314],[629,315],[645,316],[437,316],[644,317],[432,318],[429,319],[630,320],[632,321],[641,322],[417,193],[643,3],[642,323],[593,324],[592,3],[710,325],[723,326],[708,3],[709,327],[724,328],[719,329],[720,330],[718,331],[722,332],[716,333],[711,334],[721,335],[717,326],[551,336],[550,3],[584,337],[581,338],[582,3],[583,3],[580,339],[486,340],[485,341],[529,342],[528,343],[484,344],[483,345],[305,346],[589,347],[599,348],[575,17],[588,349],[591,350],[579,351],[577,352],[578,353],[576,3],[686,3],[689,354],[687,355],[688,356],[451,357],[450,3],[46,3],[47,3],[8,3],[9,3],[11,3],[10,3],[2,3],[12,3],[13,3],[14,3],[15,3],[16,3],[17,3],[18,3],[19,3],[3,3],[20,3],[21,3],[4,3],[22,3],[26,3],[23,3],[24,3],[25,3],[27,3],[28,3],[29,3],[5,3],[30,3],[31,3],[32,3],[33,3],[6,3],[37,3],[34,3],[35,3],[36,3],[38,3],[7,3],[39,3],[44,3],[45,3],[40,3],[41,3],[42,3],[43,3],[1,3],[79,358],[89,359],[78,358],[99,360],[70,361],[69,362],[98,323],[92,363],[97,364],[72,365],[86,366],[71,367],[95,368],[67,369],[66,323],[96,370],[68,371],[73,372],[74,3],[77,372],[64,3],[100,373],[90,374],[81,375],[82,376],[84,377],[80,378],[83,379],[93,323],[75,380],[76,381],[85,382],[65,383],[88,374],[87,372],[91,3],[94,384],[453,385],[449,3],[452,386],[446,387],[445,38],[448,388],[447,389],[691,390],[543,391],[433,392],[442,393],[542,391],[53,171],[419,394],[430,395],[563,396],[530,397],[534,398],[564,399],[537,395],[565,400],[438,401],[536,402],[566,403],[441,404],[567,405],[532,406],[568,407],[531,408],[570,409],[569,171],[571,408],[418,6],[572,410],[540,411],[600,412],[601,412],[535,413],[602,414],[541,415],[604,416],[603,417],[440,6],[690,418],[605,419],[733,420],[731,3],[734,421],[732,422],[730,423]],"affectedFilesPendingEmit":[696,674,685,691,543,433,442,542,53,419,430,563,530,534,564,537,565,438,536,566,441,567,532,568,531,570,569,571,418,572,540,600,601,535,602,541,604,603,440,690,605],"version":"5.9.3"} \ No newline at end of file +{"fileNames":["./node_modules/typescript/lib/lib.es5.d.ts","./node_modules/typescript/lib/lib.es2015.d.ts","./node_modules/typescript/lib/lib.es2016.d.ts","./node_modules/typescript/lib/lib.es2017.d.ts","./node_modules/typescript/lib/lib.es2018.d.ts","./node_modules/typescript/lib/lib.es2019.d.ts","./node_modules/typescript/lib/lib.es2020.d.ts","./node_modules/typescript/lib/lib.dom.d.ts","./node_modules/typescript/lib/lib.dom.iterable.d.ts","./node_modules/typescript/lib/lib.es2015.core.d.ts","./node_modules/typescript/lib/lib.es2015.collection.d.ts","./node_modules/typescript/lib/lib.es2015.generator.d.ts","./node_modules/typescript/lib/lib.es2015.iterable.d.ts","./node_modules/typescript/lib/lib.es2015.promise.d.ts","./node_modules/typescript/lib/lib.es2015.proxy.d.ts","./node_modules/typescript/lib/lib.es2015.reflect.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2016.array.include.d.ts","./node_modules/typescript/lib/lib.es2016.intl.d.ts","./node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","./node_modules/typescript/lib/lib.es2017.date.d.ts","./node_modules/typescript/lib/lib.es2017.object.d.ts","./node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2017.string.d.ts","./node_modules/typescript/lib/lib.es2017.intl.d.ts","./node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","./node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","./node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","./node_modules/typescript/lib/lib.es2018.intl.d.ts","./node_modules/typescript/lib/lib.es2018.promise.d.ts","./node_modules/typescript/lib/lib.es2018.regexp.d.ts","./node_modules/typescript/lib/lib.es2019.array.d.ts","./node_modules/typescript/lib/lib.es2019.object.d.ts","./node_modules/typescript/lib/lib.es2019.string.d.ts","./node_modules/typescript/lib/lib.es2019.symbol.d.ts","./node_modules/typescript/lib/lib.es2019.intl.d.ts","./node_modules/typescript/lib/lib.es2020.bigint.d.ts","./node_modules/typescript/lib/lib.es2020.date.d.ts","./node_modules/typescript/lib/lib.es2020.promise.d.ts","./node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2020.string.d.ts","./node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2020.intl.d.ts","./node_modules/typescript/lib/lib.es2020.number.d.ts","./node_modules/typescript/lib/lib.decorators.d.ts","./node_modules/typescript/lib/lib.decorators.legacy.d.ts","./node_modules/@types/react/global.d.ts","./node_modules/csstype/index.d.ts","./node_modules/@types/prop-types/index.d.ts","./node_modules/@types/react/index.d.ts","./node_modules/@types/react/jsx-runtime.d.ts","./src/app/error.tsx","./node_modules/@types/node/compatibility/disposable.d.ts","./node_modules/@types/node/compatibility/indexable.d.ts","./node_modules/@types/node/compatibility/iterators.d.ts","./node_modules/@types/node/compatibility/index.d.ts","./node_modules/@types/node/globals.typedarray.d.ts","./node_modules/@types/node/buffer.buffer.d.ts","./node_modules/@types/node/globals.d.ts","./node_modules/@types/node/web-globals/abortcontroller.d.ts","./node_modules/@types/node/web-globals/domexception.d.ts","./node_modules/@types/node/web-globals/events.d.ts","./node_modules/undici-types/header.d.ts","./node_modules/undici-types/readable.d.ts","./node_modules/undici-types/file.d.ts","./node_modules/undici-types/fetch.d.ts","./node_modules/undici-types/formdata.d.ts","./node_modules/undici-types/connector.d.ts","./node_modules/undici-types/client.d.ts","./node_modules/undici-types/errors.d.ts","./node_modules/undici-types/dispatcher.d.ts","./node_modules/undici-types/global-dispatcher.d.ts","./node_modules/undici-types/global-origin.d.ts","./node_modules/undici-types/pool-stats.d.ts","./node_modules/undici-types/pool.d.ts","./node_modules/undici-types/handlers.d.ts","./node_modules/undici-types/balanced-pool.d.ts","./node_modules/undici-types/agent.d.ts","./node_modules/undici-types/mock-interceptor.d.ts","./node_modules/undici-types/mock-agent.d.ts","./node_modules/undici-types/mock-client.d.ts","./node_modules/undici-types/mock-pool.d.ts","./node_modules/undici-types/mock-errors.d.ts","./node_modules/undici-types/proxy-agent.d.ts","./node_modules/undici-types/env-http-proxy-agent.d.ts","./node_modules/undici-types/retry-handler.d.ts","./node_modules/undici-types/retry-agent.d.ts","./node_modules/undici-types/api.d.ts","./node_modules/undici-types/interceptors.d.ts","./node_modules/undici-types/util.d.ts","./node_modules/undici-types/cookies.d.ts","./node_modules/undici-types/patch.d.ts","./node_modules/undici-types/websocket.d.ts","./node_modules/undici-types/eventsource.d.ts","./node_modules/undici-types/filereader.d.ts","./node_modules/undici-types/diagnostics-channel.d.ts","./node_modules/undici-types/content-type.d.ts","./node_modules/undici-types/cache.d.ts","./node_modules/undici-types/index.d.ts","./node_modules/@types/node/web-globals/fetch.d.ts","./node_modules/@types/node/assert.d.ts","./node_modules/@types/node/assert/strict.d.ts","./node_modules/@types/node/async_hooks.d.ts","./node_modules/@types/node/buffer.d.ts","./node_modules/@types/node/child_process.d.ts","./node_modules/@types/node/cluster.d.ts","./node_modules/@types/node/console.d.ts","./node_modules/@types/node/constants.d.ts","./node_modules/@types/node/crypto.d.ts","./node_modules/@types/node/dgram.d.ts","./node_modules/@types/node/diagnostics_channel.d.ts","./node_modules/@types/node/dns.d.ts","./node_modules/@types/node/dns/promises.d.ts","./node_modules/@types/node/domain.d.ts","./node_modules/@types/node/events.d.ts","./node_modules/@types/node/fs.d.ts","./node_modules/@types/node/fs/promises.d.ts","./node_modules/@types/node/http.d.ts","./node_modules/@types/node/http2.d.ts","./node_modules/@types/node/https.d.ts","./node_modules/@types/node/inspector.generated.d.ts","./node_modules/@types/node/module.d.ts","./node_modules/@types/node/net.d.ts","./node_modules/@types/node/os.d.ts","./node_modules/@types/node/path.d.ts","./node_modules/@types/node/perf_hooks.d.ts","./node_modules/@types/node/process.d.ts","./node_modules/@types/node/punycode.d.ts","./node_modules/@types/node/querystring.d.ts","./node_modules/@types/node/readline.d.ts","./node_modules/@types/node/readline/promises.d.ts","./node_modules/@types/node/repl.d.ts","./node_modules/@types/node/sea.d.ts","./node_modules/@types/node/stream.d.ts","./node_modules/@types/node/stream/promises.d.ts","./node_modules/@types/node/stream/consumers.d.ts","./node_modules/@types/node/stream/web.d.ts","./node_modules/@types/node/string_decoder.d.ts","./node_modules/@types/node/test.d.ts","./node_modules/@types/node/timers.d.ts","./node_modules/@types/node/timers/promises.d.ts","./node_modules/@types/node/tls.d.ts","./node_modules/@types/node/trace_events.d.ts","./node_modules/@types/node/tty.d.ts","./node_modules/@types/node/url.d.ts","./node_modules/@types/node/util.d.ts","./node_modules/@types/node/v8.d.ts","./node_modules/@types/node/vm.d.ts","./node_modules/@types/node/wasi.d.ts","./node_modules/@types/node/worker_threads.d.ts","./node_modules/@types/node/zlib.d.ts","./node_modules/@types/node/index.d.ts","./node_modules/@types/react/canary.d.ts","./node_modules/@types/react/experimental.d.ts","./node_modules/@types/react-dom/index.d.ts","./node_modules/@types/react-dom/canary.d.ts","./node_modules/@types/react-dom/experimental.d.ts","./node_modules/next/dist/server/get-page-files.d.ts","./node_modules/next/dist/compiled/webpack/webpack.d.ts","./node_modules/next/dist/build/webpack/plugins/next-font-manifest-plugin.d.ts","./node_modules/next/dist/shared/lib/deep-readonly.d.ts","./node_modules/next/dist/shared/lib/html-context.shared-runtime.d.ts","./node_modules/next/dist/shared/lib/modern-browserslist-target.d.ts","./node_modules/next/dist/shared/lib/entry-constants.d.ts","./node_modules/next/dist/shared/lib/constants.d.ts","./node_modules/next/dist/lib/load-custom-routes.d.ts","./node_modules/next/dist/shared/lib/image-config.d.ts","./node_modules/next/dist/build/webpack/plugins/subresource-integrity-plugin.d.ts","./node_modules/next/dist/server/api-utils/index.d.ts","./node_modules/next/dist/server/base-http/index.d.ts","./node_modules/next/dist/server/body-streams.d.ts","./node_modules/next/dist/server/lib/cache-control.d.ts","./node_modules/next/dist/lib/setup-exception-listeners.d.ts","./node_modules/next/dist/lib/worker.d.ts","./node_modules/next/dist/lib/constants.d.ts","./node_modules/next/dist/lib/bundler.d.ts","./node_modules/next/dist/server/lib/experimental/ppr.d.ts","./node_modules/next/dist/lib/page-types.d.ts","./node_modules/next/dist/build/segment-config/app/app-segment-config.d.ts","./node_modules/next/dist/build/segment-config/pages/pages-segment-config.d.ts","./node_modules/next/dist/build/analysis/get-page-static-info.d.ts","./node_modules/next/dist/build/webpack/loaders/get-module-build-info.d.ts","./node_modules/next/dist/build/webpack/plugins/middleware-plugin.d.ts","./node_modules/next/dist/server/require-hook.d.ts","./node_modules/next/dist/server/node-polyfill-crypto.d.ts","./node_modules/next/dist/server/node-environment-baseline.d.ts","./node_modules/next/dist/server/node-environment-extensions/error-inspect.d.ts","./node_modules/next/dist/server/node-environment-extensions/console-file.d.ts","./node_modules/next/dist/server/node-environment-extensions/console-exit.d.ts","./node_modules/next/dist/server/node-environment-extensions/console-dim.external.d.ts","./node_modules/next/dist/server/node-environment-extensions/unhandled-rejection.d.ts","./node_modules/next/dist/server/node-environment-extensions/random.d.ts","./node_modules/next/dist/server/node-environment-extensions/date.d.ts","./node_modules/next/dist/server/node-environment-extensions/web-crypto.d.ts","./node_modules/next/dist/server/node-environment-extensions/node-crypto.d.ts","./node_modules/next/dist/server/node-environment-extensions/fast-set-immediate.external.d.ts","./node_modules/next/dist/server/node-environment.d.ts","./node_modules/next/dist/build/page-extensions-type.d.ts","./node_modules/next/dist/lib/fallback.d.ts","./node_modules/next/dist/server/route-kind.d.ts","./node_modules/next/dist/server/route-definitions/route-definition.d.ts","./node_modules/next/dist/server/route-definitions/app-page-route-definition.d.ts","./node_modules/next/dist/server/lib/cache-handlers/types.d.ts","./node_modules/next/dist/server/response-cache/types.d.ts","./node_modules/next/dist/server/resume-data-cache/cache-store.d.ts","./node_modules/next/dist/server/resume-data-cache/resume-data-cache.d.ts","./node_modules/next/dist/client/components/app-router-headers.d.ts","./node_modules/next/dist/server/render-result.d.ts","./node_modules/next/dist/server/instrumentation/types.d.ts","./node_modules/next/dist/lib/coalesced-function.d.ts","./node_modules/next/dist/shared/lib/router/utils/middleware-route-matcher.d.ts","./node_modules/next/dist/server/lib/router-utils/types.d.ts","./node_modules/next/dist/trace/types.d.ts","./node_modules/next/dist/trace/trace.d.ts","./node_modules/next/dist/trace/shared.d.ts","./node_modules/next/dist/trace/index.d.ts","./node_modules/next/dist/build/load-jsconfig.d.ts","./node_modules/@next/env/dist/index.d.ts","./node_modules/next/dist/build/webpack/plugins/telemetry-plugin/use-cache-tracker-utils.d.ts","./node_modules/next/dist/build/webpack/plugins/telemetry-plugin/telemetry-plugin.d.ts","./node_modules/next/dist/telemetry/storage.d.ts","./node_modules/next/dist/build/build-context.d.ts","./node_modules/next/dist/shared/lib/bloom-filter.d.ts","./node_modules/next/dist/build/webpack-config.d.ts","./node_modules/next/dist/build/swc/generated-native.d.ts","./node_modules/next/dist/build/swc/types.d.ts","./node_modules/next/dist/server/dev/parse-version-info.d.ts","./node_modules/next/dist/next-devtools/shared/types.d.ts","./node_modules/next/dist/server/dev/dev-indicator-server-state.d.ts","./node_modules/next/dist/next-devtools/dev-overlay/cache-indicator.d.ts","./node_modules/next/dist/server/lib/parse-stack.d.ts","./node_modules/next/dist/next-devtools/server/shared.d.ts","./node_modules/next/dist/next-devtools/shared/stack-frame.d.ts","./node_modules/next/dist/next-devtools/dev-overlay/utils/get-error-by-type.d.ts","./node_modules/next/dist/next-devtools/dev-overlay/container/runtime-error/render-error.d.ts","./node_modules/next/dist/next-devtools/dev-overlay/shared.d.ts","./node_modules/next/dist/server/dev/debug-channel.d.ts","./node_modules/next/dist/server/dev/hot-reloader-types.d.ts","./node_modules/next/dist/server/lib/i18n-provider.d.ts","./node_modules/next/dist/server/web/next-url.d.ts","./node_modules/next/dist/compiled/@edge-runtime/cookies/index.d.ts","./node_modules/next/dist/server/web/spec-extension/cookies.d.ts","./node_modules/next/dist/server/web/spec-extension/request.d.ts","./node_modules/next/dist/server/after/builtin-request-context.d.ts","./node_modules/next/dist/server/web/spec-extension/fetch-event.d.ts","./node_modules/next/dist/server/web/spec-extension/response.d.ts","./node_modules/next/dist/build/segment-config/middleware/middleware-config.d.ts","./node_modules/next/dist/server/web/types.d.ts","./node_modules/next/dist/build/webpack/plugins/pages-manifest-plugin.d.ts","./node_modules/next/dist/shared/lib/router/utils/parse-url.d.ts","./node_modules/next/dist/server/route-definitions/locale-route-definition.d.ts","./node_modules/next/dist/server/route-definitions/pages-route-definition.d.ts","./node_modules/next/dist/build/webpack/plugins/flight-manifest-plugin.d.ts","./node_modules/next/dist/next-devtools/userspace/pages/pages-dev-overlay-setup.d.ts","./node_modules/next/dist/server/render.d.ts","./node_modules/next/dist/shared/lib/mitt.d.ts","./node_modules/next/dist/client/with-router.d.ts","./node_modules/next/dist/client/router.d.ts","./node_modules/next/dist/client/route-loader.d.ts","./node_modules/next/dist/client/page-loader.d.ts","./node_modules/next/dist/shared/lib/router/router.d.ts","./node_modules/next/dist/shared/lib/router-context.shared-runtime.d.ts","./node_modules/next/dist/shared/lib/loadable-context.shared-runtime.d.ts","./node_modules/next/dist/shared/lib/loadable.shared-runtime.d.ts","./node_modules/next/dist/shared/lib/image-config-context.shared-runtime.d.ts","./node_modules/next/dist/client/components/readonly-url-search-params.d.ts","./node_modules/next/dist/shared/lib/hooks-client-context.shared-runtime.d.ts","./node_modules/next/dist/shared/lib/head-manager-context.shared-runtime.d.ts","./node_modules/next/dist/shared/lib/app-router-types.d.ts","./node_modules/next/dist/client/flight-data-helpers.d.ts","./node_modules/next/dist/client/components/router-reducer/ppr-navigations.d.ts","./node_modules/next/dist/client/components/segment-cache/types.d.ts","./node_modules/next/dist/client/components/segment-cache/navigation.d.ts","./node_modules/next/dist/client/components/segment-cache/cache-key.d.ts","./node_modules/next/dist/client/components/router-reducer/fetch-server-response.d.ts","./node_modules/next/dist/client/components/router-reducer/router-reducer-types.d.ts","./node_modules/next/dist/shared/lib/app-router-context.shared-runtime.d.ts","./node_modules/next/dist/shared/lib/server-inserted-html.shared-runtime.d.ts","./node_modules/next/dist/server/route-modules/pages/vendored/contexts/entrypoints.d.ts","./node_modules/next/dist/server/route-modules/pages/module.compiled.d.ts","./node_modules/next/dist/build/templates/pages.d.ts","./node_modules/next/dist/server/route-modules/pages/module.d.ts","./node_modules/next/dist/server/route-modules/pages/builtin/_error.d.ts","./node_modules/next/dist/server/load-default-error-components.d.ts","./node_modules/next/dist/server/base-http/node.d.ts","./node_modules/next/dist/server/response-cache/index.d.ts","./node_modules/next/dist/server/route-definitions/pages-api-route-definition.d.ts","./node_modules/next/dist/server/route-matches/pages-api-route-match.d.ts","./node_modules/next/dist/server/route-matchers/route-matcher.d.ts","./node_modules/next/dist/server/route-matcher-providers/route-matcher-provider.d.ts","./node_modules/next/dist/server/route-matcher-managers/route-matcher-manager.d.ts","./node_modules/next/dist/server/normalizers/normalizer.d.ts","./node_modules/next/dist/server/normalizers/locale-route-normalizer.d.ts","./node_modules/next/dist/server/normalizers/request/pathname-normalizer.d.ts","./node_modules/next/dist/server/normalizers/request/suffix.d.ts","./node_modules/next/dist/server/normalizers/request/rsc.d.ts","./node_modules/next/dist/server/normalizers/request/next-data.d.ts","./node_modules/next/dist/server/normalizers/request/segment-prefix-rsc.d.ts","./node_modules/next/dist/build/static-paths/types.d.ts","./node_modules/next/dist/server/base-server.d.ts","./node_modules/next/dist/server/lib/async-callback-set.d.ts","./node_modules/next/dist/shared/lib/router/utils/route-regex.d.ts","./node_modules/next/dist/shared/lib/router/utils/route-matcher.d.ts","./node_modules/sharp/lib/index.d.ts","./node_modules/next/dist/server/image-optimizer.d.ts","./node_modules/next/dist/server/next-server.d.ts","./node_modules/next/dist/server/lib/types.d.ts","./node_modules/next/dist/server/lib/lru-cache.d.ts","./node_modules/next/dist/server/lib/dev-bundler-service.d.ts","./node_modules/next/dist/server/use-cache/cache-life.d.ts","./node_modules/next/dist/server/dev/static-paths-worker.d.ts","./node_modules/next/dist/server/dev/next-dev-server.d.ts","./node_modules/next/dist/server/next.d.ts","./node_modules/next/dist/server/lib/render-server.d.ts","./node_modules/next/dist/server/lib/router-server.d.ts","./node_modules/next/dist/shared/lib/router/utils/path-match.d.ts","./node_modules/next/dist/server/lib/router-utils/filesystem.d.ts","./node_modules/next/dist/server/lib/router-utils/setup-dev-bundler.d.ts","./node_modules/next/dist/server/lib/router-utils/router-server-context.d.ts","./node_modules/next/dist/server/route-modules/route-module.d.ts","./node_modules/next/dist/server/load-components.d.ts","./node_modules/next/dist/server/web/adapter.d.ts","./node_modules/next/dist/server/app-render/types.d.ts","./node_modules/next/dist/build/webpack/loaders/metadata/types.d.ts","./node_modules/next/dist/build/webpack/loaders/next-app-loader/index.d.ts","./node_modules/next/dist/server/lib/app-dir-module.d.ts","./node_modules/next/dist/server/web/spec-extension/adapters/request-cookies.d.ts","./node_modules/next/dist/server/async-storage/draft-mode-provider.d.ts","./node_modules/next/dist/server/web/spec-extension/adapters/headers.d.ts","./node_modules/next/dist/server/app-render/cache-signal.d.ts","./node_modules/next/dist/server/app-render/dynamic-rendering.d.ts","./node_modules/next/dist/server/request/fallback-params.d.ts","./node_modules/next/dist/server/app-render/work-unit-async-storage-instance.d.ts","./node_modules/next/dist/server/lib/lazy-result.d.ts","./node_modules/next/dist/server/lib/implicit-tags.d.ts","./node_modules/next/dist/server/app-render/staged-rendering.d.ts","./node_modules/next/dist/server/app-render/work-unit-async-storage.external.d.ts","./node_modules/next/dist/shared/lib/router/utils/parse-relative-url.d.ts","./node_modules/next/dist/server/app-render/app-render.d.ts","./node_modules/next/dist/server/route-modules/app-page/vendored/contexts/entrypoints.d.ts","./node_modules/next/dist/client/components/error-boundary.d.ts","./node_modules/next/dist/client/components/layout-router.d.ts","./node_modules/next/dist/client/components/render-from-template-context.d.ts","./node_modules/next/dist/server/app-render/action-async-storage-instance.d.ts","./node_modules/next/dist/server/app-render/action-async-storage.external.d.ts","./node_modules/next/dist/client/components/client-page.d.ts","./node_modules/next/dist/client/components/client-segment.d.ts","./node_modules/next/dist/server/request/search-params.d.ts","./node_modules/next/dist/client/components/hooks-server-context.d.ts","./node_modules/next/dist/client/components/http-access-fallback/error-boundary.d.ts","./node_modules/next/dist/lib/metadata/types/alternative-urls-types.d.ts","./node_modules/next/dist/lib/metadata/types/extra-types.d.ts","./node_modules/next/dist/lib/metadata/types/metadata-types.d.ts","./node_modules/next/dist/lib/metadata/types/manifest-types.d.ts","./node_modules/next/dist/lib/metadata/types/opengraph-types.d.ts","./node_modules/next/dist/lib/metadata/types/twitter-types.d.ts","./node_modules/next/dist/lib/metadata/types/metadata-interface.d.ts","./node_modules/next/dist/lib/metadata/types/resolvers.d.ts","./node_modules/next/dist/lib/metadata/types/icons.d.ts","./node_modules/next/dist/lib/metadata/resolve-metadata.d.ts","./node_modules/next/dist/lib/metadata/metadata.d.ts","./node_modules/next/dist/lib/framework/boundary-components.d.ts","./node_modules/next/dist/server/app-render/rsc/preloads.d.ts","./node_modules/next/dist/server/app-render/rsc/postpone.d.ts","./node_modules/next/dist/server/app-render/rsc/taint.d.ts","./node_modules/next/dist/shared/lib/segment-cache/segment-value-encoding.d.ts","./node_modules/next/dist/server/app-render/collect-segment-data.d.ts","./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.d.ts","./node_modules/next/dist/server/app-render/entry-base.d.ts","./node_modules/next/dist/build/templates/app-page.d.ts","./node_modules/next/dist/build/rendering-mode.d.ts","./node_modules/@types/react/jsx-dev-runtime.d.ts","./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/entrypoints.d.ts","./node_modules/@types/react-dom/client.d.ts","./node_modules/@types/react-dom/server.d.ts","./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/entrypoints.d.ts","./node_modules/next/dist/server/route-modules/app-page/module.d.ts","./node_modules/next/dist/server/route-modules/app-page/module.compiled.d.ts","./node_modules/next/dist/server/route-definitions/app-route-route-definition.d.ts","./node_modules/next/dist/server/async-storage/work-store.d.ts","./node_modules/next/dist/server/web/http.d.ts","./node_modules/next/dist/server/route-modules/app-route/shared-modules.d.ts","./node_modules/next/dist/client/components/redirect-status-code.d.ts","./node_modules/next/dist/client/components/redirect-error.d.ts","./node_modules/next/dist/build/templates/app-route.d.ts","./node_modules/next/dist/server/route-modules/app-route/module.d.ts","./node_modules/next/dist/server/route-modules/app-route/module.compiled.d.ts","./node_modules/next/dist/build/segment-config/app/app-segments.d.ts","./node_modules/next/dist/build/utils.d.ts","./node_modules/next/dist/server/lib/router-utils/build-prefetch-segment-data-route.d.ts","./node_modules/next/dist/build/turborepo-access-trace/types.d.ts","./node_modules/next/dist/build/turborepo-access-trace/result.d.ts","./node_modules/next/dist/build/turborepo-access-trace/helpers.d.ts","./node_modules/next/dist/build/turborepo-access-trace/index.d.ts","./node_modules/next/dist/export/routes/types.d.ts","./node_modules/next/dist/export/types.d.ts","./node_modules/next/dist/export/worker.d.ts","./node_modules/next/dist/build/worker.d.ts","./node_modules/next/dist/build/index.d.ts","./node_modules/next/dist/server/lib/incremental-cache/index.d.ts","./node_modules/next/dist/server/after/after.d.ts","./node_modules/next/dist/server/after/after-context.d.ts","./node_modules/next/dist/server/app-render/work-async-storage-instance.d.ts","./node_modules/next/dist/server/app-render/create-error-handler.d.ts","./node_modules/next/dist/shared/lib/action-revalidation-kind.d.ts","./node_modules/next/dist/server/app-render/work-async-storage.external.d.ts","./node_modules/next/dist/server/request/params.d.ts","./node_modules/next/dist/server/route-matches/route-match.d.ts","./node_modules/next/dist/server/request-meta.d.ts","./node_modules/next/dist/cli/next-test.d.ts","./node_modules/next/dist/server/config-shared.d.ts","./node_modules/next/dist/server/config.d.ts","./node_modules/next/dist/shared/lib/utils.d.ts","./node_modules/next/dist/build/adapter/build-complete.d.ts","./node_modules/next/dist/types.d.ts","./node_modules/next/types.d.ts","./src/lib/config.ts","./src/app/layout.tsx","./node_modules/next/dist/client/components/unrecognized-action-error.d.ts","./node_modules/next/dist/client/components/redirect.d.ts","./node_modules/next/dist/client/components/not-found.d.ts","./node_modules/next/dist/client/components/forbidden.d.ts","./node_modules/next/dist/client/components/unauthorized.d.ts","./node_modules/next/dist/client/components/unstable-rethrow.server.d.ts","./node_modules/next/dist/client/components/unstable-rethrow.d.ts","./node_modules/next/dist/client/components/navigation.react-server.d.ts","./node_modules/next/dist/client/components/navigation.d.ts","./node_modules/next/navigation.d.ts","./src/components/landing/codesnippet.tsx","./src/components/landing/hero.tsx","./src/components/landing/features.tsx","./src/app/page.tsx","./node_modules/next/dist/client/link.d.ts","./node_modules/next/link.d.ts","./src/app/docs/error.tsx","./node_modules/next/dist/shared/lib/get-img-props.d.ts","./node_modules/next/dist/client/image-component.d.ts","./node_modules/next/dist/shared/lib/image-external.d.ts","./node_modules/next/image.d.ts","./src/components/header.tsx","./node_modules/flexsearch/index.d.ts","./src/lib/types.ts","./src/components/searchpalette.tsx","./src/app/docs/layout.tsx","./node_modules/@types/unist/index.d.ts","./node_modules/@types/hast/index.d.ts","./node_modules/vfile-message/lib/index.d.ts","./node_modules/vfile-message/index.d.ts","./node_modules/vfile/lib/index.d.ts","./node_modules/vfile/index.d.ts","./node_modules/unified/lib/callable-instance.d.ts","./node_modules/trough/lib/index.d.ts","./node_modules/trough/index.d.ts","./node_modules/unified/lib/index.d.ts","./node_modules/unified/index.d.ts","./node_modules/@types/mdast/index.d.ts","./node_modules/mdast-util-to-hast/lib/state.d.ts","./node_modules/mdast-util-to-hast/lib/footer.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/blockquote.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/break.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/code.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/delete.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/emphasis.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/footnote-reference.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/heading.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/html.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/image-reference.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/image.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/inline-code.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/link-reference.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/link.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/list-item.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/list.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/paragraph.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/root.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/strong.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/table.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/table-cell.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/table-row.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/text.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/thematic-break.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/index.d.ts","./node_modules/mdast-util-to-hast/lib/index.d.ts","./node_modules/mdast-util-to-hast/index.d.ts","./node_modules/remark-rehype/lib/index.d.ts","./node_modules/remark-rehype/index.d.ts","./node_modules/react-markdown/lib/index.d.ts","./node_modules/react-markdown/index.d.ts","./node_modules/micromark-util-types/index.d.ts","./node_modules/micromark-extension-gfm-footnote/lib/html.d.ts","./node_modules/micromark-extension-gfm-footnote/lib/syntax.d.ts","./node_modules/micromark-extension-gfm-footnote/index.d.ts","./node_modules/micromark-extension-gfm-strikethrough/lib/html.d.ts","./node_modules/micromark-extension-gfm-strikethrough/lib/syntax.d.ts","./node_modules/micromark-extension-gfm-strikethrough/index.d.ts","./node_modules/micromark-extension-gfm/index.d.ts","./node_modules/mdast-util-from-markdown/lib/types.d.ts","./node_modules/mdast-util-from-markdown/lib/index.d.ts","./node_modules/mdast-util-from-markdown/index.d.ts","./node_modules/mdast-util-to-markdown/lib/types.d.ts","./node_modules/mdast-util-to-markdown/lib/index.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/blockquote.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/break.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/code.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/definition.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/emphasis.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/heading.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/html.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/image.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/image-reference.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/inline-code.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/link.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/link-reference.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/list.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/list-item.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/paragraph.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/root.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/strong.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/text.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/thematic-break.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/index.d.ts","./node_modules/mdast-util-to-markdown/index.d.ts","./node_modules/mdast-util-gfm-footnote/lib/index.d.ts","./node_modules/mdast-util-gfm-footnote/index.d.ts","./node_modules/markdown-table/index.d.ts","./node_modules/mdast-util-gfm-table/lib/index.d.ts","./node_modules/mdast-util-gfm-table/index.d.ts","./node_modules/mdast-util-gfm/lib/index.d.ts","./node_modules/mdast-util-gfm/index.d.ts","./node_modules/remark-gfm/lib/index.d.ts","./node_modules/remark-gfm/index.d.ts","./src/components/breadcrumbs.tsx","./src/components/tableofcontents.tsx","./src/components/sidebar.tsx","./node_modules/@types/prismjs/index.d.ts","./src/components/codeblock.tsx","./src/lib/nav-helpers.ts","./src/components/navigationfooter.tsx","./src/components/footer.tsx","./node_modules/@types/js-yaml/index.d.ts","./node_modules/@types/js-yaml/index.d.mts","./src/lib/content.ts","./src/lib/navigation.ts","./src/app/docs/page.tsx","./src/app/docs/[...slug]/page.tsx","./node_modules/@types/aria-query/index.d.ts","./node_modules/@testing-library/dom/types/matches.d.ts","./node_modules/@testing-library/dom/types/wait-for.d.ts","./node_modules/@testing-library/dom/types/query-helpers.d.ts","./node_modules/@testing-library/dom/types/queries.d.ts","./node_modules/@testing-library/dom/types/get-queries-for-element.d.ts","./node_modules/pretty-format/build/types.d.ts","./node_modules/pretty-format/build/index.d.ts","./node_modules/@testing-library/dom/types/screen.d.ts","./node_modules/@testing-library/dom/types/wait-for-element-to-be-removed.d.ts","./node_modules/@testing-library/dom/types/get-node-text.d.ts","./node_modules/@testing-library/dom/types/events.d.ts","./node_modules/@testing-library/dom/types/pretty-dom.d.ts","./node_modules/@testing-library/dom/types/role-helpers.d.ts","./node_modules/@testing-library/dom/types/config.d.ts","./node_modules/@testing-library/dom/types/suggestions.d.ts","./node_modules/@testing-library/dom/types/index.d.ts","./node_modules/@types/react-dom/test-utils/index.d.ts","./node_modules/@testing-library/react/types/index.d.ts","./src/components/breadcrumbs.test.tsx","./src/components/footer.test.tsx","./src/components/header.test.tsx","./src/components/searchpalette.test.tsx","./src/components/sidebar.test.tsx","./src/components/tableofcontents.test.tsx","./src/components/themetoggle.tsx","./src/components/themetoggle.test.tsx","./src/components/versionswitcher.tsx","./src/lib/content.test.ts","./node_modules/@shikijs/vscode-textmate/dist/index.d.ts","./node_modules/@shikijs/types/dist/index.d.mts","./node_modules/shiki/dist/langs.d.mts","./node_modules/stringify-entities/lib/util/format-smart.d.ts","./node_modules/stringify-entities/lib/core.d.ts","./node_modules/stringify-entities/lib/index.d.ts","./node_modules/stringify-entities/index.d.ts","./node_modules/property-information/lib/util/info.d.ts","./node_modules/property-information/lib/find.d.ts","./node_modules/property-information/lib/hast-to-react.d.ts","./node_modules/property-information/lib/normalize.d.ts","./node_modules/property-information/index.d.ts","./node_modules/hast-util-to-html/lib/index.d.ts","./node_modules/hast-util-to-html/index.d.ts","./node_modules/@shikijs/core/dist/index.d.mts","./node_modules/shiki/dist/themes.d.mts","./node_modules/shiki/dist/bundle-full.d.mts","./node_modules/@shikijs/core/dist/types.d.mts","./node_modules/shiki/dist/types.d.mts","./node_modules/oniguruma-to-es/dist/esm/subclass.d.ts","./node_modules/oniguruma-to-es/dist/esm/index.d.ts","./node_modules/@shikijs/engine-javascript/dist/shared/engine-javascript.cdednu-m.d.mts","./node_modules/@shikijs/engine-javascript/dist/engine-raw.d.mts","./node_modules/@shikijs/engine-javascript/dist/index.d.mts","./node_modules/@shikijs/engine-oniguruma/dist/chunk-index.d.d.mts","./node_modules/@shikijs/engine-oniguruma/dist/index.d.mts","./node_modules/shiki/dist/index.d.mts","./src/lib/highlight.ts","./src/lib/markdown.ts","./src/lib/navigation.test.ts","./src/lib/search.ts","./src/lib/search.test.ts","./tests/smoke.test.tsx","./node_modules/next/dist/styled-jsx/types/css.d.ts","./node_modules/next/dist/styled-jsx/types/macro.d.ts","./node_modules/next/dist/styled-jsx/types/style.d.ts","./node_modules/next/dist/styled-jsx/types/global.d.ts","./node_modules/next/dist/styled-jsx/types/index.d.ts","./node_modules/next/dist/pages/_app.d.ts","./node_modules/next/app.d.ts","./node_modules/next/dist/server/web/spec-extension/unstable-cache.d.ts","./node_modules/next/dist/server/web/spec-extension/revalidate.d.ts","./node_modules/next/dist/server/web/spec-extension/unstable-no-store.d.ts","./node_modules/next/dist/server/use-cache/cache-tag.d.ts","./node_modules/next/cache.d.ts","./node_modules/next/dist/pages/_document.d.ts","./node_modules/next/document.d.ts","./node_modules/next/dist/shared/lib/dynamic.d.ts","./node_modules/next/dynamic.d.ts","./node_modules/next/dist/pages/_error.d.ts","./node_modules/next/error.d.ts","./node_modules/next/dist/shared/lib/head.d.ts","./node_modules/next/head.d.ts","./node_modules/next/dist/server/request/cookies.d.ts","./node_modules/next/dist/server/request/headers.d.ts","./node_modules/next/dist/server/request/draft-mode.d.ts","./node_modules/next/headers.d.ts","./node_modules/next/router.d.ts","./node_modules/next/dist/client/script.d.ts","./node_modules/next/script.d.ts","./node_modules/next/dist/server/web/spec-extension/user-agent.d.ts","./node_modules/next/dist/compiled/@edge-runtime/primitives/url.d.ts","./node_modules/next/dist/server/web/spec-extension/image-response.d.ts","./node_modules/next/dist/compiled/@vercel/og/satori/index.d.ts","./node_modules/next/dist/compiled/@vercel/og/emoji/index.d.ts","./node_modules/next/dist/compiled/@vercel/og/types.d.ts","./node_modules/next/dist/server/after/index.d.ts","./node_modules/next/dist/server/request/connection.d.ts","./node_modules/next/server.d.ts","./node_modules/next/types/global.d.ts","./node_modules/next/types/compiled.d.ts","./node_modules/next/index.d.ts","./node_modules/next/image-types/global.d.ts","./.next/dev/types/routes.d.ts","./next-env.d.ts","./node_modules/@types/yargs-parser/index.d.ts","./node_modules/@types/yargs/index.d.ts","./node_modules/@types/yargs/index.d.mts","./node_modules/@types/istanbul-lib-coverage/index.d.ts","./node_modules/chalk/index.d.ts","./node_modules/@types/istanbul-lib-report/index.d.ts","./node_modules/@types/istanbul-reports/index.d.ts","./node_modules/@sinclair/typebox/typebox.d.ts","./node_modules/@jest/schemas/build/index.d.ts","./node_modules/@jest/types/build/index.d.ts","./node_modules/@types/stack-utils/index.d.ts","./node_modules/jest-message-util/build/index.d.ts","./node_modules/@jest/console/build/index.d.ts","./node_modules/@types/graceful-fs/index.d.ts","./node_modules/jest-haste-map/build/index.d.ts","./node_modules/jest-resolve/build/index.d.ts","./node_modules/collect-v8-coverage/index.d.ts","./node_modules/@jest/test-result/build/index.d.ts","./node_modules/@jest/reporters/build/index.d.ts","./node_modules/jest-changed-files/build/index.d.ts","./node_modules/emittery/index.d.ts","./node_modules/jest-watcher/build/index.d.ts","./node_modules/jest-runner/build/index.d.ts","./node_modules/@jest/core/build/index.d.ts","./node_modules/jest-cli/build/index.d.ts","./node_modules/jest/build/index.d.ts","./jest.config.ts","./node_modules/@jest/expect-utils/build/index.d.ts","./node_modules/jest-diff/node_modules/pretty-format/build/index.d.ts","./node_modules/jest-diff/build/index.d.ts","./node_modules/jest-matcher-utils/build/index.d.ts","./node_modules/expect/build/index.d.ts","./node_modules/@types/jest/node_modules/pretty-format/build/index.d.ts","./node_modules/@types/jest/index.d.ts","./node_modules/@testing-library/jest-dom/types/matchers.d.ts","./node_modules/@testing-library/jest-dom/types/jest.d.ts","./node_modules/@testing-library/jest-dom/types/index.d.ts","./jest.setup.ts","./node_modules/tailwindcss/dist/colors.d.mts","./node_modules/tailwindcss/dist/resolve-config-quz9b-gn.d.mts","./node_modules/tailwindcss/dist/types-cjyaw1ql.d.mts","./node_modules/tailwindcss/dist/lib.d.mts","./tailwind.config.ts","./scripts/build-search-index.ts","./.next/dev/types/cache-life.d.ts","./node_modules/next/dist/client/form-shared.d.ts","./node_modules/next/dist/client/form.d.ts","./.next/dev/types/link.d.ts","./.next/dev/types/validator.ts","./node_modules/@babel/types/lib/index.d.ts","./node_modules/@types/babel__generator/index.d.ts","./node_modules/@babel/parser/typings/babel-parser.d.ts","./node_modules/@types/babel__template/index.d.ts","./node_modules/@types/babel__traverse/index.d.ts","./node_modules/@types/babel__core/index.d.ts","./node_modules/@types/ms/index.d.ts","./node_modules/@types/debug/index.d.ts","./node_modules/@types/estree/index.d.ts","./node_modules/@types/estree-jsx/index.d.ts","./node_modules/@types/flexsearch/index.d.ts","./node_modules/parse5/dist/common/html.d.ts","./node_modules/parse5/dist/common/token.d.ts","./node_modules/parse5/dist/common/error-codes.d.ts","./node_modules/parse5/dist/tokenizer/preprocessor.d.ts","./node_modules/entities/dist/esm/generated/decode-data-html.d.ts","./node_modules/entities/dist/esm/generated/decode-data-xml.d.ts","./node_modules/entities/dist/esm/decode-codepoint.d.ts","./node_modules/entities/dist/esm/decode.d.ts","./node_modules/parse5/dist/tokenizer/index.d.ts","./node_modules/parse5/dist/tree-adapters/interface.d.ts","./node_modules/parse5/dist/parser/open-element-stack.d.ts","./node_modules/parse5/dist/parser/formatting-element-list.d.ts","./node_modules/parse5/dist/parser/index.d.ts","./node_modules/parse5/dist/tree-adapters/default.d.ts","./node_modules/parse5/dist/serializer/index.d.ts","./node_modules/parse5/dist/common/foreign-content.d.ts","./node_modules/parse5/dist/index.d.ts","./node_modules/@types/tough-cookie/index.d.ts","./node_modules/@types/jsdom/base.d.ts","./node_modules/@types/jsdom/index.d.ts","./node_modules/@types/json-schema/index.d.ts","./node_modules/@types/json5/index.d.ts","../node_modules/keyv/src/index.d.ts","../node_modules/@types/http-cache-semantics/index.d.ts","../node_modules/@types/responselike/index.d.ts","../node_modules/@types/cacheable-request/index.d.ts","../node_modules/@types/keyv/index.d.ts"],"fileIdsList":[[59,105,616,617,618,619],[51,59,105,146,278,385,417,428,434,697],[59,105],[52,59,105,417,419,433,445,545,546,649],[52,59,105,676],[52,59,105],[59,105,647,648,649],[59,105,700],[59,105,108,147,153,660,662],[59,105,660,668,669,670,672,673],[59,105,153,660,668],[59,105,658],[59,105,654,660,663,665,666,667],[59,105,153,653,654,655,657,659],[59,105,447,485,577,589],[59,105,576,577],[59,105,577],[59,105,576,577,596,597,598],[59,105,576,577,596],[59,105,600],[59,105,447,485,576],[59,105,551],[59,105,548,549,550,551,552,555,556,557,558,559,560,561,562],[59,105,547],[59,105,554],[59,105,548,549,550],[59,105,548,549],[59,105,551,552,554],[59,105,549],[59,105,686],[59,105,684,685],[59,105,563,564],[59,105,700,701,702,703,704],[59,105,700,702],[59,105,706],[59,105,708,709],[59,105,117,153],[59,105,446],[59,105,654],[59,105,656],[59,105,679,682],[59,105,659],[59,105,541],[59,105,116,149,153,727,728,730],[59,105,729],[59,102,105],[59,104,105],[105],[59,105,110,138],[59,105,106,111,116,124,135,146],[59,105,106,107,116,124],[54,55,56,59,105],[59,105,108,147],[59,105,109,110,117,125],[59,105,110,135,143],[59,105,111,113,116,124],[59,104,105,112],[59,105,113,114],[59,105,115,116],[59,104,105,116],[59,105,116,117,118,135,146],[59,105,116,117,118,131,135,138],[59,105,113,116,119,124,135,146],[59,105,116,117,119,120,124,135,143,146],[59,105,119,121,135,143,146],[57,58,59,60,61,62,63,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152],[59,105,116,122],[59,105,123,146,151],[59,105,113,116,124,135],[59,105,125],[59,105,126],[59,104,105,127],[59,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152],[59,105,129],[59,105,130],[59,105,116,131,132],[59,105,131,133,147,149],[59,105,116,135,136,138],[59,105,137,138],[59,105,135,136],[59,105,138],[59,105,139],[59,102,105,135,140],[59,105,116,141,142],[59,105,141,142],[59,105,110,124,135,143],[59,105,144],[59,105,124,145],[59,105,119,130,146],[59,105,110,147],[59,105,135,148],[59,105,123,149],[59,105,150],[59,100,105],[59,100,105,116,118,127,135,138,146,149,151],[59,105,135,152],[51,59,105,156,157,158,375],[51,59,105],[51,59,105,156,157],[51,59,105,157,375],[51,59,105,564],[51,59,105,155,416,612,641],[51,59,105,154,416,612,641],[48,49,50,59,105],[59,105,652],[59,105,651],[59,105,122,153],[59,105,715,716,717],[59,105,678,681],[59,105,442],[59,105,588],[59,105,447,485,582,587],[59,105,653],[59,105,679],[59,105,153,660,664],[59,105,655,680],[59,105,660,661],[59,105,665],[59,105,660,668,672],[59,105,153,660,668,671],[59,105,660,674,675],[59,105,490,493,496,498,499,500],[59,105,457,485,490,493,496,498,500],[59,105,457,485,490,493,496,500],[59,105,523,524,528],[59,105,500,523,525,528],[59,105,500,523,525,527],[59,105,457,485,500,523,525,526,528],[59,105,525,528,529],[59,105,500,523,525,528,530],[59,105,447,457,458,459,483,484,485],[59,105,447,458,485],[59,105,447,457,458,485],[59,105,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482],[59,105,447,451,457,459,485],[59,105,501,502,522],[59,105,457,485,523,525,528],[59,105,457,485],[59,105,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521],[59,105,446,457,485],[59,105,490,491,492,496,500],[59,105,490,493,496,500],[59,105,490,493,494,495,500],[59,105,614],[59,105,166,167,173,184,372,400,412],[59,105,167,179,180,181,183,412],[59,105,167,170,217,219,221,222,225,412],[59,105,167,170,173,175,176,177,208,300,372,390,391,399,412],[59,105,412],[59,105,180,270,379,388,408],[59,105,167],[59,105,200,270,408],[59,105,227],[59,105,226,412],[59,105,119,370,379,646],[59,105,119,338,350,388,407],[59,105,119,281],[59,105,393],[59,105,392,393,394],[59,105,392],[59,105,119,159,167,173,176,178,180,184,185,198,199,200,227,300,311,389,400,412,416],[59,105,166,167,182,217,218,223,224,412,646],[59,105,182,646],[59,105,166,199,325,412,646],[59,105,646],[59,105,167,182,183,646],[59,105,220,646],[59,105,185,390,398],[52,59,105,130,408],[52,59,105,408],[51,52,59,105],[51,59,105,342],[59,105,268,278,279,408,420,427],[59,105,267,385,421,422,423,424,426],[59,105,384],[59,105,384,385],[59,105,208,270,271,275],[59,105,270],[59,105,270,274,276],[59,105,270,271,272,273],[59,105,425],[51,59,105,696],[51,59,105,168,437],[51,59,105,146],[51,59,105,182,260],[51,59,105,182,400],[59,105,258,262],[51,59,105,259,414],[51,59,105,119,153,154,155,416,612,639,640],[59,105,119],[59,105,119,171,173,207,256,301,322,324,395,396,400,412],[59,105,198,397],[59,105,416],[59,105,413],[51,59,105,327,340,349,359,361,407],[59,105,130,327,340,358,359,360,407,645],[59,105,352,353,354,355,356,357],[59,105,354],[59,105,358],[52,59,105,234,235,237],[51,59,105,228,229,230,231,236],[59,105,234,236],[59,105,232],[59,105,233],[51,52,59,105,259,414],[51,52,59,105,163,414],[51,52,59,105,414],[59,105,301,402],[59,105,402],[59,105,119,171,414],[59,105,346],[59,104,105,345],[59,105,171,209,270,287,324,333,336,338,339,378,407,410],[59,105,254,270,367],[59,105,338,407],[51,59,105,338,343,344,346,347,348,349,350,351,362,363,364,365,366,368,369,407,408,646],[59,105,332],[59,105,119,130,161,162,168,170,171,207,210,231,301,311,322,323,378,401,412,416,646],[59,105,407],[59,104,105,162,171,180,311,335,401,403,404,405,406],[59,105,338],[59,104,105,207,243,287,328,329,330,331,332,333,334,336,337,407,408],[59,105,119,170,171,243,244,328],[59,105,171,180,301,311,324,401,407],[59,105,119,170,412],[59,105,119,135,170,171,410],[59,105,119,130,146,161,162,170,171,173,182,200,209,210,212,240,245,250,254,256,285,287,289,292,294,297,298,299,300,322,324,400,401,408,410,412],[59,105,119,135],[59,105,167,168,169,178,410,411,414,416,646],[59,105,166,412],[59,105,239],[59,105,119,135,146,202,225,227,228,229,230,231,237,238,646],[59,105,130,146,200,202,217,249,250,251,285,286,287,292,300,301,307,310,312,322,324,401,408,410,412],[59,105,178,185,198,300,311,401,412],[59,105,119,146,168,173,287,305,410,412],[59,105,326],[59,105,119,239,308,309,319],[59,105,410,412],[59,105,333,335],[59,105,162,287,400,414],[59,105,119,130,213,217,286,292,307,310,314,410],[59,105,119,185,198,217,315],[59,105,167,212,317,400,412],[59,105,119,146,231,412],[59,105,119,182,211,212,213,222,239,316,318,400,412],[59,105,119,159,162,321,414,416],[59,105,284,322],[59,105,119,130,146,161,173,184,185,198,209,210,245,249,250,251,285,286,287,289,301,302,304,306,322,324,400,401,408,409,410,414],[59,105,119,135,185,307,313,319,410],[59,105,188,189,190,191,192,193,194,195,196,197],[59,105,240,293],[59,105,295],[59,105,293],[59,105,295,296],[59,105,119,171,173,176,207,208],[59,105,119,130,161,162,168,170,209,254,255,283,322,410,413,414,416],[59,105,119,130,146,171,172,208,255,287,333,401,409],[59,105,328],[59,105,329],[59,105,270,300,378],[59,105,330],[59,105,201,205],[59,105,119,173,201,209],[59,105,204,205],[59,105,206],[59,105,201,202],[59,105,201,252],[59,105,201],[59,105,240,291,409],[59,105,290],[59,105,202,408,409],[59,105,288,409],[59,105,202,408],[59,105,378],[59,105,162,171,173,203,209,270,287,321,324,327,333,340,341,371,372,374,377,400,410],[59,105,263,266,268,269,278,279],[51,52,59,105,156,157,158,373],[51,52,59,105,156,157,158,373,376],[59,105,387],[59,105,162,180,244,321,324,338,346,350,380,381,382,383,385,386,389,400,407,412],[59,105,278],[59,105,119,283],[59,105,283],[59,105,119,209,253,256,280,282,321,410,414,416],[59,105,163,263,264,265,266,268,269,278,279],[59,105,119,130,146,159,161,162,171,201,202,210,287,319,320,322,400,401,410,412,416],[59,105,244,246,249,401],[59,105,119,240,412],[59,105,243,338],[59,105,242],[59,105,244,245],[59,105,241,243,412],[59,105,119,171,172,244,246,247,248,412],[51,59,105,270,277,408],[59,105,164,165],[51,59,105,168],[51,59,105,267,408],[51,59,105,159,161,162,414,416],[59,105,168,437,438],[51,59,105,262],[51,59,105,130,146,224,257,259,261,413,414],[59,105,171,182,408],[59,105,303,408],[51,59,105,117,119,130,163,166,219,262,413,416],[51,59,105,154,155,416,641],[51,59,105,609,610,611,612],[59,105,110],[59,105,214,215,216],[59,105,214],[51,59,105,119,121,130,153,154,155,156,158,170,200,210,314,358,413,414,415,612,641],[59,105,621],[59,105,623],[59,105,625],[59,105,627],[59,105,629,630,631],[59,105,439],[59,105,417,429,435,440,613,615,620,622,624,626,628,632,633,635,644,645,646],[59,105,434],[59,105,428],[59,105,259],[59,105,634],[59,104,105,244,246,247,249,636,637,638,641,642,643],[59,105,153],[59,105,595],[59,105,712],[59,105,711,712],[59,105,711],[59,105,711,712,713,719,720,723,724,725,726],[59,105,712,720],[59,105,711,712,713,719,720,721,722],[59,105,711,720],[59,105,720,724],[59,105,712,713,714,718],[59,105,713],[59,105,711,712,720],[59,105,553],[59,105,584,585,586],[59,105,583,587],[59,105,587],[59,105,488],[51,59,105,447,456,485,487],[59,105,497,530,531],[59,105,532],[59,105,485,486],[59,105,447,451,456,457,485],[59,105,135,153],[59,105,447,485,577,578,590,591],[59,105,447,485,577,578,590,591,592,593,594,599,601],[59,105,590],[59,105,577,578,590,591,593],[59,105,581],[59,105,579],[59,105,579,580],[59,105,689,690,691],[59,105,689],[59,105,690],[59,105,453],[59,72,76,105,146],[59,72,105,135,146],[59,67,105],[59,69,72,105,143,146],[59,105,124,143],[59,67,105,153],[59,69,72,105,124,146],[59,64,65,68,71,105,116,135,146],[59,72,79,105],[59,64,70,105],[59,72,93,94,105],[59,68,72,105,138,146,153],[59,93,105,153],[59,66,67,105,153],[59,72,105],[59,66,67,68,69,70,71,72,73,74,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,94,95,96,97,98,99,105],[59,72,87,105],[59,72,79,80,105],[59,70,72,80,81,105],[59,71,105],[59,64,67,72,105],[59,72,76,80,81,105],[59,76,105],[59,70,72,75,105,146],[59,64,69,72,79,105],[59,105,135],[59,67,72,93,105,151,153],[59,105,451,455],[59,105,446,451,452,454,456],[59,105,448],[59,105,449,450],[59,105,446,449,451],[52,59,105,126,418,606],[51,52,59,105,117,126,418,443,489,532,533,534,535,537,538,539,540,543,544,698],[51,52,59,105,418,698],[51,52,59,105,441,444],[52,59,105,417,418],[52,59,105,418,431,432,698],[52,59,105,443,533,565],[52,59,105,443,698],[51,52,59,105,536],[52,59,105,540,565],[52,59,105,418,698],[52,59,105,441,565],[51,52,59,105,418,440,698],[52,59,105,418],[52,59,105,418,430],[52,59,105,418,538,698],[51,52,59,105,444,565],[51,52,59,105,442,443,698],[52,59,105,443,535,565],[51,52,59,105,418,443,698],[52,59,105,443,534,565],[51,52,59,105,443],[52,59,105,565,572],[52,59,105,443,543],[52,59,105,443,542],[52,59,105,602],[52,59,105,443],[52,59,105,117,126,443,544],[52,59,105,106,117,126,443,543],[52,59,105,117,126,443,606],[52,59,105,117,126,418,442,443],[52,59,105,692],[52,59,105,565],[59,105,116,119,146,153,733,734,735],[59,105,116,153],[59,105,119,135,153],[59,105,116]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"080941d9f9ff9307f7e27a83bcd888b7c8270716c39af943532438932ec1d0b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2e80ee7a49e8ac312cc11b77f1475804bee36b3b2bc896bead8b6e1266befb43","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb5b19b86227ace1d29ea4cf81387279d04bb34051e944bc53df69f58914b788","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac51dd7d31333793807a6abaa5ae168512b6131bd41d9c5b98477fc3b7800f9f","impliedFormat":1},{"version":"87d9d29dbc745f182683f63187bf3d53fd8673e5fca38ad5eaab69798ed29fbc","impliedFormat":1},{"version":"7a3aa194cfd5919c4da251ef04ea051077e22702638d4edcb9579e9101653519","affectsGlobalScope":true,"impliedFormat":1},{"version":"42c169fb8c2d42f4f668c624a9a11e719d5d07dacbebb63cbcf7ef365b0a75b3","impliedFormat":1},{"version":"d813468a5c9afb9e5531afd07c5a16ff95872ab1ae548d45d2e668ceffaf3fb0","signature":"5cfeb25d7583b5a4972ea8bfce60e6c1dd7f2501ac3a6425521902bd91ab0f13"},{"version":"70521b6ab0dcba37539e5303104f29b721bfb2940b2776da4cc818c07e1fefc1","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab41ef1f2cdafb8df48be20cd969d875602483859dc194e9c97c8a576892c052","affectsGlobalScope":true,"impliedFormat":1},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a","impliedFormat":1},{"version":"98cffbf06d6bab333473c70a893770dbe990783904002c4f1a960447b4b53dca","affectsGlobalScope":true,"impliedFormat":1},{"version":"ba481bca06f37d3f2c137ce343c7d5937029b2468f8e26111f3c9d9963d6568d","affectsGlobalScope":true,"impliedFormat":1},{"version":"6d9ef24f9a22a88e3e9b3b3d8c40ab1ddb0853f1bfbd5c843c37800138437b61","affectsGlobalScope":true,"impliedFormat":1},{"version":"1db0b7dca579049ca4193d034d835f6bfe73096c73663e5ef9a0b5779939f3d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"f26b11d8d8e4b8028f1c7d618b22274c892e4b0ef5b3678a8ccbad85419aef43","affectsGlobalScope":true,"impliedFormat":1},{"version":"5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","impliedFormat":1},{"version":"763fe0f42b3d79b440a9b6e51e9ba3f3f91352469c1e4b3b67bfa4ff6352f3f4","impliedFormat":1},{"version":"25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","impliedFormat":1},{"version":"c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","impliedFormat":1},{"version":"78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","impliedFormat":1},{"version":"5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","impliedFormat":1},{"version":"7f182617db458e98fc18dfb272d40aa2fff3a353c44a89b2c0ccb3937709bfb5","impliedFormat":1},{"version":"cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","impliedFormat":1},{"version":"385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","impliedFormat":1},{"version":"9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","impliedFormat":1},{"version":"0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","impliedFormat":1},{"version":"11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","impliedFormat":1},{"version":"ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","impliedFormat":1},{"version":"4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","impliedFormat":1},{"version":"c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","impliedFormat":1},{"version":"13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","impliedFormat":1},{"version":"9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","impliedFormat":1},{"version":"4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","impliedFormat":1},{"version":"24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","impliedFormat":1},{"version":"ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","impliedFormat":1},{"version":"24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","impliedFormat":1},{"version":"dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","impliedFormat":1},{"version":"405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","impliedFormat":1},{"version":"0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","impliedFormat":1},{"version":"e61be3f894b41b7baa1fbd6a66893f2579bfad01d208b4ff61daef21493ef0a8","impliedFormat":1},{"version":"bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","impliedFormat":1},{"version":"89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","impliedFormat":1},{"version":"615ba88d0128ed16bf83ef8ccbb6aff05c3ee2db1cc0f89ab50a4939bfc1943f","impliedFormat":1},{"version":"a4d551dbf8746780194d550c88f26cf937caf8d56f102969a110cfaed4b06656","impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","impliedFormat":1},{"version":"317e63deeb21ac07f3992f5b50cdca8338f10acd4fbb7257ebf56735bf52ab00","impliedFormat":1},{"version":"4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"2cbe0621042e2a68c7cbce5dfed3906a1862a16a7d496010636cdbdb91341c0f","affectsGlobalScope":true,"impliedFormat":1},{"version":"e2677634fe27e87348825bb041651e22d50a613e2fdf6a4a3ade971d71bac37e","impliedFormat":1},{"version":"7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","impliedFormat":1},{"version":"8c0bcd6c6b67b4b503c11e91a1fb91522ed585900eab2ab1f61bba7d7caa9d6f","impliedFormat":1},{"version":"8cd19276b6590b3ebbeeb030ac271871b9ed0afc3074ac88a94ed2449174b776","affectsGlobalScope":true,"impliedFormat":1},{"version":"696eb8d28f5949b87d894b26dc97318ef944c794a9a4e4f62360cd1d1958014b","impliedFormat":1},{"version":"3f8fa3061bd7402970b399300880d55257953ee6d3cd408722cb9ac20126460c","impliedFormat":1},{"version":"35ec8b6760fd7138bbf5809b84551e31028fb2ba7b6dc91d95d098bf212ca8b4","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"68bd56c92c2bd7d2339457eb84d63e7de3bd56a69b25f3576e1568d21a162398","affectsGlobalScope":true,"impliedFormat":1},{"version":"3e93b123f7c2944969d291b35fed2af79a6e9e27fdd5faa99748a51c07c02d28","impliedFormat":1},{"version":"9d19808c8c291a9010a6c788e8532a2da70f811adb431c97520803e0ec649991","impliedFormat":1},{"version":"87aad3dd9752067dc875cfaa466fc44246451c0c560b820796bdd528e29bef40","impliedFormat":1},{"version":"4aacb0dd020eeaef65426153686cc639a78ec2885dc72ad220be1d25f1a439df","impliedFormat":1},{"version":"f0bd7e6d931657b59605c44112eaf8b980ba7f957a5051ed21cb93d978cf2f45","impliedFormat":1},{"version":"8db0ae9cb14d9955b14c214f34dae1b9ef2baee2fe4ce794a4cd3ac2531e3255","affectsGlobalScope":true,"impliedFormat":1},{"version":"15fc6f7512c86810273af28f224251a5a879e4261b4d4c7e532abfbfc3983134","impliedFormat":1},{"version":"58adba1a8ab2d10b54dc1dced4e41f4e7c9772cbbac40939c0dc8ce2cdb1d442","impliedFormat":1},{"version":"2fd4c143eff88dabb57701e6a40e02a4dbc36d5eb1362e7964d32028056a782b","impliedFormat":1},{"version":"714435130b9015fae551788df2a88038471a5a11eb471f27c4ede86552842bc9","impliedFormat":1},{"version":"855cd5f7eb396f5f1ab1bc0f8580339bff77b68a770f84c6b254e319bbfd1ac7","impliedFormat":1},{"version":"5650cf3dace09e7c25d384e3e6b818b938f68f4e8de96f52d9c5a1b3db068e86","impliedFormat":1},{"version":"1354ca5c38bd3fd3836a68e0f7c9f91f172582ba30ab15bb8c075891b91502b7","affectsGlobalScope":true,"impliedFormat":1},{"version":"27fdb0da0daf3b337c5530c5f266efe046a6ceb606e395b346974e4360c36419","impliedFormat":1},{"version":"2d2fcaab481b31a5882065c7951255703ddbe1c0e507af56ea42d79ac3911201","impliedFormat":1},{"version":"a192fe8ec33f75edbc8d8f3ed79f768dfae11ff5735e7fe52bfa69956e46d78d","impliedFormat":1},{"version":"ca867399f7db82df981d6915bcbb2d81131d7d1ef683bc782b59f71dda59bc85","affectsGlobalScope":true,"impliedFormat":1},{"version":"d9e971bba9cf977c7774abbd4d2e3413a231af8a06a2e8b16af2a606bc91ddd0","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e043a1bc8fbf2a255bccf9bf27e0f1caf916c3b0518ea34aa72357c0afd42ec","impliedFormat":1},{"version":"b4f70ec656a11d570e1a9edce07d118cd58d9760239e2ece99306ee9dfe61d02","impliedFormat":1},{"version":"3bc2f1e2c95c04048212c569ed38e338873f6a8593930cf5a7ef24ffb38fc3b6","impliedFormat":1},{"version":"6e70e9570e98aae2b825b533aa6292b6abd542e8d9f6e9475e88e1d7ba17c866","impliedFormat":1},{"version":"f9d9d753d430ed050dc1bf2667a1bab711ccbb1c1507183d794cc195a5b085cc","impliedFormat":1},{"version":"9eece5e586312581ccd106d4853e861aaaa1a39f8e3ea672b8c3847eedd12f6e","impliedFormat":1},{"version":"47ab634529c5955b6ad793474ae188fce3e6163e3a3fb5edd7e0e48f14435333","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"45650f47bfb376c8a8ed39d4bcda5902ab899a3150029684ee4c10676d9fbaee","impliedFormat":1},{"version":"0225ecb9ed86bdb7a2c7fd01f1556906902929377b44483dc4b83e03b3ef227d","affectsGlobalScope":true,"impliedFormat":1},{"version":"74cf591a0f63db318651e0e04cb55f8791385f86e987a67fd4d2eaab8191f730","impliedFormat":1},{"version":"5eab9b3dc9b34f185417342436ec3f106898da5f4801992d8ff38ab3aff346b5","impliedFormat":1},{"version":"12ed4559eba17cd977aa0db658d25c4047067444b51acfdcbf38470630642b23","affectsGlobalScope":true,"impliedFormat":1},{"version":"f3ffabc95802521e1e4bcba4c88d8615176dc6e09111d920c7a213bdda6e1d65","impliedFormat":1},{"version":"f9ab232778f2842ffd6955f88b1049982fa2ecb764d129ee4893cbc290f41977","impliedFormat":1},{"version":"ae56f65caf3be91108707bd8dfbccc2a57a91feb5daabf7165a06a945545ed26","impliedFormat":1},{"version":"a136d5de521da20f31631a0a96bf712370779d1c05b7015d7019a9b2a0446ca9","impliedFormat":1},{"version":"c3b41e74b9a84b88b1dca61ec39eee25c0dbc8e7d519ba11bb070918cfacf656","affectsGlobalScope":true,"impliedFormat":1},{"version":"4737a9dc24d0e68b734e6cfbcea0c15a2cfafeb493485e27905f7856988c6b29","affectsGlobalScope":true,"impliedFormat":1},{"version":"36d8d3e7506b631c9582c251a2c0b8a28855af3f76719b12b534c6edf952748d","impliedFormat":1},{"version":"1ca69210cc42729e7ca97d3a9ad48f2e9cb0042bada4075b588ae5387debd318","impliedFormat":1},{"version":"f5ebe66baaf7c552cfa59d75f2bfba679f329204847db3cec385acda245e574e","impliedFormat":1},{"version":"ed59add13139f84da271cafd32e2171876b0a0af2f798d0c663e8eeb867732cf","affectsGlobalScope":true,"impliedFormat":1},{"version":"05db535df8bdc30d9116fe754a3473d1b6479afbc14ae8eb18b605c62677d518","impliedFormat":1},{"version":"b1810689b76fd473bd12cc9ee219f8e62f54a7d08019a235d07424afbf074d25","impliedFormat":1},{"version":"91b0f6d01993021ecbe01eb076db6a3cf1b66359c1d99104f43436010e81afb5","impliedFormat":1},{"version":"d1bd4e51810d159899aad1660ccb859da54e27e08b8c9862b40cd36c1d9ff00f","impliedFormat":1},{"version":"17ed71200119e86ccef2d96b73b02ce8854b76ad6bd21b5021d4269bec527b5f","impliedFormat":1},{"version":"1cfa8647d7d71cb03847d616bd79320abfc01ddea082a49569fda71ac5ece66b","impliedFormat":1},{"version":"bb7a61dd55dc4b9422d13da3a6bb9cc5e89be888ef23bbcf6558aa9726b89a1c","impliedFormat":1},{"version":"21da358700a3893281ce0c517a7a30cbd46be020d9f0c3f2834d0a8ad1f5fc75","impliedFormat":1},{"version":"db6d2d9daad8a6d83f281af12ce4355a20b9a3e71b82b9f57cddcca0a8964a96","impliedFormat":1},{"version":"c5426dbfc1cf90532f66965a7aa8c1136a78d4d0f96d8180ecbfc11d7722f1a5","impliedFormat":1},{"version":"9c82171d836c47486074e4ca8e059735bf97b205e70b196535b5efd40cbe1bc5","impliedFormat":1},{"version":"5542d8a7ea13168cb573be0d1ba0d29460d59430fb12bb7bf4674efd5604e14c","impliedFormat":1},{"version":"446a50749b24d14deac6f8843e057a6355dd6437d1fac4f9e5ce4a5071f34bff","impliedFormat":1},{"version":"182e9fcbe08ac7c012e0a6e2b5798b4352470be29a64fdc114d23c2bab7d5106","impliedFormat":1},{"version":"5c9b31919ea1cb350a7ae5e71c9ced8f11723e4fa258a8cc8d16ae46edd623c7","impliedFormat":1},{"version":"96ffa70b486207241c0fcedb5d9553684f7fa6746bc2b04c519e7ebf41a51205","impliedFormat":1},{"version":"5c24c66b3ba29ce9f2a79c719967e6e944131352a117a0bc43fa5b346b5562b3","impliedFormat":1},{"version":"a86f82d646a739041d6702101afa82dcb935c416dd93cbca7fd754fd0282ce1f","impliedFormat":1},{"version":"1fffe726740f9787f15b532e1dc870af3cd964dbe29e191e76121aa3dd8693f2","impliedFormat":1},{"version":"35e6379c3f7cb27b111ad4c1aa69538fd8e788ab737b8ff7596a1b40e96f4f90","impliedFormat":1},{"version":"ad0d1d75d129b1c80f911be438d6b61bfa8703930a8ff2be2f0e1f8a91841c64","impliedFormat":1},{"version":"ce75b1aebb33d510ff28af960a9221410a3eaf7f18fc5f21f9404075fba77256","impliedFormat":1},{"version":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","impliedFormat":1},{"version":"02436d7e9ead85e09a2f8e27d5f47d9464bced31738dec138ca735390815c9f0","impliedFormat":1},{"version":"f4625edcb57b37b84506e8b276eb59ca30d31f88c6656d29d4e90e3bc58e69df","impliedFormat":1},{"version":"78a2869ad0cbf3f9045dda08c0d4562b7e1b2bfe07b19e0db072f5c3c56e9584","impliedFormat":1},{"version":"f8d5ff8eafd37499f2b6a98659dd9b45a321de186b8db6b6142faed0fea3de77","impliedFormat":1},{"version":"c86fe861cf1b4c46a0fb7d74dffe596cf679a2e5e8b1456881313170f092e3fa","impliedFormat":1},{"version":"c685d9f68c70fe11ce527287526585a06ea13920bb6c18482ca84945a4e433a7","impliedFormat":1},{"version":"540cc83ab772a2c6bc509fe1354f314825b5dba3669efdfbe4693ecd3048e34f","impliedFormat":1},{"version":"121b0696021ab885c570bbeb331be8ad82c6efe2f3b93a6e63874901bebc13e3","impliedFormat":1},{"version":"4e01846df98d478a2a626ec3641524964b38acaac13945c2db198bf9f3df22ee","impliedFormat":1},{"version":"678d6d4c43e5728bf66e92fc2269da9fa709cb60510fed988a27161473c3853f","impliedFormat":1},{"version":"ffa495b17a5ef1d0399586b590bd281056cee6ce3583e34f39926f8dcc6ecdb5","impliedFormat":1},{"version":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","impliedFormat":1},{"version":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","impliedFormat":1},{"version":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881","impliedFormat":1},{"version":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881","impliedFormat":1},{"version":"aa14cee20aa0db79f8df101fc027d929aec10feb5b8a8da3b9af3895d05b7ba2","impliedFormat":1},{"version":"493c700ac3bd317177b2eb913805c87fe60d4e8af4fb39c41f04ba81fae7e170","impliedFormat":1},{"version":"aeb554d876c6b8c818da2e118d8b11e1e559adbe6bf606cc9a611c1b6c09f670","impliedFormat":1},{"version":"acf5a2ac47b59ca07afa9abbd2b31d001bf7448b041927befae2ea5b1951d9f9","impliedFormat":1},{"version":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881","impliedFormat":1},{"version":"d71291eff1e19d8762a908ba947e891af44749f3a2cbc5bd2ec4b72f72ea795f","impliedFormat":1},{"version":"c0480e03db4b816dff2682b347c95f2177699525c54e7e6f6aa8ded890b76be7","impliedFormat":1},{"version":"e2a37ac938c4bede5bb284b9d2d042da299528f1e61f6f57538f1bd37d760869","impliedFormat":1},{"version":"76def37aff8e3a051cf406e10340ffba0f28b6991c5d987474cc11137796e1eb","impliedFormat":1},{"version":"b620391fe8060cf9bedc176a4d01366e6574d7a71e0ac0ab344a4e76576fcbb8","impliedFormat":1},{"version":"413df52d4ea14472c2fa5bee62f7a40abd1eb49be0b9722ee01ee4e52e63beb2","impliedFormat":1},{"version":"3e7efde639c6a6c3edb9847b3f61e308bf7a69685b92f665048c45132f51c218","impliedFormat":1},{"version":"df45ca1176e6ac211eae7ddf51336dc075c5314bc5c253651bae639defd5eec5","impliedFormat":1},{"version":"106c6025f1d99fd468fd8bf6e5bda724e11e5905a4076c5d29790b6c3745e50c","impliedFormat":1},{"version":"ee8df1cb8d0faaca4013a1b442e99130769ce06f438d18d510fed95890067563","impliedFormat":1},{"version":"bfb7f8475428637bee12bdd31bd9968c1c8a1cc2c3e426c959e2f3a307f8936f","impliedFormat":1},{"version":"6f491d0108927478d3247bbbc489c78c2da7ef552fd5277f1ab6819986fdf0b1","impliedFormat":1},{"version":"0d8f2b8781c721170b87a6b662b3cb038fd1a721165ecca390352c818d425872","impliedFormat":1},{"version":"7cb0ee103671d1e201cd53dda12bc1cd0a35f1c63d6102720c6eeb322cb8e17e","impliedFormat":1},{"version":"15a234e5031b19c48a69ccc1607522d6e4b50f57d308ecb7fe863d44cd9f9eb3","impliedFormat":1},{"version":"148679c6d0f449210a96e7d2e562d589e56fcde87f843a92808b3ff103f1a774","impliedFormat":1},{"version":"6459054aabb306821a043e02b89d54da508e3a6966601a41e71c166e4ea1474f","impliedFormat":1},{"version":"2f9c89cbb29d362290531b48880a4024f258c6033aaeb7e59fbc62db26819650","impliedFormat":1},{"version":"bb37588926aba35c9283fe8d46ebf4e79ffe976343105f5c6d45f282793352b2","impliedFormat":1},{"version":"05c97cddbaf99978f83d96de2d8af86aded9332592f08ce4a284d72d0952c391","impliedFormat":1},{"version":"72179f9dd22a86deaad4cc3490eb0fe69ee084d503b686985965654013f1391b","impliedFormat":1},{"version":"2e6114a7dd6feeef85b2c80120fdbfb59a5529c0dcc5bfa8447b6996c97a69f5","impliedFormat":1},{"version":"7b6ff760c8a240b40dab6e4419b989f06a5b782f4710d2967e67c695ef3e93c4","impliedFormat":1},{"version":"c8f004e6036aa1c764ad4ec543cf89a5c1893a9535c80ef3f2b653e370de45e6","impliedFormat":1},{"version":"dd80b1e600d00f5c6a6ba23f455b84a7db121219e68f89f10552c54ba46e4dc9","impliedFormat":1},{"version":"b064c36f35de7387d71c599bfcf28875849a1dbc733e82bd26cae3d1cd060521","impliedFormat":1},{"version":"05c7280d72f3ed26f346cbe7cbbbb002fb7f15739197cbbee6ab3fd1a6cb9347","impliedFormat":1},{"version":"8de9fe97fa9e00ec00666fa77ab6e91b35d25af8ca75dabcb01e14ad3299b150","impliedFormat":1},{"version":"803cd2aaf1921c218916c2c7ee3fce653e852d767177eb51047ff15b5b253893","impliedFormat":1},{"version":"dba114fb6a32b355a9cfc26ca2276834d72fe0e94cd2c3494005547025015369","impliedFormat":1},{"version":"7ab12b2f1249187223d11a589f5789c75177a0b597b9eb7f8e2e42d045393347","impliedFormat":1},{"version":"ad37fb4be61c1035b68f532b7220f4e8236cf245381ce3b90ac15449ecfe7305","impliedFormat":1},{"version":"93436bd74c66baba229bfefe1314d122c01f0d4c1d9e35081a0c4f0470ac1a6c","impliedFormat":1},{"version":"f974e4a06953682a2c15d5bd5114c0284d5abf8bc0fe4da25cb9159427b70072","impliedFormat":1},{"version":"50256e9c31318487f3752b7ac12ff365c8949953e04568009c8705db802776fb","impliedFormat":1},{"version":"7d73b24e7bf31dfb8a931ca6c4245f6bb0814dfae17e4b60c9e194a631fe5f7b","impliedFormat":1},{"version":"d130c5f73768de51402351d5dc7d1b36eaec980ca697846e53156e4ea9911476","impliedFormat":1},{"version":"413586add0cfe7369b64979d4ec2ed56c3f771c0667fbde1bf1f10063ede0b08","impliedFormat":1},{"version":"06472528e998d152375ad3bd8ebcb69ff4694fd8d2effaf60a9d9f25a37a097a","impliedFormat":1},{"version":"50b5bc34ce6b12eccb76214b51aadfa56572aa6cc79c2b9455cdbb3d6c76af1d","impliedFormat":1},{"version":"b7e16ef7f646a50991119b205794ebfd3a4d8f8e0f314981ebbe991639023d0e","impliedFormat":1},{"version":"a401617604fa1f6ce437b81689563dfdc377069e4c58465dbd8d16069aede0a5","impliedFormat":1},{"version":"6e9082e91370de5040e415cd9f24e595b490382e8c7402c4e938a8ce4bccc99f","impliedFormat":1},{"version":"8695dec09ad439b0ceef3776ea68a232e381135b516878f0901ed2ea114fd0fe","impliedFormat":1},{"version":"304b44b1e97dd4c94697c3313df89a578dca4930a104454c99863f1784a54357","impliedFormat":1},{"version":"d682336018141807fb602709e2d95a192828fcb8d5ba06dda3833a8ea98f69e3","impliedFormat":1},{"version":"6124e973eab8c52cabf3c07575204efc1784aca6b0a30c79eb85fe240a857efa","impliedFormat":1},{"version":"0d891735a21edc75df51f3eb995e18149e119d1ce22fd40db2b260c5960b914e","impliedFormat":1},{"version":"3b414b99a73171e1c4b7b7714e26b87d6c5cb03d200352da5342ab4088a54c85","impliedFormat":1},{"version":"4fbd3116e00ed3a6410499924b6403cc9367fdca303e34838129b328058ede40","impliedFormat":1},{"version":"b01bd582a6e41457bc56e6f0f9de4cb17f33f5f3843a7cf8210ac9c18472fb0f","impliedFormat":1},{"version":"0a437ae178f999b46b6153d79095b60c42c996bc0458c04955f1c996dc68b971","impliedFormat":1},{"version":"74b2a5e5197bd0f2e0077a1ea7c07455bbea67b87b0869d9786d55104006784f","impliedFormat":1},{"version":"4a7baeb6325920044f66c0f8e5e6f1f52e06e6d87588d837bdf44feb6f35c664","impliedFormat":1},{"version":"12d218a49dbe5655b911e6cc3c13b2c655e4c783471c3b0432137769c79e1b3c","impliedFormat":1},{"version":"7274fbffbd7c9589d8d0ffba68157237afd5cecff1e99881ea3399127e60572f","impliedFormat":1},{"version":"6b0fc04121360f752d196ba35b6567192f422d04a97b2840d7d85f8b79921c92","impliedFormat":1},{"version":"65a15fc47900787c0bd18b603afb98d33ede930bed1798fc984d5ebb78b26cf9","impliedFormat":1},{"version":"9d202701f6e0744adb6314d03d2eb8fc994798fc83d91b691b75b07626a69801","impliedFormat":1},{"version":"a365c4d3bed3be4e4e20793c999c51f5cd7e6792322f14650949d827fbcd170f","impliedFormat":1},{"version":"f374cb24e93e7798c4d9e83ff872fa52d2cdb36306392b840a6ddf46cb925cb6","impliedFormat":1},{"version":"42b81043b00ff27c6bd955aea0f6e741545f2265978bf364b614702b72a027ab","impliedFormat":1},{"version":"de9d2df7663e64e3a91bf495f315a7577e23ba088f2949d5ce9ec96f44fba37d","impliedFormat":1},{"version":"c7af78a2ea7cb1cd009cfb5bdb48cd0b03dad3b54f6da7aab615c2e9e9d570c5","impliedFormat":1},{"version":"1ee45496b5f8bdee6f7abc233355898e5bf9bd51255db65f5ff7ede617ca0027","impliedFormat":1},{"version":"97e5ccc7bb88419005cbdf812243a5b3186cdef81b608540acabe1be163fc3e4","affectsGlobalScope":true,"impliedFormat":1},{"version":"3fbdd025f9d4d820414417eeb4107ffa0078d454a033b506e22d3a23bc3d9c41","affectsGlobalScope":true,"impliedFormat":1},{"version":"a8f8e6ab2fa07b45251f403548b78eaf2022f3c2254df3dc186cb2671fe4996d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fa6c12a7c0f6b84d512f200690bfc74819e99efae69e4c95c4cd30f6884c526e","impliedFormat":1},{"version":"f1c32f9ce9c497da4dc215c3bc84b722ea02497d35f9134db3bb40a8d918b92b","impliedFormat":1},{"version":"b73c319af2cc3ef8f6421308a250f328836531ea3761823b4cabbd133047aefa","affectsGlobalScope":true,"impliedFormat":1},{"version":"e433b0337b8106909e7953015e8fa3f2d30797cea27141d1c5b135365bb975a6","impliedFormat":1},{"version":"9f9bb6755a8ce32d656ffa4763a8144aa4f274d6b69b59d7c32811031467216e","impliedFormat":1},{"version":"5c32bdfbd2d65e8fffbb9fbda04d7165e9181b08dad61154961852366deb7540","impliedFormat":1},{"version":"ddff7fc6edbdc5163a09e22bf8df7bef75f75369ebd7ecea95ba55c4386e2441","impliedFormat":1},{"version":"6b3453eebd474cc8acf6d759f1668e6ce7425a565e2996a20b644c72916ecf75","impliedFormat":1},{"version":"0c05e9842ec4f8b7bfebfd3ca61604bb8c914ba8da9b5337c4f25da427a005f2","impliedFormat":1},{"version":"89cd3444e389e42c56fd0d072afef31387e7f4107651afd2c03950f22dc36f77","impliedFormat":1},{"version":"7f2aa4d4989a82530aaac3f72b3dceca90e9c25bee0b1a327e8a08a1262435ad","impliedFormat":1},{"version":"e39a304f882598138a8022106cb8de332abbbb87f3fee71c5ca6b525c11c51fc","impliedFormat":1},{"version":"faed7a5153215dbd6ebe76dfdcc0af0cfe760f7362bed43284be544308b114cf","impliedFormat":1},{"version":"fcdf3e40e4a01b9a4b70931b8b51476b210c511924fcfe3f0dae19c4d52f1a54","impliedFormat":1},{"version":"345c4327b637d34a15aba4b7091eb068d6ab40a3dedaab9f00986253c9704e53","impliedFormat":1},{"version":"3a788c7fb7b1b1153d69a4d1d9e1d0dfbcf1127e703bdb02b6d12698e683d1fb","impliedFormat":1},{"version":"2e4f37ffe8862b14d8e24ae8763daaa8340c0df0b859d9a9733def0eee7562d9","impliedFormat":1},{"version":"d38530db0601215d6d767f280e3a3c54b2a83b709e8d9001acb6f61c67e965fc","impliedFormat":1},{"version":"6ac6715916fa75a1f7ebdfeacac09513b4d904b667d827b7535e84ff59679aff","impliedFormat":1},{"version":"4805f6161c2c8cefb8d3b8bd96a080c0fe8dbc9315f6ad2e53238f9a79e528a6","impliedFormat":1},{"version":"b83cb14474fa60c5f3ec660146b97d122f0735627f80d82dd03e8caa39b4388c","impliedFormat":1},{"version":"2b5b70d7782fe028487a80a1c214e67bd610532b9f978b78fa60f5b4a359f77e","impliedFormat":1},{"version":"7ee86fbb3754388e004de0ef9e6505485ddfb3be7640783d6d015711c03d302d","impliedFormat":1},{"version":"1a82deef4c1d39f6882f28d275cad4c01f907b9b39be9cbc472fcf2cf051e05b","impliedFormat":1},{"version":"162e071992b34bc36ca257d629547f93cb43728d6fe073ad18a237e4f7c52d7d","impliedFormat":1},{"version":"b73cbf0a72c8800cf8f96a9acfe94f3ad32ca71342a8908b8ae484d61113f647","impliedFormat":1},{"version":"bae6dd176832f6423966647382c0d7ba9e63f8c167522f09a982f086cd4e8b23","impliedFormat":1},{"version":"20865ac316b8893c1a0cc383ccfc1801443fbcc2a7255be166cf90d03fac88c9","impliedFormat":1},{"version":"c9958eb32126a3843deedda8c22fb97024aa5d6dd588b90af2d7f2bfac540f23","impliedFormat":1},{"version":"461d0ad8ae5f2ff981778af912ba71b37a8426a33301daa00f21c6ccb27f8156","impliedFormat":1},{"version":"e927c2c13c4eaf0a7f17e6022eee8519eb29ef42c4c13a31e81a611ab8c95577","impliedFormat":1},{"version":"fcafff163ca5e66d3b87126e756e1b6dfa8c526aa9cd2a2b0a9da837d81bbd72","impliedFormat":1},{"version":"70246ad95ad8a22bdfe806cb5d383a26c0c6e58e7207ab9c431f1cb175aca657","impliedFormat":1},{"version":"f00f3aa5d64ff46e600648b55a79dcd1333458f7a10da2ed594d9f0a44b76d0b","impliedFormat":1},{"version":"772d8d5eb158b6c92412c03228bd9902ccb1457d7a705b8129814a5d1a6308fc","impliedFormat":1},{"version":"802e797bcab5663b2c9f63f51bdf67eff7c41bc64c0fd65e6da3e7941359e2f7","impliedFormat":1},{"version":"8b4327413e5af38cd8cb97c59f48c3c866015d5d642f28518e3a891c469f240e","impliedFormat":1},{"version":"7e6ac205dcb9714f708354fd863bffa45cee90740706cc64b3b39b23ebb84744","impliedFormat":1},{"version":"61dc6e3ac78d64aa864eedd0a208b97b5887cc99c5ba65c03287bf57d83b1eb9","impliedFormat":1},{"version":"4b20fcf10a5413680e39f5666464859fc56b1003e7dfe2405ced82371ebd49b6","impliedFormat":1},{"version":"c06ef3b2569b1c1ad99fcd7fe5fba8d466e2619da5375dfa940a94e0feea899b","impliedFormat":1},{"version":"f7d628893c9fa52ba3ab01bcb5e79191636c4331ee5667ecc6373cbccff8ae12","impliedFormat":1},{"version":"1d879125d1ec570bf04bc1f362fdbe0cb538315c7ac4bcfcdf0c1e9670846aa6","impliedFormat":1},{"version":"8baa8dbdc393e3c6b26e8e31384b938756ce2effdc126648d43e58291ce9869b","impliedFormat":1},{"version":"933aee906d42ea2c53b6892192a8127745f2ec81a90695df4024308ba35a8ff4","impliedFormat":1},{"version":"d663134457d8d669ae0df34eabd57028bddc04fc444c4bc04bc5215afc91e1f4","impliedFormat":1},{"version":"985153f0deb9b4391110331a2f0c114019dbea90cba5ca68a4107700796e0d75","impliedFormat":1},{"version":"a3e3f0efcae272ab8ee3298e4e819f7d9dd9ff411101f45444877e77cfeca9a4","impliedFormat":1},{"version":"43e96a3d5d1411ab40ba2f61d6a3192e58177bcf3b133a80ad2a16591611726d","impliedFormat":1},{"version":"58659b06d33fa430bee1105b75cf876c0a35b2567207487c8578aec51ca2d977","impliedFormat":1},{"version":"71d9eb4c4e99456b78ae182fb20a5dfc20eb1667f091dbb9335b3c017dd1c783","impliedFormat":1},{"version":"cfa846a7b7847a1d973605fbb8c91f47f3a0f0643c18ac05c47077ebc72e71c7","impliedFormat":1},{"version":"30e6520444df1a004f46fdc8096f3fe06f7bbd93d09c53ada9dcdde59919ccca","impliedFormat":1},{"version":"6c800b281b9e89e69165fd11536195488de3ff53004e55905e6c0059a2d8591e","impliedFormat":1},{"version":"7d4254b4c6c67a29d5e7f65e67d72540480ac2cfb041ca484847f5ae70480b62","impliedFormat":1},{"version":"a58beefce74db00dbb60eb5a4bb0c6726fb94c7797c721f629142c0ae9c94306","impliedFormat":1},{"version":"41eeb453ccb75c5b2c3abef97adbbd741bd7e9112a2510e12f03f646dc9ad13d","impliedFormat":1},{"version":"502fa5863df08b806dbf33c54bee8c19f7e2ad466785c0fc35465d7c5ff80995","impliedFormat":1},{"version":"c91a2d08601a1547ffef326201be26db94356f38693bb18db622ae5e9b3d7c92","impliedFormat":1},{"version":"888cda0fa66d7f74e985a3f7b1af1f64b8ff03eb3d5e80d051c3cbdeb7f32ab7","impliedFormat":1},{"version":"60681e13f3545be5e9477acb752b741eae6eaf4cc01658a25ec05bff8b82a2ef","impliedFormat":1},{"version":"8b4b8ebc2d99ae651c5c4169ee8b24e2b0e02a3dfaef84e357d677b663c18fdf","impliedFormat":1},{"version":"a57b1802794433adec9ff3fed12aa79d671faed86c49b09e02e1ac41b4f1d33a","impliedFormat":1},{"version":"ad10d4f0517599cdeca7755b930f148804e3e0e5b5a3847adce0f1f71bbccd74","impliedFormat":1},{"version":"1042064ece5bb47d6aba91648fbe0635c17c600ebdf567588b4ca715602f0a9d","impliedFormat":1},{"version":"c49469a5349b3cc1965710b5b0f98ed6c028686aa8450bcb3796728873eb923e","impliedFormat":1},{"version":"4a889f2c763edb4d55cb624257272ac10d04a1cad2ed2948b10ed4a7fda2a428","impliedFormat":1},{"version":"7bb79aa2fead87d9d56294ef71e056487e848d7b550c9a367523ee5416c44cfa","impliedFormat":1},{"version":"d88ea80a6447d7391f52352ec97e56b52ebec934a4a4af6e2464cfd8b39c3ba8","impliedFormat":1},{"version":"55095860901097726220b6923e35a812afdd49242a1246d7b0942ee7eb34c6e4","impliedFormat":1},{"version":"96171c03c2e7f314d66d38acd581f9667439845865b7f85da8df598ff9617476","impliedFormat":1},{"version":"27ff4196654e6373c9af16b6165120e2dd2169f9ad6abb5c935af5abd8c7938c","impliedFormat":1},{"version":"bb8f2dbc03533abca2066ce4655c119bff353dd4514375beb93c08590c03e023","impliedFormat":1},{"version":"d193c8a86144b3a87b22bc1f5534b9c3e0f5a187873ec337c289a183973a58fe","impliedFormat":1},{"version":"1a6e6ba8a07b74e3ad237717c0299d453f9ceb795dbc2f697d1f2dd07cb782d2","impliedFormat":1},{"version":"58d70c38037fc0f949243388ff7ae20cf43321107152f14a9d36ca79311e0ada","impliedFormat":1},{"version":"f56bdc6884648806d34bc66d31cdb787c4718d04105ce2cd88535db214631f82","impliedFormat":1},{"version":"190da5eac6478d61ab9731ab2146fbc0164af2117a363013249b7e7992f1cccb","impliedFormat":1},{"version":"01479d9d5a5dda16d529b91811375187f61a06e74be294a35ecce77e0b9e8d6c","impliedFormat":1},{"version":"49f95e989b4632c6c2a578cc0078ee19a5831832d79cc59abecf5160ea71abad","impliedFormat":1},{"version":"9666533332f26e8995e4d6fe472bdeec9f15d405693723e6497bf94120c566c8","impliedFormat":1},{"version":"ce0df82a9ae6f914ba08409d4d883983cc08e6d59eb2df02d8e4d68309e7848b","impliedFormat":1},{"version":"796273b2edc72e78a04e86d7c58ae94d370ab93a0ddf40b1aa85a37a1c29ecd7","impliedFormat":1},{"version":"5df15a69187d737d6d8d066e189ae4f97e41f4d53712a46b2710ff9f8563ec9f","impliedFormat":1},{"version":"1a4dc28334a926d90ba6a2d811ba0ff6c22775fcc13679521f034c124269fd40","impliedFormat":1},{"version":"f05315ff85714f0b87cc0b54bcd3dde2716e5a6b99aedcc19cad02bf2403e08c","impliedFormat":1},{"version":"8a8c64dafaba11c806efa56f5c69f611276471bef80a1db1f71316ec4168acef","impliedFormat":1},{"version":"43ba4f2fa8c698f5c304d21a3ef596741e8e85a810b7c1f9b692653791d8d97a","impliedFormat":1},{"version":"5fad3b31fc17a5bc58095118a8b160f5260964787c52e7eb51e3d4fcf5d4a6f0","impliedFormat":1},{"version":"72105519d0390262cf0abe84cf41c926ade0ff475d35eb21307b2f94de985778","impliedFormat":1},{"version":"d0a4cac61fa080f2be5ebb68b82726be835689b35994ba0e22e3ed4d2bc45e3b","impliedFormat":1},{"version":"c857e0aae3f5f444abd791ec81206020fbcc1223e187316677e026d1c1d6fe08","impliedFormat":1},{"version":"ccf6dd45b708fb74ba9ed0f2478d4eb9195c9dfef0ff83a6092fa3cf2ff53b4f","impliedFormat":1},{"version":"2d7db1d73456e8c5075387d4240c29a2a900847f9c1bff106a2e490da8fbd457","impliedFormat":1},{"version":"2b15c805f48e4e970f8ec0b1915f22d13ca6212375e8987663e2ef5f0205e832","impliedFormat":1},{"version":"205a31b31beb7be73b8df18fcc43109cbc31f398950190a0967afc7a12cb478c","impliedFormat":1},{"version":"8fca3039857709484e5893c05c1f9126ab7451fa6c29e19bb8c2411a2e937345","impliedFormat":1},{"version":"35069c2c417bd7443ae7c7cafd1de02f665bf015479fec998985ffbbf500628c","impliedFormat":1},{"version":"dba6c7006e14a98ec82999c6f89fbbbfd1c642f41db148535f3b77b8018829b8","impliedFormat":1},{"version":"7f897b285f22a57a5c4dc14a27da2747c01084a542b4d90d33897216dceeea2e","impliedFormat":1},{"version":"7e0b7f91c5ab6e33f511efc640d36e6f933510b11be24f98836a20a2dc914c2d","impliedFormat":1},{"version":"045b752f44bf9bbdcaffd882424ab0e15cb8d11fa94e1448942e338c8ef19fba","impliedFormat":1},{"version":"2894c56cad581928bb37607810af011764a2f511f575d28c9f4af0f2ef02d1ab","impliedFormat":1},{"version":"0a72186f94215d020cb386f7dca81d7495ab6c17066eb07d0f44a5bf33c1b21a","impliedFormat":1},{"version":"d96b39301d0ded3f1a27b47759676a33a02f6f5049bfcbde81e533fd10f50dcb","impliedFormat":1},{"version":"2ded4f930d6abfaa0625cf55e58f565b7cbd4ab5b574dd2cb19f0a83a2f0be8b","impliedFormat":1},{"version":"0aedb02516baf3e66b2c1db9fef50666d6ed257edac0f866ea32f1aa05aa474f","impliedFormat":1},{"version":"ca0f4d9068d652bad47e326cf6ba424ac71ab866e44b24ddb6c2bd82d129586a","affectsGlobalScope":true,"impliedFormat":1},{"version":"04d36005fcbeac741ac50c421181f4e0316d57d148d37cc321a8ea285472462b","impliedFormat":1},{"version":"9e2739b32f741859263fdba0244c194ca8e96da49b430377930b8f721d77c000","impliedFormat":1},{"version":"56ccb49443bfb72e5952f7012f0de1a8679f9f75fc93a5c1ac0bafb28725fc5f","impliedFormat":1},{"version":"d90b9f1520366d713a73bd30c5a9eb0040d0fb6076aff370796bc776fd705943","impliedFormat":1},{"version":"05321b823dd3781d0b6aac8700bfdc0c9181d56479fe52ba6a40c9196fd661a8","impliedFormat":1},{"version":"736a8712572e21ee73337055ce15edb08142fc0f59cd5410af4466d04beff0f9","affectsGlobalScope":true,"impliedFormat":1},{"version":"bef86adb77316505c6b471da1d9b8c9e428867c2566270e8894d4d773a1c4dc2","impliedFormat":1},{"version":"a46dba563f70f32f9e45ae015f3de979225f668075d7a427f874e0f6db584991","impliedFormat":1},{"version":"6ac6715916fa75a1f7ebdfeacac09513b4d904b667d827b7535e84ff59679aff","impliedFormat":1},{"version":"2652448ac55a2010a1f71dd141f828b682298d39728f9871e1cdf8696ef443fd","impliedFormat":1},{"version":"02c4fc9e6bb27545fa021f6056e88ff5fdf10d9d9f1467f1d10536c6e749ac50","impliedFormat":1},{"version":"120599fd965257b1f4d0ff794bc696162832d9d8467224f4665f713a3119078b","impliedFormat":1},{"version":"5433f33b0a20300cca35d2f229a7fc20b0e8477c44be2affeb21cb464af60c76","impliedFormat":1},{"version":"db036c56f79186da50af66511d37d9fe77fa6793381927292d17f81f787bb195","impliedFormat":1},{"version":"bd4131091b773973ca5d2326c60b789ab1f5e02d8843b3587effe6e1ea7c9d86","impliedFormat":1},{"version":"c7f6485931085bf010fbaf46880a9b9ec1a285ad9dc8c695a9e936f5a48f34b4","impliedFormat":1},{"version":"14f6b927888a1112d662877a5966b05ac1bf7ed25d6c84386db4c23c95a5363b","impliedFormat":1},{"version":"6ac6715916fa75a1f7ebdfeacac09513b4d904b667d827b7535e84ff59679aff","impliedFormat":1},{"version":"622694a8522b46f6310c2a9b5d2530dde1e2854cb5829354e6d1ff8f371cf469","impliedFormat":1},{"version":"d24ff95760ea2dfcc7c57d0e269356984e7046b7e0b745c80fea71559f15bdd8","impliedFormat":1},{"version":"a9e6c0ff3f8186fccd05752cf75fc94e147c02645087ac6de5cc16403323d870","impliedFormat":1},{"version":"49c346823ba6d4b12278c12c977fb3a31c06b9ca719015978cb145eb86da1c61","impliedFormat":1},{"version":"bfac6e50eaa7e73bb66b7e052c38fdc8ccfc8dbde2777648642af33cf349f7f1","impliedFormat":1},{"version":"92f7c1a4da7fbfd67a2228d1687d5c2e1faa0ba865a94d3550a3941d7527a45d","impliedFormat":1},{"version":"f53b120213a9289d9a26f5af90c4c686dd71d91487a0aa5451a38366c70dc64b","impliedFormat":1},{"version":"83fe880c090afe485a5c02262c0b7cdd76a299a50c48d9bde02be8e908fb4ae6","impliedFormat":1},{"version":"13c1b657932e827a7ed510395d94fc8b743b9d053ab95b7cd829b2bc46fb06db","impliedFormat":1},{"version":"57d67b72e06059adc5e9454de26bbfe567d412b962a501d263c75c2db430f40e","impliedFormat":1},{"version":"6511e4503cf74c469c60aafd6589e4d14d5eb0a25f9bf043dcbecdf65f261972","impliedFormat":1},{"version":"078131f3a722a8ad3fc0b724cd3497176513cdcb41c80f96a3acbda2a143b58e","impliedFormat":1},{"version":"8c70ddc0c22d85e56011d49fddfaae3405eb53d47b59327b9dd589e82df672e7","impliedFormat":1},{"version":"a67b87d0281c97dfc1197ef28dfe397fc2c865ccd41f7e32b53f647184cc7307","impliedFormat":1},{"version":"771ffb773f1ddd562492a6b9aaca648192ac3f056f0e1d997678ff97dbb6bf9b","impliedFormat":1},{"version":"232f70c0cf2b432f3a6e56a8dc3417103eb162292a9fd376d51a3a9ea5fbbf6f","impliedFormat":1},{"version":"9e155d2255348d950b1f65643fb26c0f14f5109daf8bd9ee24a866ad0a743648","affectsGlobalScope":true,"impliedFormat":1},{"version":"0b103e9abfe82d14c0ad06a55d9f91d6747154ef7cacc73cf27ecad2bfb3afcf","impliedFormat":1},{"version":"7a883e9c84e720810f86ef4388f54938a65caa0f4d181a64e9255e847a7c9f51","impliedFormat":1},{"version":"a0ba218ac1baa3da0d5d9c1ec1a7c2f8676c284e6f5b920d6d049b13fa267377","impliedFormat":1},{"version":"8a0e762ceb20c7e72504feef83d709468a70af4abccb304f32d6b9bac1129b2c","impliedFormat":1},{"version":"d408d6f32de8d1aba2ff4a20f1aa6a6edd7d92c997f63b90f8ad3f9017cf5e46","impliedFormat":1},{"version":"9252d498a77517aab5d8d4b5eb9d71e4b225bbc7123df9713e08181de63180f6","impliedFormat":1},{"version":"221e915caef37c5cbaabd4946418f97dcc20591469e260732b31008321024dd8","impliedFormat":1},{"version":"4aa42ce8383b45823b3a1d3811c0fdd5f939f90254bc4874124393febbaf89f6","impliedFormat":1},{"version":"af48e58339188d5737b608d41411a9c054685413d8ae88b8c1d0d9bfabdf6e7e","impliedFormat":1},{"version":"371bf6127c1d427836de95197155132501cb6b69ef8709176ce6e0b85d059264","impliedFormat":1},{"version":"2bafd700e617d3693d568e972d02b92224b514781f542f70d497a8fdf92d52a2","affectsGlobalScope":true,"impliedFormat":1},{"version":"3dc14e1ab45e497e5d5e4295271d54ff689aeae00b4277979fdd10fa563540ae","impliedFormat":1},{"version":"ed3a7b216e25d6c4d0fe4f6dbaa3b996151162b4701d0c336b6bda243f049391","signature":"2185ba853f7a302f590c0b4495c4b47b9aa2b2c202d186a7febb147f848462f2"},{"version":"c26f1780ab9481a5c191fea3bff7519e1d76c59def8f9aef2bfd4a0c1a3594d8","signature":"8fc7af9bc14f0610a2b2b26dcac75dcb4c7675337af0472f4c1b8e49857b1eb5"},{"version":"bc9ee0192f056b3d5527bcd78dc3f9e527a9ba2bdc0a2c296fbc9027147df4b2","impliedFormat":1},{"version":"330896c1a2b9693edd617be24fbf9e5895d6e18c7955d6c08f028f272b37314d","impliedFormat":1},{"version":"1d9c0a9a6df4e8f29dc84c25c5aa0bb1da5456ebede7a03e03df08bb8b27bae6","impliedFormat":1},{"version":"84380af21da938a567c65ef95aefb5354f676368ee1a1cbb4cae81604a4c7d17","impliedFormat":1},{"version":"1af3e1f2a5d1332e136f8b0b95c0e6c0a02aaabd5092b36b64f3042a03debf28","impliedFormat":1},{"version":"30d8da250766efa99490fc02801047c2c6d72dd0da1bba6581c7e80d1d8842a4","impliedFormat":1},{"version":"03566202f5553bd2d9de22dfab0c61aa163cabb64f0223c08431fb3fc8f70280","impliedFormat":1},{"version":"4c0a1233155afb94bd4d7518c75c84f98567cd5f13fc215d258de196cdb40d91","impliedFormat":1},{"version":"e7765aa8bcb74a38b3230d212b4547686eb9796621ffb4367a104451c3f9614f","impliedFormat":1},{"version":"1de80059b8078ea5749941c9f863aa970b4735bdbb003be4925c853a8b6b4450","impliedFormat":1},{"version":"db2a1452a68d8318f7eb5c573a27d2c8f6c1c2b19c45acf77791eb182bd3e036","signature":"79622b9fdd79a0aa7440c6178ff9c107f33cb50318655b5f486f17392462e290"},{"version":"b1fb6472fe7c0ab1f9ffb24c0b2a800320d2711bd44f808385f7270defced5ce","signature":"0b835993149091cf091e501b0e0071527e1842371901ca4473dc2b0630eca867"},{"version":"4f81bb69e480225abe563ab5276366c7fb2dd1b7359083801d34791e8c8ccb9b","signature":"0db4d4c01cdb8d8ad8bfbe497fcbd2d5268ffa9e10c0be5d084d3788524bd796"},{"version":"23005486e1e4b527a23df1771f30d9d4dee5a2f59d8e3b661e88e363d7f8a37d","signature":"a1681e2f939f053d921acc0ca4bf6eda1fb5ff37e95ce7ef77a6221b566e94a4"},{"version":"b6c1f64158da02580f55e8a2728eda6805f79419aed46a930f43e68ad66a38fc","impliedFormat":1},{"version":"cdf21eee8007e339b1b9945abf4a7b44930b1d695cc528459e68a3adc39a622e","impliedFormat":1},"8b0f3d3864feacf987e17523ecd444fc867c268667473cfc8e25dfe9b3046baf",{"version":"ff863d17c6c659440f7c5c536e4db7762d8c2565547b2608f36b798a743606ca","impliedFormat":1},{"version":"5412ad0043cd60d1f1406fc12cb4fb987e9a734decbdd4db6f6acf71791e36fe","impliedFormat":1},{"version":"ad036a85efcd9e5b4f7dd5c1a7362c8478f9a3b6c3554654ca24a29aa850a9c5","impliedFormat":1},{"version":"fedebeae32c5cdd1a85b4e0504a01996e4a8adf3dfa72876920d3dd6e42978e7","impliedFormat":1},"ba1ffbcecaa4f42eb94638201903d6ec270b9b5cbd2903da5b37188c0d202f94",{"version":"1a51a0ad117ae0bb48d0014197a09c0f789a58ffb1827ef9db6a7b2728ec8da5","impliedFormat":1},{"version":"67864f1bd54798127fff2b44c81f7502f8b99662c05c7c5eee6281706213a02a","signature":"ad150a824182957430b50844e913490e2309fcc43382448fdc73f4d780e0400f"},{"version":"2349270bead5df0c457616eefb082df45edc1a42d3c8179b5005fc9b74aa8e98","signature":"f90a6be27edd1adf68afa60910fdcd9fb2a0c41b494d25f96d1045bb7d02dd4c"},"983ea32eb5932ad7759c4660dd5fe39d0fdbf0eb7c50a543b820827042e6f7ba",{"version":"89121c1bf2990f5219bfd802a3e7fc557de447c62058d6af68d6b6348d64499a","impliedFormat":1},{"version":"79b4369233a12c6fa4a07301ecb7085802c98f3a77cf9ab97eee27e1656f82e6","impliedFormat":1},{"version":"2b37ba54ec067598bf912d56fcb81f6d8ad86a045c757e79440bdef97b52fe1b","impliedFormat":99},{"version":"1bc9dd465634109668661f998485a32da369755d9f32b5a55ed64a525566c94b","impliedFormat":99},{"version":"5702b3c2f5d248290ed99419d77ca1cc3e6c29db5847172377659c50e6303768","impliedFormat":99},{"version":"9764b2eb5b4fc0b8951468fb3dbd6cd922d7752343ef5fbf1a7cd3dfcd54a75e","impliedFormat":99},{"version":"1fc2d3fe8f31c52c802c4dee6c0157c5a1d1f6be44ece83c49174e316cf931ad","impliedFormat":99},{"version":"dc4aae103a0c812121d9db1f7a5ea98231801ed405bf577d1c9c46a893177e36","impliedFormat":99},{"version":"106d3f40907ba68d2ad8ce143a68358bad476e1cc4a5c710c11c7dbaac878308","impliedFormat":99},{"version":"42ad582d92b058b88570d5be95393cf0a6c09a29ba9aa44609465b41d39d2534","impliedFormat":99},{"version":"36e051a1e0d2f2a808dbb164d846be09b5d98e8b782b37922a3b75f57ee66698","impliedFormat":99},{"version":"d4a22007b481fe2a2e6bfd3a42c00cd62d41edb36d30fc4697df2692e9891fc8","impliedFormat":1},{"version":"9d62e577adb05f5aafed137e747b3a1b26f8dce7b20f350d22f6fb3255a3c0ed","impliedFormat":99},{"version":"7ed92bcef308af6e3925b3b61c83ad6157a03ff15c7412cf325f24042fe5d363","impliedFormat":99},{"version":"3da9062d0c762c002b7ab88187d72e1978c0224db61832221edc8f4eb0b54414","impliedFormat":99},{"version":"84dbf6af43b0b5ad42c01e332fddf4c690038248140d7c4ccb74a424e9226d4d","impliedFormat":99},{"version":"00884fc0ea3731a9ffecffcde8b32e181b20e1039977a8ae93ae5bce3ab3d245","impliedFormat":99},{"version":"0bd8b6493d9bf244afe133ccb52d32d293de8d08d15437cca2089beed5f5a6b5","impliedFormat":99},{"version":"7fc3099c95752c6e7b0ea215915464c7203e835fcd6878210f2ce4f0dcbbfe67","impliedFormat":99},{"version":"83b5499dbc74ee1add93aef162f7d44b769dcef3a74afb5f80c70f9a5ce77cc0","impliedFormat":99},{"version":"8bf8b772b38fc4da471248320f49a2219c363a9669938c720e0e0a5a2531eabf","impliedFormat":99},{"version":"7da6e8c98eacf084c961e039255f7ebb9d97a43377e7eee2695cb77fec640c66","impliedFormat":99},{"version":"0b5b064c5145a48cd3e2a5d9528c63f49bac55aa4bc5f5b4e68a160066401375","impliedFormat":99},{"version":"702ff40d28906c05d9d60b23e646c2577ad1cc7cd177d5c0791255a2eab13c07","impliedFormat":99},{"version":"49ff0f30d6e757d865ae0b422103f42737234e624815eee2b7f523240aa0c8f8","impliedFormat":99},{"version":"0389aacf0ffd49a877a46814a21a4770f33fc33e99951a1584de866c8e971993","impliedFormat":99},{"version":"5cb7a51cf151c1056b61f078cf80b811e19787d1f29a33a2a6e4bf00334bbc10","impliedFormat":99},{"version":"215aa8915d707f97ad511b7abbf7eda51d3a7048e9a656955cf0dda767ae7db0","impliedFormat":99},{"version":"0d689a717fbef83da07ab4de33f83db5cbcec9bc4e3b04edb106c538a50a0210","impliedFormat":99},{"version":"d00bc73e8d1f4137f2f6238bb3aa2bbdad8573658cc95920e2cdfa7ad491a8d8","impliedFormat":99},{"version":"e3667aa9f5245d1a99fb4a2a1ac48daf1429040c29cc0d262e3843f9ae3b9d65","impliedFormat":99},{"version":"08c0f3222b50ec2b534be1a59392660102549129246425d33ec43f35aa051dc6","impliedFormat":99},{"version":"612fb780f312e6bb3c40f3cb2b827ea7455b922198f651c799d844fdd44cf2e9","impliedFormat":99},{"version":"bcd98e8f44bc76e4fcb41e4b1a8bab648161a942653a3d1f261775a891d258de","impliedFormat":99},{"version":"5abaa19aa91bb4f63ea58154ada5d021e33b1f39aa026ca56eb95f13b12c497a","impliedFormat":99},{"version":"356a18b0c50f297fee148f4a2c64b0affd352cbd6f21c7b6bfa569d30622c693","impliedFormat":99},{"version":"5876027679fd5257b92eb55d62efee634358012b9f25c5711ad02b918e52c837","impliedFormat":99},{"version":"f5622423ee5642dcf2b92d71b37967b458e8df3cf90b468675ff9fddaa532a0f","impliedFormat":99},{"version":"70265bc75baf24ec0d61f12517b91ea711732b9c349fceef71a446c4ff4a247a","impliedFormat":99},{"version":"41a4b2454b2d3a13b4fc4ec57d6a0a639127369f87da8f28037943019705d619","impliedFormat":99},{"version":"e9b82ac7186490d18dffaafda695f5d975dfee549096c0bf883387a8b6c3ab5a","impliedFormat":99},{"version":"eed9b5f5a6998abe0b408db4b8847a46eb401c9924ddc5b24b1cede3ebf4ee8c","impliedFormat":99},{"version":"af85fde8986fdad68e96e871ae2d5278adaf2922d9879043b9313b18fae920b1","impliedFormat":99},{"version":"8a1f5d2f7cf4bf851cc9baae82056c3316d3c6d29561df28aff525556095554b","impliedFormat":99},{"version":"a5dbd4c9941b614526619bad31047ddd5f504ec4cdad88d6117b549faef34dd3","impliedFormat":99},{"version":"e87873f06fa094e76ac439c7756b264f3c76a41deb8bc7d39c1d30e0f03ef547","impliedFormat":99},{"version":"488861dc4f870c77c2f2f72c1f27a63fa2e81106f308e3fc345581938928f925","impliedFormat":99},{"version":"eff73acfacda1d3e62bb3cb5bc7200bb0257ea0c8857ce45b3fee5bfec38ad12","impliedFormat":99},{"version":"aff4ac6e11917a051b91edbb9a18735fe56bcfd8b1802ea9dbfb394ad8f6ce8e","impliedFormat":99},{"version":"1f68aed2648740ac69c6634c112fcaae4252fbae11379d6eabee09c0fbf00286","impliedFormat":99},{"version":"5e7c2eff249b4a86fb31e6b15e4353c3ddd5c8aefc253f4c3e4d9caeb4a739d4","impliedFormat":99},{"version":"14c8d1819e24a0ccb0aa64f85c61a6436c403eaf44c0e733cdaf1780fed5ec9f","impliedFormat":99},{"version":"011423c04bfafb915ceb4faec12ea882d60acbe482780a667fa5095796c320f8","impliedFormat":99},{"version":"f8eb2909590ec619643841ead2fc4b4b183fbd859848ef051295d35fef9d8469","impliedFormat":99},{"version":"fe784567dd721417e2c4c7c1d7306f4b8611a4f232f5b7ce734382cf34b417d2","impliedFormat":99},{"version":"45d1e8fb4fd3e265b15f5a77866a8e21870eae4c69c473c33289a4b971e93704","impliedFormat":99},{"version":"cd40919f70c875ca07ecc5431cc740e366c008bcbe08ba14b8c78353fb4680df","impliedFormat":99},{"version":"ddfd9196f1f83997873bbe958ce99123f11b062f8309fc09d9c9667b2c284391","impliedFormat":99},{"version":"2999ba314a310f6a333199848166d008d088c6e36d090cbdcc69db67d8ae3154","impliedFormat":99},{"version":"62c1e573cd595d3204dfc02b96eba623020b181d2aa3ce6a33e030bc83bebb41","impliedFormat":99},{"version":"ca1616999d6ded0160fea978088a57df492b6c3f8c457a5879837a7e68d69033","impliedFormat":99},{"version":"835e3d95251bbc48918bb874768c13b8986b87ea60471ad8eceb6e38ddd8845e","impliedFormat":99},{"version":"de54e18f04dbcc892a4b4241b9e4c233cfce9be02ac5f43a631bbc25f479cd84","impliedFormat":99},{"version":"453fb9934e71eb8b52347e581b36c01d7751121a75a5cd1a96e3237e3fd9fc7e","impliedFormat":99},{"version":"bc1a1d0eba489e3eb5c2a4aa8cd986c700692b07a76a60b73a3c31e52c7ef983","impliedFormat":99},{"version":"4098e612efd242b5e203c5c0b9afbf7473209905ab2830598be5c7b3942643d0","impliedFormat":99},{"version":"28410cfb9a798bd7d0327fbf0afd4c4038799b1d6a3f86116dc972e31156b6d2","impliedFormat":99},{"version":"514ae9be6724e2164eb38f2a903ef56cf1d0e6ddb62d0d40f155f32d1317c116","impliedFormat":99},{"version":"970e5e94a9071fd5b5c41e2710c0ef7d73e7f7732911681592669e3f7bd06308","impliedFormat":99},{"version":"491fb8b0e0aef777cec1339cb8f5a1a599ed4973ee22a2f02812dd0f48bd78c1","impliedFormat":99},{"version":"6acf0b3018881977d2cfe4382ac3e3db7e103904c4b634be908f1ade06eb302d","impliedFormat":99},{"version":"2dbb2e03b4b7f6524ad5683e7b5aa2e6aef9c83cab1678afd8467fde6d5a3a92","impliedFormat":99},{"version":"135b12824cd5e495ea0a8f7e29aba52e1adb4581bb1e279fb179304ba60c0a44","impliedFormat":99},{"version":"e4c784392051f4bbb80304d3a909da18c98bc58b093456a09b3e3a1b7b10937f","impliedFormat":99},{"version":"2e87c3480512f057f2e7f44f6498b7e3677196e84e0884618fc9e8b6d6228bed","impliedFormat":99},{"version":"66984309d771b6b085e3369227077da237b40e798570f0a2ddbfea383db39812","impliedFormat":99},{"version":"e41be8943835ad083a4f8a558bd2a89b7fe39619ed99f1880187c75e231d033e","impliedFormat":99},{"version":"260558fff7344e4985cfc78472ae58cbc2487e406d23c1ddaf4d484618ce4cfd","impliedFormat":99},{"version":"413d50bc66826f899c842524e5f50f42d45c8cb3b26fd478a62f26ac8da3d90e","impliedFormat":99},{"version":"d9083e10a491b6f8291c7265555ba0e9d599d1f76282812c399ab7639019f365","impliedFormat":99},{"version":"09de774ebab62974edad71cb3c7c6fa786a3fda2644e6473392bd4b600a9c79c","impliedFormat":99},{"version":"e8bcc823792be321f581fcdd8d0f2639d417894e67604d884c38b699284a1a2a","impliedFormat":99},{"version":"7c99839c518dcf5ab8a741a97c190f0703c0a71e30c6d44f0b7921b0deec9f67","impliedFormat":99},{"version":"44c14e4da99cd71f9fe4e415756585cec74b9e7dc47478a837d5bedfb7db1e04","impliedFormat":99},{"version":"1f46ee2b76d9ae1159deb43d14279d04bcebcb9b75de4012b14b1f7486e36f82","impliedFormat":99},{"version":"2838028b54b421306639f4419606306b940a5c5fcc5bc485954cbb0ab84d90f4","impliedFormat":99},{"version":"7116e0399952e03afe9749a77ceaca29b0e1950989375066a9ddc9cb0b7dd252","impliedFormat":99},{"version":"142f64fa61b78762d31c1c8206fb4dbd788ef992219a2d2f9a3f92b9420715b5","signature":"1391749917c3d4295bae0f950222f75cdc739e43249e8992c649ae6a41fa4741"},{"version":"a422105fe56de3c57c74878eeaf83bdf8cc837f6949434b1484843c6ea977b6b","signature":"7ca07d3bd60b71acc03d320edd3cebe239aa087dd8ad97785b3671b3e0f1dfdf"},"d11abce417cfcde6e3a05891468269c676cd54f6643c4c4fb7404276253e245b",{"version":"e85d04f57b46201ddc8ba238a84322432a4803a5d65e0bbd8b3b4f05345edd51","impliedFormat":1},{"version":"431c146ffe6397bb4a2cfb70526f47d29c89ac43ada06ed18fb573cbc2267fa5","signature":"d8e1f5658882d42390e2f83013ead1b3ee373c1ee1687ef4c616ffef607a634f"},{"version":"e19a4711598cc465becc40c8e6d5c31cc5a66fcbd618d3cd15cb5896b87f7406","signature":"bfda5404e2732bb1e45847b4099fe827d378980314dd84d566af0c61a9618b8a"},"aff9633a737864a1f6bdc08b462340beb4856fc5536bd31bf51ad412a36a6596","cff019d011de1f8a7e5200e417360a74e982fa3636213dc87a225dd01220dcb9",{"version":"7a1dd1e9c8bf5e23129495b10718b280340c7500570e0cfe5cffcdee51e13e48","impliedFormat":1},{"version":"95bf7c19205d7a4c92f1699dae58e217bb18f324276dfe06b1c2e312c7c75cf2","impliedFormat":99},{"version":"97e0e5ed7aac8aed58bb64645107da954bc374437350879345cf0194652dad2e","signature":"b16a13c49f292dc806a22158bac80da5bacf061873f851748d980578eccee98a"},{"version":"bce9fe31afd7572dd82625302fa01f5bdc1dd7960747e179470026d8b829a4f7","signature":"71da0e5b028c295470667034e39dc0fbc4263e128157c51086460edbbc808f57"},"59ef9bb2ed3a26b0732fc6b4d46e611c3e98aa9b1118831504f197e1a0b90298","a56f4edf21afda9c241f23efee5a5f5ce648fdead5df3c3f21fc0dd8d142c1b4",{"version":"ae77d81a5541a8abb938a0efedf9ac4bea36fb3a24cc28cfa11c598863aba571","impliedFormat":1},{"version":"3cfb7c0c642b19fb75132154040bb7cd840f0002f9955b14154e69611b9b3f81","impliedFormat":1},{"version":"8387ec1601cf6b8948672537cf8d430431ba0d87b1f9537b4597c1ab8d3ade5b","impliedFormat":1},{"version":"d16f1c460b1ca9158e030fdf3641e1de11135e0c7169d3e8cf17cc4cc35d5e64","impliedFormat":1},{"version":"a934063af84f8117b8ce51851c1af2b76efe960aa4c7b48d0343a1b15c01aedf","impliedFormat":1},{"version":"e3c5ad476eb2fca8505aee5bdfdf9bf11760df5d0f9545db23f12a5c4d72a718","impliedFormat":1},{"version":"462bccdf75fcafc1ae8c30400c9425e1a4681db5d605d1a0edb4f990a54d8094","impliedFormat":1},{"version":"5923d8facbac6ecf7c84739a5c701a57af94a6f6648d6229a6c768cf28f0f8cb","impliedFormat":1},{"version":"d0570ce419fb38287e7b39c910b468becb5b2278cf33b1000a3d3e82a46ecae2","impliedFormat":1},{"version":"3aca7f4260dad9dcc0a0333654cb3cde6664d34a553ec06c953bce11151764d7","impliedFormat":1},{"version":"a0a6f0095f25f08a7129bc4d7cb8438039ec422dc341218d274e1e5131115988","impliedFormat":1},{"version":"1d2699a343a347a830be26eb17ab340d7875c6f549c8d7477efb1773060cc7e5","impliedFormat":1},{"version":"45785e608b3d380c79e21957a6d1467e1206ac0281644e43e8ed6498808ace72","impliedFormat":1},{"version":"bece27602416508ba946868ad34d09997911016dbd6893fb884633017f74e2c5","impliedFormat":1},{"version":"2a90177ebaef25de89351de964c2c601ab54d6e3a157cba60d9cd3eaf5a5ee1a","impliedFormat":1},{"version":"82200e963d3c767976a5a9f41ecf8c65eca14a6b33dcbe00214fcbe959698c46","impliedFormat":1},{"version":"b4966c503c08bbd9e834037a8ab60e5f53c5fd1092e8873c4a1c344806acdab2","impliedFormat":1},{"version":"b598deb1da203a2b58c76cf8d91cfc2ca172d785dacd8466c0a11e400ff6ab2d","impliedFormat":1},{"version":"f3ded47c50efa3fbc7105c933490fa0cf48df063248a5b27bca5849d5d126f9b","impliedFormat":1},{"version":"612811d64d060761e9691677217d1d015ee0c09e2fc3309c085b1ea527478a99","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},"c41262dd3fbd51215af7469b05d088a6e2f04300ef2b6f408391571ec7ae8e85","fa402f40bea7b23bdb3cb5a6445c5edf6f798ba6aa17922933f7b1d814d4516a",{"version":"51e6d0d26a66d079d3111e6f4e271a0cf9af059081b1999716676affecb545c0","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},"c35c848fe58d91a53f86c998b1de9854e1a51bab4cf5d9769713802795432154",{"version":"87954d164a835705e0032ce9c018d65f229066aebd535013044c9607f7eb9f49","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"d36725b5247b138df5161ff9bbcc97627246c7026e701f4e0410a9f1fdb2c6e4","signature":"fe0d466be11feff0318d0e42b1f3e28df18bd0d2c851482ac6bba6cc251ed9d3"},{"version":"2e2ea2f420b457093a01b274779316e00d141d90abbff144ab94145c9fefe942","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"4da031e2252dd70b26ac9eda10d0d0dbc965efea286d9845f99867e70335d3fd","signature":"7afd9e8322c2794ad4635aa2c7039eb1bc7ad1dc7a5f2e5dd282ef24a144bff7"},{"version":"ea14d18a705fbecacee7a76f7754277282506a3571dc0fdf3341ea2d1a39c17e","signature":"6084ee08441d9c18aefd07448800d5cbc074545154a6f2602a6653b6d108fe18"},{"version":"6c3741e44c9b0ebd563c8c74dcfb2f593190dfd939266c07874dc093ecb4aa0e","impliedFormat":99},{"version":"bb12cda3fa5194cec23bea11b85866e275193782a8c125ed516bbaa0f07af62e","impliedFormat":99},{"version":"98686c200902ceac2c91a3a918b99f98d8aa654147be167facd648e1dcf6046e","impliedFormat":99},{"version":"a65735a086ae8b401c1c41b51b41546532670c919fd2cedc1606fd186fcee2d7","impliedFormat":99},{"version":"fe021dbde66bd0d6195d4116dcb4c257966ebc8cfba0f34441839415e9e913e1","impliedFormat":99},{"version":"d52a4b1cabee2c94ed18c741c480a45dd9fed32477dd94a9cc8630a8bc263426","impliedFormat":99},{"version":"d059a52684789e6ef30f8052244cb7c52fb786e4066ac415c50642174cc76d14","impliedFormat":99},{"version":"2ccdfd33a753c18e8e5fe8a1eadefff968531d920bc9cdc7e4c97b0c6d3dcaf8","impliedFormat":99},{"version":"d64a434d7fb5040dbe7d5f4911145deda53e281b3f1887b9a610defd51b3c1a2","impliedFormat":99},{"version":"927f406568919fd7cd238ef7fe5e9c5e9ec826f1fff89830e480aff8cfd197da","impliedFormat":99},{"version":"a77d742410fe78bb054d325b690fda75459531db005b62ba0e9371c00163353c","impliedFormat":99},{"version":"f8de61dd3e3c4dc193bb341891d67d3979cb5523a57fcacaf46bf1e6284e6c35","impliedFormat":99},{"version":"addca1bb7478ebc3f1c67b710755acc945329875207a3c9befd6b5cbcab12574","impliedFormat":99},{"version":"50b565f4771b6b150cbf3ae31eb815c31f15e2e0f45518958a5f4348a1a01660","impliedFormat":99},{"version":"50cda2625f8d3fe23a22e234d6f65a5da8f0598adfb0c28ffde840788e9eeaf6","impliedFormat":99},{"version":"bc7f70d67697f70e89ef74f6620b9ac0096a3f0ee3cdf2531b4fa08d2af4219d","impliedFormat":99},{"version":"4056a596190daaaa7268f5465b972915facc5eca90ee6432e90afa130ba2e4ee","impliedFormat":99},{"version":"aa20728bb08af6288996197b97b5ed7bcfb0b183423bb482a9b25867a5b33c57","impliedFormat":99},{"version":"5322c3686d3797d415f8570eec54e898f328e59f8271b38516b1366074b499aa","impliedFormat":99},{"version":"b0aa778c53f491350d81ec58eb3e435d34bef2ec93b496c51d9b50aa5a8a61e5","impliedFormat":99},{"version":"fa454230c32f38213198cf47db147caf4c03920b3f8904566b29a1a033341602","impliedFormat":99},{"version":"5571608cd06d2935efe2ed7ba105ec93e5c5d1e822d300e5770a1ad9a065c8b6","impliedFormat":99},{"version":"6bf8aa6ed64228b4d065f334b8fe11bc11f59952fd15015b690dfb3301c94484","impliedFormat":99},{"version":"41ae2bf47844e4643ebe68b8e0019af7a87a9daea2d38959a9f7520ada9ad3cb","impliedFormat":99},{"version":"f4498a2ac4186466abe5f9641c9279a3458fa5992dc10ed4581c265469b118d4","impliedFormat":99},{"version":"bd09a0e906dae9a9351c658e7d8d6caa9f4df2ba104df650ebca96d1c4f81c23","impliedFormat":99},{"version":"055ad004f230e10cf1099d08c6f5774c564782bd76fbefbda669ab1ad132c175","impliedFormat":99},{"version":"fed0bdbbd63d0df2a3bdd39390dab41dab114ba73be98fbfc70022b4f1b08e96","signature":"ec3727b08adf2efb6d58971013277df6a35f0e550b779d3a928dd1799528d744"},{"version":"9f4c212f4e19caed6355e4c334edf13d24063caa51a9597842d4b73a4b6289aa","signature":"298f8a949f107957ca1a76b819a448332b14d433cd7c5311c64195f967d8732f"},{"version":"eecc30e0f9601a0e5b5e36c504c0bc782b006863efb416edc25ffcf171c44259","signature":"3e27d4ec65a264f0669238226b0dca34d960df207ae833b9e6ed3c20f33075d4"},"98fee1770cc1a8c00e795a57cf04ee61fcd613dec67ac1a80fc4da6fb9e3f1fd","b43da9718ca2e17de5060bef1622755b838d84eee01b14841083672cb77bfd06",{"version":"b7462a691e7094d0ffaeaab062ea630390fc5a39efb741eae8e20cd3b882b32d","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"acd8fd5090ac73902278889c38336ff3f48af6ba03aa665eb34a75e7ba1dccc4","impliedFormat":1},{"version":"d6258883868fb2680d2ca96bc8b1352cab69874581493e6d52680c5ffecdb6cc","impliedFormat":1},{"version":"1b61d259de5350f8b1e5db06290d31eaebebc6baafd5f79d314b5af9256d7153","impliedFormat":1},{"version":"f258e3960f324a956fc76a3d3d9e964fff2244ff5859dcc6ce5951e5413ca826","impliedFormat":1},{"version":"643f7232d07bf75e15bd8f658f664d6183a0efaca5eb84b48201c7671a266979","impliedFormat":1},{"version":"616775f16134fa9d01fc677ad3f76e68c051a056c22ab552c64cc281a9686790","impliedFormat":1},{"version":"65c24a8baa2cca1de069a0ba9fba82a173690f52d7e2d0f1f7542d59d5eb4db0","impliedFormat":1},{"version":"f9fe6af238339a0e5f7563acee3178f51db37f32a2e7c09f85273098cee7ec49","impliedFormat":1},{"version":"1de8c302fd35220d8f29dea378a4ae45199dc8ff83ca9923aca1400f2b28848a","impliedFormat":1},{"version":"77e71242e71ebf8528c5802993697878f0533db8f2299b4d36aa015bae08a79c","impliedFormat":1},{"version":"98a787be42bd92f8c2a37d7df5f13e5992da0d967fab794adbb7ee18370f9849","impliedFormat":1},{"version":"332248ee37cca52903572e66c11bef755ccc6e235835e63d3c3e60ddda3e9b93","impliedFormat":1},{"version":"94e8cc88ae2ef3d920bb3bdc369f48436db123aa2dc07f683309ad8c9968a1e1","impliedFormat":1},{"version":"4545c1a1ceca170d5d83452dd7c4994644c35cf676a671412601689d9a62da35","impliedFormat":1},{"version":"320f4091e33548b554d2214ce5fc31c96631b513dffa806e2e3a60766c8c49d9","impliedFormat":1},{"version":"a2d648d333cf67b9aeac5d81a1a379d563a8ffa91ddd61c6179f68de724260ff","impliedFormat":1},{"version":"d90d5f524de38889d1e1dbc2aeef00060d779f8688c02766ddb9ca195e4a713d","impliedFormat":1},{"version":"a3f41ed1b4f2fc3049394b945a68ae4fdefd49fa1739c32f149d32c0545d67f5","impliedFormat":1},{"version":"b0309e1eda99a9e76f87c18992d9c3689b0938266242835dd4611f2b69efe456","impliedFormat":1},{"version":"47699512e6d8bebf7be488182427189f999affe3addc1c87c882d36b7f2d0b0e","impliedFormat":1},{"version":"6ceb10ca57943be87ff9debe978f4ab73593c0c85ee802c051a93fc96aaf7a20","impliedFormat":1},{"version":"1de3ffe0cc28a9fe2ac761ece075826836b5a02f340b412510a59ba1d41a505a","impliedFormat":1},{"version":"e46d6cc08d243d8d0d83986f609d830991f00450fb234f5b2f861648c42dc0d8","impliedFormat":1},{"version":"1c0a98de1323051010ce5b958ad47bc1c007f7921973123c999300e2b7b0ecc0","impliedFormat":1},{"version":"1d079c37fa53e3c21ed3fa214a27507bda9991f2a41458705b19ed8c2b61173d","impliedFormat":1},{"version":"5bf5c7a44e779790d1eb54c234b668b15e34affa95e78eada73e5757f61ed76a","impliedFormat":1},{"version":"5835a6e0d7cd2738e56b671af0e561e7c1b4fb77751383672f4b009f4e161d70","impliedFormat":1},{"version":"5c634644d45a1b6bc7b05e71e05e52ec04f3d73d9ac85d5927f647a5f965181a","impliedFormat":1},{"version":"4b7f74b772140395e7af67c4841be1ab867c11b3b82a51b1aeb692822b76c872","impliedFormat":1},{"version":"27be6622e2922a1b412eb057faa854831b95db9db5035c3f6d4b677b902ab3b7","impliedFormat":1},{"version":"a68d4b3182e8d776cdede7ac9630c209a7bfbb59191f99a52479151816ef9f9e","impliedFormat":99},{"version":"39644b343e4e3d748344af8182111e3bbc594930fff0170256567e13bbdbebb0","impliedFormat":99},{"version":"ed7fd5160b47b0de3b1571c5c5578e8e7e3314e33ae0b8ea85a895774ee64749","impliedFormat":99},{"version":"63a7595a5015e65262557f883463f934904959da563b4f788306f699411e9bac","impliedFormat":1},{"version":"4ba137d6553965703b6b55fd2000b4e07ba365f8caeb0359162ad7247f9707a6","impliedFormat":1},{"version":"6de125ea94866c736c6d58d68eb15272cf7d1020a5b459fea1c660027eca9a90","affectsGlobalScope":true,"impliedFormat":1},{"version":"8fac4a15690b27612d8474fb2fc7cc00388df52d169791b78d1a3645d60b4c8b","affectsGlobalScope":true,"impliedFormat":1},{"version":"064ac1c2ac4b2867c2ceaa74bbdce0cb6a4c16e7c31a6497097159c18f74aa7c","impliedFormat":1},{"version":"d3b315763d91265d6b0e7e7fa93cfdb8a80ce7cdd2d9f55ba0f37a22db00bdb8","impliedFormat":1},{"version":"b789bf89eb19c777ed1e956dbad0925ca795701552d22e68fd130a032008b9f9","impliedFormat":1},{"version":"13670c4396cd565ad254357288032c873abc925302f98e791a7de865e16862cb","affectsGlobalScope":true},"7ad303e40d4fddf44f156129e397511953a71481c5cfd86b1862649aaaf240cc",{"version":"bae8d023ef6b23df7da26f51cea44321f95817c190342a36882e93b80d07a960","impliedFormat":1},{"version":"26a770cec4bd2e7dbba95c6e536390fffe83c6268b78974a93727903b515c4e7","impliedFormat":1},{"version":"dd5115b329c19c4385af13eda13e3ab03355e711c3f313173fd54ed7d08cfd39","impliedFormat":99},{"version":"035a5df183489c2e22f3cf59fc1ed2b043d27f357eecc0eb8d8e840059d44245","impliedFormat":1},{"version":"0d14fa22c41fdc7277e6f71473b20ebc07f40f00e38875142335d5b63cdfc9d2","impliedFormat":1},{"version":"a4809f4d92317535e6b22b01019437030077a76fec1d93b9881c9ed4738fcc54","impliedFormat":1},{"version":"5f53fa0bd22096d2a78533f94e02c899143b8f0f9891a46965294ee8b91a9434","impliedFormat":1},{"version":"c085e9aa62d1ae1375794c1fb927a445fa105fed891a7e24edbb1c3300f7384a","impliedFormat":1},{"version":"f315e1e65a1f80992f0509e84e4ae2df15ecd9ef73df975f7c98813b71e4c8da","impliedFormat":1},{"version":"e00243d23c495ca2170c9b9e20b5c92331239100b51efdc2b4401cdad859bbef","impliedFormat":1},{"version":"ab82804a14454734010dcdcd43f564ff7b0389bee4c5692eec76ff5b30d4cf66","impliedFormat":1},{"version":"6fa5d56af71f07dc276aae3f6f30807a9cccf758517fb39742af72e963553d80","impliedFormat":1},{"version":"253b95673c4e01189af13e855c76a7f7c24197f4179954521bf2a50db5cfe643","impliedFormat":1},{"version":"afe73051ff6a03a9565cbd8ebb0e956ee3df5e913ad5c1ded64218aabfa3dcb5","impliedFormat":1},{"version":"31f24e33f22172ba0cc8cdc640779fb14c3480e10b517ad1b4564e83fa262a2b","impliedFormat":1},{"version":"f380ae8164792d9690a74f6b567b9e43d5323b580f074e50f68f983c0d073b5b","impliedFormat":1},{"version":"0fd641a3b3e3ec89058051a284135a3f30b94a325fb809c4e4159ec5495b5cdc","impliedFormat":1},{"version":"7b20065444d0353a2bc63145481e519e02d9113a098a2db079da21cb60590ef0","impliedFormat":1},{"version":"9f162ee475383c13e350c73e24db5adc246fba830b9d0cc11d7048af9bbd0a29","impliedFormat":1},{"version":"ce7c3363c40cd2fcc994517c7954954d1c70de2d972df7e45fa83837593b8687","impliedFormat":1},{"version":"6ab1224e0149cc983d5da72ff3540bc0cad8ee7b23cf2a3da136f77f76d01763","impliedFormat":1},{"version":"e059fb0805a29ea3976d703a6f082c1493ac5583ca8011e8c5b86d0a23667d0d","impliedFormat":1},{"version":"16fbf548a0337a83d30552e990b6832fd24bbc47042a8c491e1dc93029b4222f","impliedFormat":1},{"version":"0c4c7303956a4726568c801dcd81e9fbce32fbf74565f735bbcf46ba66417769","impliedFormat":1},{"version":"f39848c7895fd6373d5e30089e7fb1d10c464e7eeb37ce1ea47d188a707b162c","impliedFormat":1},{"version":"9249c34e7282d17a2749677c3521ea625f73c2b48792af08fa9c5e09abc6a882","impliedFormat":1},{"version":"68d819647c70b7e91fcf7e725875c8ab19b2a98f57339910d4e261c6fc19a624","signature":"76ce334773fe270e343f83381494fde51158ca7ce90a1eaf10a726d1328f8b5b"},{"version":"cdcc132f207d097d7d3aa75615ab9a2e71d6a478162dde8b67f88ea19f3e54de","impliedFormat":1},{"version":"5b9586e9b0b6322e5bfbd2c29bd3b8e21ab9d871f82346cb71020e3d84bae73e","impliedFormat":1},{"version":"3e70a7e67c2cb16f8cd49097360c0309fe9d1e3210ff9222e9dac1f8df9d4fb6","impliedFormat":1},{"version":"ab68d2a3e3e8767c3fba8f80de099a1cfc18c0de79e42cb02ae66e22dfe14a66","impliedFormat":1},{"version":"d96cc6598148bf1a98fb2e8dcf01c63a4b3558bdaec6ef35e087fd0562eb40ec","impliedFormat":1},{"version":"5b9586e9b0b6322e5bfbd2c29bd3b8e21ab9d871f82346cb71020e3d84bae73e","impliedFormat":1},{"version":"f8db4fea512ab759b2223b90ecbbe7dae919c02f8ce95ec03f7fb1cf757cfbeb","affectsGlobalScope":true,"impliedFormat":1},{"version":"f329dfad7970297cbf07ddc8fce2ad4a24e2a3855917c661922ef86eb24dd1f1","impliedFormat":1},{"version":"841784cfa9046a2b3e453d638ea5c3e53680eb8225a45db1c13813f6ea4095e5","affectsGlobalScope":true,"impliedFormat":1},{"version":"646ef1cff0ec3cf8e96adb1848357788f244b217345944c2be2942a62764b771","impliedFormat":1},{"version":"2ac7ddb95cb27a5b52cf9dfbbc6cea87d3a86c8bbfa8c0ccb7714a9372c11bd6","signature":"a46d66851af2c056e805fdd574bf5ec3adb1181c43c5e41f0a1c592e338afe64"},{"version":"c82e272bdd6b91312781f7abbc255d4202b1833cb72ac516b37ed3964658374f","impliedFormat":99},{"version":"397e0cbdbbdc4341e7841c3c63d8507c177119abf07532cf276f81fad1da7442","impliedFormat":99},{"version":"479d65834d88be6b00e43e6fdfe980194fcc2100df4112f4d72b2e0c80f848e0","impliedFormat":99},{"version":"10c7c5deb46598d73b372132151c70ddfb845e07101be422421c88a286af9e2c","impliedFormat":99},{"version":"b664d61eeb25f68133f9e5986ee9f3bfbc946a92d1d66345db4f897f26aba884","signature":"f2542ed28646ccec19a2b407da97ef71777f4a2722da6990c958c2c9612ae978"},"6565eed89dfca6fe75d0740d95c9ee83295f421c8617192688eb0d86f1a64ef2","d1986184a09a52db8228cb2bb2a61a8c05c9354e5b93cec8e2628d8579c892d7",{"version":"bdc1824d433df07efbd9a0ccf543d9358e250676fb755b27a9937176ff3a31e1","impliedFormat":1},{"version":"41c514d6896dd73d171bfa8ee88fb56cecda181e1811493ea4d330683eef7df5","impliedFormat":1},{"version":"76e577185aca829e9ff93e4665d093af25fb31908b6eb643523810e4351ddff5","affectsGlobalScope":true},"6ed24d280fd813b28c58d4afe6de26573be6f42b0022d69d3b71db927c853642",{"version":"c2c2a861a338244d7dd700d0c52a78916b4bb75b98fc8ca5e7c501899fc03796","impliedFormat":1},{"version":"b6d03c9cfe2cf0ba4c673c209fcd7c46c815b2619fd2aad59fc4229aaef2ed43","impliedFormat":1},{"version":"adb467429462e3891de5bb4a82a4189b92005d61c7f9367c089baf03997c104e","impliedFormat":1},{"version":"670a76db379b27c8ff42f1ba927828a22862e2ab0b0908e38b671f0e912cc5ed","impliedFormat":1},{"version":"13b77ab19ef7aadd86a1e54f2f08ea23a6d74e102909e3c00d31f231ed040f62","impliedFormat":1},{"version":"069bebfee29864e3955378107e243508b163e77ab10de6a5ee03ae06939f0bb9","impliedFormat":1},{"version":"fb893a0dfc3c9fb0f9ca93d0648694dd95f33cbad2c0f2c629f842981dfd4e2e","impliedFormat":1},{"version":"3eb11dbf3489064a47a2e1cf9d261b1f100ef0b3b50ffca6c44dd99d6dd81ac1","impliedFormat":1},{"version":"151ff381ef9ff8da2da9b9663ebf657eac35c4c9a19183420c05728f31a6761d","impliedFormat":1},{"version":"5d08a179b846f5ee674624b349ebebe2121c455e3a265dc93da4e8d9e89722b4","impliedFormat":1},{"version":"1ef88d2f6523c40d5db6b52f6539bd9cd4c7203910f979142b3514fa3c5298f7","impliedFormat":1},{"version":"19990350fca066265b2c190c9b6cde1229f35002ea2d4df8c9e397e9942f6c89","impliedFormat":99},{"version":"8fb8fdda477cd7382477ffda92c2bb7d9f7ef583b1aa531eb6b2dc2f0a206c10","impliedFormat":99},{"version":"66995b0c991b5c5d42eff1d950733f85482c7419f7296ab8952e03718169e379","impliedFormat":99},{"version":"9863f888da357e35e013ca3465b794a490a198226bd8232c2f81fb44e16ff323","impliedFormat":99},{"version":"84bc2d80326a83ee4a6e7cba2fd480b86502660770c0e24da96535af597c9f1e","impliedFormat":99},{"version":"ea27768379b866ee3f5da2419650acdb01125479f7af73580a4bceb25b79e372","impliedFormat":99},{"version":"598931eeb4362542cae5845f95c5f0e45ac668925a40ce201e244d7fe808e965","impliedFormat":99},{"version":"da9ef88cde9f715756da642ad80c4cd87a987f465d325462d6bc2a0b11d202c8","impliedFormat":99},{"version":"b4c6184d78303b0816e779a48bef779b15aea4a66028eb819aac0abee8407dea","impliedFormat":99},{"version":"db085d2171d48938a99e851dafe0e486dce9859e5dfa73c21de5ed3d4d6fb0c5","impliedFormat":99},{"version":"62a3ad1ddd1f5974b3bf105680b3e09420f2230711d6520a521fab2be1a32838","impliedFormat":99},{"version":"a77be6fc44c876bc10c897107f84eaba10790913ebdcad40fcda7e47469b2160","impliedFormat":99},{"version":"06cf55b6da5cef54eaaf51cdc3d4e5ebf16adfdd9ebd20cec7fe719be9ced017","impliedFormat":99},{"version":"91f5dbcdb25d145a56cffe957ec665256827892d779ef108eb2f3864faff523b","impliedFormat":99},{"version":"052ba354bab8fb943e0bc05a0769f7b81d7c3b3c6cd0f5cfa53c7b2da2a525c5","impliedFormat":99},{"version":"927955a3de5857e0a1c575ced5a4245e74e6821d720ed213141347dd1870197f","impliedFormat":99},{"version":"fec804d54cd97dd77e956232fc37dc13f53e160d4bbeeb5489e86eeaa91f7ebd","impliedFormat":99},{"version":"03c258e060b7da220973f84b89615e4e9850e9b5d30b3a8e4840b3e3268ae8eb","impliedFormat":1},{"version":"fd0589ca571ad090b531d8c095e26caa53d4825c64d3ff2b2b1ab95d72294175","impliedFormat":1},{"version":"669843ecafb89ae1e944df06360e8966219e4c1c34c0d28aa2503272cdd444a7","affectsGlobalScope":true,"impliedFormat":1},{"version":"f3d8c757e148ad968f0d98697987db363070abada5f503da3c06aefd9d4248c1","impliedFormat":1},{"version":"96d14f21b7652903852eef49379d04dbda28c16ed36468f8c9fa08f7c14c9538","impliedFormat":1},{"version":"42baf4ca38c38deaf411ea73f37bc39ff56c6e5c761a968b64ac1b25c92b5cd8","impliedFormat":1},{"version":"d7dbe0ad36bdca8a6ecf143422a48e72cc8927bab7b23a1a2485c2f78a7022c6","impliedFormat":1},{"version":"8718fa41d7cf4aa91de4e8f164c90f88e0bf343aa92a1b9b725a9c675c64e16b","impliedFormat":1},{"version":"f992cd6cc0bcbaa4e6c810468c90f2d8595f8c6c3cf050c806397d3de8585562","impliedFormat":1},{"version":"fec943fdb3275eb6e006b35e04a8e2e99e9adf3f4b969ddf15315ac7575a93e4","impliedFormat":1}],"root":[53,418,419,[430,433],436,441,[443,445],[533,535],[537,540],[543,546],[566,575],[603,608],649,650,677,688,[693,695],698,699],"options":{"allowJs":true,"checkJs":false,"esModuleInterop":true,"jsx":4,"module":99,"skipLibCheck":true,"strict":true,"target":7},"referencedMap":[[695,1],[698,2],[649,3],[699,4],[677,5],[688,6],[650,7],[702,8],[700,3],[663,9],[674,10],[678,3],[669,11],[659,12],[668,13],[660,14],[219,3],[590,15],[593,16],[598,17],[599,18],[597,19],[600,3],[601,20],[577,21],[576,3],[658,3],[561,3],[558,3],[557,3],[552,22],[563,23],[548,24],[559,25],[551,26],[550,27],[560,3],[555,28],[562,3],[556,29],[549,3],[687,30],[686,31],[685,24],[565,32],[547,3],[705,33],[701,8],[703,34],[704,8],[707,35],[709,36],[708,3],[710,3],[664,37],[447,38],[654,3],[656,39],[657,40],[684,41],[683,42],[542,43],[541,3],[729,44],[730,45],[731,3],[732,3],[457,38],[706,3],[102,46],[103,46],[104,47],[59,48],[105,49],[106,50],[107,51],[54,3],[57,52],[55,3],[56,3],[108,53],[109,54],[110,55],[111,56],[112,57],[113,58],[114,58],[115,59],[116,60],[117,61],[118,62],[60,3],[58,3],[119,63],[120,64],[121,65],[153,66],[122,67],[123,68],[124,69],[125,70],[126,71],[127,72],[128,73],[129,74],[130,75],[131,76],[132,76],[133,77],[134,3],[135,78],[137,79],[136,80],[138,81],[139,82],[140,83],[141,84],[142,85],[143,86],[144,87],[145,88],[146,89],[147,90],[148,91],[149,92],[150,93],[61,3],[62,3],[63,3],[101,94],[151,95],[152,96],[536,3],[50,3],[157,97],[375,98],[158,99],[156,98],[376,100],[564,101],[154,102],[155,103],[48,3],[51,104],[373,98],[52,98],[661,3],[728,3],[446,3],[651,3],[653,105],[652,106],[655,3],[667,107],[49,3],[671,3],[717,3],[718,108],[715,3],[716,3],[682,109],[442,110],[589,111],[588,112],[670,3],[675,113],[680,114],[679,42],[665,115],[681,116],[662,117],[666,118],[673,119],[672,120],[676,121],[526,3],[500,122],[499,123],[498,124],[525,125],[524,126],[528,127],[527,128],[530,129],[529,130],[485,131],[459,132],[460,133],[461,133],[462,133],[463,133],[464,133],[465,133],[466,133],[467,133],[468,133],[469,133],[483,134],[470,133],[471,133],[472,133],[473,133],[474,133],[475,133],[476,133],[477,133],[479,133],[480,133],[478,133],[481,133],[482,133],[484,133],[458,135],[523,136],[503,137],[504,137],[505,137],[506,137],[507,137],[508,137],[509,138],[511,137],[510,137],[522,139],[512,137],[514,137],[513,137],[516,137],[515,137],[517,137],[518,137],[519,137],[520,137],[521,137],[502,137],[501,140],[493,141],[491,142],[492,142],[496,143],[494,142],[495,142],[497,142],[490,3],[615,144],[620,1],[415,145],[182,146],[223,147],[400,148],[218,149],[199,3],[372,3],[180,3],[389,150],[248,151],[181,3],[300,152],[226,153],[227,154],[371,155],[386,156],[282,157],[394,158],[395,159],[393,160],[392,3],[390,161],[225,162],[183,163],[325,3],[326,164],[254,165],[184,166],[161,165],[250,165],[169,165],[221,167],[220,3],[399,168],[411,3],[208,3],[347,169],[348,170],[342,98],[423,3],[350,3],[351,171],[343,172],[428,173],[427,174],[422,3],[267,3],[385,175],[384,3],[421,176],[344,98],[276,177],[272,178],[277,179],[275,3],[274,180],[273,3],[424,3],[420,3],[426,181],[425,3],[271,178],[696,98],[697,182],[438,183],[434,184],[261,185],[260,186],[259,187],[634,98],[258,188],[242,3],[637,3],[640,3],[639,98],[641,189],[160,3],[396,190],[397,191],[398,192],[177,3],[211,3],[176,193],[200,3],[363,98],[167,194],[362,195],[361,196],[352,3],[353,3],[360,3],[355,3],[358,197],[354,3],[356,198],[359,199],[357,198],[179,3],[174,3],[175,165],[231,3],[236,200],[237,201],[235,202],[233,203],[234,204],[229,3],[369,171],[255,171],[614,205],[621,206],[625,207],[403,208],[402,3],[245,3],[642,209],[170,210],[345,211],[346,212],[340,213],[331,3],[368,214],[405,98],[332,215],[370,216],[365,217],[364,3],[366,3],[337,3],[324,218],[404,219],[407,220],[334,221],[338,222],[329,223],[381,224],[171,225],[286,226],[301,227],[172,228],[412,229],[413,230],[238,231],[230,3],[239,232],[313,233],[228,3],[312,234],[159,3],[306,235],[210,3],[327,236],[302,3],[173,3],[204,3],[310,237],[178,3],[240,238],[336,239],[401,240],[335,3],[309,3],[232,3],[315,241],[316,242],[391,3],[318,243],[320,244],[319,245],[213,3],[308,228],[322,246],[285,247],[307,248],[314,249],[187,3],[191,3],[190,3],[189,3],[194,3],[188,3],[197,3],[196,3],[193,3],[192,3],[195,3],[198,250],[186,3],[294,251],[293,3],[298,252],[295,253],[297,254],[299,252],[296,253],[209,255],[256,256],[410,257],[643,3],[629,258],[631,259],[333,260],[630,261],[408,219],[349,219],[185,3],[287,262],[205,263],[206,264],[207,265],[203,266],[380,266],[252,266],[288,267],[253,267],[202,268],[201,3],[292,269],[291,270],[290,271],[289,272],[409,273],[379,274],[378,275],[341,276],[374,277],[377,278],[388,279],[387,280],[383,281],[284,282],[281,283],[283,284],[280,285],[321,286],[311,3],[619,3],[323,287],[382,3],[241,288],[330,190],[328,289],[243,290],[246,291],[638,3],[244,292],[247,292],[617,3],[616,3],[618,3],[636,3],[249,293],[406,3],[278,294],[270,98],[224,3],[166,295],[162,3],[623,98],[165,3],[437,296],[269,98],[627,171],[268,297],[163,298],[266,296],[168,3],[439,299],[264,98],[265,98],[257,3],[164,3],[263,300],[262,301],[212,302],[339,75],[251,75],[317,3],[304,303],[303,3],[367,178],[279,98],[414,304],[609,98],[612,305],[613,306],[610,98],[611,3],[222,307],[217,308],[216,3],[215,309],[214,3],[416,310],[622,311],[624,312],[626,313],[628,314],[632,315],[648,316],[440,316],[647,317],[435,318],[429,319],[633,320],[635,321],[644,322],[417,193],[646,3],[645,323],[596,324],[595,3],[713,325],[726,326],[711,3],[712,327],[727,328],[722,329],[723,330],[721,331],[725,332],[719,333],[714,334],[724,335],[720,326],[554,336],[553,3],[587,337],[584,338],[585,3],[586,3],[583,339],[489,340],[488,341],[532,342],[531,343],[487,344],[486,345],[305,346],[592,347],[602,348],[578,17],[591,349],[594,350],[582,351],[580,352],[581,353],[579,3],[689,3],[692,354],[690,355],[691,356],[454,357],[453,3],[46,3],[47,3],[8,3],[9,3],[11,3],[10,3],[2,3],[12,3],[13,3],[14,3],[15,3],[16,3],[17,3],[18,3],[19,3],[3,3],[20,3],[21,3],[4,3],[22,3],[26,3],[23,3],[24,3],[25,3],[27,3],[28,3],[29,3],[5,3],[30,3],[31,3],[32,3],[33,3],[6,3],[37,3],[34,3],[35,3],[36,3],[38,3],[7,3],[39,3],[44,3],[45,3],[40,3],[41,3],[42,3],[43,3],[1,3],[79,358],[89,359],[78,358],[99,360],[70,361],[69,362],[98,323],[92,363],[97,364],[72,365],[86,366],[71,367],[95,368],[67,369],[66,323],[96,370],[68,371],[73,372],[74,3],[77,372],[64,3],[100,373],[90,374],[81,375],[82,376],[84,377],[80,378],[83,379],[93,323],[75,380],[76,381],[85,382],[65,383],[88,374],[87,372],[91,3],[94,384],[456,385],[452,3],[455,386],[449,387],[448,38],[451,388],[450,389],[694,390],[546,391],[436,392],[445,393],[545,391],[53,171],[419,394],[433,395],[566,396],[533,397],[537,398],[567,399],[540,400],[568,401],[441,402],[430,403],[432,403],[431,404],[539,405],[569,406],[444,407],[570,408],[535,409],[571,410],[534,411],[573,412],[572,171],[574,411],[418,6],[575,413],[543,414],[603,415],[604,415],[538,416],[605,417],[544,418],[607,419],[606,420],[443,6],[693,421],[608,422],[736,423],[734,3],[737,424],[735,425],[733,426]],"affectedFilesPendingEmit":[699,677,688,694,546,436,445,545,53,419,433,566,533,537,567,540,568,441,430,432,431,539,569,444,570,535,571,534,573,572,574,418,575,543,603,604,538,605,544,607,606,443,693,608],"version":"5.9.3"} \ No newline at end of file